From cc4b45612974f735ddec46009ede07729511fba4 Mon Sep 17 00:00:00 2001 From: opencode Date: Thu, 13 Aug 2026 01:15:01 +0000 Subject: [PATCH 001/271] sync release versions for v1.18.18 --- bun.lock | 56 ++++++++++----------- packages/app/package.json | 2 +- packages/cli/package.json | 2 +- packages/codemode/package.json | 2 +- packages/console/app/package.json | 2 +- packages/console/core/package.json | 2 +- packages/console/function/package.json | 2 +- packages/console/mail/package.json | 2 +- packages/console/support/package.json | 2 +- packages/core/package.json | 2 +- packages/desktop/package.json | 2 +- packages/effect-drizzle-sqlite/package.json | 2 +- packages/effect-sqlite-node/package.json | 2 +- packages/enterprise/package.json | 2 +- packages/function/package.json | 2 +- packages/http-recorder/package.json | 2 +- packages/llm/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/server/package.json | 2 +- packages/session-ui/package.json | 2 +- packages/slack/package.json | 2 +- packages/stats/app/package.json | 2 +- packages/stats/core/package.json | 2 +- packages/stats/server/package.json | 2 +- packages/tui/package.json | 2 +- packages/ui/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 30 files changed, 57 insertions(+), 57 deletions(-) diff --git a/bun.lock b/bun.lock index e41d891ec..04b5bcf35 100644 --- a/bun.lock +++ b/bun.lock @@ -29,7 +29,7 @@ }, "packages/app": { "name": "@opencode-ai/app", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", @@ -96,7 +96,7 @@ }, "packages/cli": { "name": "@opencode-ai/cli", - "version": "1.18.17", + "version": "1.18.18", "bin": { "lildax": "./bin/lildax.cjs", }, @@ -144,7 +144,7 @@ }, "packages/codemode": { "name": "@opencode-ai/codemode", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "acorn": "8.15.0", "effect": "catalog:", @@ -158,7 +158,7 @@ }, "packages/console/app": { "name": "@opencode-ai/console-app", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@ibm/plex": "6.4.1", @@ -194,7 +194,7 @@ }, "packages/console/core": { "name": "@opencode-ai/console-core", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@jsx-email/render": "1.1.1", @@ -221,7 +221,7 @@ }, "packages/console/function": { "name": "@opencode-ai/console-function", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/openai": "3.0.48", @@ -243,7 +243,7 @@ }, "packages/console/mail": { "name": "@opencode-ai/console-mail", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", @@ -267,7 +267,7 @@ }, "packages/console/support": { "name": "@opencode-ai/console-support", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@opencode-ai/console-core": "workspace:*", @@ -287,7 +287,7 @@ }, "packages/core": { "name": "@opencode-ai/core", - "version": "1.18.17", + "version": "1.18.18", "bin": { "opencode": "./bin/opencode", }, @@ -381,7 +381,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@zip.js/zip.js": "2.7.62", "drizzle-orm": "catalog:", @@ -435,7 +435,7 @@ }, "packages/effect-drizzle-sqlite": { "name": "@opencode-ai/effect-drizzle-sqlite", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "drizzle-orm": "catalog:", "effect": "catalog:", @@ -449,7 +449,7 @@ }, "packages/effect-sqlite-node": { "name": "@opencode-ai/effect-sqlite-node", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "effect": "catalog:", }, @@ -461,7 +461,7 @@ }, "packages/enterprise": { "name": "@opencode-ai/enterprise", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@hono/standard-validator": "catalog:", "@opencode-ai/core": "workspace:*", @@ -493,7 +493,7 @@ }, "packages/function": { "name": "@opencode-ai/function", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "catalog:", @@ -509,7 +509,7 @@ }, "packages/http-recorder": { "name": "@opencode-ai/http-recorder", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@effect/platform-node": "4.0.0-beta.83", "@effect/platform-node-shared": "4.0.0-beta.83", @@ -540,7 +540,7 @@ }, "packages/llm": { "name": "@opencode-ai/llm", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@opencode-ai/schema": "workspace:*", "@smithy/eventstream-codec": "4.2.14", @@ -559,7 +559,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "1.18.17", + "version": "1.18.18", "bin": { "opencode": "./bin/opencode", }, @@ -690,7 +690,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@ai-sdk/provider": "3.0.8", "@opencode-ai/sdk": "workspace:*", @@ -766,7 +766,7 @@ }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "cross-spawn": "catalog:", }, @@ -781,7 +781,7 @@ }, "packages/server": { "name": "@opencode-ai/server", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", @@ -796,7 +796,7 @@ }, "packages/session-ui": { "name": "@opencode-ai/session-ui", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@kobalte/core": "catalog:", "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13-v2.tgz", @@ -836,7 +836,7 @@ }, "packages/slack": { "name": "@opencode-ai/slack", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@opencode-ai/sdk": "workspace:*", "@slack/bolt": "^3.17.1", @@ -849,7 +849,7 @@ }, "packages/stats/app": { "name": "@opencode-ai/stats-app", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@ibm/plex": "6.4.1", "@kobalte/core": "catalog:", @@ -883,7 +883,7 @@ }, "packages/stats/core": { "name": "@opencode-ai/stats-core", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@aws-sdk/client-athena": "3.933.0", "@planetscale/database": "1.19.0", @@ -902,7 +902,7 @@ }, "packages/stats/server": { "name": "@opencode-ai/stats-server", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@aws-sdk/client-firehose": "3.933.0", "@effect/platform-node": "catalog:", @@ -944,7 +944,7 @@ }, "packages/tui": { "name": "@opencode-ai/tui", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", @@ -971,7 +971,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@kobalte/core": "catalog:", "@pierre/diffs": "catalog:", @@ -1022,7 +1022,7 @@ }, "packages/web": { "name": "@opencode-ai/web", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", diff --git a/packages/app/package.json b/packages/app/package.json index df3d30670..f31f65eba 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "1.18.17", + "version": "1.18.18", "description": "", "type": "module", "exports": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 273b8c74c..5b9e5aa40 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/cli", - "version": "1.18.17", + "version": "1.18.18", "type": "module", "license": "MIT", "bin": { diff --git a/packages/codemode/package.json b/packages/codemode/package.json index 9ebffe4db..a093c82d9 100644 --- a/packages/codemode/package.json +++ b/packages/codemode/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/codemode", - "version": "1.18.17", + "version": "1.18.18", "description": "Effect-native confined code execution over schema-described tools", "private": true, "type": "module", diff --git a/packages/console/app/package.json b/packages/console/app/package.json index d485be245..3d90f1c7b 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-app", - "version": "1.18.17", + "version": "1.18.18", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/console/core/package.json b/packages/console/core/package.json index 500171425..a0a16762b 100644 --- a/packages/console/core/package.json +++ b/packages/console/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/console-core", - "version": "1.18.17", + "version": "1.18.18", "private": true, "type": "module", "license": "MIT", diff --git a/packages/console/function/package.json b/packages/console/function/package.json index 93d430d2e..0e9f2fe40 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-function", - "version": "1.18.17", + "version": "1.18.18", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json index bcf61c96c..a8de0cbba 100644 --- a/packages/console/mail/package.json +++ b/packages/console/mail/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-mail", - "version": "1.18.17", + "version": "1.18.18", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", diff --git a/packages/console/support/package.json b/packages/console/support/package.json index 60d54c31d..e5ea6cf52 100644 --- a/packages/console/support/package.json +++ b/packages/console/support/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-support", - "version": "1.18.17", + "version": "1.18.18", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/core/package.json b/packages/core/package.json index d5d5260b0..96c989d6e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.17", + "version": "1.18.18", "name": "@opencode-ai/core", "type": "module", "license": "MIT", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 8b6af6f3a..cc41236e1 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop", "private": true, - "version": "1.18.17", + "version": "1.18.18", "type": "module", "license": "MIT", "homepage": "https://opencode.ai", diff --git a/packages/effect-drizzle-sqlite/package.json b/packages/effect-drizzle-sqlite/package.json index f09668004..bc2789423 100644 --- a/packages/effect-drizzle-sqlite/package.json +++ b/packages/effect-drizzle-sqlite/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.17", + "version": "1.18.18", "name": "@opencode-ai/effect-drizzle-sqlite", "type": "module", "license": "MIT", diff --git a/packages/effect-sqlite-node/package.json b/packages/effect-sqlite-node/package.json index 7cf7af1b5..2e901a954 100644 --- a/packages/effect-sqlite-node/package.json +++ b/packages/effect-sqlite-node/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.17", + "version": "1.18.18", "name": "@opencode-ai/effect-sqlite-node", "type": "module", "license": "MIT", diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json index c8760ef6d..54ef9a9c3 100644 --- a/packages/enterprise/package.json +++ b/packages/enterprise/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/enterprise", - "version": "1.18.17", + "version": "1.18.18", "private": true, "type": "module", "license": "MIT", diff --git a/packages/function/package.json b/packages/function/package.json index a857ef135..81f4cf2ef 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/function", - "version": "1.18.17", + "version": "1.18.18", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json index 671468d91..8fb6f1092 100644 --- a/packages/http-recorder/package.json +++ b/packages/http-recorder/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.17", + "version": "1.18.18", "name": "@opencode-ai/http-recorder", "description": "Record and replay Effect HTTP client traffic with deterministic cassettes", "type": "module", diff --git a/packages/llm/package.json b/packages/llm/package.json index e7a54b6d6..d80684e1e 100644 --- a/packages/llm/package.json +++ b/packages/llm/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.17", + "version": "1.18.18", "name": "@opencode-ai/llm", "type": "module", "license": "MIT", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 9abb393db..5d22aad6e 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.17", + "version": "1.18.18", "name": "opencode", "type": "module", "license": "MIT", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index daa27018d..29b9c93ed 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "1.18.17", + "version": "1.18.18", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 46f995b24..06f588960 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "1.18.17", + "version": "1.18.18", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index 0e289bc0b..83eca9036 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/server", - "version": "1.18.17", + "version": "1.18.18", "private": true, "type": "module", "license": "MIT", diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json index 5c4a3910b..329a9406c 100644 --- a/packages/session-ui/package.json +++ b/packages/session-ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/session-ui", - "version": "1.18.17", + "version": "1.18.18", "private": true, "type": "module", "license": "MIT", diff --git a/packages/slack/package.json b/packages/slack/package.json index 38829e819..3a9cd6b86 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/slack", - "version": "1.18.17", + "version": "1.18.18", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index 557c1d66e..8da5bda19 100644 --- a/packages/stats/app/package.json +++ b/packages/stats/app/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-app", - "version": "1.18.17", + "version": "1.18.18", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json index 97f6e0057..80b95113d 100644 --- a/packages/stats/core/package.json +++ b/packages/stats/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-core", - "version": "1.18.17", + "version": "1.18.18", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json index 90eb6faa6..91423e388 100644 --- a/packages/stats/server/package.json +++ b/packages/stats/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-server", - "version": "1.18.17", + "version": "1.18.18", "private": true, "type": "module", "license": "MIT", diff --git a/packages/tui/package.json b/packages/tui/package.json index 81318d1e0..132713ec9 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/tui", - "version": "1.18.17", + "version": "1.18.18", "private": true, "type": "module", "license": "MIT", diff --git a/packages/ui/package.json b/packages/ui/package.json index e82b37eff..6bc578079 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/ui", - "version": "1.18.17", + "version": "1.18.18", "type": "module", "license": "MIT", "repository": { diff --git a/packages/web/package.json b/packages/web/package.json index b4bff3c7a..682462b90 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,7 +2,7 @@ "name": "@opencode-ai/web", "type": "module", "license": "MIT", - "version": "1.18.17", + "version": "1.18.18", "scripts": { "dev": "astro dev", "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index c95622245..c61f995b3 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "1.18.17", + "version": "1.18.18", "publisher": "sst-dev", "repository": { "type": "git", From 864889ab9f9e921c240930b1dcd2bc0d2352c555 Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 13 Aug 2026 20:48:54 +0800 Subject: [PATCH 002/271] docs: remove Ling 3.0 Tiny free model (#42314) --- packages/web/src/content/docs/ar/zen.mdx | 4 ---- packages/web/src/content/docs/bs/zen.mdx | 4 ---- packages/web/src/content/docs/da/zen.mdx | 4 ---- packages/web/src/content/docs/de/zen.mdx | 4 ---- packages/web/src/content/docs/es/zen.mdx | 4 ---- packages/web/src/content/docs/fr/zen.mdx | 4 ---- packages/web/src/content/docs/it/zen.mdx | 4 ---- packages/web/src/content/docs/ja/zen.mdx | 4 ---- packages/web/src/content/docs/ko/zen.mdx | 4 ---- packages/web/src/content/docs/nb/zen.mdx | 4 ---- packages/web/src/content/docs/pl/zen.mdx | 4 ---- packages/web/src/content/docs/pt-br/zen.mdx | 4 ---- packages/web/src/content/docs/ru/zen.mdx | 4 ---- packages/web/src/content/docs/th/zen.mdx | 4 ---- packages/web/src/content/docs/tr/zen.mdx | 4 ---- packages/web/src/content/docs/zen.mdx | 4 ---- packages/web/src/content/docs/zh-cn/zen.mdx | 4 ---- packages/web/src/content/docs/zh-tw/zen.mdx | 4 ---- 18 files changed, 72 deletions(-) diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index 5c3b4b04c..39165bd01 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -113,7 +113,6 @@ OpenCode Zen هي بوابة AI تتيح لك الوصول إلى هذه الن | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -143,7 +142,6 @@ https://opencode.ai/zen/v1/models | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -222,7 +220,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Hy3 Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Laguna S 2.1 Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. -- Ling-3.0-tiny Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Nemotron 3 Ultra Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Nemotron 3.5 Lightning Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Big Pickle نموذج خفي ومتاح مجانا على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. @@ -281,7 +278,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. - Hy3 Free: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. - Laguna S 2.1 Free: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. -- Ling-3.0-tiny Free: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. - Nemotron 3 Ultra Free (نقاط نهاية NVIDIA المجانية): للاستخدام التجريبي فقط — لا ترسل بيانات شخصية أو سرية. يُسجَّل استخدامك لأغراض أمنية ولتحسين منتجات وخدمات NVIDIA. بيانات الجلسة المُسجَّلة لأغراض التحسين غير مرتبطة بهويتك أو بأي مُعرِّف دائم. لمزيد من المعلومات حول ممارسات معالجة البيانات لدينا، راجع [سياسة الخصوصية](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). بتفاعلك مع نقطة النهاية هذه، فإنك توافق على جمعنا لهذه المعلومات وتسجيلها واستخدامها وعلى [شروط خدمة النسخة التجريبية من واجهة NVIDIA API](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (نقاط نهاية NVIDIA المجانية): للاستخدام التجريبي فقط — لا ترسل بيانات شخصية أو سرية. يُسجَّل استخدامك لأغراض أمنية ولتحسين منتجات وخدمات NVIDIA. بيانات الجلسة المُسجَّلة لأغراض التحسين غير مرتبطة بهويتك أو بأي مُعرِّف دائم. لمزيد من المعلومات حول ممارسات معالجة البيانات لدينا، راجع [سياسة الخصوصية](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). بتفاعلك مع نقطة النهاية هذه، فإنك توافق على جمعنا لهذه المعلومات وتسجيلها واستخدامها وعلى [شروط خدمة النسخة التجريبية من واجهة NVIDIA API](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: يتم الاحتفاظ بالطلبات لمدة 30 يوما وفقا لـ [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index 8c315d508..914583d92 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -118,7 +118,6 @@ Našim modelima možete pristupiti i preko sljedećih API endpointa. | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -150,7 +149,6 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -229,7 +227,6 @@ Besplatni modeli: - MiMo-V2.5 Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Hy3 Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Laguna S 2.1 Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. -- Ling-3.0-tiny Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Nemotron 3 Ultra Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Nemotron 3.5 Lightning Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Big Pickle je stealth model koji je besplatan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. @@ -293,7 +290,6 @@ i ne koriste vaše podatke za treniranje modela, uz sljedeće izuzetke: - MiMo-V2.5 Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. - Hy3 Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. - Laguna S 2.1 Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. -- Ling-3.0-tiny Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. - Nemotron 3 Ultra Free (besplatni NVIDIA endpointi): Samo za probnu upotrebu — nemojte slati lične ili povjerljive podatke. Vaše korištenje se bilježi radi sigurnosti i poboljšanja NVIDIA proizvoda i usluga. Zabilježeni podaci sesije koji se koriste u svrhu poboljšanja nisu povezani s vašim identitetom niti bilo kojim trajnim identifikatorom. Za više informacija o našim praksama obrade podataka pogledajte našu [Politiku privatnosti](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interakcijom s ovim endpointom pristajete na naše prikupljanje, bilježenje i korištenje takvih informacija te na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (besplatni NVIDIA endpointi): Samo za probnu upotrebu — nemojte slati lične ili povjerljive podatke. Vaše korištenje se bilježi radi sigurnosti i poboljšanja NVIDIA proizvoda i usluga. Zabilježeni podaci sesije koji se koriste u svrhu poboljšanja nisu povezani s vašim identitetom niti bilo kojim trajnim identifikatorom. Za više informacija o našim praksama obrade podataka pogledajte našu [Politiku privatnosti](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interakcijom s ovim endpointom pristajete na naše prikupljanje, bilježenje i korištenje takvih informacija te na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Requests are retained for 30 days in accordance with [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index fb5b85b77..10ed285b0 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -118,7 +118,6 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints. | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -150,7 +149,6 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -229,7 +227,6 @@ De gratis modeller: - MiMo-V2.5 Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Hy3 Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Laguna S 2.1 Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. -- Ling-3.0-tiny Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Nemotron 3 Ultra Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Nemotron 3.5 Lightning Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Big Pickle er en stealth-model, som er gratis på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. @@ -291,7 +288,6 @@ Alle vores modeller hostes i US. Vores udbydere følger en nul-opbevaringspoliti - MiMo-V2.5 Free: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. - Hy3 Free: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. - Laguna S 2.1 Free: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. -- Ling-3.0-tiny Free: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. - Nemotron 3 Ultra Free (gratis NVIDIA-endpoints): Kun til prøvebrug — indsend ikke personlige eller fortrolige data. Din brug logges af sikkerhedshensyn og for at forbedre NVIDIAs produkter og tjenester. De loggede sessionsdata, der bruges til forbedringsformål, er ikke knyttet til din identitet eller nogen vedvarende identifikator. For mere information om vores databehandlingspraksis, se vores [privatlivspolitik](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved at interagere med dette endpoint giver du samtykke til vores indsamling, registrering og brug af sådanne oplysninger samt [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (gratis NVIDIA-endpoints): Kun til prøvebrug — indsend ikke personlige eller fortrolige data. Din brug logges af sikkerhedshensyn og for at forbedre NVIDIAs produkter og tjenester. De loggede sessionsdata, der bruges til forbedringsformål, er ikke knyttet til din identitet eller nogen vedvarende identifikator. For mere information om vores databehandlingspraksis, se vores [privatlivspolitik](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved at interagere med dette endpoint giver du samtykke til vores indsamling, registrering og brug af sådanne oplysninger samt [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Anmodninger opbevares i 30 dage i overensstemmelse med [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index c7e1ad687..fcbb90619 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -109,7 +109,6 @@ Du kannst auch über die folgenden API-Endpunkte auf unsere Modelle zugreifen. | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -139,7 +138,6 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -218,7 +216,6 @@ Die kostenlosen Modelle: - MiMo-V2.5 Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Hy3 Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Laguna S 2.1 Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. -- Ling-3.0-tiny Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Nemotron 3 Ultra Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Nemotron 3.5 Lightning Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Big Pickle ist ein Stealth-Modell, das für begrenzte Zeit kostenlos auf OpenCode verfügbar ist. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. @@ -277,7 +274,6 @@ Alle unsere Modelle werden in den USA gehostet. Unsere Provider folgen einer Zer - MiMo-V2.5 Free: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. - Hy3 Free: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. - Laguna S 2.1 Free: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. -- Ling-3.0-tiny Free: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. - Nemotron 3 Ultra Free (kostenlose NVIDIA-Endpunkte): Nur für Testzwecke — übermitteln Sie keine personenbezogenen oder vertraulichen Daten. Ihre Nutzung wird zu Sicherheitszwecken und zur Verbesserung der Produkte und Dienste von NVIDIA protokolliert. Die zu Verbesserungszwecken protokollierten Sitzungsdaten sind nicht mit Ihrer Identität oder einem dauerhaften Identifikator verknüpft. Weitere Informationen zu unseren Datenverarbeitungspraktiken finden Sie in unserer [Datenschutzrichtlinie](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Durch die Interaktion mit diesem Endpunkt stimmen Sie unserer Erhebung, Aufzeichnung und Nutzung solcher Informationen sowie den [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) zu. - Nemotron 3.5 Lightning Free (kostenlose NVIDIA-Endpunkte): Nur für Testzwecke — übermitteln Sie keine personenbezogenen oder vertraulichen Daten. Ihre Nutzung wird zu Sicherheitszwecken und zur Verbesserung der Produkte und Dienste von NVIDIA protokolliert. Die zu Verbesserungszwecken protokollierten Sitzungsdaten sind nicht mit Ihrer Identität oder einem dauerhaften Identifikator verknüpft. Weitere Informationen zu unseren Datenverarbeitungspraktiken finden Sie in unserer [Datenschutzrichtlinie](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Durch die Interaktion mit diesem Endpunkt stimmen Sie unserer Erhebung, Aufzeichnung und Nutzung solcher Informationen sowie den [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) zu. - OpenAI APIs: Anfragen werden in Übereinstimmung mit [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) 30 Tage lang gespeichert. diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index f325c7f12..421a6ac66 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -118,7 +118,6 @@ También puedes acceder a nuestros modelos a través de los siguientes endpoints | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -150,7 +149,6 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -229,7 +227,6 @@ Los modelos gratuitos: - MiMo-V2.5 Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Hy3 Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Laguna S 2.1 Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. -- Ling-3.0-tiny Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Nemotron 3 Ultra Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Nemotron 3.5 Lightning Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Big Pickle es un modelo stealth que es gratuito en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. @@ -291,7 +288,6 @@ Todos nuestros modelos están alojados en US. Nuestros proveedores siguen una po - MiMo-V2.5 Free: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. - Hy3 Free: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. - Laguna S 2.1 Free: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. -- Ling-3.0-tiny Free: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. - Nemotron 3 Ultra Free (endpoints gratuitos de NVIDIA): Solo para uso de prueba — no envíes datos personales ni confidenciales. Tu uso se registra con fines de seguridad y para mejorar los productos y servicios de NVIDIA. Los datos de sesión registrados con fines de mejora no están vinculados a tu identidad ni a ningún identificador persistente. Para obtener más información sobre nuestras prácticas de procesamiento de datos, consulta nuestra [Política de privacidad](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Al interactuar con este endpoint, aceptas que recopilemos, registremos y usemos dicha información, así como los [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoints gratuitos de NVIDIA): Solo para uso de prueba — no envíes datos personales ni confidenciales. Tu uso se registra con fines de seguridad y para mejorar los productos y servicios de NVIDIA. Los datos de sesión registrados con fines de mejora no están vinculados a tu identidad ni a ningún identificador persistente. Para obtener más información sobre nuestras prácticas de procesamiento de datos, consulta nuestra [Política de privacidad](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Al interactuar con este endpoint, aceptas que recopilemos, registremos y usemos dicha información, así como los [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Las solicitudes se conservan durante 30 días de acuerdo con [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index 536224829..be2c18380 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -109,7 +109,6 @@ Vous pouvez également accéder à nos modèles via les points de terminaison AP | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -139,7 +138,6 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -218,7 +216,6 @@ Les modèles gratuits : - MiMo-V2.5 Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Hy3 Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Laguna S 2.1 Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. -- Ling-3.0-tiny Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Nemotron 3 Ultra Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Nemotron 3.5 Lightning Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Big Pickle est un modèle stealth gratuit sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. @@ -277,7 +274,6 @@ Tous nos modèles sont hébergés aux US. Nos fournisseurs suivent une politique - MiMo-V2.5 Free : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. - Hy3 Free : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. - Laguna S 2.1 Free : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. -- Ling-3.0-tiny Free : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. - Nemotron 3 Ultra Free (endpoints NVIDIA gratuits) : Réservé à un usage d'essai — n'envoyez pas de données personnelles ou confidentielles. Votre utilisation est journalisée à des fins de sécurité et pour améliorer les produits et services de NVIDIA. Les données de session journalisées à des fins d'amélioration ne sont pas liées à votre identité ni à un quelconque identifiant persistant. Pour plus d'informations sur nos pratiques de traitement des données, consultez notre [Politique de confidentialité](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). En interagissant avec cet endpoint, vous consentez à notre collecte, à notre enregistrement et à notre utilisation de ces informations ainsi qu'aux [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoints NVIDIA gratuits) : Réservé à un usage d'essai — n'envoyez pas de données personnelles ou confidentielles. Votre utilisation est journalisée à des fins de sécurité et pour améliorer les produits et services de NVIDIA. Les données de session journalisées à des fins d'amélioration ne sont pas liées à votre identité ni à un quelconque identifiant persistant. Pour plus d'informations sur nos pratiques de traitement des données, consultez notre [Politique de confidentialité](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). En interagissant avec cet endpoint, vous consentez à notre collecte, à notre enregistrement et à notre utilisation de ces informations ainsi qu'aux [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs : Les requêtes sont conservées pendant 30 jours conformément à [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index 8b9c50e0f..cf7ef2c40 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -118,7 +118,6 @@ Puoi anche accedere ai nostri modelli tramite i seguenti endpoint API. | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -150,7 +149,6 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -229,7 +227,6 @@ I modelli gratuiti: - MiMo-V2.5 Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Hy3 Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Laguna S 2.1 Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. -- Ling-3.0-tiny Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Nemotron 3 Ultra Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Nemotron 3.5 Lightning Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Big Pickle è un modello stealth che è gratuito su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. @@ -291,7 +288,6 @@ Tutti i nostri modelli sono ospitati negli US. I nostri provider seguono una pol - MiMo-V2.5 Free: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. - Hy3 Free: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. - Laguna S 2.1 Free: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. -- Ling-3.0-tiny Free: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. - Nemotron 3 Ultra Free (endpoint NVIDIA gratuiti): solo per uso di prova — non inviare dati personali o riservati. Il tuo utilizzo viene registrato per finalità di sicurezza e per migliorare i prodotti e i servizi di NVIDIA. I dati di sessione registrati a fini di miglioramento non sono collegati alla tua identità né ad alcun identificatore persistente. Per maggiori informazioni sulle nostre pratiche di trattamento dei dati, consulta la nostra [Informativa sulla privacy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interagendo con questo endpoint, acconsenti alla nostra raccolta, registrazione e utilizzo di tali informazioni e ai [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoint NVIDIA gratuiti): solo per uso di prova — non inviare dati personali o riservati. Il tuo utilizzo viene registrato per finalità di sicurezza e per migliorare i prodotti e i servizi di NVIDIA. I dati di sessione registrati a fini di miglioramento non sono collegati alla tua identità né ad alcun identificatore persistente. Per maggiori informazioni sulle nostre pratiche di trattamento dei dati, consulta la nostra [Informativa sulla privacy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interagendo con questo endpoint, acconsenti alla nostra raccolta, registrazione e utilizzo di tali informazioni e ai [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: le richieste vengono conservate per 30 giorni in conformità con [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index 0f8b9005b..8a6ddddb0 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -109,7 +109,6 @@ OpenCode Zen は、OpenCode のほかのプロバイダーと同じように動 | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -139,7 +138,6 @@ https://opencode.ai/zen/v1/models | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -218,7 +216,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Hy3 Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Laguna S 2.1 Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 -- Ling-3.0-tiny Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Nemotron 3 Ultra Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Nemotron 3.5 Lightning Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Big Pickle はステルスモデルで、期間限定で OpenCode で無料提供されています。チームはこの期間中にフィードバックを集め、モデルを改善しています。 @@ -277,7 +274,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 - Hy3 Free: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 - Laguna S 2.1 Free: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 -- Ling-3.0-tiny Free: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 - Nemotron 3 Ultra Free(NVIDIA の無料エンドポイント): 試用専用です — 個人情報や機密データは送信しないでください。お客様の利用は、セキュリティ目的および NVIDIA の製品とサービスの改善のために記録されます。改善目的で記録されたセッションデータは、お客様の身元や永続的な識別子とは関連付けられません。当社のデータ処理慣行の詳細については、[プライバシーポリシー](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)をご覧ください。このエンドポイントを利用することで、お客様はそのような情報の当社による収集、記録、利用、および [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) に同意したものとみなされます。 - Nemotron 3.5 Lightning Free(NVIDIA の無料エンドポイント): 試用専用です — 個人情報や機密データは送信しないでください。お客様の利用は、セキュリティ目的および NVIDIA の製品とサービスの改善のために記録されます。改善目的で記録されたセッションデータは、お客様の身元や永続的な識別子とは関連付けられません。当社のデータ処理慣行の詳細については、[プライバシーポリシー](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)をご覧ください。このエンドポイントを利用することで、お客様はそのような情報の当社による収集、記録、利用、および [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) に同意したものとみなされます。 - OpenAI APIs: リクエストは [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) に従って 30 日間保持されます。 diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index 2e8129b83..3c30e2c85 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -109,7 +109,6 @@ OpenCode Zen은 OpenCode의 다른 provider와 똑같이 작동합니다. | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -139,7 +138,6 @@ https://opencode.ai/zen/v1/models | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -218,7 +216,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Hy3 Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Laguna S 2.1 Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. -- Ling-3.0-tiny Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Nemotron 3 Ultra Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Nemotron 3.5 Lightning Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Big Pickle은 한정된 기간 동안 OpenCode에서 무료로 제공되는 stealth model입니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. @@ -277,7 +274,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. - Hy3 Free: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. - Laguna S 2.1 Free: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. -- Ling-3.0-tiny Free: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. - Nemotron 3 Ultra Free(NVIDIA 무료 엔드포인트): 평가판 전용이며 — 개인 정보나 기밀 데이터는 제출하지 마세요. 사용 내역은 보안 목적과 NVIDIA 제품 및 서비스 개선을 위해 기록됩니다. 개선 목적으로 기록된 세션 데이터는 사용자의 신원이나 영구 식별자와 연결되지 않습니다. 당사의 데이터 처리 관행에 대한 자세한 내용은 [개인정보처리방침](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)을 참조하세요. 이 엔드포인트와 상호 작용함으로써 사용자는 당사가 이러한 정보를 수집, 기록, 사용하는 것과 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)에 동의하게 됩니다. - Nemotron 3.5 Lightning Free(NVIDIA 무료 엔드포인트): 평가판 전용이며 — 개인 정보나 기밀 데이터는 제출하지 마세요. 사용 내역은 보안 목적과 NVIDIA 제품 및 서비스 개선을 위해 기록됩니다. 개선 목적으로 기록된 세션 데이터는 사용자의 신원이나 영구 식별자와 연결되지 않습니다. 당사의 데이터 처리 관행에 대한 자세한 내용은 [개인정보처리방침](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)을 참조하세요. 이 엔드포인트와 상호 작용함으로써 사용자는 당사가 이러한 정보를 수집, 기록, 사용하는 것과 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)에 동의하게 됩니다. - OpenAI APIs: 요청은 [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data)에 따라 30일 동안 보관됩니다. diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index 9afef5334..4f6e50cc8 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -118,7 +118,6 @@ Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter. | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -150,7 +149,6 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -229,7 +227,6 @@ Gratis-modellene: - MiMo-V2.5 Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Hy3 Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Laguna S 2.1 Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. -- Ling-3.0-tiny Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Nemotron 3 Ultra Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Nemotron 3.5 Lightning Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Big Pickle er en stealth-modell som er gratis på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. @@ -291,7 +288,6 @@ Alle modellene våre hostes i US. Leverandørene våre følger en policy for zer - MiMo-V2.5 Free: I gratisperioden kan innsamlede data brukes til å forbedre modellen. - Hy3 Free: I gratisperioden kan innsamlede data brukes til å forbedre modellen. - Laguna S 2.1 Free: I gratisperioden kan innsamlede data brukes til å forbedre modellen. -- Ling-3.0-tiny Free: I gratisperioden kan innsamlede data brukes til å forbedre modellen. - Nemotron 3 Ultra Free (gratis NVIDIA-endepunkter): Kun for prøvebruk — ikke send inn personopplysninger eller konfidensielle data. Bruken din logges av sikkerhetshensyn og for å forbedre NVIDIAs produkter og tjenester. Sesjonsdataene som logges for forbedringsformål, er ikke knyttet til identiteten din eller noen vedvarende identifikator. For mer informasjon om vår databehandlingspraksis, se vår [personvernerklæring](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved å samhandle med dette endepunktet samtykker du til at vi samler inn, registrerer og bruker slik informasjon, samt til [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (gratis NVIDIA-endepunkter): Kun for prøvebruk — ikke send inn personopplysninger eller konfidensielle data. Bruken din logges av sikkerhetshensyn og for å forbedre NVIDIAs produkter og tjenester. Sesjonsdataene som logges for forbedringsformål, er ikke knyttet til identiteten din eller noen vedvarende identifikator. For mer informasjon om vår databehandlingspraksis, se vår [personvernerklæring](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved å samhandle med dette endepunktet samtykker du til at vi samler inn, registrerer og bruker slik informasjon, samt til [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Forespørsler lagres i 30 dager i samsvar med [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index 70dabc77e..d30828728 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -118,7 +118,6 @@ Możesz też uzyskać dostęp do naszych modeli przez poniższe endpointy API. | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -150,7 +149,6 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -229,7 +227,6 @@ Darmowe modele: - MiMo-V2.5 Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Hy3 Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Laguna S 2.1 Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. -- Ling-3.0-tiny Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Nemotron 3 Ultra Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Nemotron 3.5 Lightning Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Big Pickle to stealth model, który jest darmowy w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. @@ -291,7 +288,6 @@ Wszystkie nasze modele są hostowane w US. Nasi dostawcy stosują politykę zero - MiMo-V2.5 Free: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. - Hy3 Free: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. - Laguna S 2.1 Free: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. -- Ling-3.0-tiny Free: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. - Nemotron 3 Ultra Free (darmowe endpointy NVIDIA): Tylko do użytku próbnego — nie przesyłaj danych osobowych ani poufnych. Twoje korzystanie jest rejestrowane w celach bezpieczeństwa oraz w celu ulepszania produktów i usług NVIDIA. Rejestrowane dane sesji wykorzystywane do celów ulepszania nie są powiązane z Twoją tożsamością ani żadnym trwałym identyfikatorem. Aby uzyskać więcej informacji o naszych praktykach przetwarzania danych, zapoznaj się z naszą [Polityką prywatności](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Korzystając z tego endpointu, wyrażasz zgodę na gromadzenie, rejestrowanie i wykorzystywanie przez nas takich informacji oraz na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (darmowe endpointy NVIDIA): Tylko do użytku próbnego — nie przesyłaj danych osobowych ani poufnych. Twoje korzystanie jest rejestrowane w celach bezpieczeństwa oraz w celu ulepszania produktów i usług NVIDIA. Rejestrowane dane sesji wykorzystywane do celów ulepszania nie są powiązane z Twoją tożsamością ani żadnym trwałym identyfikatorem. Aby uzyskać więcej informacji o naszych praktykach przetwarzania danych, zapoznaj się z naszą [Polityką prywatności](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Korzystając z tego endpointu, wyrażasz zgodę na gromadzenie, rejestrowanie i wykorzystywanie przez nas takich informacji oraz na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Żądania są przechowywane przez 30 dni zgodnie z [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index 95b153962..279569348 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -109,7 +109,6 @@ Você também pode acessar nossos modelos pelos seguintes endpoints de API. | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -139,7 +138,6 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -218,7 +216,6 @@ Os modelos gratuitos: - MiMo-V2.5 Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Hy3 Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Laguna S 2.1 Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. -- Ling-3.0-tiny Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Nemotron 3 Ultra Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Nemotron 3.5 Lightning Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Big Pickle é um modelo stealth que está gratuito no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. @@ -277,7 +274,6 @@ Todos os nossos modelos são hospedados nos US. Nossos provedores seguem uma pol - MiMo-V2.5 Free: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. - Hy3 Free: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. - Laguna S 2.1 Free: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. -- Ling-3.0-tiny Free: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. - Nemotron 3 Ultra Free (endpoints gratuitos da NVIDIA): Apenas para uso de avaliação — não envie dados pessoais ou confidenciais. Seu uso é registrado para fins de segurança e para melhorar os produtos e serviços da NVIDIA. Os dados de sessão registrados para fins de melhoria não estão vinculados à sua identidade nem a qualquer identificador persistente. Para mais informações sobre nossas práticas de processamento de dados, consulte nossa [Política de Privacidade](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ao interagir com este endpoint, você consente com a nossa coleta, registro e uso dessas informações e com os [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoints gratuitos da NVIDIA): Apenas para uso de avaliação — não envie dados pessoais ou confidenciais. Seu uso é registrado para fins de segurança e para melhorar os produtos e serviços da NVIDIA. Os dados de sessão registrados para fins de melhoria não estão vinculados à sua identidade nem a qualquer identificador persistente. Para mais informações sobre nossas práticas de processamento de dados, consulte nossa [Política de Privacidade](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ao interagir com este endpoint, você consente com a nossa coleta, registro e uso dessas informações e com os [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: As solicitações são retidas por 30 dias de acordo com [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index 1bd3afa34..c93f12526 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -118,7 +118,6 @@ OpenCode Zen работает как любой другой провайдер | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -150,7 +149,6 @@ https://opencode.ai/zen/v1/models | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -229,7 +227,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Hy3 Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Laguna S 2.1 Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. -- Ling-3.0-tiny Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Nemotron 3 Ultra Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Nemotron 3.5 Lightning Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Big Pickle — это скрытая модель, которая доступна бесплатно в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. @@ -291,7 +288,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free: во время бесплатного периода собранные данные могут использоваться для улучшения модели. - Hy3 Free: во время бесплатного периода собранные данные могут использоваться для улучшения модели. - Laguna S 2.1 Free: во время бесплатного периода собранные данные могут использоваться для улучшения модели. -- Ling-3.0-tiny Free: во время бесплатного периода собранные данные могут использоваться для улучшения модели. - Nemotron 3 Ultra Free (бесплатные эндпоинты NVIDIA): только для пробного использования — не отправляйте персональные или конфиденциальные данные. Использование логируется в целях безопасности и для улучшения продуктов и сервисов NVIDIA. Логируемые данные сессии, используемые в целях улучшения, не связаны с вашей личностью или каким-либо постоянным идентификатором. Подробнее о наших практиках обработки данных см. в нашей [Политике конфиденциальности](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Взаимодействуя с этим эндпоинтом, вы соглашаетесь на сбор, запись и использование нами такой информации, а также с [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (бесплатные эндпоинты NVIDIA): только для пробного использования — не отправляйте персональные или конфиденциальные данные. Использование логируется в целях безопасности и для улучшения продуктов и сервисов NVIDIA. Логируемые данные сессии, используемые в целях улучшения, не связаны с вашей личностью или каким-либо постоянным идентификатором. Подробнее о наших практиках обработки данных см. в нашей [Политике конфиденциальности](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Взаимодействуя с этим эндпоинтом, вы соглашаетесь на сбор, запись и использование нами такой информации, а также с [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: запросы хранятся 30 дней в соответствии с [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index 83b785136..c2e136c1a 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -111,7 +111,6 @@ OpenCode Zen ทำงานเหมือน provider อื่น ๆ ใน | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -141,7 +140,6 @@ https://opencode.ai/zen/v1/models | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -220,7 +218,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Hy3 Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Laguna S 2.1 Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล -- Ling-3.0-tiny Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Nemotron 3 Ultra Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Nemotron 3.5 Lightning Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Big Pickle เป็น stealth model ที่ใช้งานฟรีบน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล @@ -279,7 +276,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล - Hy3 Free: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล - Laguna S 2.1 Free: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล -- Ling-3.0-tiny Free: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล - Nemotron 3 Ultra Free (endpoint ฟรีของ NVIDIA): ใช้สำหรับการทดลองเท่านั้น — โปรดอย่าส่งข้อมูลส่วนบุคคลหรือข้อมูลลับ การใช้งานของคุณจะถูกบันทึกเพื่อวัตถุประสงค์ด้านความปลอดภัยและเพื่อปรับปรุงผลิตภัณฑ์และบริการของ NVIDIA ข้อมูลเซสชันที่บันทึกไว้เพื่อวัตถุประสงค์ในการปรับปรุงจะไม่เชื่อมโยงกับตัวตนของคุณหรือตัวระบุถาวรใด ๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแนวปฏิบัติในการประมวลผลข้อมูลของเรา โปรดดู [นโยบายความเป็นส่วนตัว](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) ของเรา การโต้ตอบกับ endpoint นี้ถือว่าคุณยินยอมให้เราเก็บรวบรวม บันทึก และใช้ข้อมูลดังกล่าว รวมถึง [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) - Nemotron 3.5 Lightning Free (endpoint ฟรีของ NVIDIA): ใช้สำหรับการทดลองเท่านั้น — โปรดอย่าส่งข้อมูลส่วนบุคคลหรือข้อมูลลับ การใช้งานของคุณจะถูกบันทึกเพื่อวัตถุประสงค์ด้านความปลอดภัยและเพื่อปรับปรุงผลิตภัณฑ์และบริการของ NVIDIA ข้อมูลเซสชันที่บันทึกไว้เพื่อวัตถุประสงค์ในการปรับปรุงจะไม่เชื่อมโยงกับตัวตนของคุณหรือตัวระบุถาวรใด ๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแนวปฏิบัติในการประมวลผลข้อมูลของเรา โปรดดู [นโยบายความเป็นส่วนตัว](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) ของเรา การโต้ตอบกับ endpoint นี้ถือว่าคุณยินยอมให้เราเก็บรวบรวม บันทึก และใช้ข้อมูลดังกล่าว รวมถึง [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) - OpenAI APIs: คำขอจะถูกเก็บไว้เป็นเวลา 30 วันตาม [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index ec9cd41d5..8008de2ee 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -109,7 +109,6 @@ Modellerimize aşağıdaki API uç noktaları aracılığıyla da erişebilirsin | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -139,7 +138,6 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -218,7 +216,6 @@ Kredi kartı ücretleri maliyet üzerinden yansıtılır (%4.4 + işlem başına - MiMo-V2.5 Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Hy3 Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Laguna S 2.1 Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. -- Ling-3.0-tiny Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Nemotron 3 Ultra Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Nemotron 3.5 Lightning Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Big Pickle, sınırlı bir süre için OpenCode'da ücretsiz olan gizli bir modeldir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. @@ -277,7 +274,6 @@ Tüm modellerimiz US'de barındırılıyor. Sağlayıcılarımız zero-retention - MiMo-V2.5 Free: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. - Hy3 Free: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. - Laguna S 2.1 Free: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. -- Ling-3.0-tiny Free: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. - Nemotron 3 Ultra Free (ücretsiz NVIDIA uç noktaları): Yalnızca deneme amaçlıdır — kişisel veya gizli veri göndermeyin. Kullanımınız güvenlik amacıyla ve NVIDIA ürünlerini ve hizmetlerini geliştirmek için kaydedilir. Geliştirme amacıyla kaydedilen oturum verileri kimliğinizle veya herhangi bir kalıcı tanımlayıcıyla ilişkilendirilmez. Veri işleme uygulamalarımız hakkında daha fazla bilgi için [Gizlilik Politikamıza](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) bakın. Bu uç noktayla etkileşime geçerek, bu tür bilgileri toplamamıza, kaydetmemize ve kullanmamıza ve [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) koşullarına onay vermiş olursunuz. - Nemotron 3.5 Lightning Free (ücretsiz NVIDIA uç noktaları): Yalnızca deneme amaçlıdır — kişisel veya gizli veri göndermeyin. Kullanımınız güvenlik amacıyla ve NVIDIA ürünlerini ve hizmetlerini geliştirmek için kaydedilir. Geliştirme amacıyla kaydedilen oturum verileri kimliğinizle veya herhangi bir kalıcı tanımlayıcıyla ilişkilendirilmez. Veri işleme uygulamalarımız hakkında daha fazla bilgi için [Gizlilik Politikamıza](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) bakın. Bu uç noktayla etkileşime geçerek, bu tür bilgileri toplamamıza, kaydetmemize ve kullanmamıza ve [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) koşullarına onay vermiş olursunuz. - OpenAI APIs: İstekler [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) uyarınca 30 gün boyunca saklanır. diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index 3fa6c16fa..519bb318a 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -118,7 +118,6 @@ You can also access our models through the following API endpoints. | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -150,7 +149,6 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -229,7 +227,6 @@ The free models: - MiMo-V2.5 Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Hy3 Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Laguna S 2.1 Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. -- Ling-3.0-tiny Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Nemotron 3 Ultra Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Nemotron 3.5 Lightning Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Big Pickle is a stealth model that's free on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. @@ -291,7 +288,6 @@ All our models are hosted in the US. Our providers follow a zero-retention polic - MiMo-V2.5 Free: During its free period, collected data may be used to improve the model. - Hy3 Free: During its free period, collected data may be used to improve the model. - Laguna S 2.1 Free: During its free period, collected data may be used to improve the model. -- Ling-3.0-tiny Free: During its free period, collected data may be used to improve the model. - Nemotron 3 Ultra Free (NVIDIA free endpoints): Trial use only — do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (NVIDIA free endpoints): Trial use only — do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Requests are retained for 30 days in accordance with [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index 064bd76b5..503777fe1 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -109,7 +109,6 @@ OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -139,7 +138,6 @@ https://opencode.ai/zen/v1/models | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -218,7 +216,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Hy3 Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Laguna S 2.1 Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 -- Ling-3.0-tiny Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Nemotron 3 Ultra Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Nemotron 3.5 Lightning Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Big Pickle 是一个隐身模型,目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 @@ -277,7 +274,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free:在免费期间,收集的数据可能会被用于改进模型。 - Hy3 Free:在免费期间,收集的数据可能会被用于改进模型。 - Laguna S 2.1 Free:在免费期间,收集的数据可能会被用于改进模型。 -- Ling-3.0-tiny Free:在免费期间,收集的数据可能会被用于改进模型。 - Nemotron 3 Ultra Free(NVIDIA 免费端点):仅供试用 — 请勿提交个人或机密数据。出于安全目的以及为改进 NVIDIA 产品和服务,系统会记录你的使用情况。出于改进目的而记录的会话数据不会与你的身份或任何持久标识符相关联。有关我们数据处理实践的更多信息,请参阅我们的[隐私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。与此端点进行交互,即表示你同意我们收集、记录和使用此类信息,并同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - Nemotron 3.5 Lightning Free(NVIDIA 免费端点):仅供试用 — 请勿提交个人或机密数据。出于安全目的以及为改进 NVIDIA 产品和服务,系统会记录你的使用情况。出于改进目的而记录的会话数据不会与你的身份或任何持久标识符相关联。有关我们数据处理实践的更多信息,请参阅我们的[隐私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。与此端点进行交互,即表示你同意我们收集、记录和使用此类信息,并同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - OpenAI APIs:请求会根据 [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) 保留 30 天。 diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 4bb836112..700480546 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -113,7 +113,6 @@ OpenCode Zen 的運作方式和 OpenCode 中的其他供應商一樣。 | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Laguna S 2.1 Free | laguna-s-2.1-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ling-3.0-tiny Free | ling-3.0-tiny-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Free | deepseek-v4-flash-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -144,7 +143,6 @@ https://opencode.ai/zen/v1/models | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Laguna S 2.1 Free | Free | Free | Free | - | -| Ling-3.0-tiny Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | @@ -223,7 +221,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Hy3 Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Laguna S 2.1 Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 -- Ling-3.0-tiny Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Nemotron 3 Ultra Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Nemotron 3.5 Lightning Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Big Pickle 是一個隱身模型,在 OpenCode 上限時免費提供。團隊正在利用這段時間收集回饋並改進模型。 @@ -283,7 +280,6 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free: 在免費期間,收集到的資料可能會用於改進模型。 - Hy3 Free: 在免費期間,收集到的資料可能會用於改進模型。 - Laguna S 2.1 Free: 在免費期間,收集到的資料可能會用於改進模型。 -- Ling-3.0-tiny Free: 在免費期間,收集到的資料可能會用於改進模型。 - Nemotron 3 Ultra Free(NVIDIA 免費端點):僅供試用 — 請勿提交個人或機密資料。基於安全目的以及為了改進 NVIDIA 產品與服務,系統會記錄你的使用情況。基於改進目的而記錄的工作階段資料不會與你的身分或任何持久識別碼相關聯。有關我們資料處理實務的更多資訊,請參閱我們的[隱私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。與此端點進行互動,即表示你同意我們收集、記錄與使用此類資訊,並同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - Nemotron 3.5 Lightning Free(NVIDIA 免費端點):僅供試用 — 請勿提交個人或機密資料。基於安全目的以及為了改進 NVIDIA 產品與服務,系統會記錄你的使用情況。基於改進目的而記錄的工作階段資料不會與你的身分或任何持久識別碼相關聯。有關我們資料處理實務的更多資訊,請參閱我們的[隱私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。與此端點進行互動,即表示你同意我們收集、記錄與使用此類資訊,並同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - OpenAI APIs: 請求會依據 [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) 保留 30 天。 From 62387f39d4ccbe8672eb57a9a69d26e0ffa42b54 Mon Sep 17 00:00:00 2001 From: Aditya Sethi <72063181+TechyAditya@users.noreply.github.com> Date: Thu, 13 Aug 2026 21:57:29 +0530 Subject: [PATCH 003/271] fix(skills): Update global config path in documentation (#42337) --- packages/core/src/plugin/skill/customize-opencode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/plugin/skill/customize-opencode.md b/packages/core/src/plugin/skill/customize-opencode.md index 549f15e22..c2661172d 100644 --- a/packages/core/src/plugin/skill/customize-opencode.md +++ b/packages/core/src/plugin/skill/customize-opencode.md @@ -40,7 +40,7 @@ already-loaded config until then. | Scope | Path | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------- | | Project config | `./opencode.json`, `./opencode.jsonc`, or `.opencode/opencode.json` (opencode walks up from the cwd to the worktree root) | -| Global config | `~/.config/opencode/opencode.json` (NOT `~/.opencode/`) | +| Global config | `~/.config/opencode/opencode.json` or `~/.config/opencode/opencode.jsonc` (NOT `~/.opencode/`) | | Project agents | `.opencode/agent/.md` or `.opencode/agents/.md` | | Global agents | `~/.config/opencode/agent(s)/.md` | | Project commands | `.opencode/command/.md` or `.opencode/commands/.md` | From ab7cbc808f61e062af20d9a9a838ae93ed8f940d Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Thu, 13 Aug 2026 16:30:12 +0000 Subject: [PATCH 004/271] chore: generate --- packages/core/src/plugin/skill/customize-opencode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/plugin/skill/customize-opencode.md b/packages/core/src/plugin/skill/customize-opencode.md index c2661172d..c02ed72ef 100644 --- a/packages/core/src/plugin/skill/customize-opencode.md +++ b/packages/core/src/plugin/skill/customize-opencode.md @@ -40,7 +40,7 @@ already-loaded config until then. | Scope | Path | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------- | | Project config | `./opencode.json`, `./opencode.jsonc`, or `.opencode/opencode.json` (opencode walks up from the cwd to the worktree root) | -| Global config | `~/.config/opencode/opencode.json` or `~/.config/opencode/opencode.jsonc` (NOT `~/.opencode/`) | +| Global config | `~/.config/opencode/opencode.json` or `~/.config/opencode/opencode.jsonc` (NOT `~/.opencode/`) | | Project agents | `.opencode/agent/.md` or `.opencode/agents/.md` | | Global agents | `~/.config/opencode/agent(s)/.md` | | Project commands | `.opencode/command/.md` or `.opencode/commands/.md` | From 6c035e1fd79ede42506eda9a04cab07cb1e502e7 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Thu, 13 Aug 2026 12:51:43 -0400 Subject: [PATCH 005/271] fix(core): preserve unicode in grep previews (#42356) --- packages/core/src/ripgrep.ts | 5 ++++- packages/core/test/ripgrep.test.ts | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/core/src/ripgrep.ts b/packages/core/src/ripgrep.ts index ac8ea52d9..7e32ddb60 100644 --- a/packages/core/src/ripgrep.ts +++ b/packages/core/src/ripgrep.ts @@ -264,7 +264,10 @@ const layer = Layer.effect( }), line: match.line_number, offset: match.absolute_offset, - text: match.lines.text.length > 2_000 ? match.lines.text.slice(0, 2_000) + "..." : match.lines.text, + text: + match.lines.text.length > 2_000 + ? match.lines.text.slice(0, 2_000).replace(/[\uD800-\uDBFF]$/, "") + "..." + : match.lines.text, submatches: match.submatches.map((submatch) => ({ text: submatch.match.text, start: submatch.start, diff --git a/packages/core/test/ripgrep.test.ts b/packages/core/test/ripgrep.test.ts index 3abce1c02..5695af000 100644 --- a/packages/core/test/ripgrep.test.ts +++ b/packages/core/test/ripgrep.test.ts @@ -62,4 +62,24 @@ describe("Ripgrep", () => { (tmp) => Effect.promise(() => tmp[Symbol.asyncDispose]()), ), ) + it.live("does not split surrogate pairs in oversized line previews", () => + Effect.acquireUseRelease( + Effect.promise(() => tmpdir()), + (tmp) => + Effect.gen(function* () { + yield* Effect.promise(() => + fs.writeFile(path.join(tmp.path, "unicode.txt"), `needle${"x".repeat(1_993)}😀\n`), + ) + + const matches = yield* (yield* Ripgrep.Service).grep({ + cwd: tmp.path, + pattern: "needle", + limit: 10, + }) + + expect(matches[0]?.text).toBe(`needle${"x".repeat(1_993)}...`) + }), + (tmp) => Effect.promise(() => tmp[Symbol.asyncDispose]()), + ), + ) }) From c7af47f9ed3b70d7e1e5cf4b37c6d8ef6f83b3bc Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 13 Aug 2026 13:27:41 -0400 Subject: [PATCH 006/271] update grok endpoint --- packages/web/src/content/docs/ar/go.mdx | 2 +- packages/web/src/content/docs/bs/go.mdx | 2 +- packages/web/src/content/docs/da/go.mdx | 2 +- packages/web/src/content/docs/de/go.mdx | 2 +- packages/web/src/content/docs/es/go.mdx | 2 +- packages/web/src/content/docs/fr/go.mdx | 2 +- packages/web/src/content/docs/go.mdx | 2 +- packages/web/src/content/docs/it/go.mdx | 2 +- packages/web/src/content/docs/ja/go.mdx | 2 +- packages/web/src/content/docs/ko/go.mdx | 2 +- packages/web/src/content/docs/nb/go.mdx | 2 +- packages/web/src/content/docs/pl/go.mdx | 2 +- packages/web/src/content/docs/pt-br/go.mdx | 2 +- packages/web/src/content/docs/ru/go.mdx | 2 +- packages/web/src/content/docs/th/go.mdx | 2 +- packages/web/src/content/docs/tr/go.mdx | 2 +- packages/web/src/content/docs/zh-cn/go.mdx | 2 +- packages/web/src/content/docs/zh-tw/go.mdx | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index b0be0b615..825473b58 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -185,7 +185,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | Model | Model ID | Endpoint | AI SDK Package | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 634b3a868..3154c4866 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -197,7 +197,7 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | Model | Model ID | Endpoint | AI SDK Paket | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 5aabcc7c4..5ec81f090 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -197,7 +197,7 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | Model | Model ID | Endpoint | AI SDK Package | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index 73a11d454..d75eb1ede 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -187,7 +187,7 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | Modell | Modell-ID | Endpunkt | AI SDK Package | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 7182d716f..8f54a3df7 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -197,7 +197,7 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | Modelo | ID del modelo | Endpoint | Paquete de AI SDK | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index c858645e4..7f06df503 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -185,7 +185,7 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | Modèle | ID de modèle | Point de terminaison | Package AI SDK | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 892010586..3c9531de6 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -197,7 +197,7 @@ You can also access Go models through the following API endpoints. | Model | Model ID | Endpoint | AI SDK Package | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index a72404164..af9fb7841 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -195,7 +195,7 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | Modello | ID Modello | Endpoint | Pacchetto AI SDK | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 963a36b1c..7459309b8 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -185,7 +185,7 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | Model | Model ID | Endpoint | AI SDK Package | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 29693cdb6..0cc8c512a 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -185,7 +185,7 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | 모델 | 모델 ID | 엔드포인트 | AI SDK 패키지 | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index afcc39e19..1210ff40b 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -197,7 +197,7 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | Modell | Modell-ID | Endepunkt | AI SDK Package | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index f21573696..c8a459e49 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -189,7 +189,7 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | Model | ID modelu | Punkt końcowy | Pakiet AI SDK | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index fcfc8ed60..623deb4b4 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -197,7 +197,7 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | Modelo | ID do Modelo | Endpoint | Pacote do AI SDK | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 4df18953e..61ab1f362 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -197,7 +197,7 @@ OpenCode Go включает следующие лимиты: | Модель | ID модели | Эндпоинт | Пакет AI SDK | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index f241b77ee..ed31155a5 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -185,7 +185,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Model | Model ID | Endpoint | AI SDK Package | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index b480e0b2e..3a4d9bb93 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -185,7 +185,7 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | Model | Model ID | Uç Nokta | AI SDK Paketi | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index ecf553f33..af214e2ac 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -185,7 +185,7 @@ OpenCode Go 包含以下限制: | 模型 | 模型 ID | 端点 | AI SDK 包 | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index 53da06c77..ce8cfbe78 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -185,7 +185,7 @@ OpenCode Go 包含以下限制: | 模型 | 模型 ID | 端點 | AI SDK 套件 | | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | From d0c2b41adf90c5300fa2c754c1c66c211a36af20 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 14 Aug 2026 01:28:55 +0800 Subject: [PATCH 007/271] docs(go): use responses API for Grok 4.5 (#42373) From f06e9491e1c960cf2c7c20be9dcd04d99394a668 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 14 Aug 2026 02:41:12 +0800 Subject: [PATCH 008/271] feat(go): add Gemini 3.7 Flash (#42390) --- packages/console/app/src/routes/go/index.tsx | 2 ++ .../src/routes/workspace/[id]/go/lite-section.tsx | 1 + .../app/src/routes/zen/go/v1/models/[model].ts | 15 +++++++++++++++ packages/web/src/content/docs/ar/go.mdx | 6 ++++++ packages/web/src/content/docs/ar/zen.mdx | 2 ++ packages/web/src/content/docs/bs/go.mdx | 6 ++++++ packages/web/src/content/docs/bs/zen.mdx | 2 ++ packages/web/src/content/docs/da/go.mdx | 6 ++++++ packages/web/src/content/docs/da/zen.mdx | 2 ++ packages/web/src/content/docs/de/go.mdx | 6 ++++++ packages/web/src/content/docs/de/zen.mdx | 2 ++ packages/web/src/content/docs/es/go.mdx | 6 ++++++ packages/web/src/content/docs/es/zen.mdx | 2 ++ packages/web/src/content/docs/fr/go.mdx | 6 ++++++ packages/web/src/content/docs/fr/zen.mdx | 2 ++ packages/web/src/content/docs/go.mdx | 6 ++++++ packages/web/src/content/docs/it/go.mdx | 6 ++++++ packages/web/src/content/docs/it/zen.mdx | 2 ++ packages/web/src/content/docs/ja/go.mdx | 6 ++++++ packages/web/src/content/docs/ja/zen.mdx | 2 ++ packages/web/src/content/docs/ko/go.mdx | 6 ++++++ packages/web/src/content/docs/ko/zen.mdx | 2 ++ packages/web/src/content/docs/nb/go.mdx | 6 ++++++ packages/web/src/content/docs/nb/zen.mdx | 2 ++ packages/web/src/content/docs/pl/go.mdx | 6 ++++++ packages/web/src/content/docs/pl/zen.mdx | 2 ++ packages/web/src/content/docs/pt-br/go.mdx | 6 ++++++ packages/web/src/content/docs/pt-br/zen.mdx | 2 ++ packages/web/src/content/docs/ru/go.mdx | 6 ++++++ packages/web/src/content/docs/ru/zen.mdx | 2 ++ packages/web/src/content/docs/th/go.mdx | 6 ++++++ packages/web/src/content/docs/th/zen.mdx | 2 ++ packages/web/src/content/docs/tr/go.mdx | 6 ++++++ packages/web/src/content/docs/tr/zen.mdx | 2 ++ packages/web/src/content/docs/zen.mdx | 2 ++ packages/web/src/content/docs/zh-cn/go.mdx | 6 ++++++ packages/web/src/content/docs/zh-cn/zen.mdx | 2 ++ packages/web/src/content/docs/zh-tw/go.mdx | 6 ++++++ packages/web/src/content/docs/zh-tw/zen.mdx | 2 ++ 39 files changed, 162 insertions(+) create mode 100644 packages/console/app/src/routes/zen/go/v1/models/[model].ts diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index 599ce2b5a..321c7925b 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -25,6 +25,7 @@ const checkLoggedIn = query(async () => { const models = [ { name: "Grok 4.5", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention30" }, { name: "GPT 5.6 Luna", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention30" }, + { name: "Gemini 3.7 Flash", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "GLM-5.2", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "GLM-5.1", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Kimi K3", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, @@ -69,6 +70,7 @@ function LimitsGraph(props: { href: string }) { { id: "grok-4.5", name: "Grok 4.5", req: 120, d: "50ms" }, { id: "kimi-k3", name: "Kimi K3", req: 110, d: "75ms" }, { id: "qwen3.8-max", name: "Qwen3.8 Max", req: 160, d: "90ms" }, + { id: "gemini-3.7-flash", name: "Gemini 3.7 Flash", req: 440, baseReq: 220, d: "95ms" }, { id: "glm-5.2", name: "GLM-5.2", req: 880, d: "100ms" }, { id: "minimax-m3", name: "MiniMax M3", req: 3200, d: "210ms" }, { id: "deepseek-v4-pro", name: "DeepSeek V4 Pro", req: 3450, d: "270ms" }, diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index da1b053a3..8a95ec90e 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -306,6 +306,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {
  • Grok 4.5
  • GPT 5.6 Luna
  • +
  • Gemini 3.7 Flash
  • GLM-5.2
  • GLM-5.1
  • Kimi K3
  • diff --git a/packages/console/app/src/routes/zen/go/v1/models/[model].ts b/packages/console/app/src/routes/zen/go/v1/models/[model].ts new file mode 100644 index 000000000..a1a28ad19 --- /dev/null +++ b/packages/console/app/src/routes/zen/go/v1/models/[model].ts @@ -0,0 +1,15 @@ +import type { APIEvent } from "@solidjs/start/server" +import { handler } from "~/routes/zen/util/handler" +import { parseGoogleVariant } from "~/routes/zen/util/variant" + +export function POST(input: APIEvent) { + return handler(input, { + format: "google", + modelList: "lite", + parseApiKey: (headers: Headers) => headers.get("x-goog-api-key") ?? undefined, + parseModel: (url: string, _body: any) => url.split("/").pop()?.split(":")?.[0] ?? "", + parseVariant: (url: string, body: any) => parseGoogleVariant(body), + parseIsStream: (url: string, _body: any) => + url.split("/").pop()?.split(":")?.[1]?.startsWith("streamGenerateContent") ?? false, + }) +} diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 825473b58..592f2ceac 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -53,6 +53,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -90,6 +91,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -110,6 +112,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال - Grok 4.5 — ‏1,100 input، و71,500 cached، و220 output tokens لكل طلب - GLM-5.2/5.1 — ‏700 input، و52,000 cached، و150 output tokens لكل طلب - GPT 5.6 Luna — ‏1,000 توكن إدخال، و50,000 توكن مخزّن مؤقتًا، و220 توكن إخراج لكل طلب +- Gemini 3.7 Flash — ‏1,050 input، و76,500 cached، و300 output tokens لكل طلب - Kimi K3 — ‏1,050 input، و76,500 cached، و300 output tokens لكل طلب - Kimi K2.7/K2.6 — ‏870 input، و55,000 cached، و200 output tokens لكل طلب - DeepSeek V4 Pro — ‏750 input، و82,000 cached، و290 output tokens لكل طلب @@ -133,6 +136,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -189,6 +193,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -227,6 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | غير مستخدَمة | 30 يومًا | | GLM-5.2 | غير مستخدَمة | 0 أيام | | GLM-5.1 | غير مستخدَمة | 0 أيام | +| Gemini 3.7 Flash | غير مستخدَمة | 0 أيام | | Kimi K3 | غير مستخدَمة | 0 أيام | | Kimi K2.7 Code | غير مستخدَمة | 0 أيام | | Kimi K2.6 | غير مستخدَمة | 0 أيام | diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index 39165bd01..f77060632 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -86,6 +86,7 @@ OpenCode Zen هي بوابة AI تتيح لك الوصول إلى هذه الن | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -172,6 +173,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 3154c4866..1814e4ccb 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -63,6 +63,7 @@ Trenutna lista modela uključuje: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -100,6 +101,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -120,6 +122,7 @@ Procjene se zasnivaju na zapaženim obrascima zahtjeva: - Grok 4.5 — 1,100 ulaznih, 71,500 keširanih, 220 izlaznih tokena po zahtjevu - GLM-5.2/5.1 — 700 ulaznih (input), 52,000 keširanih, 150 izlaznih (output) tokena po zahtjevu - GPT 5.6 Luna — 1,000 ulaznih, 50,000 keširanih, 220 izlaznih tokena po zahtjevu +- Gemini 3.7 Flash — 1,050 ulaznih, 76,500 keširanih, 300 izlaznih tokena po zahtjevu - Kimi K3 — 1,050 ulaznih, 76,500 keširanih, 300 izlaznih tokena po zahtjevu - Kimi K2.7/K2.6 — 870 ulaznih, 55,000 keširanih, 200 izlaznih tokena po zahtjevu - DeepSeek V4 Pro — 750 ulaznih, 82,000 keširanih, 290 izlaznih tokena po zahtjevu @@ -143,6 +146,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -201,6 +205,7 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -241,6 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Ne koristi se | 30 dana | | GLM-5.2 | Ne koristi se | 0 dana | | GLM-5.1 | Ne koristi se | 0 dana | +| Gemini 3.7 Flash | Ne koristi se | 0 dana | | Kimi K3 | Ne koristi se | 0 dana | | Kimi K2.7 Code | Ne koristi se | 0 dana | | Kimi K2.6 | Ne koristi se | 0 dana | diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index 914583d92..414d2f497 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -91,6 +91,7 @@ Našim modelima možete pristupiti i preko sljedećih API endpointa. | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,6 +180,7 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 5ec81f090..74149c4c1 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -63,6 +63,7 @@ Den nuværende liste over modeller inkluderer: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -100,6 +101,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -120,6 +122,7 @@ Estimaterne er baseret på observerede anmodningsmønstre: - Grok 4.5 — 1.100 input, 71.500 cachelagrede, 220 output-tokens pr. anmodning - GLM-5.2/5.1 — 700 input, 52.000 cachelagrede, 150 output-tokens pr. anmodning - GPT 5.6 Luna — 1.000 input, 50.000 cachelagrede, 220 output-tokens pr. anmodning +- Gemini 3.7 Flash — 1.050 input, 76.500 cachelagrede, 300 output-tokens pr. anmodning - Kimi K3 — 1.050 input, 76.500 cachelagrede, 300 output-tokens pr. anmodning - Kimi K2.7/K2.6 — 870 input, 55.000 cachelagrede, 200 output-tokens pr. anmodning - DeepSeek V4 Pro — 750 input, 82.000 cachelagrede, 290 output-tokens pr. anmodning @@ -143,6 +146,7 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -201,6 +205,7 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -241,6 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Ikke brugt | 30 dage | | GLM-5.2 | Ikke brugt | 0 dage | | GLM-5.1 | Ikke brugt | 0 dage | +| Gemini 3.7 Flash | Ikke brugt | 0 dage | | Kimi K3 | Ikke brugt | 0 dage | | Kimi K2.7 Code | Ikke brugt | 0 dage | | Kimi K2.6 | Ikke brugt | 0 dage | diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index 10ed285b0..ca306e8a6 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -91,6 +91,7 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints. | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,6 +180,7 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index d75eb1ede..da5078b6a 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -55,6 +55,7 @@ Die aktuelle Liste der Modelle umfasst: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -92,6 +93,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -112,6 +114,7 @@ Die Schätzungen basieren auf beobachteten Anfragemustern: - Grok 4.5 — 1.100 Input-, 71.500 Cached-, 220 Output-Tokens pro Anfrage - GLM-5.2/5.1 — 700 Input-, 52.000 Cached-, 150 Output-Tokens pro Anfrage - GPT 5.6 Luna — 1.000 Input-, 50.000 Cached-, 220 Output-Tokens pro Anfrage +- Gemini 3.7 Flash — 1.050 Input-, 76.500 Cached-, 300 Output-Tokens pro Anfrage - Kimi K3 — 1.050 Input-, 76.500 Cached-, 300 Output-Tokens pro Anfrage - Kimi K2.7/K2.6 — 870 Input-, 55.000 Cached-, 200 Output-Tokens pro Anfrage - DeepSeek V4 Pro — 750 Input-, 82.000 Cached-, 290 Output-Tokens pro Anfrage @@ -135,6 +138,7 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -191,6 +195,7 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -229,6 +234,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Nicht verwendet | 30 Tage | | GLM-5.2 | Nicht verwendet | 0 Tage | | GLM-5.1 | Nicht verwendet | 0 Tage | +| Gemini 3.7 Flash | Nicht verwendet | 0 Tage | | Kimi K3 | Nicht verwendet | 0 Tage | | Kimi K2.7 Code | Nicht verwendet | 0 Tage | | Kimi K2.6 | Nicht verwendet | 0 Tage | diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index fcbb90619..0fa0de549 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -82,6 +82,7 @@ Du kannst auch über die folgenden API-Endpunkte auf unsere Modelle zugreifen. | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,6 +169,7 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 8f54a3df7..4aa80288c 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -63,6 +63,7 @@ La lista actual de modelos incluye: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -100,6 +101,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -120,6 +122,7 @@ Las estimaciones se basan en los patrones de peticiones observados: - Grok 4.5 — 1,100 tokens de entrada, 71,500 en caché, 220 tokens de salida por petición - GLM-5.2/5.1 — 700 tokens de entrada, 52,000 en caché, 150 tokens de salida por petición - GPT 5.6 Luna — 1,000 tokens de entrada, 50,000 en caché, 220 tokens de salida por petición +- Gemini 3.7 Flash — 1,050 tokens de entrada, 76,500 en caché, 300 tokens de salida por petición - Kimi K3 — 1,050 tokens de entrada, 76,500 en caché, 300 tokens de salida por petición - Kimi K2.7/K2.6 — 870 tokens de entrada, 55,000 en caché, 200 tokens de salida por petición - DeepSeek V4 Pro — 750 tokens de entrada, 82,000 en caché, 290 tokens de salida por petición @@ -143,6 +146,7 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -201,6 +205,7 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -241,6 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | No utilizado | 30 días | | GLM-5.2 | No utilizado | 0 días | | GLM-5.1 | No utilizado | 0 días | +| Gemini 3.7 Flash | No utilizado | 0 días | | Kimi K3 | No utilizado | 0 días | | Kimi K2.7 Code | No utilizado | 0 días | | Kimi K2.6 | No utilizado | 0 días | diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index 421a6ac66..948cfe9e1 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -91,6 +91,7 @@ También puedes acceder a nuestros modelos a través de los siguientes endpoints | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,6 +180,7 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 7f06df503..af2f7295b 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -53,6 +53,7 @@ La liste actuelle des modèles comprend : - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -90,6 +91,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -110,6 +112,7 @@ Les estimations sont basées sur les schémas de requêtes observés : - Grok 4.5 — 1,100 tokens en entrée, 71,500 en cache, 220 tokens en sortie par requête - GLM-5.2/5.1 — 700 tokens en entrée, 52,000 en cache, 150 tokens en sortie par requête - GPT 5.6 Luna — 1,000 tokens en entrée, 50,000 en cache, 220 tokens en sortie par requête +- Gemini 3.7 Flash — 1,050 tokens en entrée, 76,500 en cache, 300 tokens en sortie par requête - Kimi K3 — 1,050 tokens en entrée, 76,500 en cache, 300 tokens en sortie par requête - Kimi K2.7/K2.6 — 870 tokens en entrée, 55,000 en cache, 200 tokens en sortie par requête - DeepSeek V4 Pro — 750 tokens en entrée, 82,000 en cache, 290 tokens en sortie par requête @@ -133,6 +136,7 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -189,6 +193,7 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -227,6 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Non utilisé | 30 jours | | GLM-5.2 | Non utilisé | 0 jour | | GLM-5.1 | Non utilisé | 0 jour | +| Gemini 3.7 Flash | Non utilisé | 0 jour | | Kimi K3 | Non utilisé | 0 jour | | Kimi K2.7 Code | Non utilisé | 0 jour | | Kimi K2.6 | Non utilisé | 0 jour | diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index be2c18380..073a9d2e0 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -82,6 +82,7 @@ Vous pouvez également accéder à nos modèles via les points de terminaison AP | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,6 +169,7 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 3c9531de6..09c991c5f 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -63,6 +63,7 @@ The current list of models includes: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -100,6 +101,7 @@ The table below provides an estimated request count based on typical Go usage pa | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -120,6 +122,7 @@ The estimates are based on observed request patterns: - Grok 4.5 — 1,100 input, 71,500 cached, 220 output tokens per request - GLM-5.2/5.1 — 700 input, 52,000 cached, 150 output tokens per request - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens per request +- Gemini 3.7 Flash — 1,050 input, 76,500 cached, 300 output tokens per request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens per request - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens per request - DeepSeek V4 Pro — 750 input, 82,000 cached, 290 output tokens per request @@ -143,6 +146,7 @@ The estimates are also based on the following prices per 1M tokens and the month | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -201,6 +205,7 @@ You can also access Go models through the following API endpoints. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -241,6 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Not used | 30 days | | GLM-5.2 | Not used | 0 days | | GLM-5.1 | Not used | 0 days | +| Gemini 3.7 Flash | Not used | 0 days | | Kimi K3 | Not used | 0 days | | Kimi K2.7 Code | Not used | 0 days | | Kimi K2.6 | Not used | 0 days | diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index af9fb7841..a275091d7 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -61,6 +61,7 @@ L'elenco attuale dei modelli include: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -98,6 +99,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -118,6 +120,7 @@ Le stime si basano sui pattern di richieste osservati: - Grok 4.5 — 1.100 di input, 71.500 in cache, 220 token di output per richiesta - GLM-5.2/5.1 — 700 di input, 52.000 in cache, 150 token di output per richiesta - GPT 5.6 Luna — 1.000 token di input, 50.000 in cache, 220 token di output per richiesta +- Gemini 3.7 Flash — 1.050 di input, 76.500 in cache, 300 token di output per richiesta - Kimi K3 — 1.050 di input, 76.500 in cache, 300 token di output per richiesta - Kimi K2.7/K2.6 — 870 di input, 55.000 in cache, 200 token di output per richiesta - DeepSeek V4 Pro — 750 di input, 82.000 in cache, 290 token di output per richiesta @@ -141,6 +144,7 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -199,6 +203,7 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -239,6 +244,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Non utilizzato | 30 giorni | | GLM-5.2 | Non utilizzato | 0 giorni | | GLM-5.1 | Non utilizzato | 0 giorni | +| Gemini 3.7 Flash | Non utilizzato | 0 giorni | | Kimi K3 | Non utilizzato | 0 giorni | | Kimi K2.7 Code | Non utilizzato | 0 giorni | | Kimi K2.6 | Non utilizzato | 0 giorni | diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index cf7ef2c40..c6f8a87b2 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -91,6 +91,7 @@ Puoi anche accedere ai nostri modelli tramite i seguenti endpoint API. | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,6 +180,7 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 7459309b8..b0d0011f1 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -53,6 +53,7 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -90,6 +91,7 @@ OpenCode Goには以下の制限が含まれています: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -110,6 +112,7 @@ OpenCode Goには以下の制限が含まれています: - Grok 4.5 — リクエストあたり 入力 1,100トークン、キャッシュ 71,500トークン、出力 220トークン - GLM-5.2/5.1 — リクエストあたり 入力 700トークン、キャッシュ 52,000トークン、出力 150トークン - GPT 5.6 Luna — リクエストあたり 入力 1,000トークン、キャッシュ 50,000トークン、出力 220トークン +- Gemini 3.7 Flash — リクエストあたり 入力 1,050トークン、キャッシュ 76,500トークン、出力 300トークン - Kimi K3 — リクエストあたり 入力 1,050トークン、キャッシュ 76,500トークン、出力 300トークン - Kimi K2.7/K2.6 — リクエストあたり 入力 870トークン、キャッシュ 55,000トークン、出力 200トークン - DeepSeek V4 Pro — リクエストあたり 入力 750トークン、キャッシュ 82,000トークン、出力 290トークン @@ -133,6 +136,7 @@ OpenCode Goには以下の制限が含まれています: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -189,6 +193,7 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -227,6 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 使用なし | 30日 | | GLM-5.2 | 使用なし | 0日 | | GLM-5.1 | 使用なし | 0日 | +| Gemini 3.7 Flash | 使用なし | 0日 | | Kimi K3 | 使用なし | 0日 | | Kimi K2.7 Code | 使用なし | 0日 | | Kimi K2.6 | 使用なし | 0日 | diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index 8a6ddddb0..31eca1ffc 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -82,6 +82,7 @@ OpenCode Zen は、OpenCode のほかのプロバイダーと同じように動 | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,6 +169,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 0cc8c512a..770c11ee1 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -53,6 +53,7 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -90,6 +91,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -110,6 +112,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. - Grok 4.5 — 요청당 입력 1,100, 캐시 71,500, 출력 토큰 220 - GLM-5.2/5.1 — 요청당 입력 700, 캐시 52,000, 출력 토큰 150 - GPT 5.6 Luna — 요청당 입력 토큰 1,000개, 캐시 토큰 50,000개, 출력 토큰 220개 +- Gemini 3.7 Flash — 요청당 입력 1,050, 캐시 76,500, 출력 토큰 300 - Kimi K3 — 요청당 입력 1,050, 캐시 76,500, 출력 토큰 300 - Kimi K2.7/K2.6 — 요청당 입력 870, 캐시 55,000, 출력 토큰 200 - DeepSeek V4 Pro — 요청당 입력 750, 캐시 82,000, 출력 토큰 290 @@ -133,6 +136,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -189,6 +193,7 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -227,6 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 사용되지 않음 | 30일 | | GLM-5.2 | 사용되지 않음 | 0일 | | GLM-5.1 | 사용되지 않음 | 0일 | +| Gemini 3.7 Flash | 사용되지 않음 | 0일 | | Kimi K3 | 사용되지 않음 | 0일 | | Kimi K2.7 Code | 사용되지 않음 | 0일 | | Kimi K2.6 | 사용되지 않음 | 0일 | diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index 3c30e2c85..af53a1794 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -82,6 +82,7 @@ OpenCode Zen은 OpenCode의 다른 provider와 똑같이 작동합니다. | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,6 +169,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 1210ff40b..09869cf1a 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -63,6 +63,7 @@ Den nåværende listen over modeller inkluderer: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -100,6 +101,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -120,6 +122,7 @@ Estimatene er basert på observerte forespørselsmønstre: - Grok 4.5 — 1 100 input, 71 500 bufret, 220 output-tokens per forespørsel - GLM-5.2/5.1 — 700 input, 52 000 bufret, 150 output-tokens per forespørsel - GPT 5.6 Luna — 1 000 input, 50 000 bufret, 220 output-tokens per forespørsel +- Gemini 3.7 Flash — 1 050 input, 76 500 bufret, 300 output-tokens per forespørsel - Kimi K3 — 1 050 input, 76 500 bufret, 300 output-tokens per forespørsel - Kimi K2.7/K2.6 — 870 input, 55 000 bufret, 200 output-tokens per forespørsel - DeepSeek V4 Pro — 750 input, 82 000 bufret, 290 output-tokens per forespørsel @@ -143,6 +146,7 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -201,6 +205,7 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -241,6 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Brukes ikke | 30 dager | | GLM-5.2 | Brukes ikke | 0 dager | | GLM-5.1 | Brukes ikke | 0 dager | +| Gemini 3.7 Flash | Brukes ikke | 0 dager | | Kimi K3 | Brukes ikke | 0 dager | | Kimi K2.7 Code | Brukes ikke | 0 dager | | Kimi K2.6 | Brukes ikke | 0 dager | diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index 4f6e50cc8..8c83d61ff 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -91,6 +91,7 @@ Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter. | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,6 +180,7 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index c8a459e49..296bbffdb 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -57,6 +57,7 @@ Obecna lista modeli obejmuje: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -94,6 +95,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -114,6 +116,7 @@ Szacunki te opierają się na zaobserwowanych wzorcach żądań: - Grok 4.5 — 1 100 tokenów wejściowych, 71 500 w pamięci podręcznej, 220 tokenów wyjściowych na żądanie - GLM-5.2/5.1 — 700 tokenów wejściowych, 52 000 w pamięci podręcznej, 150 tokenów wyjściowych na żądanie - GPT 5.6 Luna — 1 000 tokenów wejściowych, 50 000 w pamięci podręcznej, 220 tokenów wyjściowych na żądanie +- Gemini 3.7 Flash — 1 050 tokenów wejściowych, 76 500 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie - Kimi K3 — 1 050 tokenów wejściowych, 76 500 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie - Kimi K2.7/K2.6 — 870 tokenów wejściowych, 55 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie - DeepSeek V4 Pro — 750 tokenów wejściowych, 82 000 w pamięci podręcznej, 290 tokenów wyjściowych na żądanie @@ -137,6 +140,7 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -193,6 +197,7 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -233,6 +238,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Niewykorzystywane | 30 dni | | GLM-5.2 | Niewykorzystywane | 0 dni | | GLM-5.1 | Niewykorzystywane | 0 dni | +| Gemini 3.7 Flash | Niewykorzystywane | 0 dni | | Kimi K3 | Niewykorzystywane | 0 dni | | Kimi K2.7 Code | Niewykorzystywane | 0 dni | | Kimi K2.6 | Niewykorzystywane | 0 dni | diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index d30828728..5e2833e90 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -91,6 +91,7 @@ Możesz też uzyskać dostęp do naszych modeli przez poniższe endpointy API. | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,6 +180,7 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 623deb4b4..b6442c577 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -63,6 +63,7 @@ A lista atual de modelos inclui: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -100,6 +101,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -120,6 +122,7 @@ As estimativas se baseiam nos padrões de requisições observados: - Grok 4.5 — 1.100 tokens de entrada, 71.500 em cache, 220 tokens de saída por requisição - GLM-5.2/5.1 — 700 tokens de entrada, 52.000 em cache, 150 tokens de saída por requisição - GPT 5.6 Luna — 1.000 tokens de entrada, 50.000 em cache, 220 tokens de saída por requisição +- Gemini 3.7 Flash — 1.050 tokens de entrada, 76.500 em cache, 300 tokens de saída por requisição - Kimi K3 — 1.050 tokens de entrada, 76.500 em cache, 300 tokens de saída por requisição - Kimi K2.7/K2.6 — 870 tokens de entrada, 55.000 em cache, 200 tokens de saída por requisição - DeepSeek V4 Pro — 750 tokens de entrada, 82.000 em cache, 290 tokens de saída por requisição @@ -143,6 +146,7 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -201,6 +205,7 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -241,6 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Não usado | 30 dias | | GLM-5.2 | Não usado | 0 dias | | GLM-5.1 | Não usado | 0 dias | +| Gemini 3.7 Flash | Não usado | 0 dias | | Kimi K3 | Não usado | 0 dias | | Kimi K2.7 Code | Não usado | 0 dias | | Kimi K2.6 | Não usado | 0 dias | diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index 279569348..afb0255d1 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -82,6 +82,7 @@ Você também pode acessar nossos modelos pelos seguintes endpoints de API. | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,6 +169,7 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 61ab1f362..57995aaf9 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -63,6 +63,7 @@ OpenCode Go работает так же, как и любой другой пр - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -100,6 +101,7 @@ OpenCode Go включает следующие лимиты: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -120,6 +122,7 @@ OpenCode Go включает следующие лимиты: - Grok 4.5 — 1,100 входных, 71,500 кешированных, 220 выходных токенов на запрос - GLM-5.2/5.1 — 700 входных, 52,000 кешированных, 150 выходных токенов на запрос - GPT 5.6 Luna — 1,000 входных, 50,000 кешированных, 220 выходных токенов на запрос +- Gemini 3.7 Flash — 1,050 входных, 76,500 кешированных, 300 выходных токенов на запрос - Kimi K3 — 1,050 входных, 76,500 кешированных, 300 выходных токенов на запрос - Kimi K2.7/K2.6 — 870 входных, 55,000 кешированных, 200 выходных токенов на запрос - DeepSeek V4 Pro — 750 входных, 82,000 кешированных, 290 выходных токенов на запрос @@ -143,6 +146,7 @@ OpenCode Go включает следующие лимиты: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -201,6 +205,7 @@ OpenCode Go включает следующие лимиты: | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -241,6 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Не используется | 30 дней | | GLM-5.2 | Не используется | 0 дней | | GLM-5.1 | Не используется | 0 дней | +| Gemini 3.7 Flash | Не используется | 0 дней | | Kimi K3 | Не используется | 0 дней | | Kimi K2.7 Code | Не используется | 0 дней | | Kimi K2.6 | Не используется | 0 дней | diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index c93f12526..8760a1c40 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -91,6 +91,7 @@ OpenCode Zen работает как любой другой провайдер | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,6 +180,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index ed31155a5..4cb10c4a1 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -53,6 +53,7 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -90,6 +91,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -110,6 +112,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: - Grok 4.5 — 1,100 input, 71,500 cached, 220 output tokens ต่อ request - GLM-5.2/5.1 — 700 input, 52,000 cached, 150 output tokens ต่อ request - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens ต่อ request +- Gemini 3.7 Flash — 1,050 input, 76,500 cached, 300 output tokens ต่อ request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens ต่อ request - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens ต่อ request - DeepSeek V4 Pro — 750 input, 82,000 cached, 290 output tokens ต่อ request @@ -133,6 +136,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -189,6 +193,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -227,6 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | ไม่นำไปใช้ | 30 วัน | | GLM-5.2 | ไม่นำไปใช้ | 0 วัน | | GLM-5.1 | ไม่นำไปใช้ | 0 วัน | +| Gemini 3.7 Flash | ไม่นำไปใช้ | 0 วัน | | Kimi K3 | ไม่นำไปใช้ | 0 วัน | | Kimi K2.7 Code | ไม่นำไปใช้ | 0 วัน | | Kimi K2.6 | ไม่นำไปใช้ | 0 วัน | diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index c2e136c1a..7dd6aa929 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -84,6 +84,7 @@ OpenCode Zen ทำงานเหมือน provider อื่น ๆ ใน | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -170,6 +171,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 3a4d9bb93..2159f4e72 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -53,6 +53,7 @@ Mevcut model listesi şunları içerir: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -90,6 +91,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -110,6 +112,7 @@ Tahminler, gözlemlenen istek modellerine dayanır: - Grok 4.5 — İstek başına 1.100 girdi, 71.500 önbelleğe alınmış, 220 çıktı token'ı - GLM-5.2/5.1 — İstek başına 700 girdi, 52.000 önbelleğe alınmış, 150 çıktı token'ı - GPT 5.6 Luna — İstek başına 1.000 girdi, 50.000 önbelleğe alınmış, 220 çıktı token'ı +- Gemini 3.7 Flash — İstek başına 1.050 girdi, 76.500 önbelleğe alınmış, 300 çıktı token'ı - Kimi K3 — İstek başına 1.050 girdi, 76.500 önbelleğe alınmış, 300 çıktı token'ı - Kimi K2.7/K2.6 — İstek başına 870 girdi, 55.000 önbelleğe alınmış, 200 çıktı token'ı - DeepSeek V4 Pro — İstek başına 750 girdi, 82.000 önbelleğe alınmış, 290 çıktı token'ı @@ -133,6 +136,7 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -189,6 +193,7 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -227,6 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Kullanılmaz | 30 gün | | GLM-5.2 | Kullanılmaz | 0 gün | | GLM-5.1 | Kullanılmaz | 0 gün | +| Gemini 3.7 Flash | Kullanılmaz | 0 gün | | Kimi K3 | Kullanılmaz | 0 gün | | Kimi K2.7 Code | Kullanılmaz | 0 gün | | Kimi K2.6 | Kullanılmaz | 0 gün | diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index 8008de2ee..ba835cb24 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -82,6 +82,7 @@ Modellerimize aşağıdaki API uç noktaları aracılığıyla da erişebilirsin | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,6 +169,7 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index 519bb318a..87563ff66 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -91,6 +91,7 @@ You can also access our models through the following API endpoints. | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,6 +180,7 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index af214e2ac..5b81f9c13 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -53,6 +53,7 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -90,6 +91,7 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -110,6 +112,7 @@ OpenCode Go 包含以下限制: - Grok 4.5 — 每次请求 1,100 个输入 token,71,500 个缓存 token,220 个输出 token - GLM-5.2/5.1 — 每次请求 700 个输入 token,52,000 个缓存 token,150 个输出 token - GPT 5.6 Luna — 每次请求 1,000 个输入 token,50,000 个缓存 token,220 个输出 token +- Gemini 3.7 Flash — 每次请求 1,050 个输入 token,76,500 个缓存 token,300 个输出 token - Kimi K3 — 每次请求 1,050 个输入 token,76,500 个缓存 token,300 个输出 token - Kimi K2.7/K2.6 — 每次请求 870 个输入 token,55,000 个缓存 token,200 个输出 token - DeepSeek V4 Pro — 每次请求 750 个输入 token,82,000 个缓存 token,290 个输出 token @@ -133,6 +136,7 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -189,6 +193,7 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -227,6 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 不使用 | 30 天 | | GLM-5.2 | 不使用 | 0 天 | | GLM-5.1 | 不使用 | 0 天 | +| Gemini 3.7 Flash | 不使用 | 0 天 | | Kimi K3 | 不使用 | 0 天 | | Kimi K2.7 Code | 不使用 | 0 天 | | Kimi K2.6 | 不使用 | 0 天 | diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index 503777fe1..e08238e36 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -82,6 +82,7 @@ OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,6 +169,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index ce8cfbe78..942d4f81e 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -53,6 +53,7 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** +- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -90,6 +91,7 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -110,6 +112,7 @@ OpenCode Go 包含以下限制: - Grok 4.5 — 每次請求 1,100 個輸入 token、71,500 個快取 token、220 個輸出 token - GLM-5.2/5.1 — 每次請求 700 個輸入 token、52,000 個快取 token、150 個輸出 token - GPT 5.6 Luna — 每次請求 1,000 個輸入 token、50,000 個快取 token、220 個輸出 token +- Gemini 3.7 Flash — 每次請求 1,050 個輸入 token、76,500 個快取 token、300 個輸出 token - Kimi K3 — 每次請求 1,050 個輸入 token、76,500 個快取 token、300 個輸出 token - Kimi K2.7/K2.6 — 每次請求 870 個輸入 token、55,000 個快取 token、200 個輸出 token - DeepSeek V4 Pro — 每次請求 750 個輸入 token、82,000 個快取 token、290 個輸出 token @@ -133,6 +136,7 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -189,6 +193,7 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -227,6 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 不使用 | 30 天 | | GLM-5.2 | 不使用 | 0 天 | | GLM-5.1 | 不使用 | 0 天 | +| Gemini 3.7 Flash | 不使用 | 0 天 | | Kimi K3 | 不使用 | 0 天 | | Kimi K2.7 Code | 不使用 | 0 天 | | Kimi K2.6 | 不使用 | 0 天 | diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 700480546..9f555b435 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -86,6 +86,7 @@ OpenCode Zen 的運作方式和 OpenCode 中的其他供應商一樣。 | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -173,6 +174,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | From 3e25e80f7a3b97babb77e40735b7eb3ca9d18452 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Thu, 13 Aug 2026 18:44:28 +0000 Subject: [PATCH 009/271] chore: generate --- packages/web/src/content/docs/ar/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/ar/zen.mdx | 2 +- packages/web/src/content/docs/bs/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/da/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/de/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/es/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/es/zen.mdx | 2 +- packages/web/src/content/docs/fr/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/it/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/ja/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/ko/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/nb/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/nb/zen.mdx | 2 +- packages/web/src/content/docs/pl/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/pl/zen.mdx | 2 +- packages/web/src/content/docs/pt-br/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/pt-br/zen.mdx | 2 +- packages/web/src/content/docs/ru/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/th/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/tr/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/zh-cn/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/zh-cn/zen.mdx | 2 +- packages/web/src/content/docs/zh-tw/go.mdx | 50 ++++++++++----------- packages/web/src/content/docs/zh-tw/zen.mdx | 2 +- 25 files changed, 457 insertions(+), 457 deletions(-) diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 592f2ceac..ddefcaafe 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -91,7 +91,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -136,7 +136,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -187,28 +187,28 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال يمكنك أيضًا الوصول إلى نماذج Go عبر نقاط نهاية API التالية. -| Model | Model ID | Endpoint | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | يستخدم [model id](/docs/config/#models) في إعدادات OpenCode لديك التنسيق `opencode-go/`. على سبيل المثال، بالنسبة إلى Kimi K3، ستستخدم `opencode-go/kimi-k3` في إعداداتك. @@ -232,7 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | غير مستخدَمة | 30 يومًا | | GLM-5.2 | غير مستخدَمة | 0 أيام | | GLM-5.1 | غير مستخدَمة | 0 أيام | -| Gemini 3.7 Flash | غير مستخدَمة | 0 أيام | +| Gemini 3.7 Flash | غير مستخدَمة | 0 أيام | | Kimi K3 | غير مستخدَمة | 0 أيام | | Kimi K2.7 Code | غير مستخدَمة | 0 أيام | | Kimi K2.6 | غير مستخدَمة | 0 أيام | diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index f77060632..2fa7ad9da 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -173,7 +173,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 1814e4ccb..2abc1b295 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -101,7 +101,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -146,7 +146,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -199,28 +199,28 @@ Za ove modele i dalje dobijate malo više nego da direktno plaćate provajderima Također možete pristupiti Go modelima putem sljedećih API endpointa. -| Model | Model ID | Endpoint | AI SDK Paket | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Paket | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Model id](/docs/config/#models) u vašoj OpenCode konfiguraciji koristi format `opencode-go/`. Na primjer, za Kimi K3, koristili biste @@ -246,7 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Ne koristi se | 30 dana | | GLM-5.2 | Ne koristi se | 0 dana | | GLM-5.1 | Ne koristi se | 0 dana | -| Gemini 3.7 Flash | Ne koristi se | 0 dana | +| Gemini 3.7 Flash | Ne koristi se | 0 dana | | Kimi K3 | Ne koristi se | 0 dana | | Kimi K2.7 Code | Ne koristi se | 0 dana | | Kimi K2.6 | Ne koristi se | 0 dana | diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 74149c4c1..4bb1824cf 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -101,7 +101,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -146,7 +146,7 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -199,28 +199,28 @@ Med disse modeller får du stadig lidt mere, end hvis du betalte modeludbyderne Du kan også få adgang til Go-modeller gennem følgende API-endpoints. -| Model | Model ID | Endpoint | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Dit [model id](/docs/config/#models) i din OpenCode config bruger formatet `opencode-go/`. For eksempel for Kimi K3, vil du @@ -246,7 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Ikke brugt | 30 dage | | GLM-5.2 | Ikke brugt | 0 dage | | GLM-5.1 | Ikke brugt | 0 dage | -| Gemini 3.7 Flash | Ikke brugt | 0 dage | +| Gemini 3.7 Flash | Ikke brugt | 0 dage | | Kimi K3 | Ikke brugt | 0 dage | | Kimi K2.7 Code | Ikke brugt | 0 dage | | Kimi K2.6 | Ikke brugt | 0 dage | diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index da5078b6a..ba7ac686e 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -93,7 +93,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -138,7 +138,7 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -189,28 +189,28 @@ Bei diesen Modellen erhältst du immer noch etwas mehr, als wenn du die Modellan Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. -| Modell | Modell-ID | Endpunkt | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modell | Modell-ID | Endpunkt | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Die [Modell-ID](/docs/config/#models) in deiner OpenCode Config verwendet das Format `opencode-go/`. Für Kimi K3 würdest du beispielsweise `opencode-go/kimi-k3` in deiner Config verwenden. @@ -234,7 +234,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Nicht verwendet | 30 Tage | | GLM-5.2 | Nicht verwendet | 0 Tage | | GLM-5.1 | Nicht verwendet | 0 Tage | -| Gemini 3.7 Flash | Nicht verwendet | 0 Tage | +| Gemini 3.7 Flash | Nicht verwendet | 0 Tage | | Kimi K3 | Nicht verwendet | 0 Tage | | Kimi K2.7 Code | Nicht verwendet | 0 Tage | | Kimi K2.6 | Nicht verwendet | 0 Tage | diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 4aa80288c..d5999c2f9 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -101,7 +101,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -146,7 +146,7 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -199,28 +199,28 @@ Con estos modelos, aun así obtienes un poco más que si pagaras directamente a También puedes acceder a los modelos de Go a través de los siguientes endpoints de la API. -| Modelo | ID del modelo | Endpoint | Paquete de AI SDK | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modelo | ID del modelo | Endpoint | Paquete de AI SDK | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | El [ID del modelo](/docs/config/#models) en tu configuración de OpenCode usa el formato `opencode-go/`. Por ejemplo, para Kimi K3, usarías @@ -246,7 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | No utilizado | 30 días | | GLM-5.2 | No utilizado | 0 días | | GLM-5.1 | No utilizado | 0 días | -| Gemini 3.7 Flash | No utilizado | 0 días | +| Gemini 3.7 Flash | No utilizado | 0 días | | Kimi K3 | No utilizado | 0 días | | Kimi K2.7 Code | No utilizado | 0 días | | Kimi K2.6 | No utilizado | 0 días | diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index 948cfe9e1..80b5fe3dd 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -180,7 +180,7 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index af2f7295b..bcab5b4c2 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -91,7 +91,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -136,7 +136,7 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -187,28 +187,28 @@ Pour ces modèles, vous obtenez tout de même un peu plus que si vous payiez dir Vous pouvez également accéder aux modèles Go via les points de terminaison d'API suivants. -| Modèle | ID de modèle | Point de terminaison | Package AI SDK | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modèle | ID de modèle | Point de terminaison | Package AI SDK | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | L'[ID de modèle](/docs/config/#models) dans votre configuration OpenCode utilise le format `opencode-go/`. Par exemple, pour Kimi K3, vous utiliseriez `opencode-go/kimi-k3` dans votre configuration. @@ -232,7 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Non utilisé | 30 jours | | GLM-5.2 | Non utilisé | 0 jour | | GLM-5.1 | Non utilisé | 0 jour | -| Gemini 3.7 Flash | Non utilisé | 0 jour | +| Gemini 3.7 Flash | Non utilisé | 0 jour | | Kimi K3 | Non utilisé | 0 jour | | Kimi K2.7 Code | Non utilisé | 0 jour | | Kimi K2.6 | Non utilisé | 0 jour | diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 09c991c5f..8bbfed511 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -101,7 +101,7 @@ The table below provides an estimated request count based on typical Go usage pa | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -146,7 +146,7 @@ The estimates are also based on the following prices per 1M tokens and the month | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -199,28 +199,28 @@ For these models, you still get a little more than if you paid the model provide You can also access Go models through the following API endpoints. -| Model | Model ID | Endpoint | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | The [model id](/docs/config/#models) in your OpenCode config uses the format `opencode-go/`. For example, for Kimi K3, you would @@ -246,7 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Not used | 30 days | | GLM-5.2 | Not used | 0 days | | GLM-5.1 | Not used | 0 days | -| Gemini 3.7 Flash | Not used | 0 days | +| Gemini 3.7 Flash | Not used | 0 days | | Kimi K3 | Not used | 0 days | | Kimi K2.7 Code | Not used | 0 days | | Kimi K2.6 | Not used | 0 days | diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index a275091d7..43c1a75c4 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -99,7 +99,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -144,7 +144,7 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -197,28 +197,28 @@ Per questi modelli, ottieni comunque un po' più di utilizzo rispetto a quanto o Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. -| Modello | ID Modello | Endpoint | Pacchetto AI SDK | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modello | ID Modello | Endpoint | Pacchetto AI SDK | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Il [model id](/docs/config/#models) nella tua OpenCode config utilizza il formato `opencode-go/`. Ad esempio, per Kimi K3, useresti @@ -244,7 +244,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Non utilizzato | 30 giorni | | GLM-5.2 | Non utilizzato | 0 giorni | | GLM-5.1 | Non utilizzato | 0 giorni | -| Gemini 3.7 Flash | Non utilizzato | 0 giorni | +| Gemini 3.7 Flash | Non utilizzato | 0 giorni | | Kimi K3 | Non utilizzato | 0 giorni | | Kimi K2.7 Code | Non utilizzato | 0 giorni | | Kimi K2.6 | Non utilizzato | 0 giorni | diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index b0d0011f1..0e8f31bc2 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -91,7 +91,7 @@ OpenCode Goには以下の制限が含まれています: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -136,7 +136,7 @@ OpenCode Goには以下の制限が含まれています: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -187,28 +187,28 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを 以下のAPIエンドポイントを通じて、Goモデルにアクセスすることもできます。 -| Model | Model ID | Endpoint | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode設定の[model id](/docs/config/#models)は、`opencode-go/`という形式を使用します。たとえば、Kimi K3の場合は、設定で`opencode-go/kimi-k3`を使用します。 @@ -232,7 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 使用なし | 30日 | | GLM-5.2 | 使用なし | 0日 | | GLM-5.1 | 使用なし | 0日 | -| Gemini 3.7 Flash | 使用なし | 0日 | +| Gemini 3.7 Flash | 使用なし | 0日 | | Kimi K3 | 使用なし | 0日 | | Kimi K2.7 Code | 使用なし | 0日 | | Kimi K2.6 | 使用なし | 0日 | diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 770c11ee1..ae5e3ae75 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -91,7 +91,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -136,7 +136,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -187,28 +187,28 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 다음 API 엔드포인트를 통해서도 Go 모델에 액세스할 수 있습니다. -| 모델 | 모델 ID | 엔드포인트 | AI SDK 패키지 | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| 모델 | 모델 ID | 엔드포인트 | AI SDK 패키지 | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode config의 [model id](/docs/config/#models)는 `opencode-go/` 형식을 사용합니다. 예를 들어 Kimi K3의 경우 config에서 `opencode-go/kimi-k3`를 사용하면 됩니다. @@ -232,7 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 사용되지 않음 | 30일 | | GLM-5.2 | 사용되지 않음 | 0일 | | GLM-5.1 | 사용되지 않음 | 0일 | -| Gemini 3.7 Flash | 사용되지 않음 | 0일 | +| Gemini 3.7 Flash | 사용되지 않음 | 0일 | | Kimi K3 | 사용되지 않음 | 0일 | | Kimi K2.7 Code | 사용되지 않음 | 0일 | | Kimi K2.6 | 사용되지 않음 | 0일 | diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 09869cf1a..81d1048e4 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -101,7 +101,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -146,7 +146,7 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -199,28 +199,28 @@ For disse modellene får du fortsatt litt mer enn om du betalte modellleverandø Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. -| Modell | Modell-ID | Endepunkt | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modell | Modell-ID | Endepunkt | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Modell-ID-en](/docs/config/#models) i din OpenCode-konfigurasjon bruker formatet `opencode-go/`. For eksempel, for Kimi K3, vil du @@ -246,7 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Brukes ikke | 30 dager | | GLM-5.2 | Brukes ikke | 0 dager | | GLM-5.1 | Brukes ikke | 0 dager | -| Gemini 3.7 Flash | Brukes ikke | 0 dager | +| Gemini 3.7 Flash | Brukes ikke | 0 dager | | Kimi K3 | Brukes ikke | 0 dager | | Kimi K2.7 Code | Brukes ikke | 0 dager | | Kimi K2.6 | Brukes ikke | 0 dager | diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index 8c83d61ff..00052708d 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -180,7 +180,7 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 296bbffdb..d6593cdd2 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -95,7 +95,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -140,7 +140,7 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -191,28 +191,28 @@ W przypadku tych modeli nadal otrzymujesz nieco więcej, niż płacąc bezpośre Możesz również uzyskać dostęp do modeli Go za pośrednictwem następujących punktów końcowych API. -| Model | ID modelu | Punkt końcowy | Pakiet AI SDK | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | ID modelu | Punkt końcowy | Pakiet AI SDK | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID modelu](/docs/config/#models) w Twojej konfiguracji OpenCode używa formatu `opencode-go/`. Na przykład dla Kimi K3 należy użyć @@ -238,7 +238,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Niewykorzystywane | 30 dni | | GLM-5.2 | Niewykorzystywane | 0 dni | | GLM-5.1 | Niewykorzystywane | 0 dni | -| Gemini 3.7 Flash | Niewykorzystywane | 0 dni | +| Gemini 3.7 Flash | Niewykorzystywane | 0 dni | | Kimi K3 | Niewykorzystywane | 0 dni | | Kimi K2.7 Code | Niewykorzystywane | 0 dni | | Kimi K2.6 | Niewykorzystywane | 0 dni | diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index 5e2833e90..3785a1574 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -180,7 +180,7 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index b6442c577..d7050ab0f 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -101,7 +101,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -146,7 +146,7 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -199,28 +199,28 @@ Para esses modelos, você ainda recebe um pouco mais do que receberia se pagasse Você também pode acessar os modelos do Go através dos seguintes endpoints de API. -| Modelo | ID do Modelo | Endpoint | Pacote do AI SDK | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modelo | ID do Modelo | Endpoint | Pacote do AI SDK | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | O [ID do modelo](/docs/config/#models) na sua configuração do OpenCode usa o formato `opencode-go/`. Por exemplo, para o Kimi K3, você usaria @@ -246,7 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Não usado | 30 dias | | GLM-5.2 | Não usado | 0 dias | | GLM-5.1 | Não usado | 0 dias | -| Gemini 3.7 Flash | Não usado | 0 dias | +| Gemini 3.7 Flash | Não usado | 0 dias | | Kimi K3 | Não usado | 0 dias | | Kimi K2.7 Code | Não usado | 0 dias | | Kimi K2.6 | Não usado | 0 dias | diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index afb0255d1..f64416d4c 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -169,7 +169,7 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 57995aaf9..ef658b5d0 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -101,7 +101,7 @@ OpenCode Go включает следующие лимиты: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -146,7 +146,7 @@ OpenCode Go включает следующие лимиты: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -199,28 +199,28 @@ OpenCode Go включает следующие лимиты: Вы также можете получить доступ к моделям Go через следующие API-эндпоинты. -| Модель | ID модели | Эндпоинт | Пакет AI SDK | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Модель | ID модели | Эндпоинт | Пакет AI SDK | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID модели](/docs/config/#models) в вашем конфиге OpenCode использует формат `opencode-go/`. Например, для Kimi K3 вам нужно @@ -246,7 +246,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Не используется | 30 дней | | GLM-5.2 | Не используется | 0 дней | | GLM-5.1 | Не используется | 0 дней | -| Gemini 3.7 Flash | Не используется | 0 дней | +| Gemini 3.7 Flash | Не используется | 0 дней | | Kimi K3 | Не используется | 0 дней | | Kimi K2.7 Code | Не используется | 0 дней | | Kimi K2.6 | Не используется | 0 дней | diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 4cb10c4a1..6b6972877 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -91,7 +91,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -136,7 +136,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -187,28 +187,28 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: คุณสามารถเข้าถึงโมเดลของ Go ผ่าน API endpoints ต่อไปนี้ได้เช่นกัน -| Model | Model ID | Endpoint | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [model id](/docs/config/#models) ใน OpenCode config ของคุณจะใช้รูปแบบ `opencode-go/` ตัวอย่างเช่น สำหรับ Kimi K3 คุณจะใช้ `opencode-go/kimi-k3` ใน config ของคุณ @@ -232,7 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | ไม่นำไปใช้ | 30 วัน | | GLM-5.2 | ไม่นำไปใช้ | 0 วัน | | GLM-5.1 | ไม่นำไปใช้ | 0 วัน | -| Gemini 3.7 Flash | ไม่นำไปใช้ | 0 วัน | +| Gemini 3.7 Flash | ไม่นำไปใช้ | 0 วัน | | Kimi K3 | ไม่นำไปใช้ | 0 วัน | | Kimi K2.7 Code | ไม่นำไปใช้ | 0 วัน | | Kimi K2.6 | ไม่นำไปใช้ | 0 วัน | diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 2159f4e72..3ced72ced 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -91,7 +91,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -136,7 +136,7 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -187,28 +187,28 @@ Bu modellerde bile model sağlayıcılarına doğrudan ödeme yaptığınız dur Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsiniz. -| Model | Model ID | Uç Nokta | AI SDK Paketi | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Uç Nokta | AI SDK Paketi | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode yapılandırmanızdaki [model id](/docs/config/#models) formatı `opencode-go/` şeklindedir. Örneğin, Kimi K3 için yapılandırmanızda `opencode-go/kimi-k3` kullanmalısınız. @@ -232,7 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Kullanılmaz | 30 gün | | GLM-5.2 | Kullanılmaz | 0 gün | | GLM-5.1 | Kullanılmaz | 0 gün | -| Gemini 3.7 Flash | Kullanılmaz | 0 gün | +| Gemini 3.7 Flash | Kullanılmaz | 0 gün | | Kimi K3 | Kullanılmaz | 0 gün | | Kimi K2.7 Code | Kullanılmaz | 0 gün | | Kimi K2.6 | Kullanılmaz | 0 gün | diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 5b81f9c13..2eaf699e0 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -91,7 +91,7 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -136,7 +136,7 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -187,28 +187,28 @@ OpenCode Go 包含以下限制: 你也可以通过以下 API 端点访问 Go 模型。 -| 模型 | 模型 ID | 端点 | AI SDK 包 | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| 模型 | 模型 ID | 端点 | AI SDK 包 | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 你的 OpenCode 配置中的 [模型 ID](/docs/config/#models) 使用 `opencode-go/` 格式。例如,对于 Kimi K3,你将在配置中使用 `opencode-go/kimi-k3`。 @@ -232,7 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 不使用 | 30 天 | | GLM-5.2 | 不使用 | 0 天 | | GLM-5.1 | 不使用 | 0 天 | -| Gemini 3.7 Flash | 不使用 | 0 天 | +| Gemini 3.7 Flash | 不使用 | 0 天 | | Kimi K3 | 不使用 | 0 天 | | Kimi K2.7 Code | 不使用 | 0 天 | | Kimi K2.6 | 不使用 | 0 天 | diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index e08238e36..791142fb6 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -169,7 +169,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index 942d4f81e..887daa0d7 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -91,7 +91,7 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | +| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -136,7 +136,7 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -187,28 +187,28 @@ OpenCode Go 包含以下限制: 您也可以透過以下 API 端點存取 Go 模型。 -| 模型 | 模型 ID | 端點 | AI SDK 套件 | -| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| 模型 | 模型 ID | 端點 | AI SDK 套件 | +| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 您的 OpenCode 設定中的 [model id](/docs/config/#models) 使用 `opencode-go/` 格式。例如,Kimi K3 在設定中應使用 `opencode-go/kimi-k3`。 @@ -232,7 +232,7 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 不使用 | 30 天 | | GLM-5.2 | 不使用 | 0 天 | | GLM-5.1 | 不使用 | 0 天 | -| Gemini 3.7 Flash | 不使用 | 0 天 | +| Gemini 3.7 Flash | 不使用 | 0 天 | | Kimi K3 | 不使用 | 0 天 | | Kimi K2.7 Code | 不使用 | 0 天 | | Kimi K2.6 | 不使用 | 0 天 | diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 9f555b435..ed8751860 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -174,7 +174,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | From 2449581543b3e5645549dd502eb0e4df8753c749 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 14 Aug 2026 02:55:24 +0800 Subject: [PATCH 010/271] fix(go): remove Gemini 3.7 Flash (#42393) --- packages/console/app/src/routes/go/index.tsx | 2 -- .../src/routes/workspace/[id]/go/lite-section.tsx | 1 - .../app/src/routes/zen/go/v1/models/[model].ts | 15 --------------- packages/web/src/content/docs/ar/go.mdx | 6 ------ packages/web/src/content/docs/bs/go.mdx | 6 ------ packages/web/src/content/docs/da/go.mdx | 6 ------ packages/web/src/content/docs/de/go.mdx | 6 ------ packages/web/src/content/docs/es/go.mdx | 6 ------ packages/web/src/content/docs/fr/go.mdx | 6 ------ packages/web/src/content/docs/go.mdx | 6 ------ packages/web/src/content/docs/it/go.mdx | 6 ------ packages/web/src/content/docs/ja/go.mdx | 6 ------ packages/web/src/content/docs/ko/go.mdx | 6 ------ packages/web/src/content/docs/nb/go.mdx | 6 ------ packages/web/src/content/docs/pl/go.mdx | 6 ------ packages/web/src/content/docs/pt-br/go.mdx | 6 ------ packages/web/src/content/docs/ru/go.mdx | 6 ------ packages/web/src/content/docs/th/go.mdx | 6 ------ packages/web/src/content/docs/tr/go.mdx | 6 ------ packages/web/src/content/docs/zh-cn/go.mdx | 6 ------ packages/web/src/content/docs/zh-tw/go.mdx | 6 ------ 21 files changed, 126 deletions(-) delete mode 100644 packages/console/app/src/routes/zen/go/v1/models/[model].ts diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index 321c7925b..599ce2b5a 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -25,7 +25,6 @@ const checkLoggedIn = query(async () => { const models = [ { name: "Grok 4.5", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention30" }, { name: "GPT 5.6 Luna", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention30" }, - { name: "Gemini 3.7 Flash", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "GLM-5.2", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "GLM-5.1", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Kimi K3", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, @@ -70,7 +69,6 @@ function LimitsGraph(props: { href: string }) { { id: "grok-4.5", name: "Grok 4.5", req: 120, d: "50ms" }, { id: "kimi-k3", name: "Kimi K3", req: 110, d: "75ms" }, { id: "qwen3.8-max", name: "Qwen3.8 Max", req: 160, d: "90ms" }, - { id: "gemini-3.7-flash", name: "Gemini 3.7 Flash", req: 440, baseReq: 220, d: "95ms" }, { id: "glm-5.2", name: "GLM-5.2", req: 880, d: "100ms" }, { id: "minimax-m3", name: "MiniMax M3", req: 3200, d: "210ms" }, { id: "deepseek-v4-pro", name: "DeepSeek V4 Pro", req: 3450, d: "270ms" }, diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index 8a95ec90e..da1b053a3 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -306,7 +306,6 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {
    • Grok 4.5
    • GPT 5.6 Luna
    • -
    • Gemini 3.7 Flash
    • GLM-5.2
    • GLM-5.1
    • Kimi K3
    • diff --git a/packages/console/app/src/routes/zen/go/v1/models/[model].ts b/packages/console/app/src/routes/zen/go/v1/models/[model].ts deleted file mode 100644 index a1a28ad19..000000000 --- a/packages/console/app/src/routes/zen/go/v1/models/[model].ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { APIEvent } from "@solidjs/start/server" -import { handler } from "~/routes/zen/util/handler" -import { parseGoogleVariant } from "~/routes/zen/util/variant" - -export function POST(input: APIEvent) { - return handler(input, { - format: "google", - modelList: "lite", - parseApiKey: (headers: Headers) => headers.get("x-goog-api-key") ?? undefined, - parseModel: (url: string, _body: any) => url.split("/").pop()?.split(":")?.[0] ?? "", - parseVariant: (url: string, body: any) => parseGoogleVariant(body), - parseIsStream: (url: string, _body: any) => - url.split("/").pop()?.split(":")?.[1]?.startsWith("streamGenerateContent") ?? false, - }) -} diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index ddefcaafe..7b98dc108 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -53,7 +53,6 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -91,7 +90,6 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -112,7 +110,6 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال - Grok 4.5 — ‏1,100 input، و71,500 cached، و220 output tokens لكل طلب - GLM-5.2/5.1 — ‏700 input، و52,000 cached، و150 output tokens لكل طلب - GPT 5.6 Luna — ‏1,000 توكن إدخال، و50,000 توكن مخزّن مؤقتًا، و220 توكن إخراج لكل طلب -- Gemini 3.7 Flash — ‏1,050 input، و76,500 cached، و300 output tokens لكل طلب - Kimi K3 — ‏1,050 input، و76,500 cached، و300 output tokens لكل طلب - Kimi K2.7/K2.6 — ‏870 input، و55,000 cached، و200 output tokens لكل طلب - DeepSeek V4 Pro — ‏750 input، و82,000 cached، و290 output tokens لكل طلب @@ -136,7 +133,6 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -193,7 +189,6 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -232,7 +227,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | غير مستخدَمة | 30 يومًا | | GLM-5.2 | غير مستخدَمة | 0 أيام | | GLM-5.1 | غير مستخدَمة | 0 أيام | -| Gemini 3.7 Flash | غير مستخدَمة | 0 أيام | | Kimi K3 | غير مستخدَمة | 0 أيام | | Kimi K2.7 Code | غير مستخدَمة | 0 أيام | | Kimi K2.6 | غير مستخدَمة | 0 أيام | diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 2abc1b295..fafe68cb4 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -63,7 +63,6 @@ Trenutna lista modela uključuje: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -101,7 +100,6 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -122,7 +120,6 @@ Procjene se zasnivaju na zapaženim obrascima zahtjeva: - Grok 4.5 — 1,100 ulaznih, 71,500 keširanih, 220 izlaznih tokena po zahtjevu - GLM-5.2/5.1 — 700 ulaznih (input), 52,000 keširanih, 150 izlaznih (output) tokena po zahtjevu - GPT 5.6 Luna — 1,000 ulaznih, 50,000 keširanih, 220 izlaznih tokena po zahtjevu -- Gemini 3.7 Flash — 1,050 ulaznih, 76,500 keširanih, 300 izlaznih tokena po zahtjevu - Kimi K3 — 1,050 ulaznih, 76,500 keširanih, 300 izlaznih tokena po zahtjevu - Kimi K2.7/K2.6 — 870 ulaznih, 55,000 keširanih, 200 izlaznih tokena po zahtjevu - DeepSeek V4 Pro — 750 ulaznih, 82,000 keširanih, 290 izlaznih tokena po zahtjevu @@ -146,7 +143,6 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -205,7 +201,6 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -246,7 +241,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Ne koristi se | 30 dana | | GLM-5.2 | Ne koristi se | 0 dana | | GLM-5.1 | Ne koristi se | 0 dana | -| Gemini 3.7 Flash | Ne koristi se | 0 dana | | Kimi K3 | Ne koristi se | 0 dana | | Kimi K2.7 Code | Ne koristi se | 0 dana | | Kimi K2.6 | Ne koristi se | 0 dana | diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 4bb1824cf..5b4102987 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -63,7 +63,6 @@ Den nuværende liste over modeller inkluderer: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -101,7 +100,6 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -122,7 +120,6 @@ Estimaterne er baseret på observerede anmodningsmønstre: - Grok 4.5 — 1.100 input, 71.500 cachelagrede, 220 output-tokens pr. anmodning - GLM-5.2/5.1 — 700 input, 52.000 cachelagrede, 150 output-tokens pr. anmodning - GPT 5.6 Luna — 1.000 input, 50.000 cachelagrede, 220 output-tokens pr. anmodning -- Gemini 3.7 Flash — 1.050 input, 76.500 cachelagrede, 300 output-tokens pr. anmodning - Kimi K3 — 1.050 input, 76.500 cachelagrede, 300 output-tokens pr. anmodning - Kimi K2.7/K2.6 — 870 input, 55.000 cachelagrede, 200 output-tokens pr. anmodning - DeepSeek V4 Pro — 750 input, 82.000 cachelagrede, 290 output-tokens pr. anmodning @@ -146,7 +143,6 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -205,7 +201,6 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -246,7 +241,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Ikke brugt | 30 dage | | GLM-5.2 | Ikke brugt | 0 dage | | GLM-5.1 | Ikke brugt | 0 dage | -| Gemini 3.7 Flash | Ikke brugt | 0 dage | | Kimi K3 | Ikke brugt | 0 dage | | Kimi K2.7 Code | Ikke brugt | 0 dage | | Kimi K2.6 | Ikke brugt | 0 dage | diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index ba7ac686e..b89f18da8 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -55,7 +55,6 @@ Die aktuelle Liste der Modelle umfasst: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -93,7 +92,6 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -114,7 +112,6 @@ Die Schätzungen basieren auf beobachteten Anfragemustern: - Grok 4.5 — 1.100 Input-, 71.500 Cached-, 220 Output-Tokens pro Anfrage - GLM-5.2/5.1 — 700 Input-, 52.000 Cached-, 150 Output-Tokens pro Anfrage - GPT 5.6 Luna — 1.000 Input-, 50.000 Cached-, 220 Output-Tokens pro Anfrage -- Gemini 3.7 Flash — 1.050 Input-, 76.500 Cached-, 300 Output-Tokens pro Anfrage - Kimi K3 — 1.050 Input-, 76.500 Cached-, 300 Output-Tokens pro Anfrage - Kimi K2.7/K2.6 — 870 Input-, 55.000 Cached-, 200 Output-Tokens pro Anfrage - DeepSeek V4 Pro — 750 Input-, 82.000 Cached-, 290 Output-Tokens pro Anfrage @@ -138,7 +135,6 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -195,7 +191,6 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -234,7 +229,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Nicht verwendet | 30 Tage | | GLM-5.2 | Nicht verwendet | 0 Tage | | GLM-5.1 | Nicht verwendet | 0 Tage | -| Gemini 3.7 Flash | Nicht verwendet | 0 Tage | | Kimi K3 | Nicht verwendet | 0 Tage | | Kimi K2.7 Code | Nicht verwendet | 0 Tage | | Kimi K2.6 | Nicht verwendet | 0 Tage | diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index d5999c2f9..318b7963e 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -63,7 +63,6 @@ La lista actual de modelos incluye: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -101,7 +100,6 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -122,7 +120,6 @@ Las estimaciones se basan en los patrones de peticiones observados: - Grok 4.5 — 1,100 tokens de entrada, 71,500 en caché, 220 tokens de salida por petición - GLM-5.2/5.1 — 700 tokens de entrada, 52,000 en caché, 150 tokens de salida por petición - GPT 5.6 Luna — 1,000 tokens de entrada, 50,000 en caché, 220 tokens de salida por petición -- Gemini 3.7 Flash — 1,050 tokens de entrada, 76,500 en caché, 300 tokens de salida por petición - Kimi K3 — 1,050 tokens de entrada, 76,500 en caché, 300 tokens de salida por petición - Kimi K2.7/K2.6 — 870 tokens de entrada, 55,000 en caché, 200 tokens de salida por petición - DeepSeek V4 Pro — 750 tokens de entrada, 82,000 en caché, 290 tokens de salida por petición @@ -146,7 +143,6 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -205,7 +201,6 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -246,7 +241,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | No utilizado | 30 días | | GLM-5.2 | No utilizado | 0 días | | GLM-5.1 | No utilizado | 0 días | -| Gemini 3.7 Flash | No utilizado | 0 días | | Kimi K3 | No utilizado | 0 días | | Kimi K2.7 Code | No utilizado | 0 días | | Kimi K2.6 | No utilizado | 0 días | diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index bcab5b4c2..7fede77ea 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -53,7 +53,6 @@ La liste actuelle des modèles comprend : - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -91,7 +90,6 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -112,7 +110,6 @@ Les estimations sont basées sur les schémas de requêtes observés : - Grok 4.5 — 1,100 tokens en entrée, 71,500 en cache, 220 tokens en sortie par requête - GLM-5.2/5.1 — 700 tokens en entrée, 52,000 en cache, 150 tokens en sortie par requête - GPT 5.6 Luna — 1,000 tokens en entrée, 50,000 en cache, 220 tokens en sortie par requête -- Gemini 3.7 Flash — 1,050 tokens en entrée, 76,500 en cache, 300 tokens en sortie par requête - Kimi K3 — 1,050 tokens en entrée, 76,500 en cache, 300 tokens en sortie par requête - Kimi K2.7/K2.6 — 870 tokens en entrée, 55,000 en cache, 200 tokens en sortie par requête - DeepSeek V4 Pro — 750 tokens en entrée, 82,000 en cache, 290 tokens en sortie par requête @@ -136,7 +133,6 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -193,7 +189,6 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -232,7 +227,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Non utilisé | 30 jours | | GLM-5.2 | Non utilisé | 0 jour | | GLM-5.1 | Non utilisé | 0 jour | -| Gemini 3.7 Flash | Non utilisé | 0 jour | | Kimi K3 | Non utilisé | 0 jour | | Kimi K2.7 Code | Non utilisé | 0 jour | | Kimi K2.6 | Non utilisé | 0 jour | diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 8bbfed511..da7f7691c 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -63,7 +63,6 @@ The current list of models includes: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -101,7 +100,6 @@ The table below provides an estimated request count based on typical Go usage pa | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -122,7 +120,6 @@ The estimates are based on observed request patterns: - Grok 4.5 — 1,100 input, 71,500 cached, 220 output tokens per request - GLM-5.2/5.1 — 700 input, 52,000 cached, 150 output tokens per request - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens per request -- Gemini 3.7 Flash — 1,050 input, 76,500 cached, 300 output tokens per request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens per request - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens per request - DeepSeek V4 Pro — 750 input, 82,000 cached, 290 output tokens per request @@ -146,7 +143,6 @@ The estimates are also based on the following prices per 1M tokens and the month | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -205,7 +201,6 @@ You can also access Go models through the following API endpoints. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -246,7 +241,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Not used | 30 days | | GLM-5.2 | Not used | 0 days | | GLM-5.1 | Not used | 0 days | -| Gemini 3.7 Flash | Not used | 0 days | | Kimi K3 | Not used | 0 days | | Kimi K2.7 Code | Not used | 0 days | | Kimi K2.6 | Not used | 0 days | diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 43c1a75c4..7dfbe6063 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -61,7 +61,6 @@ L'elenco attuale dei modelli include: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -99,7 +98,6 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -120,7 +118,6 @@ Le stime si basano sui pattern di richieste osservati: - Grok 4.5 — 1.100 di input, 71.500 in cache, 220 token di output per richiesta - GLM-5.2/5.1 — 700 di input, 52.000 in cache, 150 token di output per richiesta - GPT 5.6 Luna — 1.000 token di input, 50.000 in cache, 220 token di output per richiesta -- Gemini 3.7 Flash — 1.050 di input, 76.500 in cache, 300 token di output per richiesta - Kimi K3 — 1.050 di input, 76.500 in cache, 300 token di output per richiesta - Kimi K2.7/K2.6 — 870 di input, 55.000 in cache, 200 token di output per richiesta - DeepSeek V4 Pro — 750 di input, 82.000 in cache, 290 token di output per richiesta @@ -144,7 +141,6 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -203,7 +199,6 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -244,7 +239,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Non utilizzato | 30 giorni | | GLM-5.2 | Non utilizzato | 0 giorni | | GLM-5.1 | Non utilizzato | 0 giorni | -| Gemini 3.7 Flash | Non utilizzato | 0 giorni | | Kimi K3 | Non utilizzato | 0 giorni | | Kimi K2.7 Code | Non utilizzato | 0 giorni | | Kimi K2.6 | Non utilizzato | 0 giorni | diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 0e8f31bc2..9daafba1c 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -53,7 +53,6 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -91,7 +90,6 @@ OpenCode Goには以下の制限が含まれています: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -112,7 +110,6 @@ OpenCode Goには以下の制限が含まれています: - Grok 4.5 — リクエストあたり 入力 1,100トークン、キャッシュ 71,500トークン、出力 220トークン - GLM-5.2/5.1 — リクエストあたり 入力 700トークン、キャッシュ 52,000トークン、出力 150トークン - GPT 5.6 Luna — リクエストあたり 入力 1,000トークン、キャッシュ 50,000トークン、出力 220トークン -- Gemini 3.7 Flash — リクエストあたり 入力 1,050トークン、キャッシュ 76,500トークン、出力 300トークン - Kimi K3 — リクエストあたり 入力 1,050トークン、キャッシュ 76,500トークン、出力 300トークン - Kimi K2.7/K2.6 — リクエストあたり 入力 870トークン、キャッシュ 55,000トークン、出力 200トークン - DeepSeek V4 Pro — リクエストあたり 入力 750トークン、キャッシュ 82,000トークン、出力 290トークン @@ -136,7 +133,6 @@ OpenCode Goには以下の制限が含まれています: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -193,7 +189,6 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -232,7 +227,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 使用なし | 30日 | | GLM-5.2 | 使用なし | 0日 | | GLM-5.1 | 使用なし | 0日 | -| Gemini 3.7 Flash | 使用なし | 0日 | | Kimi K3 | 使用なし | 0日 | | Kimi K2.7 Code | 使用なし | 0日 | | Kimi K2.6 | 使用なし | 0日 | diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index ae5e3ae75..367dffbe2 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -53,7 +53,6 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -91,7 +90,6 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -112,7 +110,6 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. - Grok 4.5 — 요청당 입력 1,100, 캐시 71,500, 출력 토큰 220 - GLM-5.2/5.1 — 요청당 입력 700, 캐시 52,000, 출력 토큰 150 - GPT 5.6 Luna — 요청당 입력 토큰 1,000개, 캐시 토큰 50,000개, 출력 토큰 220개 -- Gemini 3.7 Flash — 요청당 입력 1,050, 캐시 76,500, 출력 토큰 300 - Kimi K3 — 요청당 입력 1,050, 캐시 76,500, 출력 토큰 300 - Kimi K2.7/K2.6 — 요청당 입력 870, 캐시 55,000, 출력 토큰 200 - DeepSeek V4 Pro — 요청당 입력 750, 캐시 82,000, 출력 토큰 290 @@ -136,7 +133,6 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -193,7 +189,6 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -232,7 +227,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 사용되지 않음 | 30일 | | GLM-5.2 | 사용되지 않음 | 0일 | | GLM-5.1 | 사용되지 않음 | 0일 | -| Gemini 3.7 Flash | 사용되지 않음 | 0일 | | Kimi K3 | 사용되지 않음 | 0일 | | Kimi K2.7 Code | 사용되지 않음 | 0일 | | Kimi K2.6 | 사용되지 않음 | 0일 | diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 81d1048e4..db98db5d0 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -63,7 +63,6 @@ Den nåværende listen over modeller inkluderer: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -101,7 +100,6 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -122,7 +120,6 @@ Estimatene er basert på observerte forespørselsmønstre: - Grok 4.5 — 1 100 input, 71 500 bufret, 220 output-tokens per forespørsel - GLM-5.2/5.1 — 700 input, 52 000 bufret, 150 output-tokens per forespørsel - GPT 5.6 Luna — 1 000 input, 50 000 bufret, 220 output-tokens per forespørsel -- Gemini 3.7 Flash — 1 050 input, 76 500 bufret, 300 output-tokens per forespørsel - Kimi K3 — 1 050 input, 76 500 bufret, 300 output-tokens per forespørsel - Kimi K2.7/K2.6 — 870 input, 55 000 bufret, 200 output-tokens per forespørsel - DeepSeek V4 Pro — 750 input, 82 000 bufret, 290 output-tokens per forespørsel @@ -146,7 +143,6 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -205,7 +201,6 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -246,7 +241,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Brukes ikke | 30 dager | | GLM-5.2 | Brukes ikke | 0 dager | | GLM-5.1 | Brukes ikke | 0 dager | -| Gemini 3.7 Flash | Brukes ikke | 0 dager | | Kimi K3 | Brukes ikke | 0 dager | | Kimi K2.7 Code | Brukes ikke | 0 dager | | Kimi K2.6 | Brukes ikke | 0 dager | diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index d6593cdd2..b61caf84d 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -57,7 +57,6 @@ Obecna lista modeli obejmuje: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -95,7 +94,6 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -116,7 +114,6 @@ Szacunki te opierają się na zaobserwowanych wzorcach żądań: - Grok 4.5 — 1 100 tokenów wejściowych, 71 500 w pamięci podręcznej, 220 tokenów wyjściowych na żądanie - GLM-5.2/5.1 — 700 tokenów wejściowych, 52 000 w pamięci podręcznej, 150 tokenów wyjściowych na żądanie - GPT 5.6 Luna — 1 000 tokenów wejściowych, 50 000 w pamięci podręcznej, 220 tokenów wyjściowych na żądanie -- Gemini 3.7 Flash — 1 050 tokenów wejściowych, 76 500 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie - Kimi K3 — 1 050 tokenów wejściowych, 76 500 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie - Kimi K2.7/K2.6 — 870 tokenów wejściowych, 55 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie - DeepSeek V4 Pro — 750 tokenów wejściowych, 82 000 w pamięci podręcznej, 290 tokenów wyjściowych na żądanie @@ -140,7 +137,6 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -197,7 +193,6 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -238,7 +233,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Niewykorzystywane | 30 dni | | GLM-5.2 | Niewykorzystywane | 0 dni | | GLM-5.1 | Niewykorzystywane | 0 dni | -| Gemini 3.7 Flash | Niewykorzystywane | 0 dni | | Kimi K3 | Niewykorzystywane | 0 dni | | Kimi K2.7 Code | Niewykorzystywane | 0 dni | | Kimi K2.6 | Niewykorzystywane | 0 dni | diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index d7050ab0f..d6325da6a 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -63,7 +63,6 @@ A lista atual de modelos inclui: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -101,7 +100,6 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -122,7 +120,6 @@ As estimativas se baseiam nos padrões de requisições observados: - Grok 4.5 — 1.100 tokens de entrada, 71.500 em cache, 220 tokens de saída por requisição - GLM-5.2/5.1 — 700 tokens de entrada, 52.000 em cache, 150 tokens de saída por requisição - GPT 5.6 Luna — 1.000 tokens de entrada, 50.000 em cache, 220 tokens de saída por requisição -- Gemini 3.7 Flash — 1.050 tokens de entrada, 76.500 em cache, 300 tokens de saída por requisição - Kimi K3 — 1.050 tokens de entrada, 76.500 em cache, 300 tokens de saída por requisição - Kimi K2.7/K2.6 — 870 tokens de entrada, 55.000 em cache, 200 tokens de saída por requisição - DeepSeek V4 Pro — 750 tokens de entrada, 82.000 em cache, 290 tokens de saída por requisição @@ -146,7 +143,6 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -205,7 +201,6 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -246,7 +241,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Não usado | 30 dias | | GLM-5.2 | Não usado | 0 dias | | GLM-5.1 | Não usado | 0 dias | -| Gemini 3.7 Flash | Não usado | 0 dias | | Kimi K3 | Não usado | 0 dias | | Kimi K2.7 Code | Não usado | 0 dias | | Kimi K2.6 | Não usado | 0 dias | diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index ef658b5d0..2bd78da67 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -63,7 +63,6 @@ OpenCode Go работает так же, как и любой другой пр - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -101,7 +100,6 @@ OpenCode Go включает следующие лимиты: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -122,7 +120,6 @@ OpenCode Go включает следующие лимиты: - Grok 4.5 — 1,100 входных, 71,500 кешированных, 220 выходных токенов на запрос - GLM-5.2/5.1 — 700 входных, 52,000 кешированных, 150 выходных токенов на запрос - GPT 5.6 Luna — 1,000 входных, 50,000 кешированных, 220 выходных токенов на запрос -- Gemini 3.7 Flash — 1,050 входных, 76,500 кешированных, 300 выходных токенов на запрос - Kimi K3 — 1,050 входных, 76,500 кешированных, 300 выходных токенов на запрос - Kimi K2.7/K2.6 — 870 входных, 55,000 кешированных, 200 выходных токенов на запрос - DeepSeek V4 Pro — 750 входных, 82,000 кешированных, 290 выходных токенов на запрос @@ -146,7 +143,6 @@ OpenCode Go включает следующие лимиты: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -205,7 +201,6 @@ OpenCode Go включает следующие лимиты: | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -246,7 +241,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Не используется | 30 дней | | GLM-5.2 | Не используется | 0 дней | | GLM-5.1 | Не используется | 0 дней | -| Gemini 3.7 Flash | Не используется | 0 дней | | Kimi K3 | Не используется | 0 дней | | Kimi K2.7 Code | Не используется | 0 дней | | Kimi K2.6 | Не используется | 0 дней | diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 6b6972877..1e9f47421 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -53,7 +53,6 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -91,7 +90,6 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -112,7 +110,6 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: - Grok 4.5 — 1,100 input, 71,500 cached, 220 output tokens ต่อ request - GLM-5.2/5.1 — 700 input, 52,000 cached, 150 output tokens ต่อ request - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens ต่อ request -- Gemini 3.7 Flash — 1,050 input, 76,500 cached, 300 output tokens ต่อ request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens ต่อ request - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens ต่อ request - DeepSeek V4 Pro — 750 input, 82,000 cached, 290 output tokens ต่อ request @@ -136,7 +133,6 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -193,7 +189,6 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -232,7 +227,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | ไม่นำไปใช้ | 30 วัน | | GLM-5.2 | ไม่นำไปใช้ | 0 วัน | | GLM-5.1 | ไม่นำไปใช้ | 0 วัน | -| Gemini 3.7 Flash | ไม่นำไปใช้ | 0 วัน | | Kimi K3 | ไม่นำไปใช้ | 0 วัน | | Kimi K2.7 Code | ไม่นำไปใช้ | 0 วัน | | Kimi K2.6 | ไม่นำไปใช้ | 0 วัน | diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 3ced72ced..99cc987a0 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -53,7 +53,6 @@ Mevcut model listesi şunları içerir: - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -91,7 +90,6 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -112,7 +110,6 @@ Tahminler, gözlemlenen istek modellerine dayanır: - Grok 4.5 — İstek başına 1.100 girdi, 71.500 önbelleğe alınmış, 220 çıktı token'ı - GLM-5.2/5.1 — İstek başına 700 girdi, 52.000 önbelleğe alınmış, 150 çıktı token'ı - GPT 5.6 Luna — İstek başına 1.000 girdi, 50.000 önbelleğe alınmış, 220 çıktı token'ı -- Gemini 3.7 Flash — İstek başına 1.050 girdi, 76.500 önbelleğe alınmış, 300 çıktı token'ı - Kimi K3 — İstek başına 1.050 girdi, 76.500 önbelleğe alınmış, 300 çıktı token'ı - Kimi K2.7/K2.6 — İstek başına 870 girdi, 55.000 önbelleğe alınmış, 200 çıktı token'ı - DeepSeek V4 Pro — İstek başına 750 girdi, 82.000 önbelleğe alınmış, 290 çıktı token'ı @@ -136,7 +133,6 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -193,7 +189,6 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -232,7 +227,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | Kullanılmaz | 30 gün | | GLM-5.2 | Kullanılmaz | 0 gün | | GLM-5.1 | Kullanılmaz | 0 gün | -| Gemini 3.7 Flash | Kullanılmaz | 0 gün | | Kimi K3 | Kullanılmaz | 0 gün | | Kimi K2.7 Code | Kullanılmaz | 0 gün | | Kimi K2.6 | Kullanılmaz | 0 gün | diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 2eaf699e0..dee827ad3 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -53,7 +53,6 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -91,7 +90,6 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -112,7 +110,6 @@ OpenCode Go 包含以下限制: - Grok 4.5 — 每次请求 1,100 个输入 token,71,500 个缓存 token,220 个输出 token - GLM-5.2/5.1 — 每次请求 700 个输入 token,52,000 个缓存 token,150 个输出 token - GPT 5.6 Luna — 每次请求 1,000 个输入 token,50,000 个缓存 token,220 个输出 token -- Gemini 3.7 Flash — 每次请求 1,050 个输入 token,76,500 个缓存 token,300 个输出 token - Kimi K3 — 每次请求 1,050 个输入 token,76,500 个缓存 token,300 个输出 token - Kimi K2.7/K2.6 — 每次请求 870 个输入 token,55,000 个缓存 token,200 个输出 token - DeepSeek V4 Pro — 每次请求 750 个输入 token,82,000 个缓存 token,290 个输出 token @@ -136,7 +133,6 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -193,7 +189,6 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -232,7 +227,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 不使用 | 30 天 | | GLM-5.2 | 不使用 | 0 天 | | GLM-5.1 | 不使用 | 0 天 | -| Gemini 3.7 Flash | 不使用 | 0 天 | | Kimi K3 | 不使用 | 0 天 | | Kimi K2.7 Code | 不使用 | 0 天 | | Kimi K2.6 | 不使用 | 0 天 | diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index 887daa0d7..8848c190e 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -53,7 +53,6 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** -- **Gemini 3.7 Flash** - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** @@ -91,7 +90,6 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | -| Gemini 3.7 Flash | 220 | 500 | 980 | | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | @@ -112,7 +110,6 @@ OpenCode Go 包含以下限制: - Grok 4.5 — 每次請求 1,100 個輸入 token、71,500 個快取 token、220 個輸出 token - GLM-5.2/5.1 — 每次請求 700 個輸入 token、52,000 個快取 token、150 個輸出 token - GPT 5.6 Luna — 每次請求 1,000 個輸入 token、50,000 個快取 token、220 個輸出 token -- Gemini 3.7 Flash — 每次請求 1,050 個輸入 token、76,500 個快取 token、300 個輸出 token - Kimi K3 — 每次請求 1,050 個輸入 token、76,500 個快取 token、300 個輸出 token - Kimi K2.7/K2.6 — 每次請求 870 個輸入 token、55,000 個快取 token、200 個輸出 token - DeepSeek V4 Pro — 每次請求 750 個輸入 token、82,000 個快取 token、290 個輸出 token @@ -136,7 +133,6 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | $15 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | @@ -193,7 +189,6 @@ OpenCode Go 包含以下限制: | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/go/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -232,7 +227,6 @@ https://opencode.ai/zen/go/v1/models | GPT 5.6 Luna | 不使用 | 30 天 | | GLM-5.2 | 不使用 | 0 天 | | GLM-5.1 | 不使用 | 0 天 | -| Gemini 3.7 Flash | 不使用 | 0 天 | | Kimi K3 | 不使用 | 0 天 | | Kimi K2.7 Code | 不使用 | 0 天 | | Kimi K2.6 | 不使用 | 0 天 | From 8a55ba75b5b01fa1bbf1578a0a176cfc2a81d558 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Thu, 13 Aug 2026 18:57:31 +0000 Subject: [PATCH 011/271] chore: generate --- packages/web/src/content/docs/ar/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/bs/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/da/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/de/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/es/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/fr/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/it/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/ja/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/ko/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/nb/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/pl/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/pt-br/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/ru/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/th/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/tr/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/zh-cn/go.mdx | 42 +++++++++++----------- packages/web/src/content/docs/zh-tw/go.mdx | 42 +++++++++++----------- 18 files changed, 378 insertions(+), 378 deletions(-) diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 7b98dc108..825473b58 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -183,27 +183,27 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال يمكنك أيضًا الوصول إلى نماذج Go عبر نقاط نهاية API التالية. -| Model | Model ID | Endpoint | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | يستخدم [model id](/docs/config/#models) في إعدادات OpenCode لديك التنسيق `opencode-go/`. على سبيل المثال، بالنسبة إلى Kimi K3، ستستخدم `opencode-go/kimi-k3` في إعداداتك. diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index fafe68cb4..3154c4866 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -195,27 +195,27 @@ Za ove modele i dalje dobijate malo više nego da direktno plaćate provajderima Također možete pristupiti Go modelima putem sljedećih API endpointa. -| Model | Model ID | Endpoint | AI SDK Paket | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Paket | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Model id](/docs/config/#models) u vašoj OpenCode konfiguraciji koristi format `opencode-go/`. Na primjer, za Kimi K3, koristili biste diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 5b4102987..5ec81f090 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -195,27 +195,27 @@ Med disse modeller får du stadig lidt mere, end hvis du betalte modeludbyderne Du kan også få adgang til Go-modeller gennem følgende API-endpoints. -| Model | Model ID | Endpoint | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Dit [model id](/docs/config/#models) i din OpenCode config bruger formatet `opencode-go/`. For eksempel for Kimi K3, vil du diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index b89f18da8..d75eb1ede 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -185,27 +185,27 @@ Bei diesen Modellen erhältst du immer noch etwas mehr, als wenn du die Modellan Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. -| Modell | Modell-ID | Endpunkt | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modell | Modell-ID | Endpunkt | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Die [Modell-ID](/docs/config/#models) in deiner OpenCode Config verwendet das Format `opencode-go/`. Für Kimi K3 würdest du beispielsweise `opencode-go/kimi-k3` in deiner Config verwenden. diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 318b7963e..8f54a3df7 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -195,27 +195,27 @@ Con estos modelos, aun así obtienes un poco más que si pagaras directamente a También puedes acceder a los modelos de Go a través de los siguientes endpoints de la API. -| Modelo | ID del modelo | Endpoint | Paquete de AI SDK | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modelo | ID del modelo | Endpoint | Paquete de AI SDK | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | El [ID del modelo](/docs/config/#models) en tu configuración de OpenCode usa el formato `opencode-go/`. Por ejemplo, para Kimi K3, usarías diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 7fede77ea..7f06df503 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -183,27 +183,27 @@ Pour ces modèles, vous obtenez tout de même un peu plus que si vous payiez dir Vous pouvez également accéder aux modèles Go via les points de terminaison d'API suivants. -| Modèle | ID de modèle | Point de terminaison | Package AI SDK | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modèle | ID de modèle | Point de terminaison | Package AI SDK | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | L'[ID de modèle](/docs/config/#models) dans votre configuration OpenCode utilise le format `opencode-go/`. Par exemple, pour Kimi K3, vous utiliseriez `opencode-go/kimi-k3` dans votre configuration. diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index da7f7691c..3c9531de6 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -195,27 +195,27 @@ For these models, you still get a little more than if you paid the model provide You can also access Go models through the following API endpoints. -| Model | Model ID | Endpoint | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | The [model id](/docs/config/#models) in your OpenCode config uses the format `opencode-go/`. For example, for Kimi K3, you would diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 7dfbe6063..af9fb7841 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -193,27 +193,27 @@ Per questi modelli, ottieni comunque un po' più di utilizzo rispetto a quanto o Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. -| Modello | ID Modello | Endpoint | Pacchetto AI SDK | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modello | ID Modello | Endpoint | Pacchetto AI SDK | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Il [model id](/docs/config/#models) nella tua OpenCode config utilizza il formato `opencode-go/`. Ad esempio, per Kimi K3, useresti diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 9daafba1c..7459309b8 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -183,27 +183,27 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを 以下のAPIエンドポイントを通じて、Goモデルにアクセスすることもできます。 -| Model | Model ID | Endpoint | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode設定の[model id](/docs/config/#models)は、`opencode-go/`という形式を使用します。たとえば、Kimi K3の場合は、設定で`opencode-go/kimi-k3`を使用します。 diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 367dffbe2..0cc8c512a 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -183,27 +183,27 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 다음 API 엔드포인트를 통해서도 Go 모델에 액세스할 수 있습니다. -| 모델 | 모델 ID | 엔드포인트 | AI SDK 패키지 | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| 모델 | 모델 ID | 엔드포인트 | AI SDK 패키지 | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode config의 [model id](/docs/config/#models)는 `opencode-go/` 형식을 사용합니다. 예를 들어 Kimi K3의 경우 config에서 `opencode-go/kimi-k3`를 사용하면 됩니다. diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index db98db5d0..1210ff40b 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -195,27 +195,27 @@ For disse modellene får du fortsatt litt mer enn om du betalte modellleverandø Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. -| Modell | Modell-ID | Endepunkt | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modell | Modell-ID | Endepunkt | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Modell-ID-en](/docs/config/#models) i din OpenCode-konfigurasjon bruker formatet `opencode-go/`. For eksempel, for Kimi K3, vil du diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index b61caf84d..c8a459e49 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -187,27 +187,27 @@ W przypadku tych modeli nadal otrzymujesz nieco więcej, niż płacąc bezpośre Możesz również uzyskać dostęp do modeli Go za pośrednictwem następujących punktów końcowych API. -| Model | ID modelu | Punkt końcowy | Pakiet AI SDK | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | ID modelu | Punkt końcowy | Pakiet AI SDK | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID modelu](/docs/config/#models) w Twojej konfiguracji OpenCode używa formatu `opencode-go/`. Na przykład dla Kimi K3 należy użyć diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index d6325da6a..623deb4b4 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -195,27 +195,27 @@ Para esses modelos, você ainda recebe um pouco mais do que receberia se pagasse Você também pode acessar os modelos do Go através dos seguintes endpoints de API. -| Modelo | ID do Modelo | Endpoint | Pacote do AI SDK | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modelo | ID do Modelo | Endpoint | Pacote do AI SDK | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | O [ID do modelo](/docs/config/#models) na sua configuração do OpenCode usa o formato `opencode-go/`. Por exemplo, para o Kimi K3, você usaria diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 2bd78da67..61ab1f362 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -195,27 +195,27 @@ OpenCode Go включает следующие лимиты: Вы также можете получить доступ к моделям Go через следующие API-эндпоинты. -| Модель | ID модели | Эндпоинт | Пакет AI SDK | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Модель | ID модели | Эндпоинт | Пакет AI SDK | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID модели](/docs/config/#models) в вашем конфиге OpenCode использует формат `opencode-go/`. Например, для Kimi K3 вам нужно diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 1e9f47421..ed31155a5 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -183,27 +183,27 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: คุณสามารถเข้าถึงโมเดลของ Go ผ่าน API endpoints ต่อไปนี้ได้เช่นกัน -| Model | Model ID | Endpoint | AI SDK Package | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [model id](/docs/config/#models) ใน OpenCode config ของคุณจะใช้รูปแบบ `opencode-go/` ตัวอย่างเช่น สำหรับ Kimi K3 คุณจะใช้ `opencode-go/kimi-k3` ใน config ของคุณ diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 99cc987a0..3a4d9bb93 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -183,27 +183,27 @@ Bu modellerde bile model sağlayıcılarına doğrudan ödeme yaptığınız dur Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsiniz. -| Model | Model ID | Uç Nokta | AI SDK Paketi | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Uç Nokta | AI SDK Paketi | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode yapılandırmanızdaki [model id](/docs/config/#models) formatı `opencode-go/` şeklindedir. Örneğin, Kimi K3 için yapılandırmanızda `opencode-go/kimi-k3` kullanmalısınız. diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index dee827ad3..af214e2ac 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -183,27 +183,27 @@ OpenCode Go 包含以下限制: 你也可以通过以下 API 端点访问 Go 模型。 -| 模型 | 模型 ID | 端点 | AI SDK 包 | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| 模型 | 模型 ID | 端点 | AI SDK 包 | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 你的 OpenCode 配置中的 [模型 ID](/docs/config/#models) 使用 `opencode-go/` 格式。例如,对于 Kimi K3,你将在配置中使用 `opencode-go/kimi-k3`。 diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index 8848c190e..ce8cfbe78 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -183,27 +183,27 @@ OpenCode Go 包含以下限制: 您也可以透過以下 API 端點存取 Go 模型。 -| 模型 | 模型 ID | 端點 | AI SDK 套件 | -| ----------------- | ----------------- | ------------------------------------------------------- | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| 模型 | 模型 ID | 端點 | AI SDK 套件 | +| ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 您的 OpenCode 設定中的 [model id](/docs/config/#models) 使用 `opencode-go/` 格式。例如,Kimi K3 在設定中應使用 `opencode-go/kimi-k3`。 From d8bf79225f28775064ca319543196f13dbebc44b Mon Sep 17 00:00:00 2001 From: Dax Date: Thu, 13 Aug 2026 17:05:15 -0700 Subject: [PATCH 012/271] fix(opencode): preserve v1 database compatibility (#42444) --- packages/core/src/session/projector.ts | 3 -- packages/core/test/session-projector.test.ts | 36 ++++++++++++++++++- packages/core/test/session-runner.test.ts | 7 ---- .../opencode/src/control-plane/workspace.ts | 2 ++ .../test/control-plane/workspace.test.ts | 16 +++++++++ 5 files changed, 53 insertions(+), 11 deletions(-) diff --git a/packages/core/src/session/projector.ts b/packages/core/src/session/projector.ts index afa60dfa8..792067017 100644 --- a/packages/core/src/session/projector.ts +++ b/packages/core/src/session/projector.ts @@ -12,7 +12,6 @@ import { SessionMessage } from "./message" import { SessionMessageUpdater } from "./message-updater" import { SessionInput } from "./input" import { WorkspaceV2 } from "../workspace" -import { SessionContextEpoch } from "./context-epoch" import { MessageTable, PartTable, SessionInputTable, SessionMessageTable, SessionTable } from "./sql" import type { DeepMutable } from "../schema" @@ -253,7 +252,6 @@ const layer = Layer.effectDiscard( .where(eq(SessionTable.id, event.data.sessionID)) .run() .pipe(Effect.orDie) - yield* SessionContextEpoch.reset(db, event.data.sessionID) }), ) yield* events.project(SessionV1.Event.Deleted, (event) => @@ -449,7 +447,6 @@ const layer = Layer.effectDiscard( .where(eq(SessionTable.id, event.data.sessionID)) .run() .pipe(Effect.orDie) - yield* SessionContextEpoch.reset(db, event.data.sessionID) }), ) }), diff --git a/packages/core/test/session-projector.test.ts b/packages/core/test/session-projector.test.ts index 6648ee43c..7ebcd9731 100644 --- a/packages/core/test/session-projector.test.ts +++ b/packages/core/test/session-projector.test.ts @@ -1,6 +1,6 @@ import { describe, expect } from "bun:test" import { DateTime, Effect, Schema } from "effect" -import { asc, eq } from "drizzle-orm" +import { asc, eq, sql } from "drizzle-orm" import { Database } from "@opencode-ai/core/database/database" import { LayerNode } from "@opencode-ai/core/effect/layer-node" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" @@ -22,6 +22,7 @@ import { SessionInput } from "@opencode-ai/core/session/input" import { SessionInputTable, SessionMessageTable, SessionTable } from "@opencode-ai/core/session/sql" import { testEffect } from "./lib/effect" import { Snapshot } from "@opencode-ai/core/snapshot" +import { Location } from "@opencode-ai/core/location" const it = testEffect(AppNodeBuilder.build(LayerNode.group([Database.node, EventV2.node, SessionProjector.node]))) const sessionsLayer = AppNodeBuilder.build(SessionV2.node, [[SessionExecution.node, SessionExecution.noopLayer]]) @@ -44,6 +45,39 @@ const assistantRow = ( } describe("SessionProjector", () => { + it.effect("projects moved sessions without the transitional context epoch table", () => + Effect.gen(function* () { + const { db } = yield* Database.Service + const events = yield* EventV2.Service + yield* db + .insert(ProjectTable) + .values({ id: Project.ID.global, worktree: AbsolutePath.make("/project"), sandboxes: [] }) + .run() + yield* db + .insert(SessionTable) + .values({ + id: sessionID, + project_id: Project.ID.global, + slug: "test", + directory: "/project", + title: "test", + version: "test", + }) + .run() + yield* db.run(sql`DROP TABLE session_context_epoch`) + + yield* events.publish(SessionEvent.Moved, { + sessionID, + timestamp: DateTime.makeUnsafe(1), + location: Location.Ref.make({ directory: AbsolutePath.make("/project/subdir") }), + }) + + expect(yield* db.select({ directory: SessionTable.directory }).from(SessionTable).get()).toEqual({ + directory: "/project/subdir", + }) + }), + ) + it.effect("projects staged, cleared, and committed reverts", () => Effect.gen(function* () { const db = (yield* Database.Service).db diff --git a/packages/core/test/session-runner.test.ts b/packages/core/test/session-runner.test.ts index 57d4456d2..5b40258b2 100644 --- a/packages/core/test/session-runner.test.ts +++ b/packages/core/test/session-runner.test.ts @@ -703,13 +703,6 @@ describe("SessionRunnerLLM", () => { timestamp: DateTime.makeUnsafe(1), location: Location.Ref.make({ directory: AbsolutePath.make("/moved") }), }) - expect( - yield* db - .select() - .from(SessionContextEpochTable) - .where(eq(SessionContextEpochTable.session_id, sessionID)) - .get(), - ).toBeUndefined() yield* session.prompt({ sessionID, prompt: Prompt.make({ text: "Second" }), resume: false }) const exit = yield* session.resume(sessionID).pipe(Effect.exit) diff --git a/packages/opencode/src/control-plane/workspace.ts b/packages/opencode/src/control-plane/workspace.ts index 8f746e256..188cd383b 100644 --- a/packages/opencode/src/control-plane/workspace.ts +++ b/packages/opencode/src/control-plane/workspace.ts @@ -714,6 +714,7 @@ const layer = Layer.effect( }) const list = Effect.fn("Workspace.list")(function* (project: Project.Info) { + if (!flags.experimentalWorkspaces) return [] return (yield* db .select() .from(WorkspaceTable) @@ -851,6 +852,7 @@ const layer = Layer.effect( }) const startWorkspaceSyncing = Effect.fn("Workspace.startWorkspaceSyncing")(function* (projectID: ProjectV2.ID) { + if (!flags.experimentalWorkspaces) return const rows = yield* db .selectDistinct({ workspace: WorkspaceTable }) .from(WorkspaceTable) diff --git a/packages/opencode/test/control-plane/workspace.test.ts b/packages/opencode/test/control-plane/workspace.test.ts index a0d3aadbe..6d90eee2a 100644 --- a/packages/opencode/test/control-plane/workspace.test.ts +++ b/packages/opencode/test/control-plane/workspace.test.ts @@ -8,6 +8,7 @@ import { Effect, Exit, Fiber, Layer, Schema } from "effect" import { HttpServer, HttpServerRequest, HttpServerResponse } from "effect/unstable/http" import { eq } from "drizzle-orm" import { GlobalBus, type GlobalEvent } from "@/bus/global" +import { Project } from "@/project/project" import { Database } from "@opencode-ai/core/database/database" import { ProjectV2 } from "@opencode-ai/core/project" import { ProjectTable } from "@opencode-ai/core/project/sql" @@ -133,6 +134,9 @@ const startWorkspaceSyncingWithFlag = (projectID: ProjectV2.ID, experimentalWork Workspace.use.startWorkspaceSyncing(projectID).pipe(Effect.provide(workspaceLayer(experimentalWorkspaces))), ) +const listWithFlag = (project: Project.Info, experimentalWorkspaces: boolean) => + Effect.runPromise(Workspace.use.list(project).pipe(Effect.provide(workspaceLayer(experimentalWorkspaces)))) + function captureGlobalEvents() { const events: GlobalEvent[] = [] const handler = (event: GlobalEvent) => events.push(event) @@ -417,6 +421,18 @@ describe("workspace CRUD", () => { { git: true }, ) + it.instance( + "list is disabled by the experimental workspace flag", + () => + Effect.gen(function* () { + const instance = yield* requireInstance + yield* insertWorkspace(workspaceInfo(instance.project.id, "manual")) + + expect(yield* Effect.promise(() => listWithFlag(instance.project, false))).toEqual([]) + }), + { git: true }, + ) + it.instance( "create configures, persists, creates, starts local sync, and passes environment", () => From 0e3474509aa5ad16afcf9c439785514d6443c6af Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 10:24:22 +0800 Subject: [PATCH 013/271] docs: sort Gemini 3.7 before 3.6 (#42473) Co-authored-by: Stefan Avram <98915060+Slickstef11@users.noreply.github.com> --- packages/web/src/content/docs/ar/zen.mdx | 4 ++-- packages/web/src/content/docs/bs/zen.mdx | 4 ++-- packages/web/src/content/docs/da/zen.mdx | 4 ++-- packages/web/src/content/docs/de/zen.mdx | 4 ++-- packages/web/src/content/docs/es/zen.mdx | 4 ++-- packages/web/src/content/docs/fr/zen.mdx | 4 ++-- packages/web/src/content/docs/it/zen.mdx | 4 ++-- packages/web/src/content/docs/ja/zen.mdx | 4 ++-- packages/web/src/content/docs/ko/zen.mdx | 4 ++-- packages/web/src/content/docs/nb/zen.mdx | 4 ++-- packages/web/src/content/docs/pl/zen.mdx | 4 ++-- packages/web/src/content/docs/pt-br/zen.mdx | 4 ++-- packages/web/src/content/docs/ru/zen.mdx | 4 ++-- packages/web/src/content/docs/th/zen.mdx | 4 ++-- packages/web/src/content/docs/tr/zen.mdx | 4 ++-- packages/web/src/content/docs/zen.mdx | 4 ++-- packages/web/src/content/docs/zh-cn/zen.mdx | 4 ++-- packages/web/src/content/docs/zh-tw/zen.mdx | 4 ++-- 18 files changed, 36 insertions(+), 36 deletions(-) diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index 2fa7ad9da..29317ed03 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -85,8 +85,8 @@ OpenCode Zen هي بوابة AI تتيح لك الوصول إلى هذه الن | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -172,8 +172,8 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index 414d2f497..a2b69c956 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -90,8 +90,8 @@ Našim modelima možete pristupiti i preko sljedećih API endpointa. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,8 +179,8 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index ca306e8a6..69a732089 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -90,8 +90,8 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,8 +179,8 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index 0fa0de549..1e05c8635 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -81,8 +81,8 @@ Du kannst auch über die folgenden API-Endpunkte auf unsere Modelle zugreifen. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,8 +168,8 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index 80b5fe3dd..da1e1bbbc 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -90,8 +90,8 @@ También puedes acceder a nuestros modelos a través de los siguientes endpoints | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,8 +179,8 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index 073a9d2e0..c6466bca7 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -81,8 +81,8 @@ Vous pouvez également accéder à nos modèles via les points de terminaison AP | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,8 +168,8 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index c6f8a87b2..8c517c48a 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -90,8 +90,8 @@ Puoi anche accedere ai nostri modelli tramite i seguenti endpoint API. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,8 +179,8 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index 31eca1ffc..658879903 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -81,8 +81,8 @@ OpenCode Zen は、OpenCode のほかのプロバイダーと同じように動 | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,8 +168,8 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index af53a1794..1ac394022 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -81,8 +81,8 @@ OpenCode Zen은 OpenCode의 다른 provider와 똑같이 작동합니다. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,8 +168,8 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index 00052708d..e84d20836 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -90,8 +90,8 @@ Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,8 +179,8 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index 3785a1574..db079ddeb 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -90,8 +90,8 @@ Możesz też uzyskać dostęp do naszych modeli przez poniższe endpointy API. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,8 +179,8 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index f64416d4c..40d9aa878 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -81,8 +81,8 @@ Você também pode acessar nossos modelos pelos seguintes endpoints de API. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,8 +168,8 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index 8760a1c40..1ac091323 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -90,8 +90,8 @@ OpenCode Zen работает как любой другой провайдер | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,8 +179,8 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index 7dd6aa929..eb9e22821 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -83,8 +83,8 @@ OpenCode Zen ทำงานเหมือน provider อื่น ๆ ใน | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -170,8 +170,8 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index ba835cb24..e138f75e5 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -81,8 +81,8 @@ Modellerimize aşağıdaki API uç noktaları aracılığıyla da erişebilirsin | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,8 +168,8 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index 87563ff66..017eeea92 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -90,8 +90,8 @@ You can also access our models through the following API endpoints. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -179,8 +179,8 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index 791142fb6..24ae69845 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -81,8 +81,8 @@ OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -168,8 +168,8 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index ed8751860..2d554cc31 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -85,8 +85,8 @@ OpenCode Zen 的運作方式和 OpenCode 中的其他供應商一樣。 | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | -| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | +| Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | `https://opencode.ai/zen/v1/models/gemini-3.5-flash-lite` | `@ai-sdk/google` | | Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` | @@ -173,8 +173,8 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | -| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | +| Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | | Gemini 3.5 Flash Lite | $0.30 | $2.50 | $0.03 | - | | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | From 6d635007ab06f0313a826f57b8240c45f9f7555a Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Thu, 13 Aug 2026 22:08:45 -0500 Subject: [PATCH 014/271] chore(deps): update ai-gateway-provider to 3.2.0 (#42488) Co-authored-by: Aiden Cline --- bun.lock | 122 ++++++++++++++++++++++++--------- packages/core/package.json | 2 +- packages/opencode/package.json | 2 +- 3 files changed, 90 insertions(+), 36 deletions(-) diff --git a/bun.lock b/bun.lock index 04b5bcf35..d2a4a7745 100644 --- a/bun.lock +++ b/bun.lock @@ -332,7 +332,7 @@ "@opentelemetry/sdk-trace-base": "2.6.1", "@parcel/watcher": "2.5.1", "@silvia-odwyer/photon-node": "0.3.4", - "ai-gateway-provider": "3.1.2", + "ai-gateway-provider": "3.2.0", "bun-pty": "0.4.8", "cross-spawn": "catalog:", "diff": "catalog:", @@ -623,7 +623,7 @@ "@types/ws": "8.18.1", "@zip.js/zip.js": "2.7.62", "ai": "catalog:", - "ai-gateway-provider": "3.1.2", + "ai-gateway-provider": "3.2.0", "bonjour-service": "1.3.0", "chokidar": "4.0.3", "cross-spawn": "catalog:", @@ -1183,15 +1183,15 @@ "@ai-sdk/cohere": ["@ai-sdk/cohere@3.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-OqcCq2PiFY1dbK/0Ck45KuvE8jfdxRuuAE9Y5w46dAk6U+9vPOeg1CDcmR+ncqmrYrhRl3nmyDttyDahyjCzAw=="], - "@ai-sdk/deepgram": ["@ai-sdk/deepgram@2.0.33", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-VscTV68g6sXRY4O1yl72/O8y6+tBDvSQax6bqX06hRKWBGxsJ8Jr3LZsNmZnK9Od5Icx565ijK0QgrlNaN4TdQ=="], + "@ai-sdk/deepgram": ["@ai-sdk/deepgram@2.0.51", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-DPoKiCXDwzopJI/pHcZnXaycZ5qqCL4xCWcfsb1s8M8OUPchK2GUHcCXt6v056fAqtKWLF/hrW+RcHFFY0qyHQ=="], "@ai-sdk/deepinfra": ["@ai-sdk/deepinfra@2.0.41", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.37", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-y6RoOP7DGWmDSiSxrUSt5p18sbz+Ixe5lMVPmdE7x+Tr5rlrzvftyHhjWHfqlAtoYERZTGFbP6tPW1OfQcrb4A=="], "@ai-sdk/deepseek": ["@ai-sdk/deepseek@2.0.47", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.38" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MzcQ321JO8OY+TVLFI81A7cIIuoeLLxrLCDD+8C1E3Ro6UFyfMtRXo9bw9OhTMRSDMo6hgSDOo4Fekz8aJtQYQ=="], - "@ai-sdk/elevenlabs": ["@ai-sdk/elevenlabs@2.0.33", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-EtvsWfGrqx3OhzJdoi82qH+4yzEPPKZr2utyQ+w8cHKoFeg0+8Lou9Z3uixy73WEwz8Z1+AR8QT9fZ64AWGYPA=="], + "@ai-sdk/elevenlabs": ["@ai-sdk/elevenlabs@2.0.51", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-XFONX6rAsu6d13cJVUfZfkq4a+qdThlxvoEfzYlSRa1AvALlzwX7Y6bunXxevuifT3n882+nDdWrdiYvFP0+Fw=="], - "@ai-sdk/fireworks": ["@ai-sdk/fireworks@2.0.53", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.48", "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-HjeiGsdxSzrCkOf2l2V+K+opzlqxBtduBq6BCiohAdgQk2KdZmI/67SMkBM6Kdze/BjUXiZlv0d7zNICPhxVDA=="], + "@ai-sdk/fireworks": ["@ai-sdk/fireworks@2.0.76", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.67", "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-yg1ulgemh6BLMrs2vBNbtjV70NhenFI3Z7psB7s94FOEcGevvyV1qdFoqsgBZ7QyuUGwnC645c+eBFFtPAr5SQ=="], "@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.104", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ZKX5n74io8VIRlhIMSLWVlvT3sXC8Z7cZ9GHuWBWZDVi96+62AIsWuLGvMfcBA1STYuSoDrp6rIziZmvrTq0TA=="], @@ -3063,7 +3063,7 @@ "ai": ["ai@6.0.168", "", { "dependencies": { "@ai-sdk/gateway": "3.0.104", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-2HqCJuO+1V2aV7vfYs5LFEUfxbkGX+5oa54q/gCCTL7KLTdbxcCu5D7TdLA5kwsrs3Szgjah9q6D9tpjHM3hUQ=="], - "ai-gateway-provider": ["ai-gateway-provider@3.1.2", "", { "optionalDependencies": { "@ai-sdk/amazon-bedrock": "^4.0.62", "@ai-sdk/anthropic": "^3.0.46", "@ai-sdk/azure": "^3.0.31", "@ai-sdk/cerebras": "^2.0.34", "@ai-sdk/cohere": "^3.0.21", "@ai-sdk/deepgram": "^2.0.20", "@ai-sdk/deepseek": "^2.0.20", "@ai-sdk/elevenlabs": "^2.0.20", "@ai-sdk/fireworks": "^2.0.34", "@ai-sdk/google": "^3.0.30", "@ai-sdk/google-vertex": "^4.0.61", "@ai-sdk/groq": "^3.0.24", "@ai-sdk/mistral": "^3.0.20", "@ai-sdk/openai": "^3.0.30", "@ai-sdk/perplexity": "^3.0.19", "@ai-sdk/xai": "^3.0.57", "@openrouter/ai-sdk-provider": "^2.2.3" }, "peerDependencies": { "@ai-sdk/openai-compatible": "^2.0.0", "@ai-sdk/provider": "^3.0.0", "@ai-sdk/provider-utils": "^4.0.0", "ai": "^6.0.0" } }, "sha512-krGNnJSoO/gJ7Hbe5nQDlsBpDUGIBGtMQTRUaW7s1MylsfvLduba0TLWzQaGtOmNRkP0pGhtGlwsnS6FNQMlyw=="], + "ai-gateway-provider": ["ai-gateway-provider@3.2.0", "", { "optionalDependencies": { "@ai-sdk/amazon-bedrock": "^4.0.117", "@ai-sdk/anthropic": "^3.0.84", "@ai-sdk/azure": "^3.0.74", "@ai-sdk/cerebras": "^2.0.56", "@ai-sdk/cohere": "^3.0.38", "@ai-sdk/deepgram": "^2.0.35", "@ai-sdk/deepseek": "^2.0.38", "@ai-sdk/elevenlabs": "^2.0.35", "@ai-sdk/fireworks": "^2.0.56", "@ai-sdk/google": "^3.0.82", "@ai-sdk/google-vertex": "^4.0.145", "@ai-sdk/groq": "^3.0.41", "@ai-sdk/mistral": "^3.0.39", "@ai-sdk/openai": "^3.0.71", "@ai-sdk/perplexity": "^3.0.35", "@ai-sdk/xai": "^3.0.95", "@openrouter/ai-sdk-provider": "^2.10.0" }, "peerDependencies": { "@ai-sdk/openai-compatible": "^2.0.0", "@ai-sdk/provider": "^3.0.0", "@ai-sdk/provider-utils": "^4.0.0", "ai": "^6.0.0" } }, "sha512-IGSV96IqAfiZd20CWSMVQk5sVeLcJR2uQcoWLB8GdkxyvQrsU3x4U0o1Ok6bfVJug7SrlX6I8ibz9cHIkUyRtg=="], "ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], @@ -5667,9 +5667,9 @@ "@ai-sdk/cohere/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], - "@ai-sdk/deepgram/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@ai-sdk/deepgram/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], - "@ai-sdk/deepgram/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@ai-sdk/deepgram/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], "@ai-sdk/deepinfra/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], @@ -5677,15 +5677,15 @@ "@ai-sdk/deepseek/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.38", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-/HHGmtKllqjg1OLc023v9w9kK3laW7Z6TzfZukYQWCsGBbzB9p60zTvvpXFVcs44NZBVXL3viOa1HRKUbeee8g=="], - "@ai-sdk/elevenlabs/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@ai-sdk/elevenlabs/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], - "@ai-sdk/elevenlabs/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@ai-sdk/elevenlabs/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], - "@ai-sdk/fireworks/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.48", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-z9MC6M4Oh/yUY/F/eszOtO8wc2nMz99XmZQKd2gWTtyIfe716xTfrKe3aYZKg20NZDtyjqPPKPSR+wqz7q1T7Q=="], + "@ai-sdk/fireworks/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.67", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-glcEJC2mBXJKj7joFI0fRhcbdDYKTBgXMPcT6Vcnlym67tTzuNG9pFx3zblxVv8TdOxhojJja5zGG19yeGJxuA=="], - "@ai-sdk/fireworks/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@ai-sdk/fireworks/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], - "@ai-sdk/fireworks/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@ai-sdk/fireworks/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], "@ai-sdk/google/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], @@ -6171,21 +6171,25 @@ "accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], - "ai-gateway-provider/@ai-sdk/amazon-bedrock": ["@ai-sdk/amazon-bedrock@4.0.107", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.78", "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27", "@smithy/eventstream-codec": "^4.0.1", "@smithy/util-utf8": "^4.0.0", "aws4fetch": "^1.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-8nT08pGPy25rleJNk56ep00UHK6kCtCmu+ZNqVVSSPDieADlIZqcaN1iRXAFBoCH0Fb9F6C2EjFDaySdsargfQ=="], + "ai-gateway-provider/@ai-sdk/amazon-bedrock": ["@ai-sdk/amazon-bedrock@4.0.153", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.110", "@ai-sdk/openai": "3.0.96", "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45", "@smithy/eventstream-codec": "^4.0.1", "@smithy/util-utf8": "^4.0.0", "aws4fetch": "^1.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-iEXrLgWylCHJmznqlKLU3CqRh8UWibv+illrwmsk136FVBBvyXiGnpQrI1pGWCScVLQjBQSFQu7GJDkUEomf/A=="], - "ai-gateway-provider/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.78", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-0OY12G20cUt6iU6htpEA1491Oz++NVxZxlmWGX4B7rSbeZ5pnDmOu6YtW9BKzdZlNx5Gn23i6WMxyZFoMKNcgA=="], + "ai-gateway-provider/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.110", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-rNkamQCeAUOUGr5Npg5pXZyYFH4fS1U6Mbdy3dF/NNBEI3D2Chc/ruRrwNegP0gfpX3cllP3O4jSibGBbWPZ7A=="], - "ai-gateway-provider/@ai-sdk/azure": ["@ai-sdk/azure@3.0.49", "", { "dependencies": { "@ai-sdk/openai": "3.0.48", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-wskgAL+OmrHG7by/iWIxEBQCEdc1mDudha/UZav46i0auzdFfsDB/k2rXZaC4/3nWSgMZkxr0W3ncyouEGX/eg=="], + "ai-gateway-provider/@ai-sdk/cerebras": ["@ai-sdk/cerebras@2.0.60", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.54", "@ai-sdk/provider": "3.0.12", "@ai-sdk/provider-utils": "4.0.33" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Rnok3cThg6awBwaDSyiZpgRpbV7pqxGYrA89LODCo5cuEHeP2h0AM0lLHP7zIkclAdXfOm4wldKi/S2T/DGCOw=="], - "ai-gateway-provider/@ai-sdk/deepseek": ["@ai-sdk/deepseek@2.0.35", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-9DhYurbAvcurOEGN6u2myYDybrrzGfcrkG8hwmFjwTrePW6KCMggm0YxP7e8RkLYcQKqCEMgFlyEB4BM6EmiKg=="], + "ai-gateway-provider/@ai-sdk/cohere": ["@ai-sdk/cohere@3.0.54", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cXLjIsSzUriPHe704IH6d+ipJ/OvczTB700p9Zma7DPgQzvxG/diyr8q/2LEsbTRiTopiKhky8dn1PJNQcJToQ=="], - "ai-gateway-provider/@ai-sdk/mistral": ["@ai-sdk/mistral@3.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ZXe7nZQgliDdjz5ufH5RKpHWxbN72AzmzzKGbF/z+0K9GN5tUCnftrQRvTRFHA5jAzTapcm2BEevmGLVbMkW+A=="], + "ai-gateway-provider/@ai-sdk/google": ["@ai-sdk/google@3.0.108", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kwvYpRNghqt0VRKE7Hx1UWZQCUJJFqUITj24baxy+ApS0Hru0PkBJHD75a36Wc+e6e+wHcKR2MconTeJiBZigA=="], - "ai-gateway-provider/@ai-sdk/openai": ["@ai-sdk/openai@3.0.53", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Wld+Rbc05KaUn08uBt06eEuwcgalcIFtIl32Yp+GxuZXUQwOb6YeAuq+C6da4ch6BurFoqEaLemJVwjBb7x+PQ=="], + "ai-gateway-provider/@ai-sdk/google-vertex": ["@ai-sdk/google-vertex@4.0.181", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.110", "@ai-sdk/google": "3.0.108", "@ai-sdk/openai-compatible": "2.0.67", "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45", "google-auth-library": "^10.5.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-57b5Qor8V53vubkxCj09tbHWpzpCLUbzmll2FwShuLvyEAsCH6mh3sAowDhiwUWPXnLzU+rC3RVMKCPscqICcg=="], - "ai-gateway-provider/@ai-sdk/xai": ["@ai-sdk/xai@3.0.82", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.41", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-A0VFMufnVf4wODcT3SPQUUzvYXiIO1VhFuXj9r6z/vP4rlo+QRDPw3WSTchcz93ROQWSfBE3I6Szqz342OHi5w=="], + "ai-gateway-provider/@ai-sdk/groq": ["@ai-sdk/groq@3.0.59", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-X4h60TGq4pIOXPsthatUr+bfTaYCaKGX597hG9JgcueEl4+nboCdw99ixjFKGkvYlBJwLCCfI957EmGA2QlF0w=="], - "ai-gateway-provider/@openrouter/ai-sdk-provider": ["@openrouter/ai-sdk-provider@2.8.1", "", { "peerDependencies": { "ai": "^6.0.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Y6j3yivgoEUf/kutD/k5GX/mzZfioRFoSx0gbQ+mIOzMaH/vJv1rCkztiuvlLw5xRYQil7oxHUZvmSfXqOx1NQ=="], + "ai-gateway-provider/@ai-sdk/openai": ["@ai-sdk/openai@3.0.84", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.38" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cmgbeJL0bbY0yTJH4/AdmP5E7MjWRL9G8UdhIi0JlV/So03o82ORJofW8OzwCZPTORVQblFbpZXYGDcUd9NdUQ=="], + + "ai-gateway-provider/@ai-sdk/perplexity": ["@ai-sdk/perplexity@3.0.53", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-bL3SWrPltTuxVNg/bZ5APbJLVe0+BIU+BYAbT8Yo0eSAZ5eMTImN2murQHZa08Wi8lUMm8MNolaYBQkb0JDbFw=="], + + "ai-gateway-provider/@openrouter/ai-sdk-provider": ["@openrouter/ai-sdk-provider@2.10.0", "", { "peerDependencies": { "ai": "^6.0.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-FMsAEjLUt5pWuRE2LDC/LCvVrFjLlrEzUITH5+5SZtfq7KZ2wrOHjQVxzz92sju8S9ltpzW87CLW8/b0oBXVCw=="], "ajv-keywords/ajv": ["ajv@6.15.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw=="], @@ -6595,14 +6599,20 @@ "@ai-sdk/deepgram/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@ai-sdk/deepgram/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + "@ai-sdk/deepinfra/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], "@ai-sdk/deepseek/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], "@ai-sdk/elevenlabs/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@ai-sdk/elevenlabs/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + "@ai-sdk/fireworks/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@ai-sdk/fireworks/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + "@ai-sdk/google-vertex/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], "@ai-sdk/google/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], @@ -6977,29 +6987,51 @@ "accepts/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], - "ai-gateway-provider/@ai-sdk/amazon-bedrock/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "ai-gateway-provider/@ai-sdk/amazon-bedrock/@ai-sdk/openai": ["@ai-sdk/openai@3.0.96", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Pex8vOj1y05j7jtBS39cJJRDjJbMIyCY9+01cSIp1hwEJTKImrFejMgsAazMWXSi/HU+B9ZE6ElftCOwvg4mmQ=="], + + "ai-gateway-provider/@ai-sdk/amazon-bedrock/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], - "ai-gateway-provider/@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "ai-gateway-provider/@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], "ai-gateway-provider/@ai-sdk/amazon-bedrock/@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.14", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.14.1", "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw=="], "ai-gateway-provider/@ai-sdk/amazon-bedrock/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], - "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], + + "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], + + "ai-gateway-provider/@ai-sdk/cerebras/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.54", "", { "dependencies": { "@ai-sdk/provider": "3.0.12", "@ai-sdk/provider-utils": "4.0.33" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-OyXt0zK8y2/ZIyWlbxTv2r1M7AK227S+Gl4BYOEF42q0wz1n5m4fwR8L4Fy/MQ4Ho6xje47MPsFcRdIqIyP6Rw=="], + + "ai-gateway-provider/@ai-sdk/cerebras/@ai-sdk/provider": ["@ai-sdk/provider@3.0.12", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-sj9DWTJ2Ze0WR9qsiOPqoqzNx3OxL6iMxHImbhvoe9qOspekbzxNDMiJ4TIGfYHYh9w4OmBjz3prvqhzTi96+Q=="], + + "ai-gateway-provider/@ai-sdk/cerebras/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.33", "", { "dependencies": { "@ai-sdk/provider": "3.0.12", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-nJ0bAfegMAIJtrzMJtbzer1cS3nb7c7DsyU1S4nrPm7ZU0Mn6SBBZv5IGZZGTbpWTJwqKTSPeZJTXalbAxt1BA=="], + + "ai-gateway-provider/@ai-sdk/cohere/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], + + "ai-gateway-provider/@ai-sdk/cohere/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], + + "ai-gateway-provider/@ai-sdk/google/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], + + "ai-gateway-provider/@ai-sdk/google/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], - "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "ai-gateway-provider/@ai-sdk/google-vertex/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.67", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-glcEJC2mBXJKj7joFI0fRhcbdDYKTBgXMPcT6Vcnlym67tTzuNG9pFx3zblxVv8TdOxhojJja5zGG19yeGJxuA=="], - "ai-gateway-provider/@ai-sdk/azure/@ai-sdk/openai": ["@ai-sdk/openai@3.0.48", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ALmj/53EXpcRqMbGpPJPP4UOSWw0q4VGpnDo7YctvsynjkrKDmoneDG/1a7VQnSPYHnJp6tTRMf5ZdxZ5whulg=="], + "ai-gateway-provider/@ai-sdk/google-vertex/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], - "ai-gateway-provider/@ai-sdk/azure/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], + "ai-gateway-provider/@ai-sdk/google-vertex/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], - "ai-gateway-provider/@ai-sdk/deepseek/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "ai-gateway-provider/@ai-sdk/groq/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], - "ai-gateway-provider/@ai-sdk/deepseek/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "ai-gateway-provider/@ai-sdk/groq/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], - "ai-gateway-provider/@ai-sdk/mistral/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], + "ai-gateway-provider/@ai-sdk/openai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.14", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-5X1k57JBJ4H7H1QjX7CnJYAB1I19r/trVZTMcSms7/kLNZ8RaU4Nt2agcwZzv82Hfx6Q7/TOLU7agAKeFfc8cA=="], - "ai-gateway-provider/@ai-sdk/xai/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.41", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g=="], + "ai-gateway-provider/@ai-sdk/openai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.38", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-/HHGmtKllqjg1OLc023v9w9kK3laW7Z6TzfZukYQWCsGBbzB9p60zTvvpXFVcs44NZBVXL3viOa1HRKUbeee8g=="], + + "ai-gateway-provider/@ai-sdk/perplexity/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], + + "ai-gateway-provider/@ai-sdk/perplexity/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], "ajv-keywords/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], @@ -7419,13 +7451,35 @@ "ai-gateway-provider/@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "ai-gateway-provider/@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - "ai-gateway-provider/@ai-sdk/azure/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + + "ai-gateway-provider/@ai-sdk/cerebras/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + + "ai-gateway-provider/@ai-sdk/cohere/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + + "ai-gateway-provider/@ai-sdk/cohere/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + + "ai-gateway-provider/@ai-sdk/google-vertex/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + + "ai-gateway-provider/@ai-sdk/google-vertex/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + + "ai-gateway-provider/@ai-sdk/google/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + + "ai-gateway-provider/@ai-sdk/google/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + + "ai-gateway-provider/@ai-sdk/groq/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + + "ai-gateway-provider/@ai-sdk/groq/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + + "ai-gateway-provider/@ai-sdk/openai/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - "ai-gateway-provider/@ai-sdk/deepseek/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "ai-gateway-provider/@ai-sdk/perplexity/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - "ai-gateway-provider/@ai-sdk/mistral/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "ai-gateway-provider/@ai-sdk/perplexity/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], "ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], diff --git a/packages/core/package.json b/packages/core/package.json index 96c989d6e..ee24893c3 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -101,7 +101,7 @@ "@parcel/watcher": "2.5.1", "@silvia-odwyer/photon-node": "0.3.4", "@openrouter/ai-sdk-provider": "2.9.0", - "ai-gateway-provider": "3.1.2", + "ai-gateway-provider": "3.2.0", "bun-pty": "0.4.8", "cross-spawn": "catalog:", "diff": "catalog:", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 5d22aad6e..8ab5e6ee8 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -111,7 +111,7 @@ "@types/ws": "8.18.1", "@zip.js/zip.js": "2.7.62", "ai": "catalog:", - "ai-gateway-provider": "3.1.2", + "ai-gateway-provider": "3.2.0", "bonjour-service": "1.3.0", "chokidar": "4.0.3", "cross-spawn": "catalog:", From 722e717e995b38123b442150ec2c5b149c081e85 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Fri, 14 Aug 2026 03:25:42 +0000 Subject: [PATCH 015/271] chore: update nix node_modules hashes --- nix/hashes.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/hashes.json b/nix/hashes.json index 0864cb930..88d8be13d 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-TNwKfqxD83UpZuCKN8FdEWN+CcQUP9CkCQSLGNqR/sA=", - "aarch64-linux": "sha256-qzvOJZzmq2QhlauElw8GwgQnCPHdhexI52L0md5zrxQ=", - "aarch64-darwin": "sha256-ZzoyLayOFfcYUAg35ZbZ2WapxDdd9IUWqy2xkxZH4QM=", - "x86_64-darwin": "sha256-maP/qLeaC3q8VcmNIPyIKlnplxFXJ7ULho3v21/16Mw=" + "x86_64-linux": "sha256-kDCnJMnaK/Jq7ckcpPB7Vl9v98EMSdcehZAtf8jNjTs=", + "aarch64-linux": "sha256-0aR+OJGXS5HMlXbe/BHybjIRvdNJJw6gjW+jr6Dk7Pk=", + "aarch64-darwin": "sha256-loLrV6xiorhwS/N2hlpiKSKX172Qxy+auNiPzFBhQSc=", + "x86_64-darwin": "sha256-PNEpQBLAz8M274bSyTpp0jofETn2L+D0uBiJHUV7nB0=" } } From 886fd98f525005afedafd246ae7e1b56a2520a4e Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 14 Aug 2026 12:15:43 +0800 Subject: [PATCH 016/271] docs(zen): add Muse Spark 1.2 (#42508) --- packages/web/src/content/docs/ar/zen.mdx | 2 ++ packages/web/src/content/docs/bs/zen.mdx | 2 ++ packages/web/src/content/docs/da/zen.mdx | 2 ++ packages/web/src/content/docs/de/zen.mdx | 2 ++ packages/web/src/content/docs/es/zen.mdx | 2 ++ packages/web/src/content/docs/fr/zen.mdx | 2 ++ packages/web/src/content/docs/it/zen.mdx | 2 ++ packages/web/src/content/docs/ja/zen.mdx | 2 ++ packages/web/src/content/docs/ko/zen.mdx | 2 ++ packages/web/src/content/docs/nb/zen.mdx | 2 ++ packages/web/src/content/docs/pl/zen.mdx | 2 ++ packages/web/src/content/docs/pt-br/zen.mdx | 2 ++ packages/web/src/content/docs/ru/zen.mdx | 2 ++ packages/web/src/content/docs/th/zen.mdx | 2 ++ packages/web/src/content/docs/tr/zen.mdx | 2 ++ packages/web/src/content/docs/zen.mdx | 2 ++ packages/web/src/content/docs/zh-cn/zen.mdx | 2 ++ packages/web/src/content/docs/zh-tw/zen.mdx | 2 ++ 18 files changed, 36 insertions(+) diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index 29317ed03..239ebab94 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -94,6 +94,7 @@ OpenCode Zen هي بوابة AI تتيح لك الوصول إلى هذه الن | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -184,6 +185,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index a2b69c956..d43d98b18 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -99,6 +99,7 @@ Našim modelima možete pristupiti i preko sljedećih API endpointa. | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -191,6 +192,7 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index 69a732089..d68fd55e0 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -99,6 +99,7 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints. | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -191,6 +192,7 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index 1e05c8635..44bca0c2a 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -90,6 +90,7 @@ Du kannst auch über die folgenden API-Endpunkte auf unsere Modelle zugreifen. | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -180,6 +181,7 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index da1e1bbbc..806b62498 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -99,6 +99,7 @@ También puedes acceder a nuestros modelos a través de los siguientes endpoints | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -191,6 +192,7 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index c6466bca7..081afceb6 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -90,6 +90,7 @@ Vous pouvez également accéder à nos modèles via les points de terminaison AP | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -180,6 +181,7 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index 8c517c48a..1519b4eb4 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -99,6 +99,7 @@ Puoi anche accedere ai nostri modelli tramite i seguenti endpoint API. | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -191,6 +192,7 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index 658879903..759a7d7b7 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -90,6 +90,7 @@ OpenCode Zen は、OpenCode のほかのプロバイダーと同じように動 | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -180,6 +181,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index 1ac394022..8827aa146 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -90,6 +90,7 @@ OpenCode Zen은 OpenCode의 다른 provider와 똑같이 작동합니다. | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -180,6 +181,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index e84d20836..c310c9b18 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -99,6 +99,7 @@ Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter. | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -191,6 +192,7 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index db079ddeb..14e17024a 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -99,6 +99,7 @@ Możesz też uzyskać dostęp do naszych modeli przez poniższe endpointy API. | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -191,6 +192,7 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index 40d9aa878..39dd276ad 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -90,6 +90,7 @@ Você também pode acessar nossos modelos pelos seguintes endpoints de API. | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -180,6 +181,7 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index 1ac091323..daa7b6409 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -99,6 +99,7 @@ OpenCode Zen работает как любой другой провайдер | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -191,6 +192,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index eb9e22821..fc5ff2c5e 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -92,6 +92,7 @@ OpenCode Zen ทำงานเหมือน provider อื่น ๆ ใน | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -182,6 +183,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index e138f75e5..6854f4d3b 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -90,6 +90,7 @@ Modellerimize aşağıdaki API uç noktaları aracılığıyla da erişebilirsin | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -180,6 +181,7 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index 017eeea92..8ffd35a35 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -99,6 +99,7 @@ You can also access our models through the following API endpoints. | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -191,6 +192,7 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index 24ae69845..647109058 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -90,6 +90,7 @@ OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -180,6 +181,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 2d554cc31..aa9d69e77 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -94,6 +94,7 @@ OpenCode Zen 的運作方式和 OpenCode 中的其他供應商一樣。 | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Grok Build 0.1 | grok-build-0.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -185,6 +186,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | From 92d29ba4a368adef7b874219b646351d3c5bec0e Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Fri, 14 Aug 2026 04:17:00 +0000 Subject: [PATCH 017/271] chore: generate --- packages/web/src/content/docs/ar/zen.mdx | 2 +- packages/web/src/content/docs/bs/zen.mdx | 2 +- packages/web/src/content/docs/da/zen.mdx | 2 +- packages/web/src/content/docs/de/zen.mdx | 2 +- packages/web/src/content/docs/es/zen.mdx | 2 +- packages/web/src/content/docs/fr/zen.mdx | 2 +- packages/web/src/content/docs/it/zen.mdx | 2 +- packages/web/src/content/docs/ja/zen.mdx | 2 +- packages/web/src/content/docs/ko/zen.mdx | 2 +- packages/web/src/content/docs/nb/zen.mdx | 2 +- packages/web/src/content/docs/pl/zen.mdx | 2 +- packages/web/src/content/docs/pt-br/zen.mdx | 2 +- packages/web/src/content/docs/ru/zen.mdx | 2 +- packages/web/src/content/docs/th/zen.mdx | 2 +- packages/web/src/content/docs/tr/zen.mdx | 2 +- packages/web/src/content/docs/zen.mdx | 2 +- packages/web/src/content/docs/zh-cn/zen.mdx | 2 +- packages/web/src/content/docs/zh-tw/zen.mdx | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index 239ebab94..efc180c40 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -185,7 +185,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index d43d98b18..0ec23414f 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -192,7 +192,7 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index d68fd55e0..94bf6ff2f 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -192,7 +192,7 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index 44bca0c2a..9e7a811aa 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -181,7 +181,7 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index 806b62498..6bb35720f 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -192,7 +192,7 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index 081afceb6..2dc07b00d 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -181,7 +181,7 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index 1519b4eb4..9c844f452 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -192,7 +192,7 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index 759a7d7b7..9fcbc5874 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -181,7 +181,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index 8827aa146..2f94d7da2 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -181,7 +181,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index c310c9b18..fccafedda 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -192,7 +192,7 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index 14e17024a..5c431eaa3 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -192,7 +192,7 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index 39dd276ad..a322d63bd 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -181,7 +181,7 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index daa7b6409..1da24d4af 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -192,7 +192,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index fc5ff2c5e..f857b6d33 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -183,7 +183,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index 6854f4d3b..09269938e 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -181,7 +181,7 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index 8ffd35a35..1ba917c9d 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -192,7 +192,7 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index 647109058..fc8b281f8 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -181,7 +181,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index aa9d69e77..56e9efb43 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -186,7 +186,7 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (≤ 200K tokens) | $2.00 | $6.00 | $0.30 | - | | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | -| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | +| Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | | GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | | GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | From e23586af2623f1bc2e8e6965d2d7acf7bd03d5c3 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 14 Aug 2026 13:48:32 +0800 Subject: [PATCH 018/271] feat(go): add GLM 5.3 (#42518) --- packages/console/app/src/routes/go/index.tsx | 1 + .../app/src/routes/workspace/[id]/go/lite-section.tsx | 1 + packages/web/src/content/docs/ar/go.mdx | 7 ++++++- packages/web/src/content/docs/bs/go.mdx | 7 ++++++- packages/web/src/content/docs/da/go.mdx | 7 ++++++- packages/web/src/content/docs/de/go.mdx | 7 ++++++- packages/web/src/content/docs/es/go.mdx | 7 ++++++- packages/web/src/content/docs/fr/go.mdx | 7 ++++++- packages/web/src/content/docs/go.mdx | 7 ++++++- packages/web/src/content/docs/it/go.mdx | 7 ++++++- packages/web/src/content/docs/ja/go.mdx | 7 ++++++- packages/web/src/content/docs/ko/go.mdx | 7 ++++++- packages/web/src/content/docs/nb/go.mdx | 7 ++++++- packages/web/src/content/docs/pl/go.mdx | 7 ++++++- packages/web/src/content/docs/pt-br/go.mdx | 7 ++++++- packages/web/src/content/docs/ru/go.mdx | 7 ++++++- packages/web/src/content/docs/th/go.mdx | 7 ++++++- packages/web/src/content/docs/tr/go.mdx | 7 ++++++- packages/web/src/content/docs/zh-cn/go.mdx | 7 ++++++- packages/web/src/content/docs/zh-tw/go.mdx | 7 ++++++- 20 files changed, 110 insertions(+), 18 deletions(-) diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index 599ce2b5a..b85ce5cc8 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -25,6 +25,7 @@ const checkLoggedIn = query(async () => { const models = [ { name: "Grok 4.5", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention30" }, { name: "GPT 5.6 Luna", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention30" }, + { name: "GLM-5.3", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "GLM-5.2", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "GLM-5.1", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Kimi K3", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index da1b053a3..4de88cba3 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -306,6 +306,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {
      • Grok 4.5
      • GPT 5.6 Luna
      • +
      • GLM-5.3
      • GLM-5.2
      • GLM-5.1
      • Kimi K3
      • diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 825473b58..4fdc436dd 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -50,6 +50,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال تشمل قائمة النماذج الحالية: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -88,6 +89,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | ----------------- | ------------------- | ------------------ | ---------------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -108,7 +110,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال تستند التقديرات إلى أنماط الطلبات المرصودة: - Grok 4.5 — ‏1,100 input، و71,500 cached، و220 output tokens لكل طلب -- GLM-5.2/5.1 — ‏700 input، و52,000 cached، و150 output tokens لكل طلب +- GLM-5.3/5.2/5.1 — ‏700 input، و52,000 cached، و150 output tokens لكل طلب - GPT 5.6 Luna — ‏1,000 توكن إدخال، و50,000 توكن مخزّن مؤقتًا، و220 توكن إخراج لكل طلب - Kimi K3 — ‏1,050 input، و76,500 cached، و300 output tokens لكل طلب - Kimi K2.7/K2.6 — ‏870 input، و55,000 cached، و200 output tokens لكل طلب @@ -131,6 +133,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -187,6 +190,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -225,6 +229,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ------------- | ------------------ | | Grok 4.5 | غير مستخدَمة | 30 يومًا | | GPT 5.6 Luna | غير مستخدَمة | 30 يومًا | +| GLM-5.3 | غير مستخدَمة | 0 أيام | | GLM-5.2 | غير مستخدَمة | 0 أيام | | GLM-5.1 | غير مستخدَمة | 0 أيام | | Kimi K3 | غير مستخدَمة | 0 أيام | diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 3154c4866..fae4336a7 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -60,6 +60,7 @@ Samo jedan član po radnom prostoru (workspace) može se pretplatiti na OpenCode Trenutna lista modela uključuje: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -98,6 +99,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | ----------------- | ------------------ | ----------------- | ----------------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -118,7 +120,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori Procjene se zasnivaju na zapaženim obrascima zahtjeva: - Grok 4.5 — 1,100 ulaznih, 71,500 keširanih, 220 izlaznih tokena po zahtjevu -- GLM-5.2/5.1 — 700 ulaznih (input), 52,000 keširanih, 150 izlaznih (output) tokena po zahtjevu +- GLM-5.3/5.2/5.1 — 700 ulaznih (input), 52,000 keširanih, 150 izlaznih (output) tokena po zahtjevu - GPT 5.6 Luna — 1,000 ulaznih, 50,000 keširanih, 220 izlaznih tokena po zahtjevu - Kimi K3 — 1,050 ulaznih, 76,500 keširanih, 300 izlaznih tokena po zahtjevu - Kimi K2.7/K2.6 — 870 ulaznih, 55,000 keširanih, 200 izlaznih tokena po zahtjevu @@ -141,6 +143,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -199,6 +202,7 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -239,6 +243,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ----------------- | -------------------- | | Grok 4.5 | Ne koristi se | 30 dana | | GPT 5.6 Luna | Ne koristi se | 30 dana | +| GLM-5.3 | Ne koristi se | 0 dana | | GLM-5.2 | Ne koristi se | 0 dana | | GLM-5.1 | Ne koristi se | 0 dana | | Kimi K3 | Ne koristi se | 0 dana | diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 5ec81f090..83acb99f1 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -60,6 +60,7 @@ Kun ét medlem per arbejdsområde kan abonnere på OpenCode Go. Den nuværende liste over modeller inkluderer: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -98,6 +99,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | ----------------- | ----------------------- | ------------------- | --------------------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -118,7 +120,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo Estimaterne er baseret på observerede anmodningsmønstre: - Grok 4.5 — 1.100 input, 71.500 cachelagrede, 220 output-tokens pr. anmodning -- GLM-5.2/5.1 — 700 input, 52.000 cachelagrede, 150 output-tokens pr. anmodning +- GLM-5.3/5.2/5.1 — 700 input, 52.000 cachelagrede, 150 output-tokens pr. anmodning - GPT 5.6 Luna — 1.000 input, 50.000 cachelagrede, 220 output-tokens pr. anmodning - Kimi K3 — 1.050 input, 76.500 cachelagrede, 300 output-tokens pr. anmodning - Kimi K2.7/K2.6 — 870 input, 55.000 cachelagrede, 200 output-tokens pr. anmodning @@ -141,6 +143,7 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -199,6 +202,7 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -239,6 +243,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ------------ | -------------- | | Grok 4.5 | Ikke brugt | 30 dage | | GPT 5.6 Luna | Ikke brugt | 30 dage | +| GLM-5.3 | Ikke brugt | 0 dage | | GLM-5.2 | Ikke brugt | 0 dage | | GLM-5.1 | Ikke brugt | 0 dage | | Kimi K3 | Ikke brugt | 0 dage | diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index d75eb1ede..f881c4dee 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -52,6 +52,7 @@ Nur ein Mitglied pro Workspace kann OpenCode Go abonnieren. Die aktuelle Liste der Modelle umfasst: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -90,6 +91,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | ----------------- | ---------------------- | ------------------ | ------------------ | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -110,7 +112,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty Die Schätzungen basieren auf beobachteten Anfragemustern: - Grok 4.5 — 1.100 Input-, 71.500 Cached-, 220 Output-Tokens pro Anfrage -- GLM-5.2/5.1 — 700 Input-, 52.000 Cached-, 150 Output-Tokens pro Anfrage +- GLM-5.3/5.2/5.1 — 700 Input-, 52.000 Cached-, 150 Output-Tokens pro Anfrage - GPT 5.6 Luna — 1.000 Input-, 50.000 Cached-, 220 Output-Tokens pro Anfrage - Kimi K3 — 1.050 Input-, 76.500 Cached-, 300 Output-Tokens pro Anfrage - Kimi K2.7/K2.6 — 870 Input-, 55.000 Cached-, 200 Output-Tokens pro Anfrage @@ -133,6 +135,7 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -189,6 +192,7 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -227,6 +231,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | --------------- | ----------------- | | Grok 4.5 | Nicht verwendet | 30 Tage | | GPT 5.6 Luna | Nicht verwendet | 30 Tage | +| GLM-5.3 | Nicht verwendet | 0 Tage | | GLM-5.2 | Nicht verwendet | 0 Tage | | GLM-5.1 | Nicht verwendet | 0 Tage | | Kimi K3 | Nicht verwendet | 0 Tage | diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 8f54a3df7..03c752107 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -60,6 +60,7 @@ Solo un miembro por espacio de trabajo puede suscribirse a OpenCode Go. La lista actual de modelos incluye: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -98,6 +99,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | ----------------- | ---------------------- | --------------------- | ------------------ | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -118,7 +120,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los Las estimaciones se basan en los patrones de peticiones observados: - Grok 4.5 — 1,100 tokens de entrada, 71,500 en caché, 220 tokens de salida por petición -- GLM-5.2/5.1 — 700 tokens de entrada, 52,000 en caché, 150 tokens de salida por petición +- GLM-5.3/5.2/5.1 — 700 tokens de entrada, 52,000 en caché, 150 tokens de salida por petición - GPT 5.6 Luna — 1,000 tokens de entrada, 50,000 en caché, 220 tokens de salida por petición - Kimi K3 — 1,050 tokens de entrada, 76,500 en caché, 300 tokens de salida por petición - Kimi K2.7/K2.6 — 870 tokens de entrada, 55,000 en caché, 200 tokens de salida por petición @@ -141,6 +143,7 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -199,6 +202,7 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -239,6 +243,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ------------------------ | ------------------ | | Grok 4.5 | No utilizado | 30 días | | GPT 5.6 Luna | No utilizado | 30 días | +| GLM-5.3 | No utilizado | 0 días | | GLM-5.2 | No utilizado | 0 días | | GLM-5.1 | No utilizado | 0 días | | Kimi K3 | No utilizado | 0 días | diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 7f06df503..802a573a4 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -50,6 +50,7 @@ Un seul membre par espace de travail peut s'abonner à OpenCode Go. La liste actuelle des modèles comprend : - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -88,6 +89,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | ----------------- | --------------------- | -------------------- | ----------------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -108,7 +110,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d Les estimations sont basées sur les schémas de requêtes observés : - Grok 4.5 — 1,100 tokens en entrée, 71,500 en cache, 220 tokens en sortie par requête -- GLM-5.2/5.1 — 700 tokens en entrée, 52,000 en cache, 150 tokens en sortie par requête +- GLM-5.3/5.2/5.1 — 700 tokens en entrée, 52,000 en cache, 150 tokens en sortie par requête - GPT 5.6 Luna — 1,000 tokens en entrée, 50,000 en cache, 220 tokens en sortie par requête - Kimi K3 — 1,050 tokens en entrée, 76,500 en cache, 300 tokens en sortie par requête - Kimi K2.7/K2.6 — 870 tokens en entrée, 55,000 en cache, 200 tokens en sortie par requête @@ -131,6 +133,7 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -187,6 +190,7 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -225,6 +229,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ------------------------ | ------------------------ | | Grok 4.5 | Non utilisé | 30 jours | | GPT 5.6 Luna | Non utilisé | 30 jours | +| GLM-5.3 | Non utilisé | 0 jour | | GLM-5.2 | Non utilisé | 0 jour | | GLM-5.1 | Non utilisé | 0 jour | | Kimi K3 | Non utilisé | 0 jour | diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 3c9531de6..502536be7 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -60,6 +60,7 @@ Only one member per workspace can subscribe to OpenCode Go. The current list of models includes: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -98,6 +99,7 @@ The table below provides an estimated request count based on typical Go usage pa | ----------------- | ------------------- | ----------------- | ------------------ | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -118,7 +120,7 @@ The table below provides an estimated request count based on typical Go usage pa The estimates are based on observed request patterns: - Grok 4.5 — 1,100 input, 71,500 cached, 220 output tokens per request -- GLM-5.2/5.1 — 700 input, 52,000 cached, 150 output tokens per request +- GLM-5.3/5.2/5.1 — 700 input, 52,000 cached, 150 output tokens per request - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens per request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens per request - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens per request @@ -141,6 +143,7 @@ The estimates are also based on the following prices per 1M tokens and the month | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -199,6 +202,7 @@ You can also access Go models through the following API endpoints. | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -239,6 +243,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | -------------- | -------------- | | Grok 4.5 | Not used | 30 days | | GPT 5.6 Luna | Not used | 30 days | +| GLM-5.3 | Not used | 0 days | | GLM-5.2 | Not used | 0 days | | GLM-5.1 | Not used | 0 days | | Kimi K3 | Not used | 0 days | diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index af9fb7841..b927268e8 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -58,6 +58,7 @@ Solo un membro per workspace può abbonarsi a OpenCode Go. L'elenco attuale dei modelli include: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -96,6 +97,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | ----------------- | -------------------- | --------------------- | ----------------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -116,7 +118,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p Le stime si basano sui pattern di richieste osservati: - Grok 4.5 — 1.100 di input, 71.500 in cache, 220 token di output per richiesta -- GLM-5.2/5.1 — 700 di input, 52.000 in cache, 150 token di output per richiesta +- GLM-5.3/5.2/5.1 — 700 di input, 52.000 in cache, 150 token di output per richiesta - GPT 5.6 Luna — 1.000 token di input, 50.000 in cache, 220 token di output per richiesta - Kimi K3 — 1.050 di input, 76.500 in cache, 300 token di output per richiesta - Kimi K2.7/K2.6 — 870 di input, 55.000 in cache, 200 token di output per richiesta @@ -139,6 +141,7 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -197,6 +200,7 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -237,6 +241,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ------------------------- | ---------------------- | | Grok 4.5 | Non utilizzato | 30 giorni | | GPT 5.6 Luna | Non utilizzato | 30 giorni | +| GLM-5.3 | Non utilizzato | 0 giorni | | GLM-5.2 | Non utilizzato | 0 giorni | | GLM-5.1 | Non utilizzato | 0 giorni | | Kimi K3 | Non utilizzato | 0 giorni | diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 7459309b8..6744e39b0 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -50,6 +50,7 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー 現在のモデルリストには以下が含まれます: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -88,6 +89,7 @@ OpenCode Goには以下の制限が含まれています: | ----------------- | ------------------------- | ---------------- | ---------------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -108,7 +110,7 @@ OpenCode Goには以下の制限が含まれています: 推定値は、観測されたリクエストパターンに基づいています: - Grok 4.5 — リクエストあたり 入力 1,100トークン、キャッシュ 71,500トークン、出力 220トークン -- GLM-5.2/5.1 — リクエストあたり 入力 700トークン、キャッシュ 52,000トークン、出力 150トークン +- GLM-5.3/5.2/5.1 — リクエストあたり 入力 700トークン、キャッシュ 52,000トークン、出力 150トークン - GPT 5.6 Luna — リクエストあたり 入力 1,000トークン、キャッシュ 50,000トークン、出力 220トークン - Kimi K3 — リクエストあたり 入力 1,050トークン、キャッシュ 76,500トークン、出力 300トークン - Kimi K2.7/K2.6 — リクエストあたり 入力 870トークン、キャッシュ 55,000トークン、出力 200トークン @@ -131,6 +133,7 @@ OpenCode Goには以下の制限が含まれています: | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -187,6 +190,7 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -225,6 +229,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | -------------------- | ---------- | | Grok 4.5 | 使用なし | 30日 | | GPT 5.6 Luna | 使用なし | 30日 | +| GLM-5.3 | 使用なし | 0日 | | GLM-5.2 | 使用なし | 0日 | | GLM-5.1 | 使用なし | 0日 | | Kimi K3 | 使用なし | 0日 | diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 0cc8c512a..c89114f15 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -50,6 +50,7 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. 현재 모델 목록에는 다음이 포함됩니다. - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -88,6 +89,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | ----------------- | ----------------- | -------------- | -------------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -108,7 +110,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. 이 예상치는 관찰된 요청 패턴을 기준으로 합니다. - Grok 4.5 — 요청당 입력 1,100, 캐시 71,500, 출력 토큰 220 -- GLM-5.2/5.1 — 요청당 입력 700, 캐시 52,000, 출력 토큰 150 +- GLM-5.3/5.2/5.1 — 요청당 입력 700, 캐시 52,000, 출력 토큰 150 - GPT 5.6 Luna — 요청당 입력 토큰 1,000개, 캐시 토큰 50,000개, 출력 토큰 220개 - Kimi K3 — 요청당 입력 1,050, 캐시 76,500, 출력 토큰 300 - Kimi K2.7/K2.6 — 요청당 입력 870, 캐시 55,000, 출력 토큰 200 @@ -131,6 +133,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -187,6 +190,7 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -225,6 +229,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ------------- | ----------- | | Grok 4.5 | 사용되지 않음 | 30일 | | GPT 5.6 Luna | 사용되지 않음 | 30일 | +| GLM-5.3 | 사용되지 않음 | 0일 | | GLM-5.2 | 사용되지 않음 | 0일 | | GLM-5.1 | 사용되지 않음 | 0일 | | Kimi K3 | 사용되지 않음 | 0일 | diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 1210ff40b..bd819874d 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -60,6 +60,7 @@ Kun ett medlem per arbeidsområde kan abonnere på OpenCode Go. Den nåværende listen over modeller inkluderer: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -98,6 +99,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | ----------------- | ------------------------ | -------------------- | ---------------------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -118,7 +120,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm Estimatene er basert på observerte forespørselsmønstre: - Grok 4.5 — 1 100 input, 71 500 bufret, 220 output-tokens per forespørsel -- GLM-5.2/5.1 — 700 input, 52 000 bufret, 150 output-tokens per forespørsel +- GLM-5.3/5.2/5.1 — 700 input, 52 000 bufret, 150 output-tokens per forespørsel - GPT 5.6 Luna — 1 000 input, 50 000 bufret, 220 output-tokens per forespørsel - Kimi K3 — 1 050 input, 76 500 bufret, 300 output-tokens per forespørsel - Kimi K2.7/K2.6 — 870 input, 55 000 bufret, 200 output-tokens per forespørsel @@ -141,6 +143,7 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -199,6 +202,7 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -239,6 +243,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ------------- | --------------- | | Grok 4.5 | Brukes ikke | 30 dager | | GPT 5.6 Luna | Brukes ikke | 30 dager | +| GLM-5.3 | Brukes ikke | 0 dager | | GLM-5.2 | Brukes ikke | 0 dager | | GLM-5.1 | Brukes ikke | 0 dager | | Kimi K3 | Brukes ikke | 0 dager | diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index c8a459e49..4ec11773c 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -54,6 +54,7 @@ Tylko jeden członek na obszar roboczy (workspace) może zasubskrybować OpenCod Obecna lista modeli obejmuje: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -92,6 +93,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | ----------------- | ------------------- | ------------------ | ------------------ | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -112,7 +114,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych Szacunki te opierają się na zaobserwowanych wzorcach żądań: - Grok 4.5 — 1 100 tokenów wejściowych, 71 500 w pamięci podręcznej, 220 tokenów wyjściowych na żądanie -- GLM-5.2/5.1 — 700 tokenów wejściowych, 52 000 w pamięci podręcznej, 150 tokenów wyjściowych na żądanie +- GLM-5.3/5.2/5.1 — 700 tokenów wejściowych, 52 000 w pamięci podręcznej, 150 tokenów wyjściowych na żądanie - GPT 5.6 Luna — 1 000 tokenów wejściowych, 50 000 w pamięci podręcznej, 220 tokenów wyjściowych na żądanie - Kimi K3 — 1 050 tokenów wejściowych, 76 500 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie - Kimi K2.7/K2.6 — 870 tokenów wejściowych, 55 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie @@ -135,6 +137,7 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -191,6 +194,7 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -231,6 +235,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ----------------- | --------------- | | Grok 4.5 | Niewykorzystywane | 30 dni | | GPT 5.6 Luna | Niewykorzystywane | 30 dni | +| GLM-5.3 | Niewykorzystywane | 0 dni | | GLM-5.2 | Niewykorzystywane | 0 dni | | GLM-5.1 | Niewykorzystywane | 0 dni | | Kimi K3 | Niewykorzystywane | 0 dni | diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 623deb4b4..91a0ea0ad 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -60,6 +60,7 @@ Apenas um membro por workspace pode assinar o OpenCode Go. A lista atual de modelos inclui: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -98,6 +99,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | ----------------- | ----------------------- | ---------------------- | ------------------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -118,7 +120,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr As estimativas se baseiam nos padrões de requisições observados: - Grok 4.5 — 1.100 tokens de entrada, 71.500 em cache, 220 tokens de saída por requisição -- GLM-5.2/5.1 — 700 tokens de entrada, 52.000 em cache, 150 tokens de saída por requisição +- GLM-5.3/5.2/5.1 — 700 tokens de entrada, 52.000 em cache, 150 tokens de saída por requisição - GPT 5.6 Luna — 1.000 tokens de entrada, 50.000 em cache, 220 tokens de saída por requisição - Kimi K3 — 1.050 tokens de entrada, 76.500 em cache, 300 tokens de saída por requisição - Kimi K2.7/K2.6 — 870 tokens de entrada, 55.000 em cache, 200 tokens de saída por requisição @@ -141,6 +143,7 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -199,6 +202,7 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -239,6 +243,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ---------------------- | ----------------- | | Grok 4.5 | Não usado | 30 dias | | GPT 5.6 Luna | Não usado | 30 dias | +| GLM-5.3 | Não usado | 0 dias | | GLM-5.2 | Não usado | 0 dias | | GLM-5.1 | Não usado | 0 dias | | Kimi K3 | Não usado | 0 dias | diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 61ab1f362..41f130251 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -60,6 +60,7 @@ OpenCode Go работает так же, как и любой другой пр Текущий список моделей включает: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -98,6 +99,7 @@ OpenCode Go включает следующие лимиты: | ----------------- | ------------------- | ----------------- | ---------------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -118,7 +120,7 @@ OpenCode Go включает следующие лимиты: Эти оценки основаны на наблюдаемых показателях запросов: - Grok 4.5 — 1,100 входных, 71,500 кешированных, 220 выходных токенов на запрос -- GLM-5.2/5.1 — 700 входных, 52,000 кешированных, 150 выходных токенов на запрос +- GLM-5.3/5.2/5.1 — 700 входных, 52,000 кешированных, 150 выходных токенов на запрос - GPT 5.6 Luna — 1,000 входных, 50,000 кешированных, 220 выходных токенов на запрос - Kimi K3 — 1,050 входных, 76,500 кешированных, 300 выходных токенов на запрос - Kimi K2.7/K2.6 — 870 входных, 55,000 кешированных, 200 выходных токенов на запрос @@ -141,6 +143,7 @@ OpenCode Go включает следующие лимиты: | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -199,6 +202,7 @@ OpenCode Go включает следующие лимиты: | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -239,6 +243,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ---------------- | --------------- | | Grok 4.5 | Не используется | 30 дней | | GPT 5.6 Luna | Не используется | 30 дней | +| GLM-5.3 | Не используется | 0 дней | | GLM-5.2 | Не используется | 0 дней | | GLM-5.1 | Не используется | 0 дней | | Kimi K3 | Не используется | 0 дней | diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index ed31155a5..b7a993368 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -50,6 +50,7 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร รายชื่อโมเดลในปัจจุบันประกอบด้วย: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -88,6 +89,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | ----------------- | ---------------------- | ------------------- | ----------------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -108,7 +110,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: การประมาณการนี้อ้างอิงจากรูปแบบการใช้งาน request ที่สังเกตพบ: - Grok 4.5 — 1,100 input, 71,500 cached, 220 output tokens ต่อ request -- GLM-5.2/5.1 — 700 input, 52,000 cached, 150 output tokens ต่อ request +- GLM-5.3/5.2/5.1 — 700 input, 52,000 cached, 150 output tokens ต่อ request - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens ต่อ request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens ต่อ request - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens ต่อ request @@ -131,6 +133,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -187,6 +190,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -225,6 +229,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ----------- | ------------------ | | Grok 4.5 | ไม่นำไปใช้ | 30 วัน | | GPT 5.6 Luna | ไม่นำไปใช้ | 30 วัน | +| GLM-5.3 | ไม่นำไปใช้ | 0 วัน | | GLM-5.2 | ไม่นำไปใช้ | 0 วัน | | GLM-5.1 | ไม่นำไปใช้ | 0 วัน | | Kimi K3 | ไม่นำไปใช้ | 0 วัน | diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 3a4d9bb93..607c02ac4 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -50,6 +50,7 @@ Her çalışma alanından yalnızca bir üye OpenCode Go'ya abone olabilir. Mevcut model listesi şunları içerir: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -88,6 +89,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | ----------------- | ------------------ | -------------- | ----------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -108,7 +110,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say Tahminler, gözlemlenen istek modellerine dayanır: - Grok 4.5 — İstek başına 1.100 girdi, 71.500 önbelleğe alınmış, 220 çıktı token'ı -- GLM-5.2/5.1 — İstek başına 700 girdi, 52.000 önbelleğe alınmış, 150 çıktı token'ı +- GLM-5.3/5.2/5.1 — İstek başına 700 girdi, 52.000 önbelleğe alınmış, 150 çıktı token'ı - GPT 5.6 Luna — İstek başına 1.000 girdi, 50.000 önbelleğe alınmış, 220 çıktı token'ı - Kimi K3 — İstek başına 1.050 girdi, 76.500 önbelleğe alınmış, 300 çıktı token'ı - Kimi K2.7/K2.6 — İstek başına 870 girdi, 55.000 önbelleğe alınmış, 200 çıktı token'ı @@ -131,6 +133,7 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -187,6 +190,7 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -225,6 +229,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | ------------- | ------------ | | Grok 4.5 | Kullanılmaz | 30 gün | | GPT 5.6 Luna | Kullanılmaz | 30 gün | +| GLM-5.3 | Kullanılmaz | 0 gün | | GLM-5.2 | Kullanılmaz | 0 gün | | GLM-5.1 | Kullanılmaz | 0 gün | | Kimi K3 | Kullanılmaz | 0 gün | diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index af214e2ac..d9f18f3cc 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -50,6 +50,7 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 当前支持的模型列表包括: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -88,6 +89,7 @@ OpenCode Go 包含以下限制: | ----------------- | --------------- | ---------- | ---------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -108,7 +110,7 @@ OpenCode Go 包含以下限制: 预估值基于观察到的请求模式: - Grok 4.5 — 每次请求 1,100 个输入 token,71,500 个缓存 token,220 个输出 token -- GLM-5.2/5.1 — 每次请求 700 个输入 token,52,000 个缓存 token,150 个输出 token +- GLM-5.3/5.2/5.1 — 每次请求 700 个输入 token,52,000 个缓存 token,150 个输出 token - GPT 5.6 Luna — 每次请求 1,000 个输入 token,50,000 个缓存 token,220 个输出 token - Kimi K3 — 每次请求 1,050 个输入 token,76,500 个缓存 token,300 个输出 token - Kimi K2.7/K2.6 — 每次请求 870 个输入 token,55,000 个缓存 token,200 个输出 token @@ -131,6 +133,7 @@ OpenCode Go 包含以下限制: | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -187,6 +190,7 @@ OpenCode Go 包含以下限制: | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -225,6 +229,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | -------- | -------- | | Grok 4.5 | 不使用 | 30 天 | | GPT 5.6 Luna | 不使用 | 30 天 | +| GLM-5.3 | 不使用 | 0 天 | | GLM-5.2 | 不使用 | 0 天 | | GLM-5.1 | 不使用 | 0 天 | | Kimi K3 | 不使用 | 0 天 | diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index ce8cfbe78..ee3377534 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -50,6 +50,7 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 目前的模型清單包括: - **Grok 4.5** +- **GLM-5.3** - **GLM-5.2** - **GLM-5.1** - **GPT 5.6 Luna** @@ -88,6 +89,7 @@ OpenCode Go 包含以下限制: | ----------------- | --------------- | ---------- | ---------- | | Grok 4.5 | 120 | 300 | 600 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | | Kimi K3 | 110 | 250 | 490 | @@ -108,7 +110,7 @@ OpenCode Go 包含以下限制: 這些預估值是基於觀察到的請求模式: - Grok 4.5 — 每次請求 1,100 個輸入 token、71,500 個快取 token、220 個輸出 token -- GLM-5.2/5.1 — 每次請求 700 個輸入 token、52,000 個快取 token、150 個輸出 token +- GLM-5.3/5.2/5.1 — 每次請求 700 個輸入 token、52,000 個快取 token、150 個輸出 token - GPT 5.6 Luna — 每次請求 1,000 個輸入 token、50,000 個快取 token、220 個輸出 token - Kimi K3 — 每次請求 1,050 個輸入 token、76,500 個快取 token、300 個輸出 token - Kimi K2.7/K2.6 — 每次請求 870 個輸入 token、55,000 個快取 token、200 個輸出 token @@ -131,6 +133,7 @@ OpenCode Go 包含以下限制: | Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | @@ -187,6 +190,7 @@ OpenCode Go 包含以下限制: | ----------------- | ----------------- | ------------------------------------------------ | --------------------------- | | Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -225,6 +229,7 @@ https://opencode.ai/zen/go/v1/models | ----------------- | -------- | -------- | | Grok 4.5 | 不使用 | 30 天 | | GPT 5.6 Luna | 不使用 | 30 天 | +| GLM-5.3 | 不使用 | 0 天 | | GLM-5.2 | 不使用 | 0 天 | | GLM-5.1 | 不使用 | 0 天 | | Kimi K3 | 不使用 | 0 天 | From 4643e65ad6334de3e4e68dedc201d5fbb828c9fe Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 13:23:26 -0500 Subject: [PATCH 019/271] fix(opencode): enable web search for Go (#42630) Co-authored-by: Aiden Cline --- packages/opencode/src/tool/registry.ts | 7 ++++++- packages/opencode/test/tool/websearch.test.ts | 3 ++- packages/web/src/content/docs/tools.mdx | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/tool/registry.ts b/packages/opencode/src/tool/registry.ts index 15acc757f..9167cb3ea 100644 --- a/packages/opencode/src/tool/registry.ts +++ b/packages/opencode/src/tool/registry.ts @@ -56,7 +56,12 @@ import { PermissionV1 } from "@opencode-ai/core/v1/permission" import { McpCatalog } from "@/mcp/catalog" export function webSearchEnabled(providerID: ProviderV2.ID, flags = { exa: false, parallel: false }) { - return providerID === ProviderV2.ID.opencode || flags.exa || flags.parallel + return ( + providerID === ProviderV2.ID.opencode || + providerID === ProviderV2.ID.make("opencode-go") || + flags.exa || + flags.parallel + ) } type TaskDef = Tool.InferDef diff --git a/packages/opencode/test/tool/websearch.test.ts b/packages/opencode/test/tool/websearch.test.ts index 349606dec..fd5849b79 100644 --- a/packages/opencode/test/tool/websearch.test.ts +++ b/packages/opencode/test/tool/websearch.test.ts @@ -37,8 +37,9 @@ describe("websearch provider", () => { expect(selectWebSearchProvider(SESSION_ID, { exa: false, parallel: true })).toBe("parallel") }) - test("is only enabled for opencode or explicit websearch provider flags", () => { + test("is enabled for OpenCode providers or explicit websearch provider flags", () => { expect(webSearchEnabled(ProviderV2.ID.opencode, { exa: false, parallel: false })).toBe(true) + expect(webSearchEnabled(ProviderV2.ID.make("opencode-go"), { exa: false, parallel: false })).toBe(true) expect(webSearchEnabled(ProviderV2.ID.openai, { exa: false, parallel: false })).toBe(false) expect(webSearchEnabled(ProviderV2.ID.openai, { exa: true, parallel: false })).toBe(true) expect(webSearchEnabled(ProviderV2.ID.openai, { exa: false, parallel: true })).toBe(true) diff --git a/packages/web/src/content/docs/tools.mdx b/packages/web/src/content/docs/tools.mdx index e8d5e0963..9989b4675 100644 --- a/packages/web/src/content/docs/tools.mdx +++ b/packages/web/src/content/docs/tools.mdx @@ -257,7 +257,7 @@ Allows the LLM to fetch and read web pages. Useful for looking up documentation Search the web for information. :::note -This tool is only available when using the OpenCode provider or when the `OPENCODE_ENABLE_EXA` environment variable is set to any truthy value (e.g., `true` or `1`). +This tool is only available when using the OpenCode or OpenCode Go provider, or when the `OPENCODE_ENABLE_EXA` environment variable is set to any truthy value (e.g., `true` or `1`). To enable when launching OpenCode: From 976c1851727999983558f44952ef1b1efe57353a Mon Sep 17 00:00:00 2001 From: Jack Date: Sun, 16 Aug 2026 14:08:47 +0800 Subject: [PATCH 020/271] docs(go): remove DeepSeek Flash promotion (#42858) --- packages/console/app/src/i18n/ar.ts | 1 - packages/console/app/src/i18n/br.ts | 1 - packages/console/app/src/i18n/da.ts | 1 - packages/console/app/src/i18n/de.ts | 1 - packages/console/app/src/i18n/en.ts | 1 - packages/console/app/src/i18n/es.ts | 1 - packages/console/app/src/i18n/fr.ts | 1 - packages/console/app/src/i18n/it.ts | 1 - packages/console/app/src/i18n/ja.ts | 1 - packages/console/app/src/i18n/ko.ts | 1 - packages/console/app/src/i18n/no.ts | 1 - packages/console/app/src/i18n/pl.ts | 1 - packages/console/app/src/i18n/ru.ts | 1 - packages/console/app/src/i18n/th.ts | 1 - packages/console/app/src/i18n/tr.ts | 1 - packages/console/app/src/i18n/uk.ts | 1 - packages/console/app/src/i18n/zh.ts | 1 - packages/console/app/src/i18n/zht.ts | 1 - packages/console/app/src/routes/go/index.tsx | 9 +-------- 19 files changed, 1 insertion(+), 26 deletions(-) diff --git a/packages/console/app/src/i18n/ar.ts b/packages/console/app/src/i18n/ar.ts index 887fee9ec..958a3f25c 100644 --- a/packages/console/app/src/i18n/ar.ts +++ b/packages/console/app/src/i18n/ar.ts @@ -252,7 +252,6 @@ export const dict = { "zen.privacy.exceptionsLink": "الاستثناءات التالية", "go.title": "OpenCode Go | نماذج برمجة منخفضة التكلفة للجميع", - "go.banner.text": "يحصل DeepSeek V4 Flash على حدود استخدام مضاعفة لفترة محدودة", "go.meta.description": "يبدأ Go بسعر $5 للشهر الأول، ثم $10/شهر، مع حدود استخدام سخية ووصول موثوق إلى نماذج البرمجة الرائدة.", "go.hero.title": "نماذج برمجة منخفضة التكلفة للجميع", diff --git a/packages/console/app/src/i18n/br.ts b/packages/console/app/src/i18n/br.ts index f2ca27f93..73442235f 100644 --- a/packages/console/app/src/i18n/br.ts +++ b/packages/console/app/src/i18n/br.ts @@ -256,7 +256,6 @@ export const dict = { "zen.privacy.exceptionsLink": "seguintes exceções", "go.title": "OpenCode Go | Modelos de codificação de baixo custo para todos", - "go.banner.text": "DeepSeek V4 Flash tem limites de uso 2x maiores por tempo limitado", "go.meta.description": "O Go começa em $5 no primeiro mês, depois $10/mês, com limites generosos de uso e acesso confiável aos principais modelos de codificação.", "go.hero.title": "Modelos de codificação de baixo custo para todos", diff --git a/packages/console/app/src/i18n/da.ts b/packages/console/app/src/i18n/da.ts index 99ac8a179..d6c463ead 100644 --- a/packages/console/app/src/i18n/da.ts +++ b/packages/console/app/src/i18n/da.ts @@ -254,7 +254,6 @@ export const dict = { "zen.privacy.exceptionsLink": "følgende undtagelser", "go.title": "OpenCode Go | Kodningsmodeller til lav pris for alle", - "go.banner.text": "DeepSeek V4 Flash får fordoblet brugsgrænse i en begrænset periode", "go.meta.description": "Go starter ved $5 for den første måned, derefter $10/måned, med generøse brugsgrænser og pålidelig adgang til førende kodningsmodeller.", "go.hero.title": "Kodningsmodeller til lav pris for alle", diff --git a/packages/console/app/src/i18n/de.ts b/packages/console/app/src/i18n/de.ts index 86ad085e1..c22855fcf 100644 --- a/packages/console/app/src/i18n/de.ts +++ b/packages/console/app/src/i18n/de.ts @@ -256,7 +256,6 @@ export const dict = { "zen.privacy.exceptionsLink": "folgenden Ausnahmen", "go.title": "OpenCode Go | Kostengünstige Coding-Modelle für alle", - "go.banner.text": "DeepSeek V4 Flash erhält für begrenzte Zeit 2x Nutzungslimits", "go.meta.description": "Go beginnt bei $5 für deinen ersten Monat, danach $10/Monat, mit großzügigen Nutzungslimits und zuverlässigem Zugang zu führenden Coding-Modellen.", "go.hero.title": "Kostengünstige Coding-Modelle für alle", diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index d778788be..726a9282d 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -253,7 +253,6 @@ export const dict = { "zen.privacy.exceptionsLink": "following exceptions", "go.title": "OpenCode Go | Low cost coding models for everyone", - "go.banner.text": "DeepSeek V4 Flash gets 2× usage limits for a limited time", "go.meta.description": "Go starts at $5 for your first month, then $10/month, with generous usage limits and reliable access to leading coding models.", "go.hero.title": "Low cost coding models for everyone", diff --git a/packages/console/app/src/i18n/es.ts b/packages/console/app/src/i18n/es.ts index 24c28f3c0..1198aaf04 100644 --- a/packages/console/app/src/i18n/es.ts +++ b/packages/console/app/src/i18n/es.ts @@ -257,7 +257,6 @@ export const dict = { "zen.privacy.exceptionsLink": "siguientes excepciones", "go.title": "OpenCode Go | Modelos de programación de bajo coste para todos", - "go.banner.text": "DeepSeek V4 Flash tiene límites de uso 2x mayores por tiempo limitado", "go.meta.description": "Go comienza en $5 el primer mes, luego 10 $/mes, con límites de uso generosos y acceso fiable a modelos de programación líderes.", "go.hero.title": "Modelos de programación de bajo coste para todos", diff --git a/packages/console/app/src/i18n/fr.ts b/packages/console/app/src/i18n/fr.ts index 9ecb2f65c..9be994660 100644 --- a/packages/console/app/src/i18n/fr.ts +++ b/packages/console/app/src/i18n/fr.ts @@ -258,7 +258,6 @@ export const dict = { "zen.privacy.exceptionsLink": "exceptions suivantes", "go.title": "OpenCode Go | Modèles de code à faible coût pour tous", - "go.banner.text": "DeepSeek V4 Flash bénéficie de limites d’utilisation 2x supérieures pour une durée limitée", "go.meta.description": "Go commence à $5 pour le premier mois, puis 10 $/mois, avec des limites d'utilisation généreuses et un accès fiable aux principaux modèles de codage.", "go.hero.title": "Modèles de code à faible coût pour tous", diff --git a/packages/console/app/src/i18n/it.ts b/packages/console/app/src/i18n/it.ts index 5203cf82d..7cded5431 100644 --- a/packages/console/app/src/i18n/it.ts +++ b/packages/console/app/src/i18n/it.ts @@ -254,7 +254,6 @@ export const dict = { "zen.privacy.exceptionsLink": "seguenti eccezioni", "go.title": "OpenCode Go | Modelli di coding a basso costo per tutti", - "go.banner.text": "DeepSeek V4 Flash offre limiti di utilizzo 2x superiori per un periodo limitato", "go.meta.description": "Go inizia a $5 per il primo mese, poi $10/mese, con limiti di utilizzo generosi e un accesso affidabile ai principali modelli di coding.", "go.hero.title": "Modelli di coding a basso costo per tutti", diff --git a/packages/console/app/src/i18n/ja.ts b/packages/console/app/src/i18n/ja.ts index fee7662f1..dc46c24a6 100644 --- a/packages/console/app/src/i18n/ja.ts +++ b/packages/console/app/src/i18n/ja.ts @@ -253,7 +253,6 @@ export const dict = { "zen.privacy.exceptionsLink": "以下の例外", "go.title": "OpenCode Go | すべての人のための低価格なコーディングモデル", - "go.banner.text": "DeepSeek V4 Flashの利用上限が期間限定で2倍に", "go.meta.description": "Goは最初の月$5、その後$10/月で、主要なコーディングモデルへのゆとりある利用上限と安定したアクセスを提供します。", "go.hero.title": "すべての人のための低価格なコーディングモデル", diff --git a/packages/console/app/src/i18n/ko.ts b/packages/console/app/src/i18n/ko.ts index d97f87490..a675389e9 100644 --- a/packages/console/app/src/i18n/ko.ts +++ b/packages/console/app/src/i18n/ko.ts @@ -250,7 +250,6 @@ export const dict = { "zen.privacy.exceptionsLink": "다음 예외", "go.title": "OpenCode Go | 모두를 위한 저비용 코딩 모델", - "go.banner.text": "DeepSeek V4 Flash 사용 한도가 한시적으로 2배 확대됩니다", "go.meta.description": "Go는 첫 달 $5, 이후 $10/월로 시작하며, 넉넉한 사용 한도와 주요 코딩 모델에 대한 안정적인 액세스를 제공합니다.", "go.hero.title": "모두를 위한 저비용 코딩 모델", diff --git a/packages/console/app/src/i18n/no.ts b/packages/console/app/src/i18n/no.ts index b4e04a923..09c9629d0 100644 --- a/packages/console/app/src/i18n/no.ts +++ b/packages/console/app/src/i18n/no.ts @@ -254,7 +254,6 @@ export const dict = { "zen.privacy.exceptionsLink": "følgende unntak", "go.title": "OpenCode Go | Rimelige kodemodeller for alle", - "go.banner.text": "DeepSeek V4 Flash får 2x bruksgrense i en begrenset periode", "go.meta.description": "Go starter på $5 for den første måneden, deretter $10/måned, med sjenerøse bruksgrenser og pålitelig tilgang til ledende kodemodeller.", "go.hero.title": "Rimelige kodemodeller for alle", diff --git a/packages/console/app/src/i18n/pl.ts b/packages/console/app/src/i18n/pl.ts index 375d8e3e6..71890ac8b 100644 --- a/packages/console/app/src/i18n/pl.ts +++ b/packages/console/app/src/i18n/pl.ts @@ -255,7 +255,6 @@ export const dict = { "zen.privacy.exceptionsLink": "następującymi wyjątkami", "go.title": "OpenCode Go | Niskokosztowe modele do kodowania dla każdego", - "go.banner.text": "DeepSeek V4 Flash oferuje 2x wyższe limity użycia przez ograniczony czas", "go.meta.description": "Go kosztuje $5 za pierwszy miesiąc, a następnie $10/miesiąc, oferując hojne limity użycia i niezawodny dostęp do wiodących modeli do kodowania.", "go.hero.title": "Niskokosztowe modele do kodowania dla każdego", diff --git a/packages/console/app/src/i18n/ru.ts b/packages/console/app/src/i18n/ru.ts index bda740413..1662061fd 100644 --- a/packages/console/app/src/i18n/ru.ts +++ b/packages/console/app/src/i18n/ru.ts @@ -258,7 +258,6 @@ export const dict = { "zen.privacy.exceptionsLink": "следующими исключениями", "go.title": "OpenCode Go | Недорогие модели для кодинга для всех", - "go.banner.text": "DeepSeek V4 Flash получает 2x лимиты использования на ограниченное время", "go.meta.description": "Go стоит $5 за первый месяц, затем $10/месяц и предлагает щедрые лимиты использования и надежный доступ к ведущим моделям для кодинга.", "go.hero.title": "Недорогие модели для кодинга для всех", diff --git a/packages/console/app/src/i18n/th.ts b/packages/console/app/src/i18n/th.ts index 4501b6705..f72841b6d 100644 --- a/packages/console/app/src/i18n/th.ts +++ b/packages/console/app/src/i18n/th.ts @@ -253,7 +253,6 @@ export const dict = { "zen.privacy.exceptionsLink": "ข้อยกเว้นดังนี้", "go.title": "OpenCode Go | โมเดลเขียนโค้ดราคาประหยัดสำหรับทุกคน", - "go.banner.text": "DeepSeek V4 Flash เพิ่มโควตาการใช้งานเป็น 2 เท่าในช่วงเวลาจำกัด", "go.meta.description": "Go เริ่มต้นที่ $5 สำหรับเดือนแรก จากนั้น $10/เดือน พร้อมขีดจำกัดการใช้งานที่เอื้อเฟื้อและการเข้าถึงโมเดลเขียนโค้ดชั้นนำอย่างเชื่อถือได้", "go.hero.title": "โมเดลเขียนโค้ดราคาประหยัดสำหรับทุกคน", diff --git a/packages/console/app/src/i18n/tr.ts b/packages/console/app/src/i18n/tr.ts index 76a4926fa..abe65c93a 100644 --- a/packages/console/app/src/i18n/tr.ts +++ b/packages/console/app/src/i18n/tr.ts @@ -256,7 +256,6 @@ export const dict = { "zen.privacy.exceptionsLink": "aşağıdaki istisnalar", "go.title": "OpenCode Go | Herkes için düşük maliyetli kodlama modelleri", - "go.banner.text": "DeepSeek V4 Flash sınırlı bir süre için 2x kullanım limiti sunuyor", "go.meta.description": "Go ilk ay $5, sonrasında ayda 10$ fiyatıyla başlar; cömert kullanım limitleri ve önde gelen kodlama modellerine güvenilir erişim sunar.", "go.hero.title": "Herkes için düşük maliyetli kodlama modelleri", diff --git a/packages/console/app/src/i18n/uk.ts b/packages/console/app/src/i18n/uk.ts index 6a4fbbd78..688a68cdb 100644 --- a/packages/console/app/src/i18n/uk.ts +++ b/packages/console/app/src/i18n/uk.ts @@ -255,7 +255,6 @@ export const dict = { "zen.privacy.exceptionsLink": "такими винятками", "go.title": "OpenCode Go | Недорогі моделі кодування для всіх", - "go.banner.text": "DeepSeek V4 Flash отримує 2x ліміти використання протягом обмеженого часу", "go.meta.description": "Go починається від $5 за перший місяць, потім $10/місяць, зі щедрими лімітами використання та надійним доступом до провідних моделей для кодування.", "go.hero.title": "Недорогі моделі кодування для всіх", diff --git a/packages/console/app/src/i18n/zh.ts b/packages/console/app/src/i18n/zh.ts index 22e71e106..6aa7cf2a0 100644 --- a/packages/console/app/src/i18n/zh.ts +++ b/packages/console/app/src/i18n/zh.ts @@ -244,7 +244,6 @@ export const dict = { "zen.privacy.exceptionsLink": "以下例外情况除外", "go.title": "OpenCode Go | 人人可用的低成本编程模型", - "go.banner.text": "DeepSeek V4 Flash 限时享受 2 倍使用额度", "go.meta.description": "Go 首月 $5,之后 $10/月,提供充裕的使用限额,并可可靠访问领先的编程模型。", "go.hero.title": "人人可用的低成本编程模型", "go.hero.body": diff --git a/packages/console/app/src/i18n/zht.ts b/packages/console/app/src/i18n/zht.ts index 6818acf3f..2786df150 100644 --- a/packages/console/app/src/i18n/zht.ts +++ b/packages/console/app/src/i18n/zht.ts @@ -244,7 +244,6 @@ export const dict = { "zen.privacy.exceptionsLink": "以下例外情況", "go.title": "OpenCode Go | 低成本全民編碼模型", - "go.banner.text": "DeepSeek V4 Flash 限時享有 2 倍使用額度", "go.meta.description": "Go 首月 $5,之後 $10/月,提供充裕的使用限額,並可穩定存取領先的編碼模型。", "go.hero.title": "低成本全民編碼模型", "go.hero.body": diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index b85ce5cc8..37ce3a69c 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -80,8 +80,7 @@ function LimitsGraph(props: { href: string }) { { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", - req: 63300, - baseReq: 31650, + req: 31650, edge: true, d: "340ms", }, @@ -259,12 +258,6 @@ export default function Home() {
        -
        - {i18n.t("home.banner.badge")} -
        - {i18n.t("go.banner.text")} -
        -
        From 3fd77ae980c9e68eccd10f1c396f32c6e3965046 Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 16 Aug 2026 05:20:04 -0400 Subject: [PATCH 021/271] zen: peak pricing --- packages/console/app/src/routes/zen/util/handler.ts | 11 +++++++---- packages/console/core/src/model.ts | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 951228c9e..bde104dd3 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -1032,11 +1032,14 @@ export async function handler( const { inputTokens, outputTokens, reasoningTokens, cacheReadTokens, cacheWrite5mTokens, cacheWrite1hTokens } = usageInfo + const hour = new Date().getUTCHours() const modelCost = - modelInfo.cost200K && - inputTokens + (cacheReadTokens ?? 0) + (cacheWrite5mTokens ?? 0) + (cacheWrite1hTokens ?? 0) > 200_000 - ? modelInfo.cost200K - : modelInfo.cost + modelInfo.costPeak && ((hour >= 1 && hour < 4) || (hour >= 6 && hour < 10)) + ? modelInfo.costPeak + : modelInfo.cost200K && + inputTokens + (cacheReadTokens ?? 0) + (cacheWrite5mTokens ?? 0) + (cacheWrite1hTokens ?? 0) > 200_000 + ? modelInfo.cost200K + : modelInfo.cost const inputCost = modelCost.input * inputTokens * 100 const outputCost = modelCost.output * outputTokens * 100 diff --git a/packages/console/core/src/model.ts b/packages/console/core/src/model.ts index f4ac40183..ffba49003 100644 --- a/packages/console/core/src/model.ts +++ b/packages/console/core/src/model.ts @@ -24,6 +24,7 @@ export namespace ZenData { cost: ModelCostSchema, costMultiplier: z.number().default(1), cost200K: ModelCostSchema.optional(), + costPeak: ModelCostSchema.optional(), allowAnonymous: z.boolean().optional(), byokProvider: z.enum(["openai", "anthropic", "google"]).optional(), stickyProvider: z.enum(["strict", "prefer"]).optional(), From fb8344f3c29b23c514cc6cfa0283e5b89e30ceea Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 16 Aug 2026 11:26:41 -0400 Subject: [PATCH 022/271] chore: remove scheduled beta sync --- .github/workflows/beta.yml | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 .github/workflows/beta.yml diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml deleted file mode 100644 index e93d5fbdb..000000000 --- a/.github/workflows/beta.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: beta - -on: - workflow_dispatch: - schedule: - - cron: "0 * * * *" - -jobs: - sync: - runs-on: blacksmith-4vcpu-ubuntu-2404 - permissions: - contents: write - pull-requests: write - steps: - - name: Checkout repository - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - with: - fetch-depth: 0 - - - name: Setup Bun - uses: ./.github/actions/setup-bun - - - name: Setup Git Committer - id: setup-git-committer - uses: ./.github/actions/setup-git-committer - with: - opencode-app-id: ${{ vars.OPENCODE_APP_ID }} - opencode-app-secret: ${{ secrets.OPENCODE_APP_SECRET }} - - - name: Install OpenCode - run: bun i -g opencode-ai - - - name: Sync beta branch - env: - GH_TOKEN: ${{ steps.setup-git-committer.outputs.token }} - OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }} - run: bun script/beta.ts From a0f8dccbfe139ffc7137d1eaf6fee6e4195af599 Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 17 Aug 2026 00:01:15 +0800 Subject: [PATCH 023/271] docs: update DeepSeek V4 pricing (#42881) --- packages/console/app/src/routes/go/index.tsx | 16 +++++----------- packages/web/src/content/docs/ar/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/ar/zen.mdx | 8 ++++++-- packages/web/src/content/docs/bs/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/bs/zen.mdx | 8 ++++++-- packages/web/src/content/docs/da/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/da/zen.mdx | 8 ++++++-- packages/web/src/content/docs/de/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/de/zen.mdx | 8 ++++++-- packages/web/src/content/docs/es/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/es/zen.mdx | 8 ++++++-- packages/web/src/content/docs/fr/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/fr/zen.mdx | 8 ++++++-- packages/web/src/content/docs/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/it/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/it/zen.mdx | 8 ++++++-- packages/web/src/content/docs/ja/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/ja/zen.mdx | 8 ++++++-- packages/web/src/content/docs/ko/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/ko/zen.mdx | 8 ++++++-- packages/web/src/content/docs/nb/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/nb/zen.mdx | 8 ++++++-- packages/web/src/content/docs/pl/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/pl/zen.mdx | 8 ++++++-- packages/web/src/content/docs/pt-br/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/pt-br/zen.mdx | 8 ++++++-- packages/web/src/content/docs/ru/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/ru/zen.mdx | 8 ++++++-- packages/web/src/content/docs/th/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/th/zen.mdx | 8 ++++++-- packages/web/src/content/docs/tr/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/tr/zen.mdx | 8 ++++++-- packages/web/src/content/docs/zen.mdx | 8 ++++++-- packages/web/src/content/docs/zh-cn/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/zh-cn/zen.mdx | 8 ++++++-- packages/web/src/content/docs/zh-tw/go.mdx | 16 ++++++++++------ packages/web/src/content/docs/zh-tw/zen.mdx | 8 ++++++-- 37 files changed, 293 insertions(+), 155 deletions(-) diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index 37ce3a69c..518475d4a 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -67,23 +67,17 @@ function LimitsGraph(props: { href: string }) { const baseline = 100 const graph = [ - { id: "grok-4.5", name: "Grok 4.5", req: 120, d: "50ms" }, - { id: "kimi-k3", name: "Kimi K3", req: 110, d: "75ms" }, + { id: "kimi-k3", name: "Kimi K3", req: 110, d: "50ms" }, + { id: "grok-4.5", name: "Grok 4.5", req: 120, d: "75ms" }, { id: "qwen3.8-max", name: "Qwen3.8 Max", req: 160, d: "90ms" }, { id: "glm-5.2", name: "GLM-5.2", req: 880, d: "100ms" }, + { id: "deepseek-v4-pro", name: "DeepSeek V4 Pro", req: 1050, d: "150ms" }, { id: "minimax-m3", name: "MiniMax M3", req: 3200, d: "210ms" }, - { id: "deepseek-v4-pro", name: "DeepSeek V4 Pro", req: 3450, d: "270ms" }, + { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", req: 3800, d: "270ms" }, { id: "gpt-5.6-luna", name: "GPT 5.6 Luna", req: 4100, baseReq: 2050, d: "290ms" }, { id: "qwen3.7-plus", name: "Qwen3.7 Plus", req: 4300, d: "300ms" }, { id: "hy3", name: "Hy3", req: 4300, d: "320ms" }, - { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100, d: "340ms" }, - { - id: "deepseek-v4-flash", - name: "DeepSeek V4 Flash", - req: 31650, - edge: true, - d: "340ms", - }, + { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100, edge: true, d: "340ms" }, ] const w = 1040 diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 4fdc436dd..95648c237 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -81,7 +81,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال - **الحد الأسبوعي** — استخدام بقيمة $30 - **الحد الشهري** — استخدام بقيمة $60 -تُحدَّد الحدود بالقيمة بالدولار. وهذا يعني أن عدد طلباتك الفعلي يعتمد على النموذج الذي تستخدمه. تتيح النماذج الأقل تكلفة مثل DeepSeek V4 Flash عددًا أكبر من الطلبات، بينما تتيح النماذج الأعلى تكلفة مثل GLM-5.2 عددًا أقل. +تُحدَّد الحدود بالقيمة بالدولار. وهذا يعني أن عدد طلباتك الفعلي يعتمد على النموذج الذي تستخدمه. تتيح النماذج الأقل تكلفة مثل MiMo-V2.5 عددًا أكبر من الطلبات، بينما تتيح النماذج الأعلى تكلفة مثل GLM-5.2 عددًا أقل. يوضح الجدول أدناه عددًا تقديريًا للطلبات بناءً على أنماط استخدام Go المعتادة: @@ -103,8 +103,8 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | تستند التقديرات إلى أنماط الطلبات المرصودة: @@ -115,7 +115,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال - Kimi K3 — ‏1,050 input، و76,500 cached، و300 output tokens لكل طلب - Kimi K2.7/K2.6 — ‏870 input، و55,000 cached، و200 output tokens لكل طلب - DeepSeek V4 Pro — ‏750 input، و82,000 cached، و290 output tokens لكل طلب -- DeepSeek V4 Flash — ‏790 input، و68,000 cached، و280 output tokens لكل طلب +- DeepSeek V4 Flash — ‏410 input، و71,300 cached، و310 output tokens لكل طلب - MiniMax M3 — ‏510 input، و56,000 cached، و190 output tokens لكل طلب - MiniMax M2.7 — ‏300 input، و55,000 cached، و125 output tokens لكل طلب - Qwen3.8 Max — ‏420 input، و66,000 cached، و200 output tokens لكل طلب @@ -150,10 +150,14 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC؛ وجميع الساعات الأخرى Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). + يمكنك تتبّع استخدامك الحالي في **console**. :::tip diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index efc180c40..16d833719 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -160,8 +160,10 @@ https://opencode.ai/zen/v1/models | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -212,6 +214,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC؛ وجميع الساعات الأخرى Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). + قد تلاحظ [نماذج منخفضة التكلفة](/docs/config/#models)، مثل Haiku أو Nano أو Flash، في سجل الاستخدام. يستخدم OpenCode هذه النماذج لإنشاء عناوين الجلسات. :::note diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index fae4336a7..8a7118351 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -91,7 +91,7 @@ OpenCode Go uključuje sljedeća ograničenja: - **Sedmično ograničenje** — $30 potrošnje - **Mjesečno ograničenje** — $60 potrošnje -Ograničenja su definisana u dolarskoj vrijednosti. To znači da vaš stvarni broj zahtjeva zavisi od modela koji koristite. Jeftiniji modeli poput DeepSeek V4 Flash omogućavaju više zahtjeva, dok skuplji modeli poput GLM-5.2 omogućavaju manje. +Ograničenja su definisana u dolarskoj vrijednosti. To znači da vaš stvarni broj zahtjeva zavisi od modela koji koristite. Jeftiniji modeli poput MiMo-V2.5 omogućavaju više zahtjeva, dok skuplji modeli poput GLM-5.2 omogućavaju manje. Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca korištenja Go pretplate: @@ -113,8 +113,8 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | Procjene se zasnivaju na zapaženim obrascima zahtjeva: @@ -125,7 +125,7 @@ Procjene se zasnivaju na zapaženim obrascima zahtjeva: - Kimi K3 — 1,050 ulaznih, 76,500 keširanih, 300 izlaznih tokena po zahtjevu - Kimi K2.7/K2.6 — 870 ulaznih, 55,000 keširanih, 200 izlaznih tokena po zahtjevu - DeepSeek V4 Pro — 750 ulaznih, 82,000 keširanih, 290 izlaznih tokena po zahtjevu -- DeepSeek V4 Flash — 790 ulaznih, 68,000 keširanih, 280 izlaznih tokena po zahtjevu +- DeepSeek V4 Flash — 410 ulaznih, 71,300 keširanih, 310 izlaznih tokena po zahtjevu - MiniMax M3 — 510 ulaznih, 56,000 keširanih, 190 izlaznih tokena po zahtjevu - MiniMax M2.7 — 300 ulaznih, 55,000 keširanih, 125 izlaznih tokena po zahtjevu - Qwen3.8 Max — 420 ulaznih, 66,000 keširanih, 200 izlaznih tokena po zahtjevu @@ -160,10 +160,14 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC; svi ostali sati su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). + Svoju trenutnu potrošnju možete pratiti u **konzoli**. :::tip diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index 0ec23414f..99e4225ea 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -167,8 +167,10 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -219,6 +221,8 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC; svi ostali sati su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). + U historiji korištenja možete primijetiti [jeftinije modele](/docs/config/#models), kao što su Haiku, Nano ili Flash. OpenCode koristi ove modele za generisanje naslova sesija. :::note diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 83acb99f1..74d76ad77 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -91,7 +91,7 @@ OpenCode Go inkluderer følgende grænser: - **Ugentlig grænse** — forbrug for $30 - **Månedlig grænse** — forbrug for $60 -Grænserne er defineret i dollarværdi. Det betyder, at dit faktiske antal anmodninger afhænger af den model, du bruger. Billigere modeller som DeepSeek V4 Flash tillader flere anmodninger, mens dyrere modeller som GLM-5.2 tillader færre. +Grænserne er defineret i dollarværdi. Det betyder, at dit faktiske antal anmodninger afhænger af den model, du bruger. Billigere modeller som MiMo-V2.5 tillader flere anmodninger, mens dyrere modeller som GLM-5.2 tillader færre. Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-forbrugsmønstre: @@ -113,8 +113,8 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | Estimaterne er baseret på observerede anmodningsmønstre: @@ -125,7 +125,7 @@ Estimaterne er baseret på observerede anmodningsmønstre: - Kimi K3 — 1.050 input, 76.500 cachelagrede, 300 output-tokens pr. anmodning - Kimi K2.7/K2.6 — 870 input, 55.000 cachelagrede, 200 output-tokens pr. anmodning - DeepSeek V4 Pro — 750 input, 82.000 cachelagrede, 290 output-tokens pr. anmodning -- DeepSeek V4 Flash — 790 input, 68.000 cachelagrede, 280 output-tokens pr. anmodning +- DeepSeek V4 Flash — 410 input, 71.300 cachelagrede, 310 output-tokens pr. anmodning - MiniMax M3 — 510 input, 56.000 cachelagrede, 190 output-tokens pr. anmodning - MiniMax M2.7 — 300 input, 55.000 cachelagrede, 125 output-tokens pr. anmodning - Qwen3.8 Max — 420 input, 66.000 cachelagrede, 200 output-tokens pr. anmodning @@ -160,10 +160,14 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). + Du kan spore dit nuværende forbrug i **konsollen**. :::tip diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index 94bf6ff2f..cbaa607ad 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -167,8 +167,10 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -219,6 +221,8 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). + Du vil måske bemærke [lavprismodeller](/docs/config/#models), såsom Haiku, Nano eller Flash, i din brugshistorik. OpenCode bruger disse modeller til at generere sessionstitler. :::note diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index f881c4dee..2b2f4633b 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -83,7 +83,7 @@ OpenCode Go beinhaltet die folgenden Limits: - **Wöchentliches Limit** — 30 $ Nutzung - **Monatliches Limit** — 60 $ Nutzung -Limits sind in Dollarwerten definiert. Das bedeutet, dass die tatsächliche Anzahl deiner Anfragen von dem von dir genutzten Modell abhängt. Günstigere Modelle wie DeepSeek V4 Flash erlauben mehr Anfragen, während teurere Modelle wie GLM-5.2 weniger erlauben. +Limits sind in Dollarwerten definiert. Das bedeutet, dass die tatsächliche Anzahl deiner Anfragen von dem von dir genutzten Modell abhängt. Günstigere Modelle wie MiMo-V2.5 erlauben mehr Anfragen, während teurere Modelle wie GLM-5.2 weniger erlauben. Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf typischen Go-Nutzungsmustern: @@ -105,8 +105,8 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | Die Schätzungen basieren auf beobachteten Anfragemustern: @@ -117,7 +117,7 @@ Die Schätzungen basieren auf beobachteten Anfragemustern: - Kimi K3 — 1.050 Input-, 76.500 Cached-, 300 Output-Tokens pro Anfrage - Kimi K2.7/K2.6 — 870 Input-, 55.000 Cached-, 200 Output-Tokens pro Anfrage - DeepSeek V4 Pro — 750 Input-, 82.000 Cached-, 290 Output-Tokens pro Anfrage -- DeepSeek V4 Flash — 790 Input-, 68.000 Cached-, 280 Output-Tokens pro Anfrage +- DeepSeek V4 Flash — 410 Input-, 71.300 Cached-, 310 Output-Tokens pro Anfrage - MiniMax M3 — 510 Input-, 56.000 Cached-, 190 Output-Tokens pro Anfrage - MiniMax M2.7 — 300 Input-, 55.000 Cached-, 125 Output-Tokens pro Anfrage - Qwen3.8 Max — 420 Input-, 66.000 Cached-, 200 Output-Tokens pro Anfrage @@ -152,10 +152,14 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Die Peak-Zeiten sind 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). + Du kannst deine aktuelle Nutzung in der **Console** verfolgen. :::tip diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index 9e7a811aa..f01797dfe 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -156,8 +156,10 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -208,6 +210,8 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Die Peak-Zeiten sind 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). + Möglicherweise siehst du [kostengünstige Modelle](/docs/config/#models) wie Haiku, Nano oder Flash in deinem Nutzungsverlauf. OpenCode verwendet diese Modelle, um Session-Titel zu generieren. :::note diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 03c752107..e880b74c2 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -91,7 +91,7 @@ OpenCode Go incluye los siguientes límites: - **Límite semanal** — $30 de uso - **Límite mensual** — $60 de uso -Los límites se definen en valor en dólares. Esto significa que tu cantidad real de peticiones depende del modelo que uses. Los modelos más económicos como DeepSeek V4 Flash permiten más peticiones, mientras que los modelos de mayor costo como GLM-5.2 permiten menos. +Los límites se definen en valor en dólares. Esto significa que tu cantidad real de peticiones depende del modelo que uses. Los modelos más económicos como MiMo-V2.5 permiten más peticiones, mientras que los modelos de mayor costo como GLM-5.2 permiten menos. La siguiente tabla proporciona una cantidad estimada de peticiones basada en los patrones típicos de uso de Go: @@ -113,8 +113,8 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | Las estimaciones se basan en los patrones de peticiones observados: @@ -125,7 +125,7 @@ Las estimaciones se basan en los patrones de peticiones observados: - Kimi K3 — 1,050 tokens de entrada, 76,500 en caché, 300 tokens de salida por petición - Kimi K2.7/K2.6 — 870 tokens de entrada, 55,000 en caché, 200 tokens de salida por petición - DeepSeek V4 Pro — 750 tokens de entrada, 82,000 en caché, 290 tokens de salida por petición -- DeepSeek V4 Flash — 790 tokens de entrada, 68,000 en caché, 280 tokens de salida por petición +- DeepSeek V4 Flash — 410 tokens de entrada, 71,300 en caché, 310 tokens de salida por petición - MiniMax M3 — 510 tokens de entrada, 56,000 en caché, 190 tokens de salida por petición - MiniMax M2.7 — 300 tokens de entrada, 55,000 en caché, 125 tokens de salida por petición - Qwen3.8 Max — 420 tokens de entrada, 66,000 en caché, 200 tokens de salida por petición @@ -160,10 +160,14 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC; todas las demás horas son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). + Puedes realizar un seguimiento de tu uso actual en la **consola**. :::tip diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index 6bb35720f..f9ba73d0f 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -167,8 +167,10 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -219,6 +221,8 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC; todas las demás horas son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). + Puede que notes [modelos de bajo costo](/docs/config/#models), como Haiku, Nano o Flash, en tu historial de uso. OpenCode usa estos modelos para generar títulos de sesiones. :::note diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 802a573a4..ad7b9a55e 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -81,7 +81,7 @@ OpenCode Go inclut les limites suivantes : - **Limite hebdomadaire** — 30 $ d'utilisation - **Limite mensuelle** — 60 $ d'utilisation -Les limites sont définies en valeur monétaire (dollars). Cela signifie que votre nombre réel de requêtes dépend du modèle que vous utilisez. Les modèles moins chers comme DeepSeek V4 Flash permettent plus de requêtes, tandis que les modèles plus coûteux comme GLM-5.2 en permettent moins. +Les limites sont définies en valeur monétaire (dollars). Cela signifie que votre nombre réel de requêtes dépend du modèle que vous utilisez. Les modèles moins chers comme MiMo-V2.5 permettent plus de requêtes, tandis que les modèles plus coûteux comme GLM-5.2 en permettent moins. Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur des modèles d'utilisation typiques de Go : @@ -103,8 +103,8 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | Les estimations sont basées sur les schémas de requêtes observés : @@ -115,7 +115,7 @@ Les estimations sont basées sur les schémas de requêtes observés : - Kimi K3 — 1,050 tokens en entrée, 76,500 en cache, 300 tokens en sortie par requête - Kimi K2.7/K2.6 — 870 tokens en entrée, 55,000 en cache, 200 tokens en sortie par requête - DeepSeek V4 Pro — 750 tokens en entrée, 82,000 en cache, 290 tokens en sortie par requête -- DeepSeek V4 Flash — 790 tokens en entrée, 68,000 en cache, 280 tokens en sortie par requête +- DeepSeek V4 Flash — 410 tokens en entrée, 71,300 en cache, 310 tokens en sortie par requête - MiniMax M3 — 510 tokens en entrée, 56,000 en cache, 190 tokens en sortie par requête - MiniMax M2.7 — 300 tokens en entrée, 55,000 en cache, 125 tokens en sortie par requête - Qwen3.8 Max — 420 tokens en entrée, 66,000 en cache, 200 tokens en sortie par requête @@ -150,10 +150,14 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC ; toutes les autres heures sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). + Vous pouvez suivre votre utilisation actuelle dans la **console**. :::tip diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index 2dc07b00d..62f69109d 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -156,8 +156,10 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -208,6 +210,8 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC ; toutes les autres heures sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). + Vous remarquerez peut-être des [modèles à faible coût](/docs/config/#models), tels que Haiku, Nano ou Flash, dans votre historique d'utilisation. OpenCode utilise ces modèles pour générer les titres des sessions. :::note diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 502536be7..43c0ae879 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -91,7 +91,7 @@ OpenCode Go includes the following limits: - **Weekly limit** — $30 of usage - **Monthly limit** — $60 of usage -Limits are defined in dollar value. This means your actual request count depends on the model you use. Cheaper models like DeepSeek V4 Flash allow for more requests, while higher-cost models like GLM-5.2 allow for fewer. +Limits are defined in dollar value. This means your actual request count depends on the model you use. Cheaper models like MiMo-V2.5 allow for more requests, while higher-cost models like GLM-5.2 allow for fewer. The table below provides an estimated request count based on typical Go usage patterns: @@ -113,8 +113,8 @@ The table below provides an estimated request count based on typical Go usage pa | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | The estimates are based on observed request patterns: @@ -125,7 +125,7 @@ The estimates are based on observed request patterns: - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens per request - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens per request - DeepSeek V4 Pro — 750 input, 82,000 cached, 290 output tokens per request -- DeepSeek V4 Flash — 790 input, 68,000 cached, 280 output tokens per request +- DeepSeek V4 Flash — 410 input, 71,300 cached, 310 output tokens per request - MiniMax M3 — 510 input, 56,000 cached, 190 output tokens per request - MiniMax M2.7 — 300 input, 55,000 cached, 125 output tokens per request - MiMo-V2.5 — 830 input, 71,500 cached, 295 output tokens per request @@ -160,10 +160,14 @@ The estimates are also based on the following prices per 1M tokens and the month | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC; all other hours are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). + You can track your current usage in the **console**. :::tip diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index b927268e8..ecba84718 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -89,7 +89,7 @@ OpenCode Go include i seguenti limiti: - **Limite settimanale** — 30 $ di utilizzo - **Limite mensile** — 60 $ di utilizzo -I limiti sono definiti in valore in dollari. Questo significa che il conteggio effettivo delle richieste dipende dal modello utilizzato. Modelli più economici come DeepSeek V4 Flash consentono più richieste, mentre modelli più costosi come GLM-5.2 ne consentono di meno. +I limiti sono definiti in valore in dollari. Questo significa che il conteggio effettivo delle richieste dipende dal modello utilizzato. Modelli più economici come MiMo-V2.5 consentono più richieste, mentre modelli più costosi come GLM-5.2 ne consentono di meno. La tabella seguente fornisce una stima del conteggio delle richieste in base a pattern di utilizzo tipici di Go: @@ -111,8 +111,8 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | Le stime si basano sui pattern di richieste osservati: @@ -123,7 +123,7 @@ Le stime si basano sui pattern di richieste osservati: - Kimi K3 — 1.050 di input, 76.500 in cache, 300 token di output per richiesta - Kimi K2.7/K2.6 — 870 di input, 55.000 in cache, 200 token di output per richiesta - DeepSeek V4 Pro — 750 di input, 82.000 in cache, 290 token di output per richiesta -- DeepSeek V4 Flash — 790 di input, 68.000 in cache, 280 token di output per richiesta +- DeepSeek V4 Flash — 410 di input, 71.300 in cache, 310 token di output per richiesta - MiniMax M3 — 510 di input, 56.000 in cache, 190 token di output per richiesta - MiniMax M2.7 — 300 di input, 55.000 in cache, 125 token di output per richiesta - Qwen3.8 Max — 420 di input, 66.000 in cache, 200 token di output per richiesta @@ -158,10 +158,14 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC; tutti gli altri orari sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). + Puoi monitorare il tuo utilizzo attuale nella **console**. :::tip diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index 9c844f452..12ebd9e11 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -167,8 +167,10 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -219,6 +221,8 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC; tutti gli altri orari sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). + Potresti notare [modelli a basso costo](/docs/config/#models), come Haiku, Nano o Flash, nella cronologia di utilizzo. OpenCode usa questi modelli per generare i titoli delle sessioni. :::note diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 6744e39b0..77f416cd3 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -81,7 +81,7 @@ OpenCode Goには以下の制限が含まれています: - **週間の制限** — 30ドル分の利用 - **月間の制限** — 60ドル分の利用 -制限はドル単位で定義されています。つまり、実際のリクエスト数は使用するモデルによって異なります。DeepSeek V4 Flashのような安価なモデルではより多くのリクエストが可能ですが、GLM-5.2のような高コストのモデルではリクエスト数が少なくなります。 +制限はドル単位で定義されています。つまり、実際のリクエスト数は使用するモデルによって異なります。MiMo-V2.5のような安価なモデルではより多くのリクエストが可能ですが、GLM-5.2のような高コストのモデルではリクエスト数が少なくなります。 以下の表は、一般的なGoの利用パターンに基づいた推定リクエスト数を示しています: @@ -103,8 +103,8 @@ OpenCode Goには以下の制限が含まれています: | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | 推定値は、観測されたリクエストパターンに基づいています: @@ -115,7 +115,7 @@ OpenCode Goには以下の制限が含まれています: - Kimi K3 — リクエストあたり 入力 1,050トークン、キャッシュ 76,500トークン、出力 300トークン - Kimi K2.7/K2.6 — リクエストあたり 入力 870トークン、キャッシュ 55,000トークン、出力 200トークン - DeepSeek V4 Pro — リクエストあたり 入力 750トークン、キャッシュ 82,000トークン、出力 290トークン -- DeepSeek V4 Flash — リクエストあたり 入力 790トークン、キャッシュ 68,000トークン、出力 280トークン +- DeepSeek V4 Flash — リクエストあたり 入力 410トークン、キャッシュ 71,300トークン、出力 310トークン - MiniMax M3 — リクエストあたり 入力 510トークン、キャッシュ 56,000トークン、出力 190トークン - MiniMax M2.7 — リクエストあたり 入力 300トークン、キャッシュ 55,000トークン、出力 125トークン - Qwen3.8 Max — リクエストあたり 入力 420トークン、キャッシュ 66,000トークン、出力 200トークン @@ -150,10 +150,14 @@ OpenCode Goには以下の制限が含まれています: | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Peak時間は01:00-04:00と06:00-10:00 UTCで、それ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 + 現在の利用状況は**コンソール**で追跡できます。 :::tip diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index 9fcbc5874..1dd7e6632 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -156,8 +156,10 @@ https://opencode.ai/zen/v1/models | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -208,6 +210,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Peak時間は01:00-04:00と06:00-10:00 UTCで、それ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 + 使用履歴に Haiku、Nano、Flash などの[低コストモデル](/docs/config/#models)が表示されることがあります。OpenCode はこれらのモデルをセッションタイトルの生成に使用します。 :::note diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index c89114f15..f6046abbe 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -81,7 +81,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. - **주간 한도** — 사용량 $30 - **월간 한도** — 사용량 $60 -한도는 달러 금액 기준으로 정의됩니다. 즉, 실제 요청 횟수는 사용하는 모델에 따라 달라집니다. DeepSeek V4 Flash처럼 저렴한 모델은 더 많은 요청이 가능하고, GLM-5.2처럼 비용이 더 높은 모델은 더 적은 요청이 가능합니다. +한도는 달러 금액 기준으로 정의됩니다. 즉, 실제 요청 횟수는 사용하는 모델에 따라 달라집니다. MiMo-V2.5처럼 저렴한 모델은 더 많은 요청이 가능하고, GLM-5.2처럼 비용이 더 높은 모델은 더 적은 요청이 가능합니다. 아래 표는 일반적인 Go 사용 패턴을 기준으로 한 예상 요청 횟수를 보여줍니다. @@ -103,8 +103,8 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | 이 예상치는 관찰된 요청 패턴을 기준으로 합니다. @@ -115,7 +115,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. - Kimi K3 — 요청당 입력 1,050, 캐시 76,500, 출력 토큰 300 - Kimi K2.7/K2.6 — 요청당 입력 870, 캐시 55,000, 출력 토큰 200 - DeepSeek V4 Pro — 요청당 입력 750, 캐시 82,000, 출력 토큰 290 -- DeepSeek V4 Flash — 요청당 입력 790, 캐시 68,000, 출력 토큰 280 +- DeepSeek V4 Flash — 요청당 입력 410, 캐시 71,300, 출력 토큰 310 - MiniMax M3 — 요청당 입력 510, 캐시 56,000, 출력 토큰 190 - MiniMax M2.7 — 요청당 입력 300, 캐시 55,000, 출력 토큰 125 - Qwen3.8 Max — 요청당 입력 420, 캐시 66,000, 출력 토큰 200 @@ -150,10 +150,14 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Peak 시간은 01:00-04:00 및 06:00-10:00 UTC이며, 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). + 현재 사용량은 **console**에서 확인할 수 있습니다. :::tip diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index 2f94d7da2..0967f4bc8 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -156,8 +156,10 @@ https://opencode.ai/zen/v1/models | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -208,6 +210,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Peak 시간은 01:00-04:00 및 06:00-10:00 UTC이며, 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). + 사용 기록에서 Haiku, Nano 또는 Flash와 같은 [저비용 모델](/docs/config/#models)을 볼 수 있습니다. OpenCode는 이러한 모델을 사용해 세션 제목을 생성합니다. :::note diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index bd819874d..e74df268a 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -91,7 +91,7 @@ OpenCode Go inkluderer følgende grenser: - **Ukentlig grense** — $30 i bruk - **Månedlig grense** — $60 i bruk -Grensene er definert i dollarverdi. Dette betyr at ditt faktiske antall forespørsler avhenger av modellen du bruker. Billigere modeller som DeepSeek V4 Flash tillater flere forespørsler, mens dyrere modeller som GLM-5.2 tillater færre. +Grensene er definert i dollarverdi. Dette betyr at ditt faktiske antall forespørsler avhenger av modellen du bruker. Billigere modeller som MiMo-V2.5 tillater flere forespørsler, mens dyrere modeller som GLM-5.2 tillater færre. Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksmønstre for Go: @@ -113,8 +113,8 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | Estimatene er basert på observerte forespørselsmønstre: @@ -125,7 +125,7 @@ Estimatene er basert på observerte forespørselsmønstre: - Kimi K3 — 1 050 input, 76 500 bufret, 300 output-tokens per forespørsel - Kimi K2.7/K2.6 — 870 input, 55 000 bufret, 200 output-tokens per forespørsel - DeepSeek V4 Pro — 750 input, 82 000 bufret, 290 output-tokens per forespørsel -- DeepSeek V4 Flash — 790 input, 68 000 bufret, 280 output-tokens per forespørsel +- DeepSeek V4 Flash — 410 input, 71 300 bufret, 310 output-tokens per forespørsel - MiniMax M3 — 510 input, 56 000 bufret, 190 output-tokens per forespørsel - MiniMax M2.7 — 300 input, 55 000 bufret, 125 output-tokens per forespørsel - Qwen3.8 Max — 420 input, 66 000 bufret, 200 output-tokens per forespørsel @@ -160,10 +160,14 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). + Du kan spore din nåværende bruk i **konsollen**. :::tip diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index fccafedda..264178919 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -167,8 +167,10 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -219,6 +221,8 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). + Du vil kanskje legge merke til [lavprismodeller](/docs/config/#models), som Haiku, Nano eller Flash, i brukshistorikken din. OpenCode bruker disse modellene til å generere økttitler. :::note diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 4ec11773c..2d17b4f64 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -85,7 +85,7 @@ OpenCode Go zawiera następujące limity: - **Limit tygodniowy** — użycie o wartości 30 $ - **Limit miesięczny** — użycie o wartości 60 $ -Limity są zdefiniowane w wartości w dolarach. Oznacza to, że rzeczywista liczba żądań zależy od używanego modelu. Tańsze modele, takie jak DeepSeek V4 Flash, pozwalają na więcej żądań, podczas gdy modele o wyższym koszcie, takie jak GLM-5.2, pozwalają na mniej. +Limity są zdefiniowane w wartości w dolarach. Oznacza to, że rzeczywista liczba żądań zależy od używanego modelu. Tańsze modele, takie jak MiMo-V2.5, pozwalają na więcej żądań, podczas gdy modele o wyższym koszcie, takie jak GLM-5.2, pozwalają na mniej. Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych wzorców korzystania z Go: @@ -107,8 +107,8 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | Szacunki te opierają się na zaobserwowanych wzorcach żądań: @@ -119,7 +119,7 @@ Szacunki te opierają się na zaobserwowanych wzorcach żądań: - Kimi K3 — 1 050 tokenów wejściowych, 76 500 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie - Kimi K2.7/K2.6 — 870 tokenów wejściowych, 55 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie - DeepSeek V4 Pro — 750 tokenów wejściowych, 82 000 w pamięci podręcznej, 290 tokenów wyjściowych na żądanie -- DeepSeek V4 Flash — 790 tokenów wejściowych, 68 000 w pamięci podręcznej, 280 tokenów wyjściowych na żądanie +- DeepSeek V4 Flash — 410 tokenów wejściowych, 71 300 w pamięci podręcznej, 310 tokenów wyjściowych na żądanie - MiniMax M3 — 510 tokenów wejściowych, 56 000 w pamięci podręcznej, 190 tokenów wyjściowych na żądanie - MiniMax M2.7 — 300 tokenów wejściowych, 55 000 w pamięci podręcznej, 125 tokenów wyjściowych na żądanie - Qwen3.8 Max — 420 tokenów wejściowych, 66 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie @@ -154,10 +154,14 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC; wszystkie pozostałe godziny to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). + Możesz śledzić swoje bieżące zużycie w **konsoli**. :::tip diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index 5c431eaa3..137863bf0 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -167,8 +167,10 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -219,6 +221,8 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC; wszystkie pozostałe godziny to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). + W historii użycia możesz zauważyć [niedrogie modele](/docs/config/#models), takie jak Haiku, Nano lub Flash. OpenCode używa tych modeli do generowania tytułów sesji. :::note diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 91a0ea0ad..a7b43e613 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -91,7 +91,7 @@ O OpenCode Go inclui os seguintes limites: - **Limite semanal** — US$ 30 de uso - **Limite mensal** — US$ 60 de uso -Os limites são definidos em valor em dólares. Isso significa que a sua contagem real de requisições depende do modelo que você usa. Modelos mais baratos como o DeepSeek V4 Flash permitem mais requisições, enquanto modelos de custo mais alto como o GLM-5.2 permitem menos. +Os limites são definidos em valor em dólares. Isso significa que a sua contagem real de requisições depende do modelo que você usa. Modelos mais baratos como o MiMo-V2.5 permitem mais requisições, enquanto modelos de custo mais alto como o GLM-5.2 permitem menos. A tabela abaixo fornece uma contagem estimada de requisições com base nos padrões típicos de uso do Go: @@ -113,8 +113,8 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | As estimativas se baseiam nos padrões de requisições observados: @@ -125,7 +125,7 @@ As estimativas se baseiam nos padrões de requisições observados: - Kimi K3 — 1.050 tokens de entrada, 76.500 em cache, 300 tokens de saída por requisição - Kimi K2.7/K2.6 — 870 tokens de entrada, 55.000 em cache, 200 tokens de saída por requisição - DeepSeek V4 Pro — 750 tokens de entrada, 82.000 em cache, 290 tokens de saída por requisição -- DeepSeek V4 Flash — 790 tokens de entrada, 68.000 em cache, 280 tokens de saída por requisição +- DeepSeek V4 Flash — 410 tokens de entrada, 71.300 em cache, 310 tokens de saída por requisição - MiniMax M3 — 510 tokens de entrada, 56.000 em cache, 190 tokens de saída por requisição - MiniMax M2.7 — 300 tokens de entrada, 55.000 em cache, 125 tokens de saída por requisição - Qwen3.8 Max — 420 tokens de entrada, 66.000 em cache, 200 tokens de saída por requisição @@ -160,10 +160,14 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC; todos os demais horários são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). + Você pode acompanhar o seu uso atual no **console**. :::tip diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index a322d63bd..5d9475a39 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -156,8 +156,10 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -208,6 +210,8 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC; todos os demais horários são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). + Você pode notar [modelos de baixo custo](/docs/config/#models), como Haiku, Nano ou Flash, no seu histórico de uso. O OpenCode usa esses modelos para gerar títulos de sessões. :::note diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 41f130251..561d868f9 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -91,7 +91,7 @@ OpenCode Go включает следующие лимиты: - **Недельный лимит** — $30 использования - **Месячный лимит** — $60 использования -Лимиты определены в долларовом эквиваленте. Это означает, что ваше фактическое количество запросов зависит от используемой модели. Более дешевые модели, такие как DeepSeek V4 Flash, позволяют делать больше запросов, в то время как более дорогие, такие как GLM-5.2, — меньше. +Лимиты определены в долларовом эквиваленте. Это означает, что ваше фактическое количество запросов зависит от используемой модели. Более дешевые модели, такие как MiMo-V2.5, позволяют делать больше запросов, в то время как более дорогие, такие как GLM-5.2, — меньше. В таблице ниже приведено примерное количество запросов на основе типичных сценариев использования Go: @@ -113,8 +113,8 @@ OpenCode Go включает следующие лимиты: | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | Эти оценки основаны на наблюдаемых показателях запросов: @@ -125,7 +125,7 @@ OpenCode Go включает следующие лимиты: - Kimi K3 — 1,050 входных, 76,500 кешированных, 300 выходных токенов на запрос - Kimi K2.7/K2.6 — 870 входных, 55,000 кешированных, 200 выходных токенов на запрос - DeepSeek V4 Pro — 750 входных, 82,000 кешированных, 290 выходных токенов на запрос -- DeepSeek V4 Flash — 790 входных, 68,000 кешированных, 280 выходных токенов на запрос +- DeepSeek V4 Flash — 410 входных, 71,300 кешированных, 310 выходных токенов на запрос - MiniMax M3 — 510 входных, 56,000 кешированных, 190 выходных токенов на запрос - MiniMax M2.7 — 300 входных, 55,000 кешированных, 125 выходных токенов на запрос - Qwen3.8 Max — 420 входных, 66,000 кешированных, 200 выходных токенов на запрос @@ -160,10 +160,14 @@ OpenCode Go включает следующие лимиты: | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Часы Peak: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). + Вы можете отслеживать текущее использование в **консоли**. :::tip diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index 1da24d4af..864618803 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -167,8 +167,10 @@ https://opencode.ai/zen/v1/models | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -219,6 +221,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Часы Peak: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). + В истории использования могут появляться [недорогие модели](/docs/config/#models), такие как Haiku, Nano или Flash. OpenCode использует эти модели для создания заголовков сессий. :::note diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index b7a993368..5361f6e70 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -81,7 +81,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: - **ขีดจำกัดรายสัปดาห์** — การใช้งานมูลค่า $30 - **ขีดจำกัดรายเดือน** — การใช้งานมูลค่า $60 -ขีดจำกัดถูกกำหนดเป็นมูลค่าดอลลาร์ ซึ่งหมายความว่าจำนวน request จริงของคุณจะขึ้นอยู่กับโมเดลที่คุณใช้งาน โมเดลที่ราคาถูกกว่าอย่าง DeepSeek V4 Flash จะสามารถส่ง request ได้มากกว่า ในขณะที่โมเดลที่มีราคาสูงกว่าอย่าง GLM-5.2 จะส่งได้น้อยกว่า +ขีดจำกัดถูกกำหนดเป็นมูลค่าดอลลาร์ ซึ่งหมายความว่าจำนวน request จริงของคุณจะขึ้นอยู่กับโมเดลที่คุณใช้งาน โมเดลที่ราคาถูกกว่าอย่าง MiMo-V2.5 จะสามารถส่ง request ได้มากกว่า ในขณะที่โมเดลที่มีราคาสูงกว่าอย่าง GLM-5.2 จะส่งได้น้อยกว่า ตารางด้านล่างแสดงจำนวน request โดยประมาณตามรูปแบบการใช้งานปกติของ Go: @@ -103,8 +103,8 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | การประมาณการนี้อ้างอิงจากรูปแบบการใช้งาน request ที่สังเกตพบ: @@ -115,7 +115,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens ต่อ request - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens ต่อ request - DeepSeek V4 Pro — 750 input, 82,000 cached, 290 output tokens ต่อ request -- DeepSeek V4 Flash — 790 input, 68,000 cached, 280 output tokens ต่อ request +- DeepSeek V4 Flash — 410 input, 71,300 cached, 310 output tokens ต่อ request - MiniMax M3 — 510 input, 56,000 cached, 190 output tokens ต่อ request - MiniMax M2.7 — 300 input, 55,000 cached, 125 output tokens ต่อ request - Qwen3.8 Max — 420 input, 66,000 cached, 200 output tokens ต่อ request @@ -150,10 +150,14 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ส่วนเวลาอื่นทั้งหมดเป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) + คุณสามารถติดตามการใช้งานปัจจุบันของคุณได้ใน **console** :::tip diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index f857b6d33..197a0fb04 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -158,8 +158,10 @@ https://opencode.ai/zen/v1/models | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -210,6 +212,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ส่วนเวลาอื่นทั้งหมดเป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) + คุณอาจสังเกตเห็น[โมเดลต้นทุนต่ำ](/docs/config/#models) เช่น Haiku, Nano หรือ Flash ในประวัติการใช้งานของคุณ OpenCode ใช้โมเดลเหล่านี้เพื่อสร้างชื่อเซสชัน :::note diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 607c02ac4..6f0f872c7 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -81,7 +81,7 @@ OpenCode Go aşağıdaki limitleri içerir: - **Haftalık limit** — 30$ kullanım - **Aylık limit** — 60$ kullanım -Limitler dolar değeri üzerinden belirlenmiştir. Bu, gerçek istek sayınızın kullandığınız modele bağlı olduğu anlamına gelir. DeepSeek V4 Flash gibi daha ucuz modeller daha fazla isteğe izin verirken, GLM-5.2 gibi yüksek maliyetli modeller daha azına izin verir. +Limitler dolar değeri üzerinden belirlenmiştir. Bu, gerçek istek sayınızın kullandığınız modele bağlı olduğu anlamına gelir. MiMo-V2.5 gibi daha ucuz modeller daha fazla isteğe izin verirken, GLM-5.2 gibi yüksek maliyetli modeller daha azına izin verir. Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek sayısı sunmaktadır: @@ -103,8 +103,8 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | Tahminler, gözlemlenen istek modellerine dayanır: @@ -115,7 +115,7 @@ Tahminler, gözlemlenen istek modellerine dayanır: - Kimi K3 — İstek başına 1.050 girdi, 76.500 önbelleğe alınmış, 300 çıktı token'ı - Kimi K2.7/K2.6 — İstek başına 870 girdi, 55.000 önbelleğe alınmış, 200 çıktı token'ı - DeepSeek V4 Pro — İstek başına 750 girdi, 82.000 önbelleğe alınmış, 290 çıktı token'ı -- DeepSeek V4 Flash — İstek başına 790 girdi, 68.000 önbelleğe alınmış, 280 çıktı token'ı +- DeepSeek V4 Flash — İstek başına 410 girdi, 71.300 önbelleğe alınmış, 310 çıktı token'ı - MiniMax M3 — İstek başına 510 girdi, 56.000 önbelleğe alınmış, 190 çıktı token'ı - MiniMax M2.7 — İstek başına 300 girdi, 55.000 önbelleğe alınmış, 125 çıktı token'ı - Qwen3.8 Max — İstek başına 420 girdi, 66.000 önbelleğe alınmış, 200 çıktı token'ı @@ -150,10 +150,14 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Peak saatleri 01:00-04:00 ve 06:00-10:00 UTC'dir; diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). + Mevcut kullanımınızı **konsoldan** takip edebilirsiniz. :::tip diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index 09269938e..a9c4f63f5 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -156,8 +156,10 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -208,6 +210,8 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Peak saatleri 01:00-04:00 ve 06:00-10:00 UTC'dir; diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). + Kullanım geçmişinizde Haiku, Nano veya Flash gibi [düşük maliyetli modeller](/docs/config/#models) görebilirsiniz. OpenCode, oturum başlıklarını oluşturmak için bu modelleri kullanır. :::note diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index 1ba917c9d..2ed693558 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -167,8 +167,10 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -219,6 +221,8 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC; all other hours are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). + You may notice [low-cost models](/docs/config/#models), such as Haiku, Nano, or Flash, in your usage history. OpenCode uses these models to generate session titles. :::note diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index d9f18f3cc..80b9a10d9 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -81,7 +81,7 @@ OpenCode Go 包含以下限制: - **每周限制** — 30 美元使用额度 - **每月限制** — 60 美元使用额度 -限制以美元价值定义。这意味着你的实际请求数取决于你所使用的模型。较便宜的模型(如 DeepSeek V4 Flash)允许更多请求,而较高成本的模型(如 GLM-5.2)允许较少请求。 +限制以美元价值定义。这意味着你的实际请求数取决于你所使用的模型。较便宜的模型(如 MiMo-V2.5)允许更多请求,而较高成本的模型(如 GLM-5.2)允许较少请求。 下表提供了基于典型 Go 使用模式的预估请求数: @@ -103,8 +103,8 @@ OpenCode Go 包含以下限制: | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | 预估值基于观察到的请求模式: @@ -115,7 +115,7 @@ OpenCode Go 包含以下限制: - Kimi K3 — 每次请求 1,050 个输入 token,76,500 个缓存 token,300 个输出 token - Kimi K2.7/K2.6 — 每次请求 870 个输入 token,55,000 个缓存 token,200 个输出 token - DeepSeek V4 Pro — 每次请求 750 个输入 token,82,000 个缓存 token,290 个输出 token -- DeepSeek V4 Flash — 每次请求 790 个输入 token,68,000 个缓存 token,280 个输出 token +- DeepSeek V4 Flash — 每次请求 410 个输入 token,71,300 个缓存 token,310 个输出 token - MiMo-V2.5 — 每次请求 830 个输入 token,71,500 个缓存 token,295 个输出 token - MiMo-V2.5-Pro — 每次请求 790 个输入 token,86,000 个缓存 token,305 个输出 token - MiniMax M3 — 每次请求 510 个输入 token,56,000 个缓存 token,190 个输出 token @@ -150,10 +150,14 @@ OpenCode Go 包含以下限制: | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Peak 时段为 01:00-04:00 和 06:00-10:00 UTC;其他所有时段均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 + 你可以在 **控制台** 中跟踪你当前的使用情况。 :::tip diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index fc8b281f8..3d5ed4096 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -156,8 +156,10 @@ https://opencode.ai/zen/v1/models | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -208,6 +210,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Peak 时段为 01:00-04:00 和 06:00-10:00 UTC;其他所有时段均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 + 你可能会在使用记录中看到 Haiku、Nano 或 Flash 等[低成本模型](/docs/config/#models)。OpenCode 使用这些模型生成会话标题。 :::note diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index ee3377534..b8d45f24a 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -81,7 +81,7 @@ OpenCode Go 包含以下限制: - **每週限制** — $30 美元的使用量 - **每月限制** — $60 美元的使用量 -限制是以美元價值來定義。這意味著您的實際請求次數取決於您使用的模型。像 DeepSeek V4 Flash 這樣較便宜的模型允許更多的請求次數,而像 GLM-5.2 這樣成本較高的模型則允許較少次數。 +限制是以美元價值來定義。這意味著您的實際請求次數取決於您使用的模型。像 MiMo-V2.5 這樣較便宜的模型允許更多的請求次數,而像 GLM-5.2 這樣成本較高的模型則允許較少次數。 下表提供了基於典型 Go 使用模式的預估請求次數: @@ -103,8 +103,8 @@ OpenCode Go 包含以下限制: | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 3,450 | 8,550 | 17,150 | -| DeepSeek V4 Flash | 31,650 | 79,050 | 158,150 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | 這些預估值是基於觀察到的請求模式: @@ -115,7 +115,7 @@ OpenCode Go 包含以下限制: - Kimi K3 — 每次請求 1,050 個輸入 token、76,500 個快取 token、300 個輸出 token - Kimi K2.7/K2.6 — 每次請求 870 個輸入 token、55,000 個快取 token、200 個輸出 token - DeepSeek V4 Pro — 每次請求 750 個輸入 token、82,000 個快取 token、290 個輸出 token -- DeepSeek V4 Flash — 每次請求 790 個輸入 token、68,000 個快取 token、280 個輸出 token +- DeepSeek V4 Flash — 每次請求 410 個輸入 token、71,300 個快取 token、310 個輸出 token - MiniMax M3 — 每次請求 510 個輸入 token、56,000 個快取 token、190 個輸出 token - MiniMax M2.7 — 每次請求 300 個輸入 token、55,000 個快取 token、125 個輸出 token - Qwen3.8 Max — 每次請求 420 個輸入 token、66,000 個快取 token、200 個輸出 token @@ -150,10 +150,14 @@ OpenCode Go 包含以下限制: | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.0028 | - | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +**DeepSeek V4 Flash / Pro:** Peak 時段為 01:00-04:00 和 06:00-10:00 UTC;其他所有時段均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 + 您可以在 **console** 中追蹤您目前的使用量。 :::tip diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 56e9efb43..1cbd0f4ed 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -161,8 +161,10 @@ https://opencode.ai/zen/v1/models | Qwen3.7 Plus | $0.40 | $1.60 | $0.04 | $0.50 | | Qwen3.6 Plus | $0.50 | $3.00 | $0.05 | $0.625 | | Qwen3.5 Plus | $0.20 | $1.20 | $0.02 | $0.25 | -| DeepSeek V4 Pro | $1.74 | $3.48 | $0.145 | - | -| DeepSeek V4 Flash | $0.14 | $0.28 | $0.028 | - | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | @@ -213,6 +215,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**DeepSeek V4 Flash / Pro:** Peak 時段為 01:00-04:00 和 06:00-10:00 UTC;其他所有時段均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 + 你可能會在使用紀錄中看到 Haiku、Nano 或 Flash 等[低成本模型](/docs/config/#models)。OpenCode 使用這些模型產生工作階段標題。 :::note From 1c965451b537e1af4bff12c163200f762a6a0364 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Sun, 16 Aug 2026 23:58:45 +0200 Subject: [PATCH 024/271] fix(stats): correct YouTube footer link (#42941) Co-authored-by: Filip <34747899+neriousy@users.noreply.github.com> --- packages/stats/app/src/routes/stats-shell.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stats/app/src/routes/stats-shell.tsx b/packages/stats/app/src/routes/stats-shell.tsx index 1aa6e7a26..a4b388afe 100644 --- a/packages/stats/app/src/routes/stats-shell.tsx +++ b/packages/stats/app/src/routes/stats-shell.tsx @@ -241,7 +241,7 @@ export function Footer(props: { { href: "https://opencode.ai/discord", label: i18n.t("footer.community") }, { href: "https://x.com/opencode", label: "X" }, { href: githubLink.href, label: i18n.t("header.github") }, - { href: "https://www.youtube.com/@anomaly-co", label: i18n.t("footer.youtube") }, + { href: "https://www.youtube.com/@anomalyco", label: i18n.t("footer.youtube") }, ] const bridge = () => props.bridge === undefined From cba6b5f2f74080239cdc7405efcb83219c980136 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Sun, 16 Aug 2026 23:53:20 -0500 Subject: [PATCH 025/271] feat(opencode): native OpenAI and Anthropic passthroughs for Cloudflare AI Gateway (#42634) Co-authored-by: Keefe Tang --- .../plugin/provider/cloudflare-ai-gateway.ts | 8 +- packages/opencode/src/plugin/cloudflare.ts | 11 - packages/opencode/src/provider/provider.ts | 42 ++- .../opencode/test/plugin/cloudflare.test.ts | 53 +--- .../test/provider/cf-ai-gateway-e2e.test.ts | 256 +++++++++++++++--- 5 files changed, 265 insertions(+), 105 deletions(-) diff --git a/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts b/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts index d416f6f19..2803cb7a8 100644 --- a/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts +++ b/packages/core/src/plugin/provider/cloudflare-ai-gateway.ts @@ -24,9 +24,15 @@ export const CloudflareAIGatewayPlugin = define({ apiKey: config.apiKey, options: gatewayOptions(evt.options, metadata), } as any) - const unified = createUnified({ apiKey: config.apiKey }) evt.sdk = { languageModel(modelID: string) { + // Workers AI is the only first-party provider whose upstream is Cloudflare itself, so it is + // the only one that should receive the Cloudflare token as its upstream Authorization header. + // The Unified API addresses Workers AI both with the explicit "workers-ai/" prefix and as + // bare "@cf/..." ids. Third-party providers must not receive the token; they rely on the + // gateway's stored/BYOK keys instead. + const isWorkersAi = modelID.startsWith("workers-ai/") || modelID.startsWith("@cf/") + const unified = createUnified(isWorkersAi ? { apiKey: config.apiKey } : {}) return gateway(unified(modelID)) }, } diff --git a/packages/opencode/src/plugin/cloudflare.ts b/packages/opencode/src/plugin/cloudflare.ts index c4bf6bb8e..2ccf5168d 100644 --- a/packages/opencode/src/plugin/cloudflare.ts +++ b/packages/opencode/src/plugin/cloudflare.ts @@ -61,16 +61,5 @@ export async function CloudflareAIGatewayAuthPlugin(_input: PluginInput): Promis }, ], }, - "chat.params": async (input, output) => { - if (input.model.providerID !== "cloudflare-ai-gateway") return - // The unified gateway routes through @ai-sdk/openai-compatible, which - // always emits max_tokens. OpenAI reasoning models (gpt-5.x, o-series) - // reject that field and require max_completion_tokens instead, and the - // compatible SDK has no way to rename it. Drop the cap so OpenAI falls - // back to the model's default output budget. - if (!input.model.api.id.toLowerCase().startsWith("openai/")) return - if (!input.model.capabilities.reasoning) return - output.maxOutputTokens = undefined - }, } } diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 85b7fd397..ab3ca72f2 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -800,9 +800,10 @@ function custom(dep: CustomDep): Record { ) } - // Use official ai-gateway-provider package (v2.x for AI SDK v5 compatibility) const { createAiGateway } = yield* Effect.promise(() => import("ai-gateway-provider")) const { createUnified } = yield* Effect.promise(() => import("ai-gateway-provider/providers/unified")) + const { createOpenAI } = yield* Effect.promise(() => import("ai-gateway-provider/providers/openai")) + const { createAnthropic } = yield* Effect.promise(() => import("ai-gateway-provider/providers/anthropic")) const metadata = iife(() => { if (input.options?.metadata) return input.options.metadata @@ -829,12 +830,24 @@ function custom(dep: CustomDep): Record { apiKey: apiToken, ...(Object.values(opts).some((v) => v !== undefined) ? { options: opts } : {}), }) - const unified = createUnified({ apiKey: apiToken }) - return { autoload: true, async getModel(_sdk: any, modelID: string, _options?: Record) { - // Model IDs use Unified API format: provider/model (e.g., "anthropic/claude-sonnet-4-5") + // Model IDs use Unified API format: provider/model (e.g., "anthropic/claude-sonnet-4-5"). + // OpenAI and Anthropic ride their native passthrough routes so agents get the Responses + // and Messages APIs; new OpenAI models reject tools+reasoning_effort on chat completions. + // The passthrough wrappers inject a CF_TEMP_TOKEN sentinel that the gateway strips before + // dispatch, so upstream billing stays on the gateway (Unified Billing / stored BYOK). + if (modelID.startsWith("openai/")) return aigateway(createOpenAI()(modelID.slice("openai/".length))) + if (modelID.startsWith("anthropic/")) + return aigateway(createAnthropic()(modelID.slice("anthropic/".length))) + // Workers AI is the only first-party provider whose upstream is Cloudflare itself, so it is + // the only one that should receive the Cloudflare token as its upstream Authorization header. + // The Unified API addresses Workers AI both with the explicit "workers-ai/" prefix and as + // bare "@cf/..." ids. Third-party providers must not receive the token; they rely on the + // gateway's stored/BYOK keys instead. + const isWorkersAi = modelID.startsWith("workers-ai/") || modelID.startsWith("@cf/") + const unified = createUnified(isWorkersAi ? { apiKey: apiToken } : {}) return aigateway(unified(modelID)) }, options: {}, @@ -1209,6 +1222,17 @@ function cost(c: ModelsDev.Model["cost"]): Model["cost"] { return result } +// Cloudflare AI Gateway routes OpenAI and Anthropic models through their native +// passthrough SDKs (Responses / Messages APIs). Resolving the native npm before +// variants are computed makes reasoning variants produce payloads the native +// SDKs understand (e.g. anthropic `effort` instead of compat `reasoningEffort`). +function cloudflareGatewayNpm(providerID: string, modelID: string) { + if (providerID !== "cloudflare-ai-gateway") return undefined + if (modelID.startsWith("openai/")) return "@ai-sdk/openai" + if (modelID.startsWith("anthropic/")) return "@ai-sdk/anthropic" + return undefined +} + function fromModelsDevModel(provider: ModelsDev.Provider, model: ModelsDev.Model): Model { const base: Model = { id: ModelV2.ID.make(model.id), @@ -1218,7 +1242,11 @@ function fromModelsDevModel(provider: ModelsDev.Provider, model: ModelsDev.Model api: { id: model.id, url: model.provider?.api ?? provider.api ?? "", - npm: model.provider?.npm ?? provider.npm ?? "@ai-sdk/openai-compatible", + npm: + cloudflareGatewayNpm(provider.id, model.id) ?? + model.provider?.npm ?? + provider.npm ?? + "@ai-sdk/openai-compatible", }, status: model.status ?? "active", headers: {}, @@ -1440,6 +1468,9 @@ const layer = Layer.effect( model.provider?.npm ?? provider.npm ?? existingModel?.api.npm ?? + // Config-defined gateway models bypass fromModelsDevModel, so resolve the + // native passthrough npm here before falling back to the catalog default. + cloudflareGatewayNpm(providerID, apiID) ?? modelsDev[providerID]?.npm ?? "@ai-sdk/openai-compatible" const name = iife(() => { @@ -1619,6 +1650,7 @@ const layer = Layer.effect( for (const [modelID, model] of Object.entries(provider.models)) { model.api.id = model.api.id ?? model.id ?? modelID + if ( // These chat aliases are invalid for the special handling in the // built-in providers below, but custom providers may support them. diff --git a/packages/opencode/test/plugin/cloudflare.test.ts b/packages/opencode/test/plugin/cloudflare.test.ts index 5fa410683..ab3d27df4 100644 --- a/packages/opencode/test/plugin/cloudflare.test.ts +++ b/packages/opencode/test/plugin/cloudflare.test.ts @@ -13,56 +13,13 @@ const pluginInput = { $: {} as never, } -function makeHookInput(overrides: { providerID?: string; apiId?: string; reasoning?: boolean }) { - return { - sessionID: "s", - agent: "a", - provider: {} as never, - message: {} as never, - model: { - providerID: overrides.providerID ?? "cloudflare-ai-gateway", - api: { id: overrides.apiId ?? "openai/gpt-5.2-codex", url: "", npm: "ai-gateway-provider" }, - capabilities: { - reasoning: overrides.reasoning ?? true, - temperature: false, - attachment: true, - toolcall: true, - input: { text: true, audio: false, image: false, video: false, pdf: false }, - output: { text: true, audio: false, image: false, video: false, pdf: false }, - interleaved: false, - }, - } as never, - } -} - -function makeHookOutput() { - return { temperature: 0, topP: 1, topK: 0, maxOutputTokens: 32_000 as number | undefined, options: {} } -} - -test("omits maxOutputTokens for openai reasoning models on cloudflare-ai-gateway", async () => { - const hooks = await CloudflareAIGatewayAuthPlugin(pluginInput) - const out = makeHookOutput() - await hooks["chat.params"]!(makeHookInput({ apiId: "openai/gpt-5.2-codex", reasoning: true }), out) - expect(out.maxOutputTokens).toBeUndefined() -}) - -test("keeps maxOutputTokens for openai non-reasoning models", async () => { - const hooks = await CloudflareAIGatewayAuthPlugin(pluginInput) - const out = makeHookOutput() - await hooks["chat.params"]!(makeHookInput({ apiId: "openai/gpt-4-turbo", reasoning: false }), out) - expect(out.maxOutputTokens).toBe(32_000) -}) - -test("keeps maxOutputTokens for non-openai reasoning models on cloudflare-ai-gateway", async () => { +test("registers the cloudflare-ai-gateway auth method", async () => { const hooks = await CloudflareAIGatewayAuthPlugin(pluginInput) - const out = makeHookOutput() - await hooks["chat.params"]!(makeHookInput({ apiId: "anthropic/claude-sonnet-4-5", reasoning: true }), out) - expect(out.maxOutputTokens).toBe(32_000) + expect(hooks.auth?.provider).toBe("cloudflare-ai-gateway") + expect(hooks.auth?.methods).toHaveLength(1) }) -test("ignores non-cloudflare-ai-gateway providers", async () => { +test("no longer drops maxOutputTokens; OpenAI models ride the Responses API passthrough", async () => { const hooks = await CloudflareAIGatewayAuthPlugin(pluginInput) - const out = makeHookOutput() - await hooks["chat.params"]!(makeHookInput({ providerID: "openai", apiId: "gpt-5.2-codex", reasoning: true }), out) - expect(out.maxOutputTokens).toBe(32_000) + expect(hooks["chat.params"]).toBeUndefined() }) diff --git a/packages/opencode/test/provider/cf-ai-gateway-e2e.test.ts b/packages/opencode/test/provider/cf-ai-gateway-e2e.test.ts index f062868c4..cb1654006 100644 --- a/packages/opencode/test/provider/cf-ai-gateway-e2e.test.ts +++ b/packages/opencode/test/provider/cf-ai-gateway-e2e.test.ts @@ -1,22 +1,26 @@ -// End-to-end regression test for opencode#24432. +// End-to-end regression tests for opencode#24432 and opencode#32051/#32052. // -// Routes through the actual ai-gateway-provider + @ai-sdk/openai-compatible -// chain that provider.ts:811 builds at runtime, with only the network boundary -// stubbed. Asserts that `reasoning_effort` (and other provider options the -// transform emits) actually land in the body Cloudflare AI Gateway forwards -// upstream, which is the only place the bug was observable. +// Routes through the actual ai-gateway-provider chain that provider.ts builds at +// runtime, with only the network boundary stubbed: +// - openai/* -> native OpenAI passthrough (Responses API) +// - anthropic/* -> native Anthropic passthrough (Messages API) +// - everything else -> unified /compat (openai-compatible chat completions) +// Asserts what actually lands in the envelope body Cloudflare AI Gateway +// forwards upstream, which is the only place these bugs were observable. import { afterEach, beforeEach, describe, expect, test } from "bun:test" import type { JSONValue } from "ai" import { generateText } from "ai" import { createAiGateway } from "ai-gateway-provider" import { createUnified } from "ai-gateway-provider/providers/unified" +import { createOpenAI } from "ai-gateway-provider/providers/openai" +import { createAnthropic } from "ai-gateway-provider/providers/anthropic" import { ProviderTransform } from "@/provider/transform" import type * as Provider from "@/provider/provider" import { ProviderV2 } from "@opencode-ai/core/provider" import { ModelV2 } from "@opencode-ai/core/model" -type Captured = { url: string; outerBody: unknown } +type Captured = { url: string; outerBody: unknown; headers: Record } type ProviderOptions = Record> const realFetch = globalThis.fetch @@ -26,24 +30,76 @@ function isRecord(value: unknown): value is Record { return typeof value === "object" && value !== null && !Array.isArray(value) } +// The gateway returns the upstream provider's response body verbatim, so the +// mock must answer in the wire format of the step's target provider. +function upstreamResponseBody(provider: string | undefined) { + if (provider === "openai") + return { + id: "resp_test", + object: "response", + created_at: 0, + model: "gpt-5.4", + status: "completed", + error: null, + incomplete_details: null, + output: [ + { + type: "message", + role: "assistant", + id: "msg_1", + status: "completed", + content: [{ type: "output_text", text: "ok", annotations: [] }], + }, + ], + usage: { + input_tokens: 1, + input_tokens_details: { cached_tokens: 0 }, + output_tokens: 1, + output_tokens_details: { reasoning_tokens: 0 }, + total_tokens: 2, + }, + } + if (provider === "anthropic") + return { + id: "msg_test", + type: "message", + role: "assistant", + model: "claude-sonnet-4-6", + content: [{ type: "text", text: "ok" }], + stop_reason: "end_turn", + stop_sequence: null, + usage: { input_tokens: 1, output_tokens: 1 }, + } + return { + id: "chatcmpl-test", + object: "chat.completion", + created: 0, + model: "test", + choices: [{ index: 0, message: { role: "assistant", content: "ok" }, finish_reason: "stop" }], + usage: { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 }, + } +} + beforeEach(() => { captured = null const handle = async (input: Parameters[0], init?: Parameters[1]): Promise => { const url = typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url if (url.startsWith("https://gateway.ai.cloudflare.com/")) { const bodyText = typeof init?.body === "string" ? init.body : "" - captured = { url, outerBody: bodyText ? JSON.parse(bodyText) : null } - return new Response( - JSON.stringify({ - id: "chatcmpl-test", - object: "chat.completion", - created: 0, - model: "openai/gpt-5.4", - choices: [{ index: 0, message: { role: "assistant", content: "ok" }, finish_reason: "stop" }], - usage: { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 }, - }), - { status: 200, headers: { "Content-Type": "application/json" } }, - ) + const outerBody = bodyText ? JSON.parse(bodyText) : null + captured = { + url, + outerBody, + headers: Object.fromEntries(new Headers(init?.headers).entries()), + } + const provider = + Array.isArray(outerBody) && isRecord(outerBody[0]) && typeof outerBody[0].provider === "string" + ? outerBody[0].provider + : undefined + return new Response(JSON.stringify(upstreamResponseBody(provider)), { + status: 200, + headers: { "Content-Type": "application/json" }, + }) } return realFetch(input, init) } @@ -56,11 +112,19 @@ afterEach(() => { globalThis.fetch = realFetch }) +// Mirrors the runtime npm rewrite in provider.ts: openai/anthropic models carry +// their native SDK package so transforms key provider options correctly. +const cfNpm = (apiId: string) => { + if (apiId.startsWith("openai/")) return "@ai-sdk/openai" + if (apiId.startsWith("anthropic/")) return "@ai-sdk/anthropic" + return "ai-gateway-provider" +} + const cfModel = (apiId: string, releaseDate = "2026-03-05"): Provider.Model => ({ id: ModelV2.ID.make(`cloudflare-ai-gateway/${apiId}`), providerID: ProviderV2.ID.make("cloudflare-ai-gateway"), name: apiId, - api: { id: apiId, url: "https://gateway.ai.cloudflare.com/v1/compat", npm: "ai-gateway-provider" }, + api: { id: apiId, url: "https://gateway.ai.cloudflare.com/v1/compat", npm: cfNpm(apiId) }, capabilities: { reasoning: true, temperature: false, @@ -80,53 +144,165 @@ const cfModel = (apiId: string, releaseDate = "2026-03-05"): Provider.Model => ( // ai-gateway-provider sends an array of step descriptors; each entry's `query` // is the body forwarded to the upstream provider. -function extractUpstreamQuery(body: unknown): Record | undefined { +function firstStep(body: unknown): Record | undefined { if (!Array.isArray(body) || body.length === 0) return undefined const first = body[0] - if (!isRecord(first)) return undefined - const query = first.query + return isRecord(first) ? first : undefined +} + +function extractUpstreamQuery(body: unknown): Record | undefined { + const query = firstStep(body)?.query return isRecord(query) ? query : undefined } -async function callThroughGateway(apiId: string, providerOptions: ProviderOptions) { - const aigateway = createAiGateway({ accountId: "test", gateway: "test", apiKey: "test" }) - const unified = createUnified() - await generateText({ model: aigateway(unified(apiId)), prompt: "hi", providerOptions }) +// Each step descriptor also carries the `headers` forwarded to the upstream provider. +function extractUpstreamHeaders(body: unknown): Record | undefined { + const headers = firstStep(body)?.headers + return isRecord(headers) ? headers : undefined +} + +// Mirrors the runtime routing in provider.ts getModel. +function gatewayModel(apiId: string, gatewayToken = "test") { + const aigateway = createAiGateway({ accountId: "test", gateway: "test", apiKey: gatewayToken }) + if (apiId.startsWith("openai/")) return aigateway(createOpenAI()(apiId.slice("openai/".length))) + if (apiId.startsWith("anthropic/")) return aigateway(createAnthropic()(apiId.slice("anthropic/".length))) + const isWorkersAi = apiId.startsWith("workers-ai/") || apiId.startsWith("@cf/") + const unified = createUnified(isWorkersAi ? { apiKey: gatewayToken } : {}) + return aigateway(unified(apiId)) +} + +async function callThroughGateway(apiId: string, providerOptions: ProviderOptions, gatewayToken = "test") { + await generateText({ model: gatewayModel(apiId, gatewayToken), prompt: "hi", providerOptions }) return extractUpstreamQuery(captured?.outerBody) } +describe("cf-ai-gateway routing", () => { + test("openai/* rides the native OpenAI passthrough on the Responses API", async () => { + await callThroughGateway("openai/gpt-5.4", {}) + const step = firstStep(captured?.outerBody) + expect(step?.provider).toBe("openai") + expect(step?.endpoint).toBe("v1/responses") + const upstream = extractUpstreamQuery(captured?.outerBody) + expect(upstream?.model).toBe("gpt-5.4") + }) + + test("anthropic/* rides the native Anthropic passthrough on the Messages API", async () => { + await callThroughGateway("anthropic/claude-sonnet-4-6", {}) + const step = firstStep(captured?.outerBody) + expect(step?.provider).toBe("anthropic") + expect(step?.endpoint).toBe("v1/messages") + const upstream = extractUpstreamQuery(captured?.outerBody) + expect(upstream?.model).toBe("claude-sonnet-4-6") + }) + + test("workers-ai models stay on the unified /compat route", async () => { + await callThroughGateway("workers-ai/@cf/moonshotai/kimi-k2.6", {}) + const step = firstStep(captured?.outerBody) + expect(step?.provider).toBe("compat") + expect(step?.endpoint).toBe("chat/completions") + const upstream = extractUpstreamQuery(captured?.outerBody) + expect(upstream?.model).toBe("workers-ai/@cf/moonshotai/kimi-k2.6") + }) +}) + describe("cf-ai-gateway end-to-end (regression: #24432)", () => { - test("ProviderTransform.providerOptions output puts reasoning_effort on the wire", async () => { - // The full chain the runtime exercises: - // transform.providerOptions() -> openaiCompatible key - // -> @ai-sdk/openai-compatible reads it as compatibleOptions - // -> emits body.reasoning_effort + test("ProviderTransform.providerOptions output puts reasoning effort on the Responses wire", async () => { + // The full chain the runtime exercises for OpenAI models: + // transform.providerOptions() -> "openai" key (npm rewritten to @ai-sdk/openai) + // -> OpenAIResponsesLanguageModel emits body.reasoning.effort // -> ai-gateway-provider wraps the body and forwards to gateway.ai.cloudflare.com const opts = ProviderTransform.providerOptions(cfModel("openai/gpt-5.4"), { reasoningEffort: "xhigh" }) - expect(opts).toEqual({ openaiCompatible: { reasoningEffort: "xhigh" } }) + expect(Object.keys(opts)).toEqual(["openai"]) + expect(opts.openai.reasoningEffort).toBe("xhigh") const upstream = await callThroughGateway("openai/gpt-5.4", opts) - expect(upstream?.reasoning_effort).toBe("xhigh") + expect((upstream?.reasoning as Record | undefined)?.effort).toBe("xhigh") }) test("variants() output for openai/gpt-5.4 lands xhigh on the wire", async () => { - // The other half of the bug: workflow `variant: xhigh` flows through variants() - // and must reach the wire. variants() returns the providerOptions payload - // unwrapped; providerOptions() wraps it under the SDK key. + // fromModelsDevModel resolves the native npm before computing variants, so + // OpenAI models get full Responses-flavored payloads (summary + encrypted + // reasoning include for stateless multi-turn reasoning). const variants = ProviderTransform.variants(cfModel("openai/gpt-5.4")) - expect(variants.xhigh).toEqual({ reasoningEffort: "xhigh" }) + expect(variants.xhigh).toEqual({ + reasoningEffort: "xhigh", + reasoningSummary: "auto", + include: ["reasoning.encrypted_content"], + }) const opts = ProviderTransform.providerOptions(cfModel("openai/gpt-5.4"), variants.xhigh) const upstream = await callThroughGateway("openai/gpt-5.4", opts) - expect(upstream?.reasoning_effort).toBe("xhigh") + const reasoning = upstream?.reasoning as Record | undefined + expect(reasoning?.effort).toBe("xhigh") + expect(reasoning?.summary).toBe("auto") + }) + + test("reasoning effort variants for anthropic models land as native adaptive thinking", async () => { + // Mirrors the runtime catalog path: models.dev reasoning_options -> reasoningVariants + // computed on the native @ai-sdk/anthropic npm -> adaptive thinking + output_config.effort. + const model = cfModel("anthropic/claude-sonnet-4-6") + const variants = ProviderTransform.reasoningVariants( + { reasoning_options: [{ type: "effort", values: ["low", "medium", "high"] }] } as never, + model, + ) + expect(variants?.high).toMatchObject({ effort: "high" }) + + const opts = ProviderTransform.providerOptions(model, variants!.high) + expect(Object.keys(opts)).toEqual(["anthropic"]) + + const upstream = await callThroughGateway("anthropic/claude-sonnet-4-6", opts) + expect((upstream?.thinking as Record | undefined)?.type).toBe("adaptive") + expect((upstream?.output_config as Record | undefined)?.effort).toBe("high") + }) + + test("reasoning_effort still reaches the /compat wire for workers-ai models", async () => { + const model = cfModel("workers-ai/@cf/moonshotai/kimi-k2.6") + const opts = ProviderTransform.providerOptions(model, { reasoningEffort: "high" }) + expect(opts).toEqual({ openaiCompatible: { reasoningEffort: "high" } }) + + const upstream = await callThroughGateway("workers-ai/@cf/moonshotai/kimi-k2.6", opts) + expect(upstream?.reasoning_effort).toBe("high") }) test("legacy buggy key 'cloudflare-ai-gateway' does NOT reach the wire (proves the bug)", async () => { // Sanity: confirms the bug class. If a future change accidentally restores // providerID-keyed providerOptions, this test fails before users notice. - const upstream = await callThroughGateway("openai/gpt-5.4", { + const upstream = await callThroughGateway("workers-ai/@cf/moonshotai/kimi-k2.6", { "cloudflare-ai-gateway": { reasoningEffort: "high" }, }) expect(upstream?.reasoning_effort).toBeUndefined() }) }) + +describe("cf-ai-gateway token scoping (regression: #32051/#32052)", () => { + test("openai passthrough does NOT forward the Cloudflare token upstream", async () => { + await callThroughGateway("openai/gpt-5.4", {}, "cf-gateway-secret") + + expect(captured?.headers["cf-aig-authorization"]).toBe("Bearer cf-gateway-secret") + // Security invariant: the Cloudflare token must never become the upstream provider's Authorization. + expect(extractUpstreamHeaders(captured?.outerBody)?.["authorization"]).toBeUndefined() + expect(JSON.stringify(captured?.outerBody)).not.toContain("cf-gateway-secret") + }) + + test("anthropic passthrough does NOT forward the Cloudflare token upstream", async () => { + await callThroughGateway("anthropic/claude-sonnet-4-6", {}, "cf-gateway-secret") + + expect(captured?.headers["cf-aig-authorization"]).toBe("Bearer cf-gateway-secret") + expect(extractUpstreamHeaders(captured?.outerBody)?.["x-api-key"]).toBeUndefined() + expect(JSON.stringify(captured?.outerBody)).not.toContain("cf-gateway-secret") + }) + + test("workers-ai models DO forward the Cloudflare token upstream", async () => { + await callThroughGateway("workers-ai/@cf/google/gemma-4-26b-a4b-it", {}, "cf-gateway-secret") + + expect(captured?.headers["cf-aig-authorization"]).toBe("Bearer cf-gateway-secret") + expect(extractUpstreamHeaders(captured?.outerBody)?.["authorization"]).toBe("Bearer cf-gateway-secret") + }) + + test("bare @cf/ Workers AI models DO forward the Cloudflare token upstream", async () => { + await callThroughGateway("@cf/meta/llama-3.1-8b-instruct", {}, "cf-gateway-secret") + + expect(captured?.headers["cf-aig-authorization"]).toBe("Bearer cf-gateway-secret") + expect(extractUpstreamHeaders(captured?.outerBody)?.["authorization"]).toBe("Bearer cf-gateway-secret") + }) +}) From 5a0e07efcf3135f7e16ba81ce6d61d01bb7c018f Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Mon, 17 Aug 2026 04:54:34 +0000 Subject: [PATCH 026/271] chore: generate --- packages/opencode/src/provider/provider.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index ab3ca72f2..0200b212b 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -839,8 +839,7 @@ function custom(dep: CustomDep): Record { // The passthrough wrappers inject a CF_TEMP_TOKEN sentinel that the gateway strips before // dispatch, so upstream billing stays on the gateway (Unified Billing / stored BYOK). if (modelID.startsWith("openai/")) return aigateway(createOpenAI()(modelID.slice("openai/".length))) - if (modelID.startsWith("anthropic/")) - return aigateway(createAnthropic()(modelID.slice("anthropic/".length))) + if (modelID.startsWith("anthropic/")) return aigateway(createAnthropic()(modelID.slice("anthropic/".length))) // Workers AI is the only first-party provider whose upstream is Cloudflare itself, so it is // the only one that should receive the Cloudflare token as its upstream Authorization header. // The Unified API addresses Workers AI both with the explicit "workers-ai/" prefix and as From 4d68d30b48a99379b2baaf597dbad576707ea36d Mon Sep 17 00:00:00 2001 From: Game On <71224180+GameOn223@users.noreply.github.com> Date: Mon, 17 Aug 2026 11:09:52 +0530 Subject: [PATCH 027/271] tweak: match codex limits for openai models exactly when using chatgpt subscription (#39082) --- packages/opencode/src/plugin/openai/codex.ts | 13 ++++--------- packages/opencode/test/plugin/codex.test.ts | 6 +++--- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/packages/opencode/src/plugin/openai/codex.ts b/packages/opencode/src/plugin/openai/codex.ts index d16b74956..7893b2c02 100644 --- a/packages/opencode/src/plugin/openai/codex.ts +++ b/packages/opencode/src/plugin/openai/codex.ts @@ -299,16 +299,11 @@ export async function CodexAuthPlugin(input: PluginInput, options: CodexAuthPlug output: 0, cache: { read: 0, write: 0 }, }, - limit: model.id.includes("gpt-5.5") - ? { - context: 400_000, - input: 272_000, - output: 128_000, - } - : model.id.includes("gpt-5.6") + limit: + model.id.includes("gpt-5.5") || model.id.includes("gpt-5.6") ? { - context: 500_000, - input: 372_000, + context: 400_000, + input: 272_000, output: 128_000, } : model.limit, diff --git a/packages/opencode/test/plugin/codex.test.ts b/packages/opencode/test/plugin/codex.test.ts index 1381c4ee8..30b7b7b44 100644 --- a/packages/opencode/test/plugin/codex.test.ts +++ b/packages/opencode/test/plugin/codex.test.ts @@ -181,9 +181,9 @@ describe("plugin.codex", () => { expect(models["gpt-5.4"]?.limit).toEqual(limit) expect(models["gpt-5.5"]?.limit).toEqual({ context: 400_000, input: 272_000, output: 128_000 }) - expect(models["gpt-5.6-sol"]?.limit).toEqual({ context: 500_000, input: 372_000, output: 128_000 }) - expect(models["gpt-5.6-terra"]?.limit).toEqual({ context: 500_000, input: 372_000, output: 128_000 }) - expect(models["gpt-5.6-luna"]?.limit).toEqual({ context: 500_000, input: 372_000, output: 128_000 }) + expect(models["gpt-5.6-sol"]?.limit).toEqual({ context: 400_000, input: 272_000, output: 128_000 }) + expect(models["gpt-5.6-terra"]?.limit).toEqual({ context: 400_000, input: 272_000, output: 128_000 }) + expect(models["gpt-5.6-luna"]?.limit).toEqual({ context: 400_000, input: 272_000, output: 128_000 }) expect(models["gpt-5.4-pro"]).toBeUndefined() expect(models["gpt-5.7-pro"]).toBeDefined() expect(models["gpt-5.6-sol-high"]).toBeDefined() From 2cba7e227d68a7e7e4a2aa9c85b808e8ecb14daf Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2026 13:31:33 +0200 Subject: [PATCH 028/271] fix(cli): update default console URL (#43043) Co-authored-by: Victor Navarro <36263538+vimtor@users.noreply.github.com> --- packages/core/src/plugin/provider/opencode.ts | 2 +- packages/opencode/src/cli/cmd/account.ts | 2 +- packages/opencode/test/cli/account.test.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/core/src/plugin/provider/opencode.ts b/packages/core/src/plugin/provider/opencode.ts index f07d72e5f..8e1cc1a0a 100644 --- a/packages/core/src/plugin/provider/opencode.ts +++ b/packages/core/src/plugin/provider/opencode.ts @@ -13,7 +13,7 @@ import { ConfigProviderV1 } from "../../v1/config/provider" import { ConfigProviderOptionsV1 } from "../../v1/config/provider-options" import { ConfigV1 } from "../../v1/config/config" -const defaultServer = "https://console.opencode.ai" +const defaultServer = "https://opencode.ai/console" const clientID = "opencode-cli" const methodID = Integration.MethodID.make("device") const RemoteResponse = Schema.Struct({ config: ConfigV1.Info }) diff --git a/packages/opencode/src/cli/cmd/account.ts b/packages/opencode/src/cli/cmd/account.ts index b9cbf5569..f439c1873 100644 --- a/packages/opencode/src/cli/cmd/account.ts +++ b/packages/opencode/src/cli/cmd/account.ts @@ -15,7 +15,7 @@ const dim = (value: string) => UI.Style.TEXT_DIM + value + UI.Style.TEXT_NORMAL const activeSuffix = (isActive: boolean) => (isActive ? dim(" (active)") : "") -export const defaultConsoleUrl = "https://console.opencode.ai" +export const defaultConsoleUrl = "https://opencode.ai/console" export const formatAccountLabel = (account: { email: string; url: string }, isActive: boolean) => `${account.email} ${dim(account.url)}${activeSuffix(isActive)}` diff --git a/packages/opencode/test/cli/account.test.ts b/packages/opencode/test/cli/account.test.ts index d491b77e1..dfce3bffe 100644 --- a/packages/opencode/test/cli/account.test.ts +++ b/packages/opencode/test/cli/account.test.ts @@ -4,8 +4,8 @@ import stripAnsi from "strip-ansi" import { defaultConsoleUrl, formatAccountLabel, formatOrgLine } from "../../src/cli/cmd/account" describe("console account display", () => { - test("uses console.opencode.ai as the default login URL", () => { - expect(defaultConsoleUrl).toBe("https://console.opencode.ai") + test("uses opencode.ai/console as the default login URL", () => { + expect(defaultConsoleUrl).toBe("https://opencode.ai/console") }) test("includes the account url in account labels", () => { From a97fec8af5c5389b7d3d688732478298f1a88219 Mon Sep 17 00:00:00 2001 From: Filip <34747899+neriousy@users.noreply.github.com> Date: Mon, 17 Aug 2026 19:03:28 +0200 Subject: [PATCH 029/271] fix: codex data residency (#42432) --- packages/opencode/src/plugin/openai/codex.ts | 20 +- packages/opencode/test/plugin/codex.test.ts | 174 +++++++++++++++++- .../opencode/test/plugin/openai-ws.test.ts | 7 +- packages/web/src/content/docs/providers.mdx | 4 + 4 files changed, 195 insertions(+), 10 deletions(-) diff --git a/packages/opencode/src/plugin/openai/codex.ts b/packages/opencode/src/plugin/openai/codex.ts index 7893b2c02..2ae34ac42 100644 --- a/packages/opencode/src/plugin/openai/codex.ts +++ b/packages/opencode/src/plugin/openai/codex.ts @@ -37,10 +37,12 @@ function base64UrlEncode(buffer: ArrayBuffer): string { export interface IdTokenClaims { chatgpt_account_id?: string + chatgpt_compute_residency?: string organizations?: Array<{ id: string }> email?: string "https://api.openai.com/auth"?: { chatgpt_account_id?: string + chatgpt_compute_residency?: string } } @@ -75,6 +77,14 @@ export function extractAccountId(tokens: TokenResponse): string | undefined { return undefined } +export function extractResidency(token: string): string | undefined { + const claims = parseJwtClaims(token) + const residency = + claims?.["https://api.openai.com/auth"]?.chatgpt_compute_residency ?? claims?.chatgpt_compute_residency + if (!residency || residency === "no_constraint") return undefined + return residency +} + function buildAuthorizeUrl(redirectUri: string, pkce: PkceCodes, state: string): string { const params = new URLSearchParams({ response_type: "code", @@ -406,10 +416,12 @@ export async function CodexAuthPlugin(input: PluginInput, options: CodexAuthPlug requestInput instanceof URL ? requestInput : new URL(typeof requestInput === "string" ? requestInput : requestInput.url) - const url = - parsed.pathname.includes("/v1/responses") || parsed.pathname.includes("/chat/completions") - ? new URL(codexApiEndpoint) - : parsed + const rewrite = parsed.pathname.includes("/v1/responses") || parsed.pathname.includes("/chat/completions") + const url = rewrite ? new URL(codexApiEndpoint) : parsed + if (rewrite) { + const residency = extractResidency(currentAuth.access) + if (residency) headers.set("x-openai-internal-codex-residency", residency) + } const requestInit = { ...init, diff --git a/packages/opencode/test/plugin/codex.test.ts b/packages/opencode/test/plugin/codex.test.ts index 30b7b7b44..fbc9df593 100644 --- a/packages/opencode/test/plugin/codex.test.ts +++ b/packages/opencode/test/plugin/codex.test.ts @@ -1,9 +1,13 @@ import { describe, expect, test } from "bun:test" +import { createServer, type IncomingMessage } from "node:http" +import { type AddressInfo } from "node:net" +import { WebSocketServer } from "ws" import { CodexAuthPlugin, parseJwtClaims, extractAccountIdFromClaims, extractAccountId, + extractResidency, renderOAuthError, type IdTokenClaims, } from "../../src/plugin/openai/codex" @@ -131,6 +135,69 @@ describe("plugin.codex", () => { }) }) + describe("extractResidency", () => { + test("extracts compute residency from the namespaced auth claims", () => { + expect( + extractResidency( + createTestJwt({ + "https://api.openai.com/auth": { chatgpt_compute_residency: "eu" }, + }), + ), + ).toBe("eu") + }) + + test("falls back to a root compute residency claim", () => { + expect(extractResidency(createTestJwt({ chatgpt_compute_residency: "us" }))).toBe("us") + }) + + test("supports compute residency values without maintaining a region list", () => { + expect( + extractResidency( + createTestJwt({ + "https://api.openai.com/auth": { chatgpt_compute_residency: "ae" }, + }), + ), + ).toBe("ae") + expect( + extractResidency( + createTestJwt({ + "https://api.openai.com/auth": { chatgpt_compute_residency: "future-region_1" }, + }), + ), + ).toBe("future-region_1") + }) + + test("ignores unconstrained and data residency values", () => { + expect( + extractResidency( + createTestJwt({ + "https://api.openai.com/auth": { chatgpt_compute_residency: "no_constraint" }, + }), + ), + ).toBeUndefined() + expect( + extractResidency( + createTestJwt({ + "https://api.openai.com/auth": { chatgpt_data_residency: "gb" }, + }), + ), + ).toBeUndefined() + expect(extractResidency(createTestJwt({ chatgpt_compute_residency: "" }))).toBeUndefined() + expect(extractResidency("not-a-jwt")).toBeUndefined() + }) + + test("prefers a namespaced unconstrained value over a root residency", () => { + expect( + extractResidency( + createTestJwt({ + chatgpt_compute_residency: "eu", + "https://api.openai.com/auth": { chatgpt_compute_residency: "no_constraint" }, + }), + ), + ).toBeUndefined() + }) + }) + test("installs websocket transport only when experimental websockets are enabled", async () => { const disabled = await CodexAuthPlugin({} as never) const enabled = await CodexAuthPlugin({} as never, { experimentalWebSockets: true }) @@ -149,6 +216,73 @@ describe("plugin.codex", () => { await enabled.dispose?.() }) + test("sends token residency only to the ChatGPT Codex backend", async () => { + const requests: Array<{ path: string; residency: string | null }> = [] + using server = Bun.serve({ + port: 0, + fetch(request) { + requests.push({ + path: new URL(request.url).pathname, + residency: request.headers.get("x-openai-internal-codex-residency"), + }) + return new Response("{}") + }, + }) + const hooks = await CodexAuthPlugin({} as never, { + codexApiEndpoint: new URL("/backend-api/codex/responses", server.url).toString(), + }) + const loaded = await hooks.auth!.loader!( + async () => + ({ + type: "oauth", + refresh: "refresh", + access: createTestJwt({ + "https://api.openai.com/auth": { chatgpt_compute_residency: "eu" }, + }), + expires: Date.now() + 60_000, + }) as never, + {} as never, + ) + + await loaded.fetch!("https://api.openai.com/v1/responses") + await loaded.fetch!(new URL("/other", server.url)) + + expect(requests).toEqual([ + { path: "/backend-api/codex/responses", residency: "eu" }, + { path: "/other", residency: null }, + ]) + }) + + test("sends token residency through the WebSocket transport", async () => { + await using server = await createCodexWebSocketServer() + const hooks = await CodexAuthPlugin({} as never, { + codexApiEndpoint: server.url, + experimentalWebSockets: true, + }) + const loaded = await hooks.auth!.loader!( + async () => + ({ + type: "oauth", + refresh: "refresh", + access: createTestJwt({ + "https://api.openai.com/auth": { chatgpt_compute_residency: "eu" }, + }), + expires: Date.now() + 60_000, + }) as never, + {} as never, + ) + + const response = await loaded.fetch!("https://api.openai.com/v1/responses", { + method: "POST", + headers: { "session-id": "session-1" }, + body: JSON.stringify({ stream: true, input: "hi" }), + }) + + expect(await response.text()).toContain("data: [DONE]") + expect(server.headers()?.["x-openai-internal-codex-residency"]).toBe("eu") + await hooks.dispose?.() + }) + test("filters unsupported modes and uses Codex context limits for OAuth GPT models", async () => { const hooks = await CodexAuthPlugin({} as never) const limit = { context: 1_050_000, input: 922_000, output: 128_000 } @@ -193,6 +327,9 @@ describe("plugin.codex", () => { }) test("deduplicates concurrent Codex token refreshes", async () => { + const refreshedAccess = createTestJwt({ + "https://api.openai.com/auth": { chatgpt_compute_residency: "eu" }, + }) let auth = { type: "oauth" as const, refresh: "refresh-old", @@ -207,7 +344,7 @@ describe("plugin.codex", () => { resolveRefresh = resolve }) let refreshRequests = 0 - const apiRequests: { authorization: string | null; accountId: string | null }[] = [] + const apiRequests: { authorization: string | null; accountId: string | null; residency: string | null }[] = [] using server = Bun.serve({ port: 0, @@ -219,7 +356,7 @@ describe("plugin.codex", () => { await refreshReady return Response.json({ id_token: createTestJwt({ chatgpt_account_id: "acc-123" }), - access_token: "access-new", + access_token: refreshedAccess, refresh_token: "refresh-new", expires_in: 3600, }) @@ -229,6 +366,7 @@ describe("plugin.codex", () => { apiRequests.push({ authorization: request.headers.get("authorization"), accountId: request.headers.get("ChatGPT-Account-Id"), + residency: request.headers.get("x-openai-internal-codex-residency"), }) return new Response("{}", { status: 200 }) } @@ -281,11 +419,11 @@ describe("plugin.codex", () => { expect(refreshRequests).toBe(1) expect(authUpdates).toHaveLength(1) expect(authUpdates[0]?.body.refresh).toBe("refresh-new") - expect(authUpdates[0]?.body.access).toBe("access-new") + expect(authUpdates[0]?.body.access).toBe(refreshedAccess) expect(authUpdates[0]?.body.accountId).toBe("acc-123") expect(apiRequests).toEqual([ - { authorization: "Bearer access-new", accountId: "acc-123" }, - { authorization: "Bearer access-new", accountId: "acc-123" }, + { authorization: `Bearer ${refreshedAccess}`, accountId: "acc-123", residency: "eu" }, + { authorization: `Bearer ${refreshedAccess}`, accountId: "acc-123", residency: "eu" }, ]) }) }) @@ -297,3 +435,29 @@ async function waitFor(predicate: () => boolean) { await new Promise((resolve) => setTimeout(resolve, 1)) } } + +async function createCodexWebSocketServer() { + let headers: IncomingMessage["headers"] | undefined + const server = createServer() + const sockets = new WebSocketServer({ server }) + sockets.on("connection", (socket, request) => { + headers = request.headers + socket.once("message", () => { + socket.send(JSON.stringify({ type: "response.completed", response: { id: "resp_123" } })) + }) + }) + await new Promise((resolve, reject) => { + server.once("error", reject) + server.listen(0, "127.0.0.1", resolve) + }) + const address = server.address() as AddressInfo + return { + url: `http://127.0.0.1:${address.port}/backend-api/codex/responses`, + headers: () => headers, + async [Symbol.asyncDispose]() { + for (const socket of sockets.clients) socket.terminate() + sockets.close() + server.close() + }, + } +} diff --git a/packages/opencode/test/plugin/openai-ws.test.ts b/packages/opencode/test/plugin/openai-ws.test.ts index 7a125824e..e8025d0a9 100644 --- a/packages/opencode/test/plugin/openai-ws.test.ts +++ b/packages/opencode/test/plugin/openai-ws.test.ts @@ -17,13 +17,18 @@ describe("plugin.openai.ws", () => { const socket = await OpenAIWebSocket.connectResponsesWebSocket({ url: server.wsUrl, - headers: { authorization: "Bearer test", "content-length": "123" }, + headers: { + authorization: "Bearer test", + "content-length": "123", + "x-openai-internal-codex-residency": "eu", + }, }) expect(OpenAIWebSocket.toWebSocketUrl("http://example.com/v1/responses")).toBe("ws://example.com/v1/responses") expect(OpenAIWebSocket.toWebSocketUrl("https://example.com/v1/responses")).toBe("wss://example.com/v1/responses") expect(headers?.authorization).toBe("Bearer test") expect(headers?.["openai-beta"]).toBe(OpenAIWebSocket.PROTOCOL_HEADER) + expect(headers?.["x-openai-internal-codex-residency"]).toBe("eu") expect(headers?.["content-length"]).toBeUndefined() socket.terminate() }) diff --git a/packages/web/src/content/docs/providers.mdx b/packages/web/src/content/docs/providers.mdx index 1a5d0fd23..e7be6f3a7 100644 --- a/packages/web/src/content/docs/providers.mdx +++ b/packages/web/src/content/docs/providers.mdx @@ -1718,6 +1718,10 @@ We recommend signing up for [ChatGPT Plus or Pro](https://chatgpt.com/pricing). /models ``` +##### Compute residency + +For ChatGPT OAuth, OpenCode automatically applies a regional inference residency requirement when one is advertised by your workspace credentials. It forwards the compute residency value from the credential instead of maintaining a fixed list of regions. Data residency at rest does not imply regional inference. + ##### Using API keys If you already have an API key, you can select **Manually enter API Key** and paste it in your terminal. From 7af274a92102196e73193c5b6de6f0d2aedfff46 Mon Sep 17 00:00:00 2001 From: Filip <34747899+neriousy@users.noreply.github.com> Date: Mon, 17 Aug 2026 20:36:00 +0200 Subject: [PATCH 030/271] fix(core): fall back on oversized websocket requests (#43099) --- .../opencode/src/plugin/openai/ws-pool.ts | 5 +++-- packages/opencode/src/plugin/openai/ws.ts | 10 ++++++---- .../opencode/test/plugin/openai-ws.test.ts | 20 +++++++++++++++++++ 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/packages/opencode/src/plugin/openai/ws-pool.ts b/packages/opencode/src/plugin/openai/ws-pool.ts index 3cbb29a30..939c2dc23 100644 --- a/packages/opencode/src/plugin/openai/ws-pool.ts +++ b/packages/opencode/src/plugin/openai/ws-pool.ts @@ -110,10 +110,11 @@ export function createWebSocketFetch(options?: CreateWebSocketFetchOptions) { invalidate(entry) } }, - onConnectionInvalid: (error) => { + onConnectionInvalid: (_error, closeCode) => { entry.busy = false entry.lastUsedAt = Date.now() - if (!entry.fallback) recordStreamFailure(entry) + if (closeCode === OpenAIWebSocket.MESSAGE_TOO_BIG_CLOSE_CODE) entry.fallback = true + else if (!entry.fallback) recordStreamFailure(entry) invalidate(entry) resolveFirstEvent(false) }, diff --git a/packages/opencode/src/plugin/openai/ws.ts b/packages/opencode/src/plugin/openai/ws.ts index 578d00b8c..4335d9215 100644 --- a/packages/opencode/src/plugin/openai/ws.ts +++ b/packages/opencode/src/plugin/openai/ws.ts @@ -9,6 +9,7 @@ import { ProxyEnv } from "@/util/proxy-env" import { isRecord } from "@/util/record" export const PROTOCOL_HEADER = "responses_websockets=2026-02-06" +export const MESSAGE_TOO_BIG_CLOSE_CODE = 1009 export interface ConnectResponsesWebSocketOptions { url: string @@ -26,7 +27,7 @@ export interface StreamResponsesWebSocketOptions { onComplete?: (event: Record) => void onTerminal?: (event: Record) => void onRetryableTerminal?: (event: Record) => Promise - onConnectionInvalid?: (error: ProviderError.ResponseStreamError) => void + onConnectionInvalid?: (error: ProviderError.ResponseStreamError, closeCode?: number) => void onAbort?: (error: Error) => void } @@ -162,11 +163,11 @@ export function streamResponsesWebSocket(options: StreamResponsesWebSocketOption controller?.close() } - function invalidate(error: ProviderError.ResponseStreamError) { + function invalidate(error: ProviderError.ResponseStreamError, closeCode?: number) { if (completed) return completed = true cleanup() - options.onConnectionInvalid?.(error) + options.onConnectionInvalid?.(error, closeCode) controller?.error(error) } @@ -274,6 +275,7 @@ export function streamResponsesWebSocket(options: StreamResponsesWebSocketOption if (completed) return invalidate( new ProviderError.ResponseStreamError(closeMessage("WebSocket closed before response.completed", code, reason)), + code, ) } @@ -373,7 +375,7 @@ function abortError(signal: AbortSignal | undefined) { function closeMessage(message: string, code: number, reason: Buffer) { const details = [`code ${code}`] - if (code === 1009) details.push("message too big") + if (code === MESSAGE_TOO_BIG_CLOSE_CODE) details.push("message too big") if (reason.length > 0) details.push(reason.toString()) return `${message} (${details.join(": ")})` } diff --git a/packages/opencode/test/plugin/openai-ws.test.ts b/packages/opencode/test/plugin/openai-ws.test.ts index e8025d0a9..e88d0620f 100644 --- a/packages/opencode/test/plugin/openai-ws.test.ts +++ b/packages/opencode/test/plugin/openai-ws.test.ts @@ -237,6 +237,26 @@ describe("plugin.openai.ws-pool", () => { fetch.close() }) + test("falls back immediately to HTTP when a websocket request is too large", async () => { + let connections = 0 + await using server = await createWebSocketServer((socket) => { + connections += 1 + socket.once("message", () => socket.close(1009, "payload too large")) + }) + const fetch = OpenAIWebSocketPool.createWebSocketFetch({ + url: server.url, + }) + + const first = await fetch(server.url, streamRequest()) + const second = await fetch(server.url, streamRequest()) + + expect(await first.text()).toBe("http") + expect(await second.text()).toBe("http") + expect(connections).toBe(1) + expect(server.httpRequests).toHaveLength(2) + fetch.close() + }) + test("removes HTTP fallback when its session is deleted", async () => { let websocketAttempts = 0 await using server = await createRejectingWebSocketServer(() => websocketAttempts++) From e14acea58108ad97fef5dcc179a359d9d0f75eac Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 17 Aug 2026 14:54:03 -0400 Subject: [PATCH 031/271] update ds flash limit --- packages/console/app/src/routes/go/index.tsx | 2 +- packages/web/src/content/docs/ar/go.mdx | 6 +++--- packages/web/src/content/docs/bs/go.mdx | 6 +++--- packages/web/src/content/docs/da/go.mdx | 6 +++--- packages/web/src/content/docs/de/go.mdx | 6 +++--- packages/web/src/content/docs/es/go.mdx | 6 +++--- packages/web/src/content/docs/fr/go.mdx | 6 +++--- packages/web/src/content/docs/go.mdx | 6 +++--- packages/web/src/content/docs/it/go.mdx | 6 +++--- packages/web/src/content/docs/ja/go.mdx | 6 +++--- packages/web/src/content/docs/ko/go.mdx | 6 +++--- packages/web/src/content/docs/nb/go.mdx | 6 +++--- packages/web/src/content/docs/pl/go.mdx | 6 +++--- packages/web/src/content/docs/pt-br/go.mdx | 6 +++--- packages/web/src/content/docs/ru/go.mdx | 6 +++--- packages/web/src/content/docs/th/go.mdx | 6 +++--- packages/web/src/content/docs/tr/go.mdx | 6 +++--- packages/web/src/content/docs/zh-cn/go.mdx | 6 +++--- packages/web/src/content/docs/zh-tw/go.mdx | 6 +++--- 19 files changed, 55 insertions(+), 55 deletions(-) diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index 518475d4a..cb783e590 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -73,10 +73,10 @@ function LimitsGraph(props: { href: string }) { { id: "glm-5.2", name: "GLM-5.2", req: 880, d: "100ms" }, { id: "deepseek-v4-pro", name: "DeepSeek V4 Pro", req: 1050, d: "150ms" }, { id: "minimax-m3", name: "MiniMax M3", req: 3200, d: "210ms" }, - { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", req: 3800, d: "270ms" }, { id: "gpt-5.6-luna", name: "GPT 5.6 Luna", req: 4100, baseReq: 2050, d: "290ms" }, { id: "qwen3.7-plus", name: "Qwen3.7 Plus", req: 4300, d: "300ms" }, { id: "hy3", name: "Hy3", req: 4300, d: "320ms" }, + { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", req: 7600, d: "330ms" }, { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100, edge: true, d: "340ms" }, ] diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 95648c237..73074e25b 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -104,7 +104,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | تستند التقديرات إلى أنماط الطلبات المرصودة: @@ -152,8 +152,8 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC؛ وجميع الساعات الأخرى Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 8a7118351..f6a93a225 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -114,7 +114,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | Procjene se zasnivaju na zapaženim obrascima zahtjeva: @@ -162,8 +162,8 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC; svi ostali sati su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 74d76ad77..6efe8dcae 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -114,7 +114,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | Estimaterne er baseret på observerede anmodningsmønstre: @@ -162,8 +162,8 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index 2b2f4633b..90c374176 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -106,7 +106,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | Die Schätzungen basieren auf beobachteten Anfragemustern: @@ -154,8 +154,8 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Die Peak-Zeiten sind 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index e880b74c2..0df85995f 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -114,7 +114,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | Las estimaciones se basan en los patrones de peticiones observados: @@ -162,8 +162,8 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC; todas las demás horas son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index ad7b9a55e..348657c5e 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -104,7 +104,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | Les estimations sont basées sur les schémas de requêtes observés : @@ -152,8 +152,8 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC ; toutes les autres heures sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 43c0ae879..7a3acccc7 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -114,7 +114,7 @@ The table below provides an estimated request count based on typical Go usage pa | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | The estimates are based on observed request patterns: @@ -162,8 +162,8 @@ The estimates are also based on the following prices per 1M tokens and the month | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC; all other hours are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index ecba84718..ba0def337 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -112,7 +112,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | Le stime si basano sui pattern di richieste osservati: @@ -160,8 +160,8 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC; tutti gli altri orari sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 77f416cd3..1ae8af391 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -104,7 +104,7 @@ OpenCode Goには以下の制限が含まれています: | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | 推定値は、観測されたリクエストパターンに基づいています: @@ -152,8 +152,8 @@ OpenCode Goには以下の制限が含まれています: | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Peak時間は01:00-04:00と06:00-10:00 UTCで、それ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index f6046abbe..bc54ffdb7 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -104,7 +104,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | 이 예상치는 관찰된 요청 패턴을 기준으로 합니다. @@ -152,8 +152,8 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Peak 시간은 01:00-04:00 및 06:00-10:00 UTC이며, 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index e74df268a..83f5844f6 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -114,7 +114,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | Estimatene er basert på observerte forespørselsmønstre: @@ -162,8 +162,8 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 2d17b4f64..f0ab465f6 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -108,7 +108,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | Szacunki te opierają się na zaobserwowanych wzorcach żądań: @@ -156,8 +156,8 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC; wszystkie pozostałe godziny to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index a7b43e613..8dd621ad0 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -114,7 +114,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | As estimativas se baseiam nos padrões de requisições observados: @@ -162,8 +162,8 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC; todos os demais horários são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 561d868f9..9bec800aa 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -114,7 +114,7 @@ OpenCode Go включает следующие лимиты: | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | Эти оценки основаны на наблюдаемых показателях запросов: @@ -162,8 +162,8 @@ OpenCode Go включает следующие лимиты: | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Часы Peak: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 5361f6e70..856b6a31c 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -104,7 +104,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | การประมาณการนี้อ้างอิงจากรูปแบบการใช้งาน request ที่สังเกตพบ: @@ -152,8 +152,8 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ส่วนเวลาอื่นทั้งหมดเป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 6f0f872c7..6603fe4b4 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -104,7 +104,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | Tahminler, gözlemlenen istek modellerine dayanır: @@ -152,8 +152,8 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Peak saatleri 01:00-04:00 ve 06:00-10:00 UTC'dir; diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 80b9a10d9..14338ff85 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -104,7 +104,7 @@ OpenCode Go 包含以下限制: | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | 预估值基于观察到的请求模式: @@ -152,8 +152,8 @@ OpenCode Go 包含以下限制: | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Peak 时段为 01:00-04:00 和 06:00-10:00 UTC;其他所有时段均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index b8d45f24a..9ee9676ab 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -104,7 +104,7 @@ OpenCode Go 包含以下限制: | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 3,800 | 9,450 | 18,900 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | Hy3 | 4,300 | 10,750 | 21,500 | 這些預估值是基於觀察到的請求模式: @@ -152,8 +152,8 @@ OpenCode Go 包含以下限制: | Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | | DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / Pro:** Peak 時段為 01:00-04:00 和 06:00-10:00 UTC;其他所有時段均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 From 57075d8cdc1d9099c3f806d5e21ffe9c0853aae3 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2026 14:11:23 -0500 Subject: [PATCH 032/271] fix(provider): update Google Vertex SDK (#43108) Co-authored-by: Aiden Cline --- bun.lock | 30 +++++++++++------------------- packages/core/package.json | 2 +- packages/opencode/package.json | 2 +- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/bun.lock b/bun.lock index d2a4a7745..77ec28a1a 100644 --- a/bun.lock +++ b/bun.lock @@ -301,7 +301,7 @@ "@ai-sdk/deepinfra": "2.0.41", "@ai-sdk/gateway": "3.0.104", "@ai-sdk/google": "3.0.73", - "@ai-sdk/google-vertex": "4.0.128", + "@ai-sdk/google-vertex": "4.0.181", "@ai-sdk/groq": "3.0.31", "@ai-sdk/mistral": "3.0.51", "@ai-sdk/openai": "3.0.84", @@ -576,7 +576,7 @@ "@ai-sdk/deepinfra": "2.0.41", "@ai-sdk/gateway": "3.0.104", "@ai-sdk/google": "3.0.73", - "@ai-sdk/google-vertex": "4.0.128", + "@ai-sdk/google-vertex": "4.0.181", "@ai-sdk/groq": "3.0.31", "@ai-sdk/mistral": "3.0.51", "@ai-sdk/openai": "3.0.84", @@ -1197,7 +1197,7 @@ "@ai-sdk/google": ["@ai-sdk/google@3.0.73", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-o2MuIeyvZrFIeIbnbA8Thrr63irdyUBh0uWBZ2lY6yFeXuE/tcwyXF74bDKS4KvTu84uFpQfpbS/LXHGKKXz+g=="], - "@ai-sdk/google-vertex": ["@ai-sdk/google-vertex@4.0.128", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.77", "@ai-sdk/google": "3.0.73", "@ai-sdk/openai-compatible": "2.0.47", "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27", "google-auth-library": "^10.5.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-jK8fixb4km2yfgvb9DUFQRpV/jiDB0v9gyxHoHfPydaQvz+CpAz8DTt1quyaM+Wg9G2R8Zo68CYmHbIkUqW2AA=="], + "@ai-sdk/google-vertex": ["@ai-sdk/google-vertex@4.0.181", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.110", "@ai-sdk/google": "3.0.108", "@ai-sdk/openai-compatible": "2.0.67", "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45", "google-auth-library": "^10.5.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-57b5Qor8V53vubkxCj09tbHWpzpCLUbzmll2FwShuLvyEAsCH6mh3sAowDhiwUWPXnLzU+rC3RVMKCPscqICcg=="], "@ai-sdk/groq": ["@ai-sdk/groq@3.0.31", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-XbbugpnFmXGu2TlXiq8KUJskP6/VVbuFcnFIGDzDIB/Chg6XHsNnqrTF80Zxkh0Pd3+NvbM+2Uqrtsndk6bDAg=="], @@ -5691,13 +5691,15 @@ "@ai-sdk/google/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], - "@ai-sdk/google-vertex/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.77", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ML8C2M1YvPA1ulEx4TiyF0k1xvC2ikEiPBIC1PPQ0a5xELUGrO2lAaEzsTEoJ+eCeDd8PSBuFJjs+r+9yIwQXA=="], + "@ai-sdk/google-vertex/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.110", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-rNkamQCeAUOUGr5Npg5pXZyYFH4fS1U6Mbdy3dF/NNBEI3D2Chc/ruRrwNegP0gfpX3cllP3O4jSibGBbWPZ7A=="], - "@ai-sdk/google-vertex/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.47", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Enm5UlL0zUCrW3792opk5h7hRWxZOZzDe6eQYVFqX9LUOGGCe1h8MZWAGim765nwzgnjlpeYOsuzZmLtRsTPlg=="], + "@ai-sdk/google-vertex/@ai-sdk/google": ["@ai-sdk/google@3.0.108", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kwvYpRNghqt0VRKE7Hx1UWZQCUJJFqUITj24baxy+ApS0Hru0PkBJHD75a36Wc+e6e+wHcKR2MconTeJiBZigA=="], - "@ai-sdk/google-vertex/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@ai-sdk/google-vertex/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.67", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-glcEJC2mBXJKj7joFI0fRhcbdDYKTBgXMPcT6Vcnlym67tTzuNG9pFx3zblxVv8TdOxhojJja5zGG19yeGJxuA=="], - "@ai-sdk/google-vertex/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@ai-sdk/google-vertex/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], + + "@ai-sdk/google-vertex/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], "@ai-sdk/groq/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], @@ -6181,8 +6183,6 @@ "ai-gateway-provider/@ai-sdk/google": ["@ai-sdk/google@3.0.108", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kwvYpRNghqt0VRKE7Hx1UWZQCUJJFqUITj24baxy+ApS0Hru0PkBJHD75a36Wc+e6e+wHcKR2MconTeJiBZigA=="], - "ai-gateway-provider/@ai-sdk/google-vertex": ["@ai-sdk/google-vertex@4.0.181", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.110", "@ai-sdk/google": "3.0.108", "@ai-sdk/openai-compatible": "2.0.67", "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45", "google-auth-library": "^10.5.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-57b5Qor8V53vubkxCj09tbHWpzpCLUbzmll2FwShuLvyEAsCH6mh3sAowDhiwUWPXnLzU+rC3RVMKCPscqICcg=="], - "ai-gateway-provider/@ai-sdk/groq": ["@ai-sdk/groq@3.0.59", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-X4h60TGq4pIOXPsthatUr+bfTaYCaKGX597hG9JgcueEl4+nboCdw99ixjFKGkvYlBJwLCCfI957EmGA2QlF0w=="], "ai-gateway-provider/@ai-sdk/openai": ["@ai-sdk/openai@3.0.84", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.38" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cmgbeJL0bbY0yTJH4/AdmP5E7MjWRL9G8UdhIi0JlV/So03o82ORJofW8OzwCZPTORVQblFbpZXYGDcUd9NdUQ=="], @@ -6615,6 +6615,8 @@ "@ai-sdk/google-vertex/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@ai-sdk/google-vertex/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + "@ai-sdk/google/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], "@ai-sdk/groq/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], @@ -7015,12 +7017,6 @@ "ai-gateway-provider/@ai-sdk/google/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], - "ai-gateway-provider/@ai-sdk/google-vertex/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.67", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-glcEJC2mBXJKj7joFI0fRhcbdDYKTBgXMPcT6Vcnlym67tTzuNG9pFx3zblxVv8TdOxhojJja5zGG19yeGJxuA=="], - - "ai-gateway-provider/@ai-sdk/google-vertex/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], - - "ai-gateway-provider/@ai-sdk/google-vertex/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], - "ai-gateway-provider/@ai-sdk/groq/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], "ai-gateway-provider/@ai-sdk/groq/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], @@ -7463,10 +7459,6 @@ "ai-gateway-provider/@ai-sdk/cohere/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], - "ai-gateway-provider/@ai-sdk/google-vertex/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - - "ai-gateway-provider/@ai-sdk/google-vertex/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], - "ai-gateway-provider/@ai-sdk/google/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], "ai-gateway-provider/@ai-sdk/google/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], diff --git a/packages/core/package.json b/packages/core/package.json index ee24893c3..031fd95d0 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -70,7 +70,7 @@ "@ai-sdk/deepinfra": "2.0.41", "@ai-sdk/gateway": "3.0.104", "@ai-sdk/google": "3.0.73", - "@ai-sdk/google-vertex": "4.0.128", + "@ai-sdk/google-vertex": "4.0.181", "@ai-sdk/groq": "3.0.31", "@ai-sdk/mistral": "3.0.51", "@ai-sdk/openai": "3.0.84", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 8ab5e6ee8..79b9f1e3f 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -64,7 +64,7 @@ "@ai-sdk/deepinfra": "2.0.41", "@ai-sdk/gateway": "3.0.104", "@ai-sdk/google": "3.0.73", - "@ai-sdk/google-vertex": "4.0.128", + "@ai-sdk/google-vertex": "4.0.181", "@ai-sdk/groq": "3.0.31", "@ai-sdk/mistral": "3.0.51", "@ai-sdk/openai": "3.0.84", From 65c35977bd564e23c0e9cf124b3e3e3b9308e9e8 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Mon, 17 Aug 2026 19:25:35 +0000 Subject: [PATCH 033/271] chore: update nix node_modules hashes --- nix/hashes.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/hashes.json b/nix/hashes.json index 88d8be13d..60a76de0a 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-kDCnJMnaK/Jq7ckcpPB7Vl9v98EMSdcehZAtf8jNjTs=", - "aarch64-linux": "sha256-0aR+OJGXS5HMlXbe/BHybjIRvdNJJw6gjW+jr6Dk7Pk=", - "aarch64-darwin": "sha256-loLrV6xiorhwS/N2hlpiKSKX172Qxy+auNiPzFBhQSc=", - "x86_64-darwin": "sha256-PNEpQBLAz8M274bSyTpp0jofETn2L+D0uBiJHUV7nB0=" + "x86_64-linux": "sha256-yQ8EIxxYkzlEWIMY/UiIR+7lbGBuizsoehMPZzFA65Y=", + "aarch64-linux": "sha256-JF9VVgnl5QUZ430fqb5Qu8y0kchYJ00LO3FbYcd0lBM=", + "aarch64-darwin": "sha256-f3Tu6eu463NWcHgr7dupfD/zUTh26bJ6N2vVXuEyi6c=", + "x86_64-darwin": "sha256-miv9Sv4KdhD0UIi2O5LVS1wQOfq29IV+9S+BvIzAvgo=" } } From 040b8561400fcbe84eaf8d045ede46fc014e2d00 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 17 Aug 2026 23:08:34 -0400 Subject: [PATCH 034/271] fix(cli): stop legacy preview publishing --- script/publish.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/script/publish.ts b/script/publish.ts index 3dc0dee94..31117b045 100755 --- a/script/publish.ts +++ b/script/publish.ts @@ -38,9 +38,6 @@ await prepareReleaseFiles() console.log("\n=== cli ===\n") await $`bun ./packages/opencode/script/publish.ts` -console.log("\n=== preview cli ===\n") -await $`bun ./packages/cli/script/publish.ts` - console.log("\n=== sdk ===\n") await $`bun ./packages/sdk/js/script/publish.ts` From 32320409b17c4dff6af14b300a9e7ef3ba6ba76b Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Tue, 18 Aug 2026 03:38:06 +0000 Subject: [PATCH 035/271] fix(app): keep server details editable (#43169) Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com> --- packages/app/src/components/dialog-select-server.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/app/src/components/dialog-select-server.tsx b/packages/app/src/components/dialog-select-server.tsx index aa1697622..102c1a7cd 100644 --- a/packages/app/src/components/dialog-select-server.tsx +++ b/packages/app/src/components/dialog-select-server.tsx @@ -145,7 +145,7 @@ function ServerForm(props: ServerFormProps) { type="text" label={language.t("dialog.server.add.name")} placeholder={language.t("dialog.server.add.namePlaceholder")} - value={props.name} + defaultValue={props.name} disabled={props.busy} onChange={props.onNameChange} onKeyDown={keyDown} @@ -155,7 +155,7 @@ function ServerForm(props: ServerFormProps) { type="text" label={language.t("dialog.server.add.username")} placeholder={language.t("dialog.server.add.usernamePlaceholder")} - value={props.username} + defaultValue={props.username} disabled={props.busy} onChange={props.onUsernameChange} onKeyDown={keyDown} @@ -164,7 +164,7 @@ function ServerForm(props: ServerFormProps) { type="password" label={language.t("dialog.server.add.password")} placeholder={language.t("dialog.server.add.passwordPlaceholder")} - value={props.password} + defaultValue={props.password} disabled={props.busy} onChange={props.onPasswordChange} onKeyDown={keyDown} From 4e81a0b73f6e614afebf9c7ff8862904a3674455 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Mon, 17 Aug 2026 23:48:25 -0500 Subject: [PATCH 036/271] fix(console): preserve inference sessions (#43124) Co-authored-by: Frank --- packages/console/app/src/routes/zen/util/handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index bde104dd3..454951e39 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -247,7 +247,7 @@ export async function handler( headers.delete("host") headers.delete("content-length") headers.delete("x-opencode-request") - headers.delete("x-opencode-session") + if (!isNewInference) headers.delete("x-opencode-session") headers.delete("x-opencode-project") headers.delete("x-opencode-client") return headers From 9b0dd36cda0b9accb429a7f9f9ad9b054a27d04a Mon Sep 17 00:00:00 2001 From: Shoubhit Dash Date: Tue, 18 Aug 2026 19:49:08 +0530 Subject: [PATCH 037/271] fix(session): ignore malformed model costs (#43248) --- packages/opencode/src/session/session.ts | 16 +++++++--------- .../opencode/test/session/compaction.test.ts | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/packages/opencode/src/session/session.ts b/packages/opencode/src/session/session.ts index cfe034146..a2a91cd47 100644 --- a/packages/opencode/src/session/session.ts +++ b/packages/opencode/src/session/session.ts @@ -336,10 +336,8 @@ export function plan(input: { slug: string; time: { created: number } }, instanc } export const getUsage = (input: { model: Provider.Model; usage: Usage; metadata?: ProviderMetadata }) => { - const safe = (value: number) => { - if (!Number.isFinite(value)) return 0 - return Math.max(0, value) - } + const finite = (value: number) => (Number.isFinite(value) ? value : 0) + const safe = (value: number) => Math.max(0, finite(value)) const inputTokens = safe(input.usage.inputTokens ?? 0) const outputTokens = safe(input.usage.outputTokens ?? 0) const reasoningTokens = safe(input.usage.reasoningTokens ?? 0) @@ -393,13 +391,13 @@ export const getUsage = (input: { model: Provider.Model; usage: Usage; metadata? ? new Decimal(totalNanoAiu).div(100_000_000_000).toNumber() : safe( new Decimal(0) - .add(new Decimal(tokens.input).mul(costInfo?.input ?? 0).div(1_000_000)) - .add(new Decimal(tokens.output).mul(costInfo?.output ?? 0).div(1_000_000)) - .add(new Decimal(tokens.cache.read).mul(costInfo?.cache?.read ?? 0).div(1_000_000)) - .add(new Decimal(tokens.cache.write).mul(costInfo?.cache?.write ?? 0).div(1_000_000)) + .add(new Decimal(tokens.input).mul(finite(costInfo?.input ?? 0)).div(1_000_000)) + .add(new Decimal(tokens.output).mul(finite(costInfo?.output ?? 0)).div(1_000_000)) + .add(new Decimal(tokens.cache.read).mul(finite(costInfo?.cache?.read ?? 0)).div(1_000_000)) + .add(new Decimal(tokens.cache.write).mul(finite(costInfo?.cache?.write ?? 0)).div(1_000_000)) // TODO: update models.dev to have better pricing model, for now: // charge reasoning tokens at the same rate as output tokens - .add(new Decimal(tokens.reasoning).mul(costInfo?.output ?? 0).div(1_000_000)) + .add(new Decimal(tokens.reasoning).mul(finite(costInfo?.output ?? 0)).div(1_000_000)) .toNumber(), ), tokens, diff --git a/packages/opencode/test/session/compaction.test.ts b/packages/opencode/test/session/compaction.test.ts index 4f0981fa6..c76dd98b8 100644 --- a/packages/opencode/test/session/compaction.test.ts +++ b/packages/opencode/test/session/compaction.test.ts @@ -1782,6 +1782,22 @@ describe("SessionNs.getUsage", () => { expect(Number.isNaN(result.cost)).toBe(false) }) + test("ignores malformed cost fields", () => { + const model = createModel({ + context: 100_000, + output: 32_000, + cost: { input: 3, output: 15, cache: { read: 0.3, write: 3.75 } }, + }) + Object.assign(model.cost, { input: {} }) + + const result = SessionNs.getUsage({ + model, + usage: usage({ inputTokens: 1_000_000, outputTokens: 100_000, totalTokens: 1_100_000 }), + }) + + expect(result.cost).toBe(1.5) + }) + test("calculates cost correctly", () => { const model = createModel({ context: 100_000, From ad905f8e6c8c09d04ef22ba0f74b1631dac18327 Mon Sep 17 00:00:00 2001 From: OpeOginni <107570612+OpeOginni@users.noreply.github.com> Date: Tue, 18 Aug 2026 20:48:25 +0200 Subject: [PATCH 038/271] fix(opencode): properly show authed providers on /connect command (#39915) --- .../src/server/routes/instance/httpapi/handlers/provider.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/provider.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/provider.ts index e1377b6f7..6f0e5f608 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/handlers/provider.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/provider.ts @@ -2,6 +2,7 @@ import { ProviderAuth } from "@/provider/auth" import { Config } from "@/config/config" import { ModelsDev } from "@opencode-ai/core/models-dev" import { Provider } from "@/provider/provider" +import { Auth } from "@/auth" import { mapValues } from "remeda" import { Effect, Schema } from "effect" @@ -36,6 +37,7 @@ export const providerHandlers = HttpApiBuilder.group(InstanceHttpApi, "provider" const cfg = yield* Config.Service const provider = yield* Provider.Service const svc = yield* ProviderAuth.Service + const authStore = yield* Auth.Service const list = Effect.fn("ProviderHttpApi.list")(function* () { const config = yield* cfg.get() @@ -47,6 +49,7 @@ export const providerHandlers = HttpApiBuilder.group(InstanceHttpApi, "provider" if ((enabled ? enabled.has(key) : true) && !disabled.has(key)) filtered[key] = value } const connected = yield* provider.list() + const credentials = yield* authStore.all().pipe(Effect.orDie) const providers = Object.assign( mapValues(filtered, (item) => Provider.fromModelsDevProvider(item)), connected, @@ -54,7 +57,7 @@ export const providerHandlers = HttpApiBuilder.group(InstanceHttpApi, "provider" return { all: Object.values(providers).map(Provider.toPublicInfo), default: Provider.defaultModelIDs(providers), - connected: Object.keys(connected), + connected: Object.keys(providers).filter((id) => id in connected || credentials[id]), } }) From 0033bb35599a359def31b53d73e885eb4c44d815 Mon Sep 17 00:00:00 2001 From: Filip <34747899+neriousy@users.noreply.github.com> Date: Tue, 18 Aug 2026 21:27:28 +0200 Subject: [PATCH 039/271] fix(core): restore session request headers (#43188) --- packages/core/src/session/compaction.ts | 1 + packages/core/src/session/runner/llm.ts | 7 ++++ packages/core/test/session-runner.test.ts | 47 +++++++++++++++++++++++ 3 files changed, 55 insertions(+) diff --git a/packages/core/src/session/compaction.ts b/packages/core/src/session/compaction.ts index ea4cf04aa..f71463329 100644 --- a/packages/core/src/session/compaction.ts +++ b/packages/core/src/session/compaction.ts @@ -202,6 +202,7 @@ export const make = (dependencies: Dependencies) => { .stream( LLM.request({ model: input.model, + http: input.request.http, messages: [Message.user(summaryPrompt)], tools: [], generation: { maxTokens: summaryOutput }, diff --git a/packages/core/src/session/runner/llm.ts b/packages/core/src/session/runner/llm.ts index 72c761e10..874086a06 100644 --- a/packages/core/src/session/runner/llm.ts +++ b/packages/core/src/session/runner/llm.ts @@ -204,6 +204,13 @@ const layer = Layer.effect( const promptCacheKey = /^ses_[0-9a-f]{64}$/.test(session.id) ? session.id.slice(4) : session.id const request = LLM.request({ model, + http: { + headers: { + "x-session-affinity": session.id, + "X-Session-Id": session.id, + ...(session.parentID ? { "x-parent-session-id": session.parentID } : {}), + }, + }, providerOptions: { openai: { promptCacheKey } }, system: [agent.info?.system, system.baseline] .filter((part): part is string => part !== undefined && part.length > 0) diff --git a/packages/core/test/session-runner.test.ts b/packages/core/test/session-runner.test.ts index 5b40258b2..cc58b43b2 100644 --- a/packages/core/test/session-runner.test.ts +++ b/packages/core/test/session-runner.test.ts @@ -1101,6 +1101,16 @@ describe("SessionRunnerLLM", () => { yield* session.resume(sessionID) expect(requests).toHaveLength(2) + expect(requests.map((request) => request.http?.headers)).toEqual([ + { + "x-session-affinity": sessionID, + "X-Session-Id": sessionID, + }, + { + "x-session-affinity": sessionID, + "X-Session-Id": sessionID, + }, + ]) expect(userTexts(requests[0])[0]).toContain("## Objective") expect(userTexts(requests[1])).toHaveLength(1) expect(userTexts(requests[1])[0]).toContain("\n## Objective\n- Preserve the task\n") @@ -2508,6 +2518,43 @@ describe("SessionRunnerLLM", () => { }), ) + it.effect("adds session correlation headers to model requests", () => + Effect.gen(function* () { + yield* setup + const session = yield* SessionV2.Service + yield* session.prompt({ sessionID, prompt: Prompt.make({ text: "Run correlated request" }), resume: false }) + + requests.length = 0 + yield* session.resume(sessionID) + + expect(requests[0]?.http?.headers).toEqual({ + "x-session-affinity": sessionID, + "X-Session-Id": sessionID, + }) + }), + ) + + it.effect("adds the parent session header to child model requests", () => + Effect.gen(function* () { + yield* setup + const session = yield* SessionV2.Service + const parentID = SessionV2.ID.make("ses_runner_parent") + const { db } = yield* Database.Service + yield* db + .update(SessionTable) + .set({ parent_id: parentID }) + .where(eq(SessionTable.id, sessionID)) + .run() + .pipe(Effect.orDie) + yield* session.prompt({ sessionID, prompt: Prompt.make({ text: "Run child request" }), resume: false }) + + requests.length = 0 + yield* session.resume(sessionID) + + expect(requests[0]?.http?.headers?.["x-parent-session-id"]).toBe(parentID) + }), + ) + it.effect("bounds 64-character session prompt cache keys", () => Effect.gen(function* () { yield* setup From 8b65fa2ef6372fde3109736a42e7f3aeb87f3a4e Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Tue, 18 Aug 2026 17:59:59 -0500 Subject: [PATCH 040/271] fix(opencode): remove Qwen sampling defaults (#43310) Co-authored-by: rekram1-node <63023139+rekram1-node@users.noreply.github.com> --- packages/opencode/src/provider/transform.ts | 2 -- packages/opencode/test/provider/transform.test.ts | 13 +++++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index fdd03d520..b388297ae 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -528,7 +528,6 @@ const GEMINI_MODELS_WITH_SAMPLING_DEFAULTS = [ export function temperature(model: Provider.Model) { const id = model.api.id.toLowerCase() if (id.includes("north-mini-code")) return 1.0 - if (id.includes("qwen")) return 0.55 if (id.includes("claude")) return undefined if (id.includes("gemini")) return GEMINI_MODELS_WITH_SAMPLING_DEFAULTS.some((model) => model.test(id)) ? 1.0 : undefined @@ -547,7 +546,6 @@ export function temperature(model: Provider.Model) { export function topP(model: Provider.Model) { const id = model.api.id.toLowerCase() - if (id.includes("qwen")) return 1 if (id.includes("gemini")) return GEMINI_MODELS_WITH_SAMPLING_DEFAULTS.some((model) => model.test(id)) ? 0.95 : undefined if (["minimax-m2", "kimi-k2.5", "kimi-k2p5", "kimi-k2-5"].some((s) => id.includes(s))) { diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index 701658987..77aa38ad7 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -3215,6 +3215,19 @@ describe("ProviderTransform.temperature - Cohere North", () => { }) }) +describe("ProviderTransform sampling defaults - Qwen", () => { + test.each(["Qwen3.8-27B", "qwen3-coder-30b-a3b-instruct"])('leaves sampling unset for "%s"', (id) => { + const model = { + id: `custom/${id}`, + api: { id }, + } as any + + expect(ProviderTransform.temperature(model)).toBeUndefined() + expect(ProviderTransform.topP(model)).toBeUndefined() + expect(ProviderTransform.topK(model)).toBeUndefined() + }) +}) + describe("ProviderTransform sampling defaults - Gemini", () => { const model = (id: string) => ({ From 7774461bbf7bd0600070cdede4fe8b9d9f301bf4 Mon Sep 17 00:00:00 2001 From: bhuvankakkar <102566522+bhuvan2134686@users.noreply.github.com> Date: Wed, 19 Aug 2026 12:11:56 +1000 Subject: [PATCH 041/271] docs: add SCX.ai to the providers list (#42520) --- packages/web/src/content/docs/providers.mdx | 29 +++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/packages/web/src/content/docs/providers.mdx b/packages/web/src/content/docs/providers.mdx index e7be6f3a7..331a55ec6 100644 --- a/packages/web/src/content/docs/providers.mdx +++ b/packages/web/src/content/docs/providers.mdx @@ -2097,6 +2097,35 @@ To use [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-ap --- +### SCX.ai + +[SCX.ai](https://scx.ai) is an Australian sovereign AI platform serving open models over an OpenAI-compatible API, hosted on renewable-powered infrastructure in Australia. + +1. Head over to the [SCX.ai platform](https://platform.scx.ai) to create an account and generate an API key. + +2. Run the `/connect` command and search for **SCX.ai**. + + ```txt + /connect + ``` + +3. Enter your SCX.ai API key. + + ```txt + ┌ API key + │ + │ + └ enter + ``` + +4. Run the `/models` command to select a model like _MiniMax-M2.7_ or _GLM-5.2_. + + ```txt + /models + ``` + +--- + ### Snowflake Cortex [Snowflake Cortex](https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-rest-api) gives you access to frontier models (Claude, OpenAI GPT-5, and more) via an OpenAI-compatible API. All inference runs within the Snowflake perimeter and is billed in Snowflake credits. For per-model rates, see the [Snowflake Service Consumption Table](https://www.snowflake.com/legal-files/CreditConsumptionTable.pdf). From 64b4f7df4c76c835e23bfeeda3b1578c36fd7b11 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 18 Aug 2026 22:55:47 -0400 Subject: [PATCH 042/271] sync --- packages/console/app/src/i18n/en.ts | 3 + .../routes/workspace/[id]/go/lite-section.tsx | 35 + .../console/app/src/routes/zen/util/error.ts | 1 + .../app/src/routes/zen/util/handler.ts | 11 +- .../migration.sql | 1 + .../snapshot.json | 3245 +++++++++++++++++ .../console/core/src/schema/billing.sql.ts | 1 + .../console/core/src/schema/referral.sql.ts | 4 +- .../console/core/src/schema/workspace.sql.ts | 1 + packages/console/core/src/workspace.ts | 2 + packages/web/src/content/docs/go.mdx | 7 + 11 files changed, 3308 insertions(+), 3 deletions(-) create mode 100644 packages/console/core/migrations/20260819012908_flashy_arclight/migration.sql create mode 100644 packages/console/core/migrations/20260819012908_flashy_arclight/snapshot.json diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index 726a9282d..ac5efc736 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -390,6 +390,8 @@ export const dict = { "zen.api.error.modelDisabled": "Model is disabled", "zen.api.error.regionNotAllowed": "The latest version of this model is only available hosted in China and requires explicit opt in: {{consoleGoUrl}}", + "zen.api.error.nonZdrNotAllowed": + "This model collects data used to improve its quality and requires explicit opt in: {{consoleGoUrl}}", "zen.api.error.trialEnded": "Free promotion has ended for {{model}}. You can continue using the model by subscribing to OpenCode Go - {{link}}", @@ -671,6 +673,7 @@ export const dict = { 'Select "OpenCode Go" as the provider in your opencode configuration to use Go models.', "workspace.lite.providers.title": "Providers", "workspace.lite.providers.description": "Control which providers are used for routing.", + "workspace.lite.providers.allowNonZdr": "Enable models without zero data retention", "workspace.lite.providers.useChina": "Enable models hosted in China", "workspace.lite.black.message": "You're currently subscribed to OpenCode Black or on the waitlist. Please unsubscribe first if you'd like to switch to Go.", diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index 4de88cba3..dca06a196 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -39,6 +39,7 @@ export const queryLiteSubscription = query(async (workspaceID: string) => { timeCreated: LiteTable.timeCreated, lite: BillingTable.lite, region: WorkspaceTable.region, + allowNonZdr: WorkspaceTable.allow_non_zdr, }) .from(BillingTable) .innerJoin(LiteTable, eq(LiteTable.workspaceID, BillingTable.workspaceID)) @@ -54,6 +55,7 @@ export const queryLiteSubscription = query(async (workspaceID: string) => { return { mine, useBalance: row.lite?.useBalance ?? false, + allowNonZdr: row.allowNonZdr ?? false, region: row.region ?? (await Workspace.setDefaultRegion({ country: countryFromRequest(getRequestEvent()?.request) })), rollingUsage: Subscription.analyzeRollingUsage({ @@ -154,6 +156,24 @@ const setGoProviderRouting = action(async (form: FormData) => { ) }, "go.providerRouting.set") +const setGoAllowNonZdr = action(async (form: FormData) => { + "use server" + const workspaceID = form.get("workspaceID") as string | null + if (!workspaceID) return { error: formError.workspaceRequired } + const allowNonZdr = (form.get("allowNonZdr") as string | null) === "true" + + return json( + await withActor( + () => + Workspace.update({ allow_non_zdr: allowNonZdr }) + .then(() => ({ error: undefined })) + .catch((e) => ({ error: e.message as string })), + workspaceID, + ), + { revalidate: queryLiteSubscription.key }, + ) +}, "go.allowNonZdr.set") + function LiteUsageItem(props: { label: string; usage: { usagePercent: number; resetInSec: number } }) { const i18n = useI18n() @@ -186,6 +206,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) { const checkoutSubmission = useSubmission(createLiteCheckoutUrl) const useBalanceSubmission = useSubmission(setLiteUseBalance) const providerRoutingSubmission = useSubmission(setGoProviderRouting) + const allowNonZdrSubmission = useSubmission(setGoAllowNonZdr) const [store, setStore] = createStore({ loading: undefined as undefined | "session" | "checkout" | "alipay" | "upi", showModal: false, @@ -264,6 +285,20 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {

        {i18n.t("workspace.lite.providers.title")}

        {i18n.t("workspace.lite.providers.description")}

        +
        +

        {i18n.t("workspace.lite.providers.allowNonZdr")}

        + + + +

        {i18n.t("workspace.lite.providers.useChina")}

        diff --git a/packages/console/app/src/routes/zen/util/error.ts b/packages/console/app/src/routes/zen/util/error.ts index 5117815d2..bb87ef6be 100644 --- a/packages/console/app/src/routes/zen/util/error.ts +++ b/packages/console/app/src/routes/zen/util/error.ts @@ -4,6 +4,7 @@ export class MonthlyLimitError extends Error {} export class UserLimitError extends Error {} export class ModelError extends Error {} export class RegionError extends Error {} +export class DataPolicyError extends Error {} class LimitError extends Error { retryAfter?: number diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 454951e39..569a27e68 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -22,6 +22,7 @@ import { UserLimitError, ModelError, RegionError, + DataPolicyError, RateLimitError, FreeUsageLimitError, GoUsageLimitError, @@ -128,6 +129,12 @@ export async function handler( : createKeyRateLimiter(modelInfo.id, modelInfo.rateLimit, zenApiKey, input.request) await rateLimiter?.check() const authInfo = await authenticate(modelInfo, zenApiKey) + if (authInfo && opts.modelList === "lite" && modelInfo.id === "muse-spark-1.2" && !authInfo.allowNonZdr) + throw new DataPolicyError( + t("zen.api.error.nonZdrNotAllowed", { + consoleGoUrl: `https://opencode.ai/workspace/${authInfo.workspaceID}/go`, + }), + ) const allowedRegions = authInfo?.region ? authInfo.region : await (async () => { @@ -477,7 +484,7 @@ export async function handler( } catch {} } - if (error instanceof RegionError) + if (error instanceof RegionError || error instanceof DataPolicyError) return new Response( JSON.stringify({ type: "error", @@ -708,6 +715,7 @@ export async function handler( workspace: { id: WorkspaceTable.id, region: WorkspaceTable.region, + allowNonZdr: WorkspaceTable.allow_non_zdr, isBlocked: WorkspaceTable.is_blocked, isFlaggedByAnthropic: WorkspaceTable.is_flagged_by_anthropic, isFlaggedByOpenAI: WorkspaceTable.is_flagged_by_openai, @@ -820,6 +828,7 @@ export async function handler( apiKeyId: data.apiKey, workspaceID: data.workspace.id, region: data.workspace.region, + allowNonZdr: data.workspace.allowNonZdr ?? false, billing: data.billing, user: data.user, black: data.black, diff --git a/packages/console/core/migrations/20260819012908_flashy_arclight/migration.sql b/packages/console/core/migrations/20260819012908_flashy_arclight/migration.sql new file mode 100644 index 000000000..1aee1d6b0 --- /dev/null +++ b/packages/console/core/migrations/20260819012908_flashy_arclight/migration.sql @@ -0,0 +1 @@ +ALTER TABLE `workspace` ADD `allow_non_zdr` boolean; \ No newline at end of file diff --git a/packages/console/core/migrations/20260819012908_flashy_arclight/snapshot.json b/packages/console/core/migrations/20260819012908_flashy_arclight/snapshot.json new file mode 100644 index 000000000..3a828680c --- /dev/null +++ b/packages/console/core/migrations/20260819012908_flashy_arclight/snapshot.json @@ -0,0 +1,3245 @@ +{ + "version": "6", + "dialect": "mysql", + "id": "39a41b57-a092-4356-a8ed-2a51cde2da1d", + "prevIds": [ + "2752a0ba-95b5-492a-83fd-3dfe7fa77734" + ], + "ddl": [ + { + "name": "account", + "entityType": "tables" + }, + { + "name": "auth", + "entityType": "tables" + }, + { + "name": "benchmark", + "entityType": "tables" + }, + { + "name": "billing", + "entityType": "tables" + }, + { + "name": "coupon", + "entityType": "tables" + }, + { + "name": "lite", + "entityType": "tables" + }, + { + "name": "payment", + "entityType": "tables" + }, + { + "name": "subscription", + "entityType": "tables" + }, + { + "name": "usage", + "entityType": "tables" + }, + { + "name": "ip_rate_limit", + "entityType": "tables" + }, + { + "name": "ip", + "entityType": "tables" + }, + { + "name": "key_rate_limit", + "entityType": "tables" + }, + { + "name": "model_sticky_provider", + "entityType": "tables" + }, + { + "name": "model_tpm_rate_limit", + "entityType": "tables" + }, + { + "name": "model_tps_rate_limit", + "entityType": "tables" + }, + { + "name": "key", + "entityType": "tables" + }, + { + "name": "model", + "entityType": "tables" + }, + { + "name": "provider", + "entityType": "tables" + }, + { + "name": "referral_code", + "entityType": "tables" + }, + { + "name": "referral_reward", + "entityType": "tables" + }, + { + "name": "referral", + "entityType": "tables" + }, + { + "name": "user", + "entityType": "tables" + }, + { + "name": "workspace", + "entityType": "tables" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "account" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "account" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "account" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "account" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "auth" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "auth" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "auth" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "auth" + }, + { + "type": "enum('email','github','google')", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider", + "entityType": "columns", + "table": "auth" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "subject", + "entityType": "columns", + "table": "auth" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "account_id", + "entityType": "columns", + "table": "auth" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "model", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "agent", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "mediumtext", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "result", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "customer_id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "payment_method_id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(32)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "payment_method_type", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(4)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "payment_method_last4", + "entityType": "columns", + "table": "billing" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "balance", + "entityType": "columns", + "table": "billing" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "monthly_limit", + "entityType": "columns", + "table": "billing" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "monthly_usage", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_monthly_usage_updated", + "entityType": "columns", + "table": "billing" + }, + { + "type": "boolean", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reload", + "entityType": "columns", + "table": "billing" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reload_trigger", + "entityType": "columns", + "table": "billing" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reload_amount", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reload_error", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_reload_error", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_reload_locked_till", + "entityType": "columns", + "table": "billing" + }, + { + "type": "json", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "subscription", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(28)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "subscription_id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "enum('20','100','200')", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "subscription_plan", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_subscription_booked", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_subscription_selected", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(28)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "lite_subscription_id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "json", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "lite", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "email", + "entityType": "columns", + "table": "coupon" + }, + { + "type": "enum('BUILDATHON','GO1MONTH50','GOFREEMONTH','GO3MONTHS100','GO6MONTHS100','GO12MONTHS100')", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "type", + "entityType": "columns", + "table": "coupon" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_redeemed", + "entityType": "columns", + "table": "coupon" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "lite" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "lite" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "user_id", + "entityType": "columns", + "table": "lite" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rolling_usage", + "entityType": "columns", + "table": "lite" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "weekly_usage", + "entityType": "columns", + "table": "lite" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "monthly_usage", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_rolling_updated", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_weekly_updated", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_monthly_updated", + "entityType": "columns", + "table": "lite" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "payment" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "payment" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "payment" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "payment" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "payment" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "customer_id", + "entityType": "columns", + "table": "payment" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "invoice_id", + "entityType": "columns", + "table": "payment" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "payment_id", + "entityType": "columns", + "table": "payment" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "amount", + "entityType": "columns", + "table": "payment" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_refunded", + "entityType": "columns", + "table": "payment" + }, + { + "type": "json", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "enrichment", + "entityType": "columns", + "table": "payment" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "user_id", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rolling_usage", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "fixed_usage", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_rolling_updated", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_fixed_updated", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "usage" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "usage" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "usage" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "model", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "input_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "output_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reasoning_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cache_read_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cache_write_5m_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cache_write_1h_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cost", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(30)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "key_id", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(30)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "session_id", + "entityType": "columns", + "table": "usage" + }, + { + "type": "json", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "enrichment", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(45)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "ip", + "entityType": "columns", + "table": "ip_rate_limit" + }, + { + "type": "varchar(10)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "interval", + "entityType": "columns", + "table": "ip_rate_limit" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "count", + "entityType": "columns", + "table": "ip_rate_limit" + }, + { + "type": "varchar(45)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "ip", + "entityType": "columns", + "table": "ip" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "ip" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "ip" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "ip" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "usage", + "entityType": "columns", + "table": "ip" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "key", + "entityType": "columns", + "table": "key_rate_limit" + }, + { + "type": "varchar(40)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "interval", + "entityType": "columns", + "table": "key_rate_limit" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "count", + "entityType": "columns", + "table": "key_rate_limit" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "model_sticky_provider" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "model_sticky_provider" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "model_sticky_provider" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "model_sticky_provider" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider_id", + "entityType": "columns", + "table": "model_sticky_provider" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "model_tpm_rate_limit" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "interval", + "entityType": "columns", + "table": "model_tpm_rate_limit" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "count", + "entityType": "columns", + "table": "model_tpm_rate_limit" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "model_tps_rate_limit" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "interval", + "entityType": "columns", + "table": "model_tps_rate_limit" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "qualify", + "entityType": "columns", + "table": "model_tps_rate_limit" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "unqualify", + "entityType": "columns", + "table": "model_tps_rate_limit" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "key" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "key" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "key" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "key" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "key" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "name", + "entityType": "columns", + "table": "key" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "key", + "entityType": "columns", + "table": "key" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "user_id", + "entityType": "columns", + "table": "key" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_used", + "entityType": "columns", + "table": "key" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "model" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "model" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "model" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "model" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "model" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "model", + "entityType": "columns", + "table": "model" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "provider" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "provider" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "provider" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "provider" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "provider" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider", + "entityType": "columns", + "table": "provider" + }, + { + "type": "text", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "credentials", + "entityType": "columns", + "table": "provider" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "referral_code" + }, + { + "type": "varchar(10)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "code", + "entityType": "columns", + "table": "referral_code" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "referral_code" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "referral_code" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "referral_code" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "referral_id", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "amount", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_applied", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "referral" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "referral" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "referral" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "referral" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "referral" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "invitee_account_id", + "entityType": "columns", + "table": "referral" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "user" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "user" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "user" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "user" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "user" + }, + { + "type": "varchar(30)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "account_id", + "entityType": "columns", + "table": "user" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "email", + "entityType": "columns", + "table": "user" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "name", + "entityType": "columns", + "table": "user" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_seen", + "entityType": "columns", + "table": "user" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "color", + "entityType": "columns", + "table": "user" + }, + { + "type": "enum('admin','member')", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "role", + "entityType": "columns", + "table": "user" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "monthly_limit", + "entityType": "columns", + "table": "user" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "monthly_usage", + "entityType": "columns", + "table": "user" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_monthly_usage_updated", + "entityType": "columns", + "table": "user" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "slug", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "name", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "json", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "region", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "boolean", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "allow_non_zdr", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "boolean", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "is_blocked", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "boolean", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "is_flagged_by_anthropic", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "boolean", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "is_flagged_by_openai", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "workspace" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "account", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "auth", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "benchmark", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "billing", + "entityType": "pks" + }, + { + "columns": [ + "email", + "type" + ], + "name": "PRIMARY", + "table": "coupon", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "lite", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "payment", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "subscription", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "usage", + "entityType": "pks" + }, + { + "columns": [ + "ip", + "interval" + ], + "name": "PRIMARY", + "table": "ip_rate_limit", + "entityType": "pks" + }, + { + "columns": [ + "ip" + ], + "name": "PRIMARY", + "table": "ip", + "entityType": "pks" + }, + { + "columns": [ + "key", + "interval" + ], + "name": "PRIMARY", + "table": "key_rate_limit", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "model_sticky_provider", + "entityType": "pks" + }, + { + "columns": [ + "id", + "interval" + ], + "name": "PRIMARY", + "table": "model_tpm_rate_limit", + "entityType": "pks" + }, + { + "columns": [ + "id", + "interval" + ], + "name": "PRIMARY", + "table": "model_tps_rate_limit", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "key", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "model", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "provider", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id" + ], + "name": "PRIMARY", + "table": "referral_code", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "referral_id" + ], + "name": "PRIMARY", + "table": "referral_reward", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "referral", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "user", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "workspace", + "entityType": "pks" + }, + { + "columns": [ + { + "value": "provider", + "isExpression": false + }, + { + "value": "subject", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "provider", + "entityType": "indexes", + "table": "auth" + }, + { + "columns": [ + { + "value": "account_id", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "account_id", + "entityType": "indexes", + "table": "auth" + }, + { + "columns": [ + { + "value": "time_created", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "time_created", + "entityType": "indexes", + "table": "benchmark" + }, + { + "columns": [ + { + "value": "customer_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_customer_id", + "entityType": "indexes", + "table": "billing" + }, + { + "columns": [ + { + "value": "subscription_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_subscription_id", + "entityType": "indexes", + "table": "billing" + }, + { + "columns": [ + { + "value": "lite_subscription_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_lite_subscription_id", + "entityType": "indexes", + "table": "billing" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "user_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "workspace_user_id", + "entityType": "indexes", + "table": "lite" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "user_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "workspace_user_id", + "entityType": "indexes", + "table": "subscription" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "time_created", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "usage_time_created", + "entityType": "indexes", + "table": "usage" + }, + { + "columns": [ + { + "value": "key", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_key", + "entityType": "indexes", + "table": "key" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "model", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "model_workspace_model", + "entityType": "indexes", + "table": "model" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "provider", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "workspace_provider", + "entityType": "indexes", + "table": "provider" + }, + { + "columns": [ + { + "value": "code", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "code", + "entityType": "indexes", + "table": "referral_code" + }, + { + "columns": [ + { + "value": "referral_id", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "referral_id", + "entityType": "indexes", + "table": "referral_reward" + }, + { + "columns": [ + { + "value": "invitee_account_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "invitee_account_id", + "entityType": "indexes", + "table": "referral" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "account_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "user_account_id", + "entityType": "indexes", + "table": "user" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "email", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "user_email", + "entityType": "indexes", + "table": "user" + }, + { + "columns": [ + { + "value": "account_id", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_account_id", + "entityType": "indexes", + "table": "user" + }, + { + "columns": [ + { + "value": "email", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_email", + "entityType": "indexes", + "table": "user" + }, + { + "columns": [ + { + "value": "slug", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "slug", + "entityType": "indexes", + "table": "workspace" + } + ], + "renames": [] +} \ No newline at end of file diff --git a/packages/console/core/src/schema/billing.sql.ts b/packages/console/core/src/schema/billing.sql.ts index 915646cf3..b177858f3 100644 --- a/packages/console/core/src/schema/billing.sql.ts +++ b/packages/console/core/src/schema/billing.sql.ts @@ -53,6 +53,7 @@ export const BillingTable = mysqlTable( ...workspaceIndexes(table), uniqueIndex("global_customer_id").on(table.customerID), uniqueIndex("global_subscription_id").on(table.subscriptionID), + uniqueIndex("global_lite_subscription_id").on(table.liteSubscriptionID), ], ) diff --git a/packages/console/core/src/schema/referral.sql.ts b/packages/console/core/src/schema/referral.sql.ts index 9850c9245..5f59bb866 100644 --- a/packages/console/core/src/schema/referral.sql.ts +++ b/packages/console/core/src/schema/referral.sql.ts @@ -1,4 +1,4 @@ -import { bigint, mysqlTable, primaryKey, uniqueIndex, varchar } from "drizzle-orm/mysql-core" +import { bigint, index, mysqlTable, primaryKey, uniqueIndex, varchar } from "drizzle-orm/mysql-core" import { timestamps, ulid, utc, workspaceColumns } from "../drizzle/types" import { workspaceIndexes } from "./workspace.sql" @@ -31,5 +31,5 @@ export const ReferralRewardTable = mysqlTable( amount: bigint("amount", { mode: "number" }).notNull(), timeApplied: utc("time_applied"), }, - (table) => [primaryKey({ columns: [table.workspaceID, table.referralID] })], + (table) => [primaryKey({ columns: [table.workspaceID, table.referralID] }), index("referral_id").on(table.referralID)], ) diff --git a/packages/console/core/src/schema/workspace.sql.ts b/packages/console/core/src/schema/workspace.sql.ts index 4a04755bb..85a24d2ae 100644 --- a/packages/console/core/src/schema/workspace.sql.ts +++ b/packages/console/core/src/schema/workspace.sql.ts @@ -8,6 +8,7 @@ export const WorkspaceTable = mysqlTable( slug: varchar("slug", { length: 255 }), name: varchar("name", { length: 255 }).notNull(), region: json("region").$type<("us" | "eu" | "sg" | "cn")[]>(), + allow_non_zdr: boolean(), is_blocked: boolean(), is_flagged_by_anthropic: boolean(), is_flagged_by_openai: boolean(), diff --git a/packages/console/core/src/workspace.ts b/packages/console/core/src/workspace.ts index e3c2e0d9a..4266ba6ff 100644 --- a/packages/console/core/src/workspace.ts +++ b/packages/console/core/src/workspace.ts @@ -62,6 +62,7 @@ export namespace Workspace { z.object({ name: z.string().min(1).max(255).optional(), region: z.array(Region).min(1).optional(), + allow_non_zdr: z.boolean().optional(), }), async (input) => { Actor.assertAdmin() @@ -72,6 +73,7 @@ export namespace Workspace { .set({ ...("name" in input ? { name: input.name } : {}), ...("region" in input ? { region: input.region } : {}), + ...("allow_non_zdr" in input ? { allow_non_zdr: input.allow_non_zdr } : {}), }) .where(eq(WorkspaceTable.id, workspaceID)), ) diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 7a3acccc7..35ba3043f 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -71,6 +71,7 @@ The current list of models includes: - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.2** - **Qwen3.8 Max** - **Qwen3.7 Max** - **Qwen3.7 Plus** @@ -109,6 +110,7 @@ The table below provides an estimated request count based on typical Go usage pa | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | @@ -128,6 +130,7 @@ The estimates are based on observed request patterns: - DeepSeek V4 Flash — 410 input, 71,300 cached, 310 output tokens per request - MiniMax M3 — 510 input, 56,000 cached, 190 output tokens per request - MiniMax M2.7 — 300 input, 55,000 cached, 125 output tokens per request +- Muse Spark 1.2 — 620 input, 71,400 cached, 300 output tokens per request - MiMo-V2.5 — 830 input, 71,500 cached, 295 output tokens per request - MiMo-V2.5-Pro — 790 input, 86,000 cached, 305 output tokens per request - Qwen3.8 Max — 420 input, 66,000 cached, 200 output tokens per request @@ -154,6 +157,7 @@ The estimates are also based on the following prices per 1M tokens and the month | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | @@ -219,6 +223,7 @@ You can also access Go models through the following API endpoints. | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 | muse-spark-1.2 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -261,12 +266,14 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Not used | 0 days | | MiniMax M3 | Not used | 0 days | | MiniMax M2.7 | Not used | 0 days | +| Muse Spark 1.2 | May be used | Not ZDR | | DeepSeek V4 Pro | Not used | 0 days\* | | DeepSeek V4 Flash | Not used | 0 days\* | | Hy3 | Not used | 0 days | - **Grok 4.5:** ZDR disables important API features that depend on stored data, including the stateful Responses API, Files and Collections, and the Batch API. [Learn more](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Abuse monitoring logs are generated for all API feature usage and retained for up to 30 days. [Learn more](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.2:** Go uses Meta's Contributor tier, which is not ZDR and allows prompts and completions to be used to train future Meta models. [Learn more](https://dev.meta.ai/docs/pricing-rate-limits/#contributor-tier). - **DeepSeek:** ZDR agreement is renewed monthly. The current agreement is valid through August 31, 2026. --- From 72824fe65d9f91421a6a7af8a897d3e80646f4f4 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 18 Aug 2026 23:11:12 -0400 Subject: [PATCH 043/271] sync --- packages/console/app/src/i18n/en.ts | 4 +- .../routes/workspace/[id]/go/lite-section.tsx | 24 +- .../app/src/routes/zen/util/handler.ts | 6 +- .../migration.sql | 2 +- .../snapshot.json | 2 +- .../migration.sql | 1 + .../snapshot.json | 3245 +++++++++++++++++ .../console/core/src/schema/workspace.sql.ts | 2 +- packages/console/core/src/workspace.ts | 4 +- 9 files changed, 3268 insertions(+), 22 deletions(-) create mode 100644 packages/console/core/migrations/20260819031011_oval_morlocks/migration.sql create mode 100644 packages/console/core/migrations/20260819031011_oval_morlocks/snapshot.json diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index ac5efc736..8340db93d 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -673,8 +673,8 @@ export const dict = { 'Select "OpenCode Go" as the provider in your opencode configuration to use Go models.', "workspace.lite.providers.title": "Providers", "workspace.lite.providers.description": "Control which providers are used for routing.", - "workspace.lite.providers.allowNonZdr": "Enable models without zero data retention", - "workspace.lite.providers.useChina": "Enable models hosted in China", + "workspace.lite.providers.allowTraining": "Allow models that train on request data", + "workspace.lite.providers.useChina": "Allow models hosted in China", "workspace.lite.black.message": "You're currently subscribed to OpenCode Black or on the waitlist. Please unsubscribe first if you'd like to switch to Go.", "workspace.lite.other.message": diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index dca06a196..6c4105776 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -39,7 +39,7 @@ export const queryLiteSubscription = query(async (workspaceID: string) => { timeCreated: LiteTable.timeCreated, lite: BillingTable.lite, region: WorkspaceTable.region, - allowNonZdr: WorkspaceTable.allow_non_zdr, + allowTraining: WorkspaceTable.allow_training, }) .from(BillingTable) .innerJoin(LiteTable, eq(LiteTable.workspaceID, BillingTable.workspaceID)) @@ -55,7 +55,7 @@ export const queryLiteSubscription = query(async (workspaceID: string) => { return { mine, useBalance: row.lite?.useBalance ?? false, - allowNonZdr: row.allowNonZdr ?? false, + allowTraining: row.allowTraining ?? false, region: row.region ?? (await Workspace.setDefaultRegion({ country: countryFromRequest(getRequestEvent()?.request) })), rollingUsage: Subscription.analyzeRollingUsage({ @@ -156,23 +156,23 @@ const setGoProviderRouting = action(async (form: FormData) => { ) }, "go.providerRouting.set") -const setGoAllowNonZdr = action(async (form: FormData) => { +const setGoAllowTraining = action(async (form: FormData) => { "use server" const workspaceID = form.get("workspaceID") as string | null if (!workspaceID) return { error: formError.workspaceRequired } - const allowNonZdr = (form.get("allowNonZdr") as string | null) === "true" + const allowTraining = (form.get("allowTraining") as string | null) === "true" return json( await withActor( () => - Workspace.update({ allow_non_zdr: allowNonZdr }) + Workspace.update({ allow_training: allowTraining }) .then(() => ({ error: undefined })) .catch((e) => ({ error: e.message as string })), workspaceID, ), { revalidate: queryLiteSubscription.key }, ) -}, "go.allowNonZdr.set") +}, "go.allowTraining.set") function LiteUsageItem(props: { label: string; usage: { usagePercent: number; resetInSec: number } }) { const i18n = useI18n() @@ -206,7 +206,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) { const checkoutSubmission = useSubmission(createLiteCheckoutUrl) const useBalanceSubmission = useSubmission(setLiteUseBalance) const providerRoutingSubmission = useSubmission(setGoProviderRouting) - const allowNonZdrSubmission = useSubmission(setGoAllowNonZdr) + const allowTrainingSubmission = useSubmission(setGoAllowTraining) const [store, setStore] = createStore({ loading: undefined as undefined | "session" | "checkout" | "alipay" | "upi", showModal: false, @@ -285,15 +285,15 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {

        {i18n.t("workspace.lite.providers.title")}

        {i18n.t("workspace.lite.providers.description")}

        - -

        {i18n.t("workspace.lite.providers.allowNonZdr")}

        + +

        {i18n.t("workspace.lite.providers.allowTraining")}

        - +

      {i18n.t("workspace.lite.promo.footer")}

      diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 3410445b6..9dbc12d8d 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -68,6 +68,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (لفترة محدودة) @@ -108,6 +109,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -120,6 +122,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال - Kimi K2.7/K2.6 — ‏870 input، و55,000 cached، و200 output tokens لكل طلب - DeepSeek V4 Pro — ‏750 input، و82,000 cached، و290 output tokens لكل طلب - DeepSeek V4 Flash — ‏410 input، و71,300 cached، و310 output tokens لكل طلب +- DeepSeek V4 Flash Vision Exp — ‏410 input، و71,300 cached، و310 output tokens لكل طلب - MiniMax M3 — ‏510 input، و56,000 cached، و190 output tokens لكل طلب - MiniMax M2.7 — ‏300 input، و55,000 cached، و125 output tokens لكل طلب - Muse Spark 1.2 Contributor — ‏620 input، و71,400 cached، و300 output tokens لكل طلب @@ -160,10 +163,14 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC؛ وجميع الساعات الأخرى Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC؛ وجميع الساعات الأخرى Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** يتم تحويل الصور إلى رموز بناءً على أبعادها، وتُحتسب كرموز إدخال إلى جانب رموز النص. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** مجاني لفترة محدودة. @@ -211,6 +218,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -261,6 +269,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | نعم | ليست ZDR | | DeepSeek V4 Pro | غير مستخدَمة | 0 أيام | | DeepSeek V4 Flash | غير مستخدَمة | 0 أيام | +| DeepSeek V4 Flash Vision Exp | غير مستخدَمة | 0 أيام | | Hy3 | غير مستخدَمة | 0 أيام | | Ox Alpha Free | غير مستخدَمة | 0 أيام | diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index eca94b3a9..852f4e5a6 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -78,6 +78,7 @@ Trenutna lista modela uključuje: - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (ograničeno vrijeme) @@ -118,6 +119,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -130,6 +132,7 @@ Procjene se zasnivaju na zapaženim obrascima zahtjeva: - Kimi K2.7/K2.6 — 870 ulaznih, 55,000 keširanih, 200 izlaznih tokena po zahtjevu - DeepSeek V4 Pro — 750 ulaznih, 82,000 keširanih, 290 izlaznih tokena po zahtjevu - DeepSeek V4 Flash — 410 ulaznih, 71,300 keširanih, 310 izlaznih tokena po zahtjevu +- DeepSeek V4 Flash Vision Exp — 410 ulaznih, 71,300 keširanih, 310 izlaznih tokena po zahtjevu - MiniMax M3 — 510 ulaznih, 56,000 keširanih, 190 izlaznih tokena po zahtjevu - MiniMax M2.7 — 300 ulaznih, 55,000 keširanih, 125 izlaznih tokena po zahtjevu - Muse Spark 1.2 Contributor — 620 ulaznih, 71,400 keširanih, 300 izlaznih tokena po zahtjevu @@ -170,10 +173,14 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC; svi ostali sati su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC; svi ostali sati su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** Slike se pretvaraju u tokene na osnovu svojih dimenzija i naplaćuju kao ulazni tokeni zajedno s tekstualnim tokenima. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Besplatan ograničeno vrijeme. @@ -223,6 +230,7 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -275,6 +283,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Da | Nije ZDR | | DeepSeek V4 Pro | Ne koristi se | 0 dana | | DeepSeek V4 Flash | Ne koristi se | 0 dana | +| DeepSeek V4 Flash Vision Exp | Ne koristi se | 0 dana | | Hy3 | Ne koristi se | 0 dana | | Ox Alpha Free | Ne koristi se | 0 dana | diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 111a128b2..6b9b39ce4 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -78,6 +78,7 @@ Den nuværende liste over modeller inkluderer: - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (i en begrænset periode) @@ -118,6 +119,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -130,6 +132,7 @@ Estimaterne er baseret på observerede anmodningsmønstre: - Kimi K2.7/K2.6 — 870 input, 55.000 cachelagrede, 200 output-tokens pr. anmodning - DeepSeek V4 Pro — 750 input, 82.000 cachelagrede, 290 output-tokens pr. anmodning - DeepSeek V4 Flash — 410 input, 71.300 cachelagrede, 310 output-tokens pr. anmodning +- DeepSeek V4 Flash Vision Exp — 410 input, 71.300 cachelagrede, 310 output-tokens pr. anmodning - MiniMax M3 — 510 input, 56.000 cachelagrede, 190 output-tokens pr. anmodning - MiniMax M2.7 — 300 input, 55.000 cachelagrede, 125 output-tokens pr. anmodning - Muse Spark 1.2 Contributor — 620 input, 71.400 cachelagrede, 300 output-tokens pr. anmodning @@ -170,10 +173,14 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** Billeder konverteres til tokens baseret på deres dimensioner og afregnes som inputtokens sammen med teksttokens. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Gratis i en begrænset periode. @@ -223,6 +230,7 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -275,6 +283,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Ja | Ikke ZDR | | DeepSeek V4 Pro | Ikke brugt | 0 dage | | DeepSeek V4 Flash | Ikke brugt | 0 dage | +| DeepSeek V4 Flash Vision Exp | Ikke brugt | 0 dage | | Hy3 | Ikke brugt | 0 dage | | Ox Alpha Free | Ikke brugt | 0 dage | diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index cedd43fad..7c7d8ced7 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -70,6 +70,7 @@ Die aktuelle Liste der Modelle umfasst: - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (für begrenzte Zeit) @@ -110,6 +111,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -122,6 +124,7 @@ Die Schätzungen basieren auf beobachteten Anfragemustern: - Kimi K2.7/K2.6 — 870 Input-, 55.000 Cached-, 200 Output-Tokens pro Anfrage - DeepSeek V4 Pro — 750 Input-, 82.000 Cached-, 290 Output-Tokens pro Anfrage - DeepSeek V4 Flash — 410 Input-, 71.300 Cached-, 310 Output-Tokens pro Anfrage +- DeepSeek V4 Flash Vision Exp — 410 Input-, 71.300 Cached-, 310 Output-Tokens pro Anfrage - MiniMax M3 — 510 Input-, 56.000 Cached-, 190 Output-Tokens pro Anfrage - MiniMax M2.7 — 300 Input-, 55.000 Cached-, 125 Output-Tokens pro Anfrage - Muse Spark 1.2 Contributor — 620 Input-, 71.400 Cached-, 300 Output-Tokens pro Anfrage @@ -162,10 +165,14 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Die Peak-Zeiten sind 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Die Peak-Zeiten sind 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** Bilder werden anhand ihrer Abmessungen in Tokens umgewandelt und zusammen mit Text-Tokens als Input-Tokens abgerechnet. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Für begrenzte Zeit kostenlos. @@ -213,6 +220,7 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -263,6 +271,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Ja | Kein ZDR | | DeepSeek V4 Pro | Nicht verwendet | 0 Tage | | DeepSeek V4 Flash | Nicht verwendet | 0 Tage | +| DeepSeek V4 Flash Vision Exp | Nicht verwendet | 0 Tage | | Hy3 | Nicht verwendet | 0 Tage | | Ox Alpha Free | Nicht verwendet | 0 Tage | diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index d1f9b7e4a..4f7ffc8e0 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -78,6 +78,7 @@ La lista actual de modelos incluye: - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (por tiempo limitado) @@ -118,6 +119,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -130,6 +132,7 @@ Las estimaciones se basan en los patrones de peticiones observados: - Kimi K2.7/K2.6 — 870 tokens de entrada, 55,000 en caché, 200 tokens de salida por petición - DeepSeek V4 Pro — 750 tokens de entrada, 82,000 en caché, 290 tokens de salida por petición - DeepSeek V4 Flash — 410 tokens de entrada, 71,300 en caché, 310 tokens de salida por petición +- DeepSeek V4 Flash Vision Exp — 410 tokens de entrada, 71,300 en caché, 310 tokens de salida por petición - MiniMax M3 — 510 tokens de entrada, 56,000 en caché, 190 tokens de salida por petición - MiniMax M2.7 — 300 tokens de entrada, 55,000 en caché, 125 tokens de salida por petición - Muse Spark 1.2 Contributor — 620 tokens de entrada, 71,400 en caché, 300 tokens de salida por petición @@ -170,10 +173,14 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC; todas las demás horas son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC; todas las demás horas son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** Las imágenes se convierten en tokens según sus dimensiones y se facturan como tokens de entrada junto con los tokens de texto. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Gratis por tiempo limitado. @@ -223,6 +230,7 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -275,6 +283,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Sí | Sin ZDR | | DeepSeek V4 Pro | No utilizado | 0 días | | DeepSeek V4 Flash | No utilizado | 0 días | +| DeepSeek V4 Flash Vision Exp | No utilizado | 0 días | | Hy3 | No utilizado | 0 días | | Ox Alpha Free | No utilizado | 0 días | diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 14c912dfa..58e0653c3 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -68,6 +68,7 @@ La liste actuelle des modèles comprend : - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (pour une durée limitée) @@ -108,6 +109,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -120,6 +122,7 @@ Les estimations sont basées sur les schémas de requêtes observés : - Kimi K2.7/K2.6 — 870 tokens en entrée, 55,000 en cache, 200 tokens en sortie par requête - DeepSeek V4 Pro — 750 tokens en entrée, 82,000 en cache, 290 tokens en sortie par requête - DeepSeek V4 Flash — 410 tokens en entrée, 71,300 en cache, 310 tokens en sortie par requête +- DeepSeek V4 Flash Vision Exp — 410 tokens en entrée, 71,300 en cache, 310 tokens en sortie par requête - MiniMax M3 — 510 tokens en entrée, 56,000 en cache, 190 tokens en sortie par requête - MiniMax M2.7 — 300 tokens en entrée, 55,000 en cache, 125 tokens en sortie par requête - Muse Spark 1.2 Contributor — 620 tokens en entrée, 71,400 en cache, 300 tokens en sortie par requête @@ -160,10 +163,14 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC ; toutes les autres heures sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC ; toutes les autres heures sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** Les images sont converties en tokens selon leurs dimensions et facturées comme tokens d’entrée avec les tokens de texte. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Gratuit pour une durée limitée. @@ -211,6 +218,7 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -261,6 +269,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Oui | Pas de ZDR | | DeepSeek V4 Pro | Non utilisé | 0 jour | | DeepSeek V4 Flash | Non utilisé | 0 jour | +| DeepSeek V4 Flash Vision Exp | Non utilisé | 0 jour | | Hy3 | Non utilisé | 0 jour | | Ox Alpha Free | Non utilisé | 0 jour | diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index e1fcc9c75..27bc1b2f4 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -78,6 +78,7 @@ The current list of models includes: - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (limited time) @@ -118,6 +119,7 @@ The table below provides an estimated request count based on typical Go usage pa | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -130,6 +132,7 @@ The estimates are based on observed request patterns: - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens per request - DeepSeek V4 Pro — 750 input, 82,000 cached, 290 output tokens per request - DeepSeek V4 Flash — 410 input, 71,300 cached, 310 output tokens per request +- DeepSeek V4 Flash Vision Exp — 410 input, 71,300 cached, 310 output tokens per request - MiniMax M3 — 510 input, 56,000 cached, 190 output tokens per request - MiniMax M2.7 — 300 input, 55,000 cached, 125 output tokens per request - Muse Spark 1.2 Contributor — 620 input, 71,400 cached, 300 output tokens per request @@ -170,10 +173,14 @@ The estimates are also based on the following prices per 1M tokens and the month | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC; all other hours are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC; all other hours are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** Images are converted into tokens based on their dimensions and billed as input tokens alongside text tokens. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Free for a limited time. @@ -223,6 +230,7 @@ You can also access Go models through the following API endpoints. | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -275,6 +283,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Yes | Not ZDR | | DeepSeek V4 Pro | Not used | 0 days\* | | DeepSeek V4 Flash | Not used | 0 days\* | +| DeepSeek V4 Flash Vision Exp | Not used | 0 days\* | | Hy3 | Not used | 0 days | | Ox Alpha Free | Not used | 0 days | diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 0c86d7f1c..91e799f19 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -76,6 +76,7 @@ L'elenco attuale dei modelli include: - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (per un periodo limitato) @@ -116,6 +117,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -128,6 +130,7 @@ Le stime si basano sui pattern di richieste osservati: - Kimi K2.7/K2.6 — 870 di input, 55.000 in cache, 200 token di output per richiesta - DeepSeek V4 Pro — 750 di input, 82.000 in cache, 290 token di output per richiesta - DeepSeek V4 Flash — 410 di input, 71.300 in cache, 310 token di output per richiesta +- DeepSeek V4 Flash Vision Exp — 410 di input, 71.300 in cache, 310 token di output per richiesta - MiniMax M3 — 510 di input, 56.000 in cache, 190 token di output per richiesta - MiniMax M2.7 — 300 di input, 55.000 in cache, 125 token di output per richiesta - Muse Spark 1.2 Contributor — 620 di input, 71.400 in cache, 300 token di output per richiesta @@ -168,10 +171,14 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC; tutti gli altri orari sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC; tutti gli altri orari sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** Le immagini vengono convertite in token in base alle loro dimensioni e fatturate come token di input insieme ai token di testo. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Gratis per un periodo limitato. @@ -221,6 +228,7 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -273,6 +281,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Sì | Non ZDR | | DeepSeek V4 Pro | Non utilizzato | 0 giorni | | DeepSeek V4 Flash | Non utilizzato | 0 giorni | +| DeepSeek V4 Flash Vision Exp | Non utilizzato | 0 giorni | | Hy3 | Non utilizzato | 0 giorni | | Ox Alpha Free | Non utilizzato | 0 giorni | diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index f1fd0f324..dc6f0500b 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -68,6 +68,7 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (期間限定) @@ -108,6 +109,7 @@ OpenCode Goには以下の制限が含まれています: | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -120,6 +122,7 @@ OpenCode Goには以下の制限が含まれています: - Kimi K2.7/K2.6 — リクエストあたり 入力 870トークン、キャッシュ 55,000トークン、出力 200トークン - DeepSeek V4 Pro — リクエストあたり 入力 750トークン、キャッシュ 82,000トークン、出力 290トークン - DeepSeek V4 Flash — リクエストあたり 入力 410トークン、キャッシュ 71,300トークン、出力 310トークン +- DeepSeek V4 Flash Vision Exp — リクエストあたり 入力 410トークン、キャッシュ 71,300トークン、出力 310トークン - MiniMax M3 — リクエストあたり 入力 510トークン、キャッシュ 56,000トークン、出力 190トークン - MiniMax M2.7 — リクエストあたり 入力 300トークン、キャッシュ 55,000トークン、出力 125トークン - Muse Spark 1.2 Contributor — リクエストあたり 入力 620トークン、キャッシュ 71,400トークン、出力 300トークン @@ -160,10 +163,14 @@ OpenCode Goには以下の制限が含まれています: | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Peak時間は01:00-04:00と06:00-10:00 UTCで、それ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak時間は01:00-04:00と06:00-10:00 UTCで、それ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 + +**DeepSeek V4 Flash Vision Exp:** 画像はサイズに基づいてトークンに変換され、テキストトークンと合わせて入力トークンとして課金されます。 [詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 **Ox Alpha Free:** 期間限定で無料です。 @@ -211,6 +218,7 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -261,6 +269,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | はい | ZDRではない | | DeepSeek V4 Pro | 使用なし | 0日 | | DeepSeek V4 Flash | 使用なし | 0日 | +| DeepSeek V4 Flash Vision Exp | 使用なし | 0日 | | Hy3 | 使用なし | 0日 | | Ox Alpha Free | 使用なし | 0日 | diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 43ef4da64..df5e69db1 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -68,6 +68,7 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (한정된 기간) @@ -108,6 +109,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -120,6 +122,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. - Kimi K2.7/K2.6 — 요청당 입력 870, 캐시 55,000, 출력 토큰 200 - DeepSeek V4 Pro — 요청당 입력 750, 캐시 82,000, 출력 토큰 290 - DeepSeek V4 Flash — 요청당 입력 410, 캐시 71,300, 출력 토큰 310 +- DeepSeek V4 Flash Vision Exp — 요청당 입력 410, 캐시 71,300, 출력 토큰 310 - MiniMax M3 — 요청당 입력 510, 캐시 56,000, 출력 토큰 190 - MiniMax M2.7 — 요청당 입력 300, 캐시 55,000, 출력 토큰 125 - Muse Spark 1.2 Contributor — 요청당 입력 620, 캐시 71,400, 출력 토큰 300 @@ -160,10 +163,14 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Peak 시간은 01:00-04:00 및 06:00-10:00 UTC이며, 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 시간은 01:00-04:00 및 06:00-10:00 UTC이며, 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** 이미지는 크기에 따라 토큰으로 변환되며 텍스트 토큰과 함께 입력 토큰으로 청구됩니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** 한정된 기간 동안 무료입니다. @@ -211,6 +218,7 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -261,6 +269,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | 예 | ZDR 아님 | | DeepSeek V4 Pro | 사용되지 않음 | 0일 | | DeepSeek V4 Flash | 사용되지 않음 | 0일 | +| DeepSeek V4 Flash Vision Exp | 사용되지 않음 | 0일 | | Hy3 | 사용되지 않음 | 0일 | | Ox Alpha Free | 사용되지 않음 | 0일 | diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 42c856509..3a3defd48 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -78,6 +78,7 @@ Den nåværende listen over modeller inkluderer: - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (i en begrenset periode) @@ -118,6 +119,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -130,6 +132,7 @@ Estimatene er basert på observerte forespørselsmønstre: - Kimi K2.7/K2.6 — 870 input, 55 000 bufret, 200 output-tokens per forespørsel - DeepSeek V4 Pro — 750 input, 82 000 bufret, 290 output-tokens per forespørsel - DeepSeek V4 Flash — 410 input, 71 300 bufret, 310 output-tokens per forespørsel +- DeepSeek V4 Flash Vision Exp — 410 input, 71 300 bufret, 310 output-tokens per forespørsel - MiniMax M3 — 510 input, 56 000 bufret, 190 output-tokens per forespørsel - MiniMax M2.7 — 300 input, 55 000 bufret, 125 output-tokens per forespørsel - Muse Spark 1.2 Contributor — 620 input, 71 400 bufret, 300 output-tokens per forespørsel @@ -170,10 +173,14 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** Bilder konverteres til tokens basert på dimensjonene og faktureres som input-tokens sammen med tekst-tokens. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Gratis i en begrenset periode. @@ -223,6 +230,7 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -275,6 +283,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Ja | Ikke ZDR | | DeepSeek V4 Pro | Brukes ikke | 0 dager | | DeepSeek V4 Flash | Brukes ikke | 0 dager | +| DeepSeek V4 Flash Vision Exp | Brukes ikke | 0 dager | | Hy3 | Brukes ikke | 0 dager | | Ox Alpha Free | Brukes ikke | 0 dager | diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index b85721ca6..a0e67dab4 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -72,6 +72,7 @@ Obecna lista modeli obejmuje: - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (przez ograniczony czas) @@ -112,6 +113,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -124,6 +126,7 @@ Szacunki te opierają się na zaobserwowanych wzorcach żądań: - Kimi K2.7/K2.6 — 870 tokenów wejściowych, 55 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie - DeepSeek V4 Pro — 750 tokenów wejściowych, 82 000 w pamięci podręcznej, 290 tokenów wyjściowych na żądanie - DeepSeek V4 Flash — 410 tokenów wejściowych, 71 300 w pamięci podręcznej, 310 tokenów wyjściowych na żądanie +- DeepSeek V4 Flash Vision Exp — 410 tokenów wejściowych, 71 300 w pamięci podręcznej, 310 tokenów wyjściowych na żądanie - MiniMax M3 — 510 tokenów wejściowych, 56 000 w pamięci podręcznej, 190 tokenów wyjściowych na żądanie - MiniMax M2.7 — 300 tokenów wejściowych, 55 000 w pamięci podręcznej, 125 tokenów wyjściowych na żądanie - Muse Spark 1.2 Contributor — 620 tokenów wejściowych, 71 400 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie @@ -164,10 +167,14 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC; wszystkie pozostałe godziny to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC; wszystkie pozostałe godziny to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** Obrazy są przeliczane na tokeny na podstawie ich wymiarów i rozliczane jako tokeny wejściowe razem z tokenami tekstowymi. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Bezpłatny przez ograniczony czas. @@ -215,6 +222,7 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -267,6 +275,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Tak | Nie ZDR | | DeepSeek V4 Pro | Niewykorzystywane | 0 dni | | DeepSeek V4 Flash | Niewykorzystywane | 0 dni | +| DeepSeek V4 Flash Vision Exp | Niewykorzystywane | 0 dni | | Hy3 | Niewykorzystywane | 0 dni | | Ox Alpha Free | Niewykorzystywane | 0 dni | diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index ad3823df5..2309e3644 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -78,6 +78,7 @@ A lista atual de modelos inclui: - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (por tempo limitado) @@ -118,6 +119,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -130,6 +132,7 @@ As estimativas se baseiam nos padrões de requisições observados: - Kimi K2.7/K2.6 — 870 tokens de entrada, 55.000 em cache, 200 tokens de saída por requisição - DeepSeek V4 Pro — 750 tokens de entrada, 82.000 em cache, 290 tokens de saída por requisição - DeepSeek V4 Flash — 410 tokens de entrada, 71.300 em cache, 310 tokens de saída por requisição +- DeepSeek V4 Flash Vision Exp — 410 tokens de entrada, 71.300 em cache, 310 tokens de saída por requisição - MiniMax M3 — 510 tokens de entrada, 56.000 em cache, 190 tokens de saída por requisição - MiniMax M2.7 — 300 tokens de entrada, 55.000 em cache, 125 tokens de saída por requisição - Muse Spark 1.2 Contributor — 620 tokens de entrada, 71.400 em cache, 300 tokens de saída por requisição @@ -170,10 +173,14 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC; todos os demais horários são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC; todos os demais horários são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** As imagens são convertidas em tokens com base em suas dimensões e cobradas como tokens de entrada junto com os tokens de texto. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Gratuito por tempo limitado. @@ -223,6 +230,7 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -275,6 +283,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Sim | Não é ZDR | | DeepSeek V4 Pro | Não usado | 0 dias | | DeepSeek V4 Flash | Não usado | 0 dias | +| DeepSeek V4 Flash Vision Exp | Não usado | 0 dias | | Hy3 | Não usado | 0 dias | | Ox Alpha Free | Não usado | 0 dias | diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index cf4753800..157abe345 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -78,6 +78,7 @@ OpenCode Go работает так же, как и любой другой пр - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (ограниченное время) @@ -118,6 +119,7 @@ OpenCode Go включает следующие лимиты: | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -130,6 +132,7 @@ OpenCode Go включает следующие лимиты: - Kimi K2.7/K2.6 — 870 входных, 55,000 кешированных, 200 выходных токенов на запрос - DeepSeek V4 Pro — 750 входных, 82,000 кешированных, 290 выходных токенов на запрос - DeepSeek V4 Flash — 410 входных, 71,300 кешированных, 310 выходных токенов на запрос +- DeepSeek V4 Flash Vision Exp — 410 входных, 71,300 кешированных, 310 выходных токенов на запрос - MiniMax M3 — 510 входных, 56,000 кешированных, 190 выходных токенов на запрос - MiniMax M2.7 — 300 входных, 55,000 кешированных, 125 выходных токенов на запрос - Muse Spark 1.2 Contributor — 620 входных, 71,400 кешированных, 300 выходных токенов на запрос @@ -170,10 +173,14 @@ OpenCode Go включает следующие лимиты: | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Часы Peak: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Часы Peak: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** Изображения преобразуются в токены с учётом их размеров и оплачиваются как входные токены вместе с текстовыми токенами. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Бесплатно в течение ограниченного времени. @@ -223,6 +230,7 @@ OpenCode Go включает следующие лимиты: | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -275,6 +283,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Да | Не ZDR | | DeepSeek V4 Pro | Не используется | 0 дней | | DeepSeek V4 Flash | Не используется | 0 дней | +| DeepSeek V4 Flash Vision Exp | Не используется | 0 дней | | Hy3 | Не используется | 0 дней | | Ox Alpha Free | Не используется | 0 дней | diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index d183a6bec..403e7a0d2 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -68,6 +68,7 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (ในช่วงเวลาจำกัด) @@ -108,6 +109,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -120,6 +122,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens ต่อ request - DeepSeek V4 Pro — 750 input, 82,000 cached, 290 output tokens ต่อ request - DeepSeek V4 Flash — 410 input, 71,300 cached, 310 output tokens ต่อ request +- DeepSeek V4 Flash Vision Exp — 410 input, 71,300 cached, 310 output tokens ต่อ request - MiniMax M3 — 510 input, 56,000 cached, 190 output tokens ต่อ request - MiniMax M2.7 — 300 input, 55,000 cached, 125 output tokens ต่อ request - Muse Spark 1.2 Contributor — 620 input, 71,400 cached, 300 output tokens ต่อ request @@ -160,10 +163,14 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ส่วนเวลาอื่นทั้งหมดเป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ส่วนเวลาอื่นทั้งหมดเป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) + +**DeepSeek V4 Flash Vision Exp:** รูปภาพจะถูกแปลงเป็น token ตามขนาด และคิดค่าบริการเป็น input token รวมกับ text token [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) **Ox Alpha Free:** ใช้งานฟรีในช่วงเวลาจำกัด @@ -211,6 +218,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -261,6 +269,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | ใช่ | ไม่ใช่ ZDR | | DeepSeek V4 Pro | ไม่นำไปใช้ | 0 วัน | | DeepSeek V4 Flash | ไม่นำไปใช้ | 0 วัน | +| DeepSeek V4 Flash Vision Exp | ไม่นำไปใช้ | 0 วัน | | Hy3 | ไม่นำไปใช้ | 0 วัน | | Ox Alpha Free | ไม่นำไปใช้ | 0 วัน | diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index ec99b3b77..3f24d3f8f 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -68,6 +68,7 @@ Mevcut model listesi şunları içerir: - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (sınırlı bir süre için) @@ -108,6 +109,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -120,6 +122,7 @@ Tahminler, gözlemlenen istek modellerine dayanır: - Kimi K2.7/K2.6 — İstek başına 870 girdi, 55.000 önbelleğe alınmış, 200 çıktı token'ı - DeepSeek V4 Pro — İstek başına 750 girdi, 82.000 önbelleğe alınmış, 290 çıktı token'ı - DeepSeek V4 Flash — İstek başına 410 girdi, 71.300 önbelleğe alınmış, 310 çıktı token'ı +- DeepSeek V4 Flash Vision Exp — İstek başına 410 girdi, 71.300 önbelleğe alınmış, 310 çıktı token'ı - MiniMax M3 — İstek başına 510 girdi, 56.000 önbelleğe alınmış, 190 çıktı token'ı - MiniMax M2.7 — İstek başına 300 girdi, 55.000 önbelleğe alınmış, 125 çıktı token'ı - Muse Spark 1.2 Contributor — İstek başına 620 girdi, 71.400 önbelleğe alınmış, 300 çıktı token'ı @@ -160,10 +163,14 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Peak saatleri 01:00-04:00 ve 06:00-10:00 UTC'dir; diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak saatleri 01:00-04:00 ve 06:00-10:00 UTC'dir; diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). + +**DeepSeek V4 Flash Vision Exp:** Görseller boyutlarına göre token'lara dönüştürülür ve metin token'larıyla birlikte girdi token'ları olarak ücretlendirilir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). **Ox Alpha Free:** Sınırlı bir süre için ücretsiz. @@ -211,6 +218,7 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -261,6 +269,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | Evet | ZDR değil | | DeepSeek V4 Pro | Kullanılmaz | 0 gün | | DeepSeek V4 Flash | Kullanılmaz | 0 gün | +| DeepSeek V4 Flash Vision Exp | Kullanılmaz | 0 gün | | Hy3 | Kullanılmaz | 0 gün | | Ox Alpha Free | Kullanılmaz | 0 gün | diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 279c0a11f..56ad66e97 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -68,6 +68,7 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (限时) @@ -108,6 +109,7 @@ OpenCode Go 包含以下限制: | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -120,6 +122,7 @@ OpenCode Go 包含以下限制: - Kimi K2.7/K2.6 — 每次请求 870 个输入 token,55,000 个缓存 token,200 个输出 token - DeepSeek V4 Pro — 每次请求 750 个输入 token,82,000 个缓存 token,290 个输出 token - DeepSeek V4 Flash — 每次请求 410 个输入 token,71,300 个缓存 token,310 个输出 token +- DeepSeek V4 Flash Vision Exp — 每次请求 410 个输入 token,71,300 个缓存 token,310 个输出 token - MiMo-V2.5 — 每次请求 830 个输入 token,71,500 个缓存 token,295 个输出 token - MiMo-V2.5-Pro — 每次请求 790 个输入 token,86,000 个缓存 token,305 个输出 token - MiniMax M3 — 每次请求 510 个输入 token,56,000 个缓存 token,190 个输出 token @@ -160,10 +163,14 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Peak 时段为 01:00-04:00 和 06:00-10:00 UTC;其他所有时段均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 时段为 01:00-04:00 和 06:00-10:00 UTC;其他所有时段均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 + +**DeepSeek V4 Flash Vision Exp:** 图片会根据尺寸转换为 token,并与文本 token 一起按输入 token 计费。 [了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 **Ox Alpha Free:** 限时免费。 @@ -211,6 +218,7 @@ OpenCode Go 包含以下限制: | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -261,6 +269,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | 是 | 非 ZDR | | DeepSeek V4 Pro | 不使用 | 0 天 | | DeepSeek V4 Flash | 不使用 | 0 天 | +| DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | | Hy3 | 不使用 | 0 天 | | Ox Alpha Free | 不使用 | 0 天 | diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index e295d64dd..a3a5cd4c2 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -68,6 +68,7 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 - **Qwen3.6 Plus** - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** +- **DeepSeek V4 Flash Vision Exp** - **Hy3** - **Ox Alpha Free** (限時) @@ -108,6 +109,7 @@ OpenCode Go 包含以下限制: | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | | Ox Alpha Free | - | - | - | @@ -120,6 +122,7 @@ OpenCode Go 包含以下限制: - Kimi K2.7/K2.6 — 每次請求 870 個輸入 token、55,000 個快取 token、200 個輸出 token - DeepSeek V4 Pro — 每次請求 750 個輸入 token、82,000 個快取 token、290 個輸出 token - DeepSeek V4 Flash — 每次請求 410 個輸入 token、71,300 個快取 token、310 個輸出 token +- DeepSeek V4 Flash Vision Exp — 每次請求 410 個輸入 token、71,300 個快取 token、310 個輸出 token - MiniMax M3 — 每次請求 510 個輸入 token、56,000 個快取 token、190 個輸出 token - MiniMax M2.7 — 每次請求 300 個輸入 token、55,000 個快取 token、125 個輸出 token - Muse Spark 1.2 Contributor — 每次請求 620 個輸入 token、71,400 個快取 token、300 個輸出 token @@ -160,10 +163,14 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / Pro:** Peak 時段為 01:00-04:00 和 06:00-10:00 UTC;其他所有時段均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 時段為 01:00-04:00 和 06:00-10:00 UTC;其他所有時段均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 + +**DeepSeek V4 Flash Vision Exp:** 圖片會根據尺寸轉換為 token,並與文字 token 一起按輸入 token 計費。 [了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 **Ox Alpha Free:** 限時免費。 @@ -211,6 +218,7 @@ OpenCode Go 包含以下限制: | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -261,6 +269,7 @@ https://opencode.ai/zen/go/v1/models | Muse Spark 1.2 Contributor | 是 | 非 ZDR | | DeepSeek V4 Pro | 不使用 | 0 天 | | DeepSeek V4 Flash | 不使用 | 0 天 | +| DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | | Hy3 | 不使用 | 0 天 | | Ox Alpha Free | 不使用 | 0 天 | From fa8f17014c97913b2200aa642f0ab75f0bff9cb8 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Fri, 21 Aug 2026 12:58:43 +0000 Subject: [PATCH 093/271] chore: generate --- packages/web/src/content/docs/ar/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/bs/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/da/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/de/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/es/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/fr/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/it/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/ja/go.mdx | 202 ++++++++++----------- packages/web/src/content/docs/ko/go.mdx | 202 ++++++++++----------- packages/web/src/content/docs/nb/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/pl/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/pt-br/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/ru/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/th/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/tr/go.mdx | 200 ++++++++++---------- packages/web/src/content/docs/zh-cn/go.mdx | 202 ++++++++++----------- packages/web/src/content/docs/zh-tw/go.mdx | 202 ++++++++++----------- 18 files changed, 1804 insertions(+), 1804 deletions(-) diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 9dbc12d8d..b08caa858 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -88,30 +88,30 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال يوضح الجدول أدناه عددًا تقديريًا للطلبات بناءً على أنماط استخدام Go المعتادة: -| Model | الطلبات لكل 5 ساعات | الطلبات في الأسبوع | الطلبات في الشهر | -| -------------------------- | ------------------- | ------------------ | ---------------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | الطلبات لكل 5 ساعات | الطلبات في الأسبوع | الطلبات في الشهر | +| ---------------------------- | ------------------- | ------------------ | ---------------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | تستند التقديرات إلى أنماط الطلبات المرصودة: @@ -136,37 +136,37 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال تستند التقديرات أيضًا إلى الأسعار التالية لكل 1M tokens والاستخدام الشهري المتضمن مع كل نموذج: -| النموذج | الإدخال | الإخراج | القراءة المخزنة | الكتابة المخزنة | الاستخدام | -| ---------------------------- | ------- | ------- | --------------- | --------------- | --------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| النموذج | الإدخال | الإخراج | القراءة المخزنة | الكتابة المخزنة | الاستخدام | +| --------------------------------------- | ------- | ------- | --------------- | --------------- | --------- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC؛ وجميع الساعات الأخرى Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). @@ -206,31 +206,31 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال يمكنك أيضًا الوصول إلى نماذج Go عبر نقاط نهاية API التالية. -| Model | Model ID | Endpoint | AI SDK Package | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | يستخدم [model id](/docs/config/#models) في إعدادات OpenCode لديك التنسيق `opencode-go/`. على سبيل المثال، بالنسبة إلى Kimi K3، ستستخدم `opencode-go/kimi-k3` في إعداداتك. @@ -248,30 +248,30 @@ https://opencode.ai/zen/go/v1/models ## الخصوصية -| النموذج | تدريب النموذج | الاحتفاظ بالبيانات | -| -------------------------- | ------------- | ------------------ | -| Grok 4.5 | غير مستخدَمة | 30 يومًا | -| GPT 5.6 Luna | غير مستخدَمة | 30 يومًا | -| GLM-5.3 | غير مستخدَمة | 0 أيام | -| GLM-5.2 | غير مستخدَمة | 0 أيام | -| GLM-5.1 | غير مستخدَمة | 0 أيام | -| Kimi K3 | غير مستخدَمة | 0 أيام | -| Kimi K2.7 Code | غير مستخدَمة | 0 أيام | -| Kimi K2.6 | غير مستخدَمة | 0 أيام | -| MiMo-V2.5-Pro | غير مستخدَمة | 0 أيام | -| MiMo-V2.5 | غير مستخدَمة | 0 أيام | -| Qwen3.8 Max | غير مستخدَمة | 0 أيام | -| Qwen3.7 Max | غير مستخدَمة | 0 أيام | -| Qwen3.7 Plus | غير مستخدَمة | 0 أيام | -| Qwen3.6 Plus | غير مستخدَمة | 0 أيام | -| MiniMax M3 | غير مستخدَمة | 0 أيام | -| MiniMax M2.7 | غير مستخدَمة | 0 أيام | -| Muse Spark 1.2 Contributor | نعم | ليست ZDR | -| DeepSeek V4 Pro | غير مستخدَمة | 0 أيام | -| DeepSeek V4 Flash | غير مستخدَمة | 0 أيام | +| النموذج | تدريب النموذج | الاحتفاظ بالبيانات | +| ---------------------------- | ------------- | ------------------ | +| Grok 4.5 | غير مستخدَمة | 30 يومًا | +| GPT 5.6 Luna | غير مستخدَمة | 30 يومًا | +| GLM-5.3 | غير مستخدَمة | 0 أيام | +| GLM-5.2 | غير مستخدَمة | 0 أيام | +| GLM-5.1 | غير مستخدَمة | 0 أيام | +| Kimi K3 | غير مستخدَمة | 0 أيام | +| Kimi K2.7 Code | غير مستخدَمة | 0 أيام | +| Kimi K2.6 | غير مستخدَمة | 0 أيام | +| MiMo-V2.5-Pro | غير مستخدَمة | 0 أيام | +| MiMo-V2.5 | غير مستخدَمة | 0 أيام | +| Qwen3.8 Max | غير مستخدَمة | 0 أيام | +| Qwen3.7 Max | غير مستخدَمة | 0 أيام | +| Qwen3.7 Plus | غير مستخدَمة | 0 أيام | +| Qwen3.6 Plus | غير مستخدَمة | 0 أيام | +| MiniMax M3 | غير مستخدَمة | 0 أيام | +| MiniMax M2.7 | غير مستخدَمة | 0 أيام | +| Muse Spark 1.2 Contributor | نعم | ليست ZDR | +| DeepSeek V4 Pro | غير مستخدَمة | 0 أيام | +| DeepSeek V4 Flash | غير مستخدَمة | 0 أيام | | DeepSeek V4 Flash Vision Exp | غير مستخدَمة | 0 أيام | -| Hy3 | غير مستخدَمة | 0 أيام | -| Ox Alpha Free | غير مستخدَمة | 0 أيام | +| Hy3 | غير مستخدَمة | 0 أيام | +| Ox Alpha Free | غير مستخدَمة | 0 أيام | - **Grok 4.5:** تعطّل ZDR ميزات API مهمة تعتمد على البيانات المخزنة، بما في ذلك Responses API ذات الحالة، وFiles and Collections، وBatch API. [اعرف المزيد](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** تُنشأ سجلات مراقبة إساءة الاستخدام لكل استخدام لميزات API، ويُحتفظ بها لمدة تصل إلى 30 يومًا. [اعرف المزيد](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 852f4e5a6..593c0a974 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -98,30 +98,30 @@ Ograničenja su definisana u dolarskoj vrijednosti. To znači da vaš stvarni br Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca korištenja Go pretplate: -| Model | zahtjeva na 5 sati | zahtjeva sedmično | zahtjeva mjesečno | -| -------------------------- | ------------------ | ----------------- | ----------------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | zahtjeva na 5 sati | zahtjeva sedmično | zahtjeva mjesečno | +| ---------------------------- | ------------------ | ----------------- | ----------------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | Procjene se zasnivaju na zapaženim obrascima zahtjeva: @@ -146,37 +146,37 @@ Procjene se zasnivaju na zapaženim obrascima zahtjeva: Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj potrošnji uključenoj uz svaki model: -| Model | Input | Output | Cached Read | Cached Write | Potrošnja | -| ---------------------------- | ------ | ------ | ----------- | ------------ | --------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Model | Input | Output | Cached Read | Cached Write | Potrošnja | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | --------- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC; svi ostali sati su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). @@ -218,31 +218,31 @@ Za ove modele i dalje dobijate malo više nego da direktno plaćate provajderima Također možete pristupiti Go modelima putem sljedećih API endpointa. -| Model | Model ID | Endpoint | AI SDK Paket | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Paket | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Model id](/docs/config/#models) u vašoj OpenCode konfiguraciji koristi format `opencode-go/`. Na primjer, za Kimi K3, koristili biste @@ -262,30 +262,30 @@ https://opencode.ai/zen/go/v1/models ## Privatnost -| Model | Treniranje modela | Zadržavanje podataka | -| -------------------------- | ----------------- | -------------------- | -| Grok 4.5 | Ne koristi se | 30 dana | -| GPT 5.6 Luna | Ne koristi se | 30 dana | -| GLM-5.3 | Ne koristi se | 0 dana | -| GLM-5.2 | Ne koristi se | 0 dana | -| GLM-5.1 | Ne koristi se | 0 dana | -| Kimi K3 | Ne koristi se | 0 dana | -| Kimi K2.7 Code | Ne koristi se | 0 dana | -| Kimi K2.6 | Ne koristi se | 0 dana | -| MiMo-V2.5-Pro | Ne koristi se | 0 dana | -| MiMo-V2.5 | Ne koristi se | 0 dana | -| Qwen3.8 Max | Ne koristi se | 0 dana | -| Qwen3.7 Max | Ne koristi se | 0 dana | -| Qwen3.7 Plus | Ne koristi se | 0 dana | -| Qwen3.6 Plus | Ne koristi se | 0 dana | -| MiniMax M3 | Ne koristi se | 0 dana | -| MiniMax M2.7 | Ne koristi se | 0 dana | -| Muse Spark 1.2 Contributor | Da | Nije ZDR | -| DeepSeek V4 Pro | Ne koristi se | 0 dana | -| DeepSeek V4 Flash | Ne koristi se | 0 dana | +| Model | Treniranje modela | Zadržavanje podataka | +| ---------------------------- | ----------------- | -------------------- | +| Grok 4.5 | Ne koristi se | 30 dana | +| GPT 5.6 Luna | Ne koristi se | 30 dana | +| GLM-5.3 | Ne koristi se | 0 dana | +| GLM-5.2 | Ne koristi se | 0 dana | +| GLM-5.1 | Ne koristi se | 0 dana | +| Kimi K3 | Ne koristi se | 0 dana | +| Kimi K2.7 Code | Ne koristi se | 0 dana | +| Kimi K2.6 | Ne koristi se | 0 dana | +| MiMo-V2.5-Pro | Ne koristi se | 0 dana | +| MiMo-V2.5 | Ne koristi se | 0 dana | +| Qwen3.8 Max | Ne koristi se | 0 dana | +| Qwen3.7 Max | Ne koristi se | 0 dana | +| Qwen3.7 Plus | Ne koristi se | 0 dana | +| Qwen3.6 Plus | Ne koristi se | 0 dana | +| MiniMax M3 | Ne koristi se | 0 dana | +| MiniMax M2.7 | Ne koristi se | 0 dana | +| Muse Spark 1.2 Contributor | Da | Nije ZDR | +| DeepSeek V4 Pro | Ne koristi se | 0 dana | +| DeepSeek V4 Flash | Ne koristi se | 0 dana | | DeepSeek V4 Flash Vision Exp | Ne koristi se | 0 dana | -| Hy3 | Ne koristi se | 0 dana | -| Ox Alpha Free | Ne koristi se | 0 dana | +| Hy3 | Ne koristi se | 0 dana | +| Ox Alpha Free | Ne koristi se | 0 dana | - **Grok 4.5:** ZDR onemogućava važne API funkcije koje zavise od pohranjenih podataka, uključujući Responses API s očuvanjem stanja, Files and Collections i Batch API. [Saznajte više](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Zapisi o nadzoru zloupotrebe generišu se za svako korištenje API funkcija i čuvaju do 30 dana. [Saznajte više](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 6b9b39ce4..3a5241aa2 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -98,30 +98,30 @@ Grænserne er defineret i dollarværdi. Det betyder, at dit faktiske antal anmod Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-forbrugsmønstre: -| Model | anmodninger pr. 5 timer | anmodninger pr. uge | anmodninger pr. måned | -| -------------------------- | ----------------------- | ------------------- | --------------------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | anmodninger pr. 5 timer | anmodninger pr. uge | anmodninger pr. måned | +| ---------------------------- | ----------------------- | ------------------- | --------------------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | Estimaterne er baseret på observerede anmodningsmønstre: @@ -146,37 +146,37 @@ Estimaterne er baseret på observerede anmodningsmønstre: Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlige forbrug, der er inkluderet med hver model: -| Model | Input | Output | Cached Read | Cached Write | Forbrug | -| ---------------------------- | ------ | ------ | ----------- | ------------ | ------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Model | Input | Output | Cached Read | Cached Write | Forbrug | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | ------- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). @@ -218,31 +218,31 @@ Med disse modeller får du stadig lidt mere, end hvis du betalte modeludbyderne Du kan også få adgang til Go-modeller gennem følgende API-endpoints. -| Model | Model ID | Endpoint | AI SDK Package | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Dit [model id](/docs/config/#models) i din OpenCode config bruger formatet `opencode-go/`. For eksempel for Kimi K3, vil du @@ -262,30 +262,30 @@ https://opencode.ai/zen/go/v1/models ## Privatliv -| Model | Modeltræning | Dataopbevaring | -| -------------------------- | ------------ | -------------- | -| Grok 4.5 | Ikke brugt | 30 dage | -| GPT 5.6 Luna | Ikke brugt | 30 dage | -| GLM-5.3 | Ikke brugt | 0 dage | -| GLM-5.2 | Ikke brugt | 0 dage | -| GLM-5.1 | Ikke brugt | 0 dage | -| Kimi K3 | Ikke brugt | 0 dage | -| Kimi K2.7 Code | Ikke brugt | 0 dage | -| Kimi K2.6 | Ikke brugt | 0 dage | -| MiMo-V2.5-Pro | Ikke brugt | 0 dage | -| MiMo-V2.5 | Ikke brugt | 0 dage | -| Qwen3.8 Max | Ikke brugt | 0 dage | -| Qwen3.7 Max | Ikke brugt | 0 dage | -| Qwen3.7 Plus | Ikke brugt | 0 dage | -| Qwen3.6 Plus | Ikke brugt | 0 dage | -| MiniMax M3 | Ikke brugt | 0 dage | -| MiniMax M2.7 | Ikke brugt | 0 dage | -| Muse Spark 1.2 Contributor | Ja | Ikke ZDR | -| DeepSeek V4 Pro | Ikke brugt | 0 dage | -| DeepSeek V4 Flash | Ikke brugt | 0 dage | +| Model | Modeltræning | Dataopbevaring | +| ---------------------------- | ------------ | -------------- | +| Grok 4.5 | Ikke brugt | 30 dage | +| GPT 5.6 Luna | Ikke brugt | 30 dage | +| GLM-5.3 | Ikke brugt | 0 dage | +| GLM-5.2 | Ikke brugt | 0 dage | +| GLM-5.1 | Ikke brugt | 0 dage | +| Kimi K3 | Ikke brugt | 0 dage | +| Kimi K2.7 Code | Ikke brugt | 0 dage | +| Kimi K2.6 | Ikke brugt | 0 dage | +| MiMo-V2.5-Pro | Ikke brugt | 0 dage | +| MiMo-V2.5 | Ikke brugt | 0 dage | +| Qwen3.8 Max | Ikke brugt | 0 dage | +| Qwen3.7 Max | Ikke brugt | 0 dage | +| Qwen3.7 Plus | Ikke brugt | 0 dage | +| Qwen3.6 Plus | Ikke brugt | 0 dage | +| MiniMax M3 | Ikke brugt | 0 dage | +| MiniMax M2.7 | Ikke brugt | 0 dage | +| Muse Spark 1.2 Contributor | Ja | Ikke ZDR | +| DeepSeek V4 Pro | Ikke brugt | 0 dage | +| DeepSeek V4 Flash | Ikke brugt | 0 dage | | DeepSeek V4 Flash Vision Exp | Ikke brugt | 0 dage | -| Hy3 | Ikke brugt | 0 dage | -| Ox Alpha Free | Ikke brugt | 0 dage | +| Hy3 | Ikke brugt | 0 dage | +| Ox Alpha Free | Ikke brugt | 0 dage | - **Grok 4.5:** ZDR deaktiverer vigtige API-funktioner, der afhænger af lagrede data, herunder den tilstandsbevarende Responses API, Files and Collections og Batch API. [Læs mere](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logfiler til overvågning af misbrug genereres ved al brug af API-funktioner og opbevares i op til 30 dage. [Læs mere](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index 7c7d8ced7..fdab5d989 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -90,30 +90,30 @@ Limits sind in Dollarwerten definiert. Das bedeutet, dass die tatsächliche Anza Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf typischen Go-Nutzungsmustern: -| Model | Anfragen pro 5 Stunden | Anfragen pro Woche | Anfragen pro Monat | -| -------------------------- | ---------------------- | ------------------ | ------------------ | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | Anfragen pro 5 Stunden | Anfragen pro Woche | Anfragen pro Monat | +| ---------------------------- | ---------------------- | ------------------ | ------------------ | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | Die Schätzungen basieren auf beobachteten Anfragemustern: @@ -138,37 +138,37 @@ Die Schätzungen basieren auf beobachteten Anfragemustern: Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und der monatlichen Nutzung, die bei jedem Modell enthalten ist: -| Model | Input | Output | Cached Read | Cached Write | Nutzung | -| ---------------------------- | ------ | ------ | ----------- | ------------ | ------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Model | Input | Output | Cached Read | Cached Write | Nutzung | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | ------- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Die Peak-Zeiten sind 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). @@ -208,31 +208,31 @@ Bei diesen Modellen erhältst du immer noch etwas mehr, als wenn du die Modellan Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. -| Modell | Modell-ID | Endpunkt | AI SDK Package | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modell | Modell-ID | Endpunkt | AI SDK Package | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Die [Modell-ID](/docs/config/#models) in deiner OpenCode Config verwendet das Format `opencode-go/`. Für Kimi K3 würdest du beispielsweise `opencode-go/kimi-k3` in deiner Config verwenden. @@ -250,30 +250,30 @@ https://opencode.ai/zen/go/v1/models ## Datenschutz -| Modell | Modelltraining | Datenaufbewahrung | -| -------------------------- | --------------- | ----------------- | -| Grok 4.5 | Nicht verwendet | 30 Tage | -| GPT 5.6 Luna | Nicht verwendet | 30 Tage | -| GLM-5.3 | Nicht verwendet | 0 Tage | -| GLM-5.2 | Nicht verwendet | 0 Tage | -| GLM-5.1 | Nicht verwendet | 0 Tage | -| Kimi K3 | Nicht verwendet | 0 Tage | -| Kimi K2.7 Code | Nicht verwendet | 0 Tage | -| Kimi K2.6 | Nicht verwendet | 0 Tage | -| MiMo-V2.5-Pro | Nicht verwendet | 0 Tage | -| MiMo-V2.5 | Nicht verwendet | 0 Tage | -| Qwen3.8 Max | Nicht verwendet | 0 Tage | -| Qwen3.7 Max | Nicht verwendet | 0 Tage | -| Qwen3.7 Plus | Nicht verwendet | 0 Tage | -| Qwen3.6 Plus | Nicht verwendet | 0 Tage | -| MiniMax M3 | Nicht verwendet | 0 Tage | -| MiniMax M2.7 | Nicht verwendet | 0 Tage | -| Muse Spark 1.2 Contributor | Ja | Kein ZDR | -| DeepSeek V4 Pro | Nicht verwendet | 0 Tage | -| DeepSeek V4 Flash | Nicht verwendet | 0 Tage | +| Modell | Modelltraining | Datenaufbewahrung | +| ---------------------------- | --------------- | ----------------- | +| Grok 4.5 | Nicht verwendet | 30 Tage | +| GPT 5.6 Luna | Nicht verwendet | 30 Tage | +| GLM-5.3 | Nicht verwendet | 0 Tage | +| GLM-5.2 | Nicht verwendet | 0 Tage | +| GLM-5.1 | Nicht verwendet | 0 Tage | +| Kimi K3 | Nicht verwendet | 0 Tage | +| Kimi K2.7 Code | Nicht verwendet | 0 Tage | +| Kimi K2.6 | Nicht verwendet | 0 Tage | +| MiMo-V2.5-Pro | Nicht verwendet | 0 Tage | +| MiMo-V2.5 | Nicht verwendet | 0 Tage | +| Qwen3.8 Max | Nicht verwendet | 0 Tage | +| Qwen3.7 Max | Nicht verwendet | 0 Tage | +| Qwen3.7 Plus | Nicht verwendet | 0 Tage | +| Qwen3.6 Plus | Nicht verwendet | 0 Tage | +| MiniMax M3 | Nicht verwendet | 0 Tage | +| MiniMax M2.7 | Nicht verwendet | 0 Tage | +| Muse Spark 1.2 Contributor | Ja | Kein ZDR | +| DeepSeek V4 Pro | Nicht verwendet | 0 Tage | +| DeepSeek V4 Flash | Nicht verwendet | 0 Tage | | DeepSeek V4 Flash Vision Exp | Nicht verwendet | 0 Tage | -| Hy3 | Nicht verwendet | 0 Tage | -| Ox Alpha Free | Nicht verwendet | 0 Tage | +| Hy3 | Nicht verwendet | 0 Tage | +| Ox Alpha Free | Nicht verwendet | 0 Tage | - **Grok 4.5:** ZDR deaktiviert wichtige API-Funktionen, die von gespeicherten Daten abhängen, einschließlich der zustandsbehafteten Responses API, Files and Collections und der Batch API. [Mehr erfahren](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Für die Nutzung aller API-Funktionen werden Protokolle zur Missbrauchsüberwachung erstellt und bis zu 30 Tage lang aufbewahrt. [Mehr erfahren](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 4f7ffc8e0..99de80372 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -98,30 +98,30 @@ Los límites se definen en valor en dólares. Esto significa que tu cantidad rea La siguiente tabla proporciona una cantidad estimada de peticiones basada en los patrones típicos de uso de Go: -| Model | peticiones por 5 horas | peticiones por semana | peticiones por mes | -| -------------------------- | ---------------------- | --------------------- | ------------------ | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | peticiones por 5 horas | peticiones por semana | peticiones por mes | +| ---------------------------- | ---------------------- | --------------------- | ------------------ | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | Las estimaciones se basan en los patrones de peticiones observados: @@ -146,37 +146,37 @@ Las estimaciones se basan en los patrones de peticiones observados: Las estimaciones también se basan en los siguientes precios por 1M tokens y en el uso mensual incluido con cada modelo: -| Modelo | Entrada | Salida | Lectura en caché | Escritura en caché | Uso | -| ---------------------------- | ------- | ------ | ---------------- | ------------------ | --- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Modelo | Entrada | Salida | Lectura en caché | Escritura en caché | Uso | +| --------------------------------------- | ------- | ------ | ---------------- | ------------------ | --- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC; todas las demás horas son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). @@ -218,31 +218,31 @@ Con estos modelos, aun así obtienes un poco más que si pagaras directamente a También puedes acceder a los modelos de Go a través de los siguientes endpoints de la API. -| Modelo | ID del modelo | Endpoint | Paquete de AI SDK | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modelo | ID del modelo | Endpoint | Paquete de AI SDK | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | El [ID del modelo](/docs/config/#models) en tu configuración de OpenCode usa el formato `opencode-go/`. Por ejemplo, para Kimi K3, usarías @@ -262,30 +262,30 @@ https://opencode.ai/zen/go/v1/models ## Privacidad -| Modelo | Entrenamiento del modelo | Retención de datos | -| -------------------------- | ------------------------ | ------------------ | -| Grok 4.5 | No utilizado | 30 días | -| GPT 5.6 Luna | No utilizado | 30 días | -| GLM-5.3 | No utilizado | 0 días | -| GLM-5.2 | No utilizado | 0 días | -| GLM-5.1 | No utilizado | 0 días | -| Kimi K3 | No utilizado | 0 días | -| Kimi K2.7 Code | No utilizado | 0 días | -| Kimi K2.6 | No utilizado | 0 días | -| MiMo-V2.5-Pro | No utilizado | 0 días | -| MiMo-V2.5 | No utilizado | 0 días | -| Qwen3.8 Max | No utilizado | 0 días | -| Qwen3.7 Max | No utilizado | 0 días | -| Qwen3.7 Plus | No utilizado | 0 días | -| Qwen3.6 Plus | No utilizado | 0 días | -| MiniMax M3 | No utilizado | 0 días | -| MiniMax M2.7 | No utilizado | 0 días | -| Muse Spark 1.2 Contributor | Sí | Sin ZDR | -| DeepSeek V4 Pro | No utilizado | 0 días | -| DeepSeek V4 Flash | No utilizado | 0 días | +| Modelo | Entrenamiento del modelo | Retención de datos | +| ---------------------------- | ------------------------ | ------------------ | +| Grok 4.5 | No utilizado | 30 días | +| GPT 5.6 Luna | No utilizado | 30 días | +| GLM-5.3 | No utilizado | 0 días | +| GLM-5.2 | No utilizado | 0 días | +| GLM-5.1 | No utilizado | 0 días | +| Kimi K3 | No utilizado | 0 días | +| Kimi K2.7 Code | No utilizado | 0 días | +| Kimi K2.6 | No utilizado | 0 días | +| MiMo-V2.5-Pro | No utilizado | 0 días | +| MiMo-V2.5 | No utilizado | 0 días | +| Qwen3.8 Max | No utilizado | 0 días | +| Qwen3.7 Max | No utilizado | 0 días | +| Qwen3.7 Plus | No utilizado | 0 días | +| Qwen3.6 Plus | No utilizado | 0 días | +| MiniMax M3 | No utilizado | 0 días | +| MiniMax M2.7 | No utilizado | 0 días | +| Muse Spark 1.2 Contributor | Sí | Sin ZDR | +| DeepSeek V4 Pro | No utilizado | 0 días | +| DeepSeek V4 Flash | No utilizado | 0 días | | DeepSeek V4 Flash Vision Exp | No utilizado | 0 días | -| Hy3 | No utilizado | 0 días | -| Ox Alpha Free | No utilizado | 0 días | +| Hy3 | No utilizado | 0 días | +| Ox Alpha Free | No utilizado | 0 días | - **Grok 4.5:** ZDR deshabilita funciones importantes de la API que dependen de datos almacenados, incluidas la Responses API con estado, Files and Collections y la Batch API. [Más información](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Se generan registros de supervisión de abusos para todo el uso de funciones de la API y se conservan durante un máximo de 30 días. [Más información](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 58e0653c3..8f2ab085c 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -88,30 +88,30 @@ Les limites sont définies en valeur monétaire (dollars). Cela signifie que vot Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur des modèles d'utilisation typiques de Go : -| Model | requêtes par 5 heures | requêtes par semaine | requêtes par mois | -| -------------------------- | --------------------- | -------------------- | ----------------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | requêtes par 5 heures | requêtes par semaine | requêtes par mois | +| ---------------------------- | --------------------- | -------------------- | ----------------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | Les estimations sont basées sur les schémas de requêtes observés : @@ -136,37 +136,37 @@ Les estimations sont basées sur les schémas de requêtes observés : Les estimations sont également basées sur les prix suivants par 1M tokens et sur l'utilisation mensuelle incluse avec chaque modèle : -| Modèle | Input | Output | Cached Read | Cached Write | Utilisation | -| ---------------------------- | ------ | ------ | ----------- | ------------ | ----------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Modèle | Input | Output | Cached Read | Cached Write | Utilisation | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | ----------- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC ; toutes les autres heures sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). @@ -206,31 +206,31 @@ Pour ces modèles, vous obtenez tout de même un peu plus que si vous payiez dir Vous pouvez également accéder aux modèles Go via les points de terminaison d'API suivants. -| Modèle | ID de modèle | Point de terminaison | Package AI SDK | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modèle | ID de modèle | Point de terminaison | Package AI SDK | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | L'[ID de modèle](/docs/config/#models) dans votre configuration OpenCode utilise le format `opencode-go/`. Par exemple, pour Kimi K3, vous utiliseriez `opencode-go/kimi-k3` dans votre configuration. @@ -248,30 +248,30 @@ https://opencode.ai/zen/go/v1/models ## Confidentialité -| Modèle | Entraînement des modèles | Conservation des données | -| -------------------------- | ------------------------ | ------------------------ | -| Grok 4.5 | Non utilisé | 30 jours | -| GPT 5.6 Luna | Non utilisé | 30 jours | -| GLM-5.3 | Non utilisé | 0 jour | -| GLM-5.2 | Non utilisé | 0 jour | -| GLM-5.1 | Non utilisé | 0 jour | -| Kimi K3 | Non utilisé | 0 jour | -| Kimi K2.7 Code | Non utilisé | 0 jour | -| Kimi K2.6 | Non utilisé | 0 jour | -| MiMo-V2.5-Pro | Non utilisé | 0 jour | -| MiMo-V2.5 | Non utilisé | 0 jour | -| Qwen3.8 Max | Non utilisé | 0 jour | -| Qwen3.7 Max | Non utilisé | 0 jour | -| Qwen3.7 Plus | Non utilisé | 0 jour | -| Qwen3.6 Plus | Non utilisé | 0 jour | -| MiniMax M3 | Non utilisé | 0 jour | -| MiniMax M2.7 | Non utilisé | 0 jour | -| Muse Spark 1.2 Contributor | Oui | Pas de ZDR | -| DeepSeek V4 Pro | Non utilisé | 0 jour | -| DeepSeek V4 Flash | Non utilisé | 0 jour | +| Modèle | Entraînement des modèles | Conservation des données | +| ---------------------------- | ------------------------ | ------------------------ | +| Grok 4.5 | Non utilisé | 30 jours | +| GPT 5.6 Luna | Non utilisé | 30 jours | +| GLM-5.3 | Non utilisé | 0 jour | +| GLM-5.2 | Non utilisé | 0 jour | +| GLM-5.1 | Non utilisé | 0 jour | +| Kimi K3 | Non utilisé | 0 jour | +| Kimi K2.7 Code | Non utilisé | 0 jour | +| Kimi K2.6 | Non utilisé | 0 jour | +| MiMo-V2.5-Pro | Non utilisé | 0 jour | +| MiMo-V2.5 | Non utilisé | 0 jour | +| Qwen3.8 Max | Non utilisé | 0 jour | +| Qwen3.7 Max | Non utilisé | 0 jour | +| Qwen3.7 Plus | Non utilisé | 0 jour | +| Qwen3.6 Plus | Non utilisé | 0 jour | +| MiniMax M3 | Non utilisé | 0 jour | +| MiniMax M2.7 | Non utilisé | 0 jour | +| Muse Spark 1.2 Contributor | Oui | Pas de ZDR | +| DeepSeek V4 Pro | Non utilisé | 0 jour | +| DeepSeek V4 Flash | Non utilisé | 0 jour | | DeepSeek V4 Flash Vision Exp | Non utilisé | 0 jour | -| Hy3 | Non utilisé | 0 jour | -| Ox Alpha Free | Non utilisé | 0 jour | +| Hy3 | Non utilisé | 0 jour | +| Ox Alpha Free | Non utilisé | 0 jour | - **Grok 4.5:** Le ZDR désactive d’importantes fonctionnalités API qui dépendent des données stockées, notamment Responses API avec état, Files and Collections et Batch API. [En savoir plus](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Des journaux de surveillance des abus sont générés pour toute utilisation des fonctionnalités API et conservés pendant un maximum de 30 jours. [En savoir plus](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 27bc1b2f4..38faf1c00 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -98,30 +98,30 @@ Limits are defined in dollar value. This means your actual request count depends The table below provides an estimated request count based on typical Go usage patterns: -| Model | requests per 5 hour | requests per week | requests per month | -| -------------------------- | ------------------- | ----------------- | ------------------ | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | requests per 5 hour | requests per week | requests per month | +| ---------------------------- | ------------------- | ----------------- | ------------------ | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | The estimates are based on observed request patterns: @@ -146,37 +146,37 @@ The estimates are based on observed request patterns: The estimates are also based on the following prices per 1M tokens and the monthly usage included with each model: -| Model | Input | Output | Cached Read | Cached Write | Usage | -| ---------------------------- | ------ | ------ | ----------- | ------------ | ----- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Model | Input | Output | Cached Read | Cached Write | Usage | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | ----- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC; all other hours are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). @@ -218,31 +218,31 @@ For these models, you still get a little more than if you paid the model provide You can also access Go models through the following API endpoints. -| Model | Model ID | Endpoint | AI SDK Package | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | The [model id](/docs/config/#models) in your OpenCode config uses the format `opencode-go/`. For example, for Kimi K3, you would @@ -262,30 +262,30 @@ https://opencode.ai/zen/go/v1/models ## Privacy -| Model | Model training | Data retention | -| -------------------------- | -------------- | -------------- | -| Grok 4.5 | Not used | 30 days | -| GPT 5.6 Luna | Not used | 30 days | -| GLM-5.3 | Not used | 0 days | -| GLM-5.2 | Not used | 0 days | -| GLM-5.1 | Not used | 0 days | -| Kimi K3 | Not used | 0 days | -| Kimi K2.7 Code | Not used | 0 days | -| Kimi K2.6 | Not used | 0 days | -| MiMo-V2.5-Pro | Not used | 0 days | -| MiMo-V2.5 | Not used | 0 days | -| Qwen3.8 Max | Not used | 0 days | -| Qwen3.7 Max | Not used | 0 days | -| Qwen3.7 Plus | Not used | 0 days | -| Qwen3.6 Plus | Not used | 0 days | -| MiniMax M3 | Not used | 0 days | -| MiniMax M2.7 | Not used | 0 days | -| Muse Spark 1.2 Contributor | Yes | Not ZDR | -| DeepSeek V4 Pro | Not used | 0 days\* | -| DeepSeek V4 Flash | Not used | 0 days\* | +| Model | Model training | Data retention | +| ---------------------------- | -------------- | -------------- | +| Grok 4.5 | Not used | 30 days | +| GPT 5.6 Luna | Not used | 30 days | +| GLM-5.3 | Not used | 0 days | +| GLM-5.2 | Not used | 0 days | +| GLM-5.1 | Not used | 0 days | +| Kimi K3 | Not used | 0 days | +| Kimi K2.7 Code | Not used | 0 days | +| Kimi K2.6 | Not used | 0 days | +| MiMo-V2.5-Pro | Not used | 0 days | +| MiMo-V2.5 | Not used | 0 days | +| Qwen3.8 Max | Not used | 0 days | +| Qwen3.7 Max | Not used | 0 days | +| Qwen3.7 Plus | Not used | 0 days | +| Qwen3.6 Plus | Not used | 0 days | +| MiniMax M3 | Not used | 0 days | +| MiniMax M2.7 | Not used | 0 days | +| Muse Spark 1.2 Contributor | Yes | Not ZDR | +| DeepSeek V4 Pro | Not used | 0 days\* | +| DeepSeek V4 Flash | Not used | 0 days\* | | DeepSeek V4 Flash Vision Exp | Not used | 0 days\* | -| Hy3 | Not used | 0 days | -| Ox Alpha Free | Not used | 0 days | +| Hy3 | Not used | 0 days | +| Ox Alpha Free | Not used | 0 days | - **Grok 4.5:** ZDR disables important API features that depend on stored data, including the stateful Responses API, Files and Collections, and the Batch API. [Learn more](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Abuse monitoring logs are generated for all API feature usage and retained for up to 30 days. [Learn more](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 91e799f19..7f2ba354d 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -96,30 +96,30 @@ I limiti sono definiti in valore in dollari. Questo significa che il conteggio e La tabella seguente fornisce una stima del conteggio delle richieste in base a pattern di utilizzo tipici di Go: -| Model | richieste ogni 5 ore | richieste a settimana | richieste al mese | -| -------------------------- | -------------------- | --------------------- | ----------------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | richieste ogni 5 ore | richieste a settimana | richieste al mese | +| ---------------------------- | -------------------- | --------------------- | ----------------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | Le stime si basano sui pattern di richieste osservati: @@ -144,37 +144,37 @@ Le stime si basano sui pattern di richieste osservati: Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensile incluso con ciascun modello: -| Modello | Input | Output | Cached Read | Cached Write | Utilizzo | -| ---------------------------- | ------ | ------ | ----------- | ------------ | -------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Modello | Input | Output | Cached Read | Cached Write | Utilizzo | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | -------- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC; tutti gli altri orari sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). @@ -216,31 +216,31 @@ Per questi modelli, ottieni comunque un po' più di utilizzo rispetto a quanto o Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. -| Modello | ID Modello | Endpoint | Pacchetto AI SDK | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modello | ID Modello | Endpoint | Pacchetto AI SDK | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Il [model id](/docs/config/#models) nella tua OpenCode config utilizza il formato `opencode-go/`. Ad esempio, per Kimi K3, useresti @@ -260,30 +260,30 @@ https://opencode.ai/zen/go/v1/models ## Privacy -| Modello | Addestramento del modello | Conservazione dei dati | -| -------------------------- | ------------------------- | ---------------------- | -| Grok 4.5 | Non utilizzato | 30 giorni | -| GPT 5.6 Luna | Non utilizzato | 30 giorni | -| GLM-5.3 | Non utilizzato | 0 giorni | -| GLM-5.2 | Non utilizzato | 0 giorni | -| GLM-5.1 | Non utilizzato | 0 giorni | -| Kimi K3 | Non utilizzato | 0 giorni | -| Kimi K2.7 Code | Non utilizzato | 0 giorni | -| Kimi K2.6 | Non utilizzato | 0 giorni | -| MiMo-V2.5-Pro | Non utilizzato | 0 giorni | -| MiMo-V2.5 | Non utilizzato | 0 giorni | -| Qwen3.8 Max | Non utilizzato | 0 giorni | -| Qwen3.7 Max | Non utilizzato | 0 giorni | -| Qwen3.7 Plus | Non utilizzato | 0 giorni | -| Qwen3.6 Plus | Non utilizzato | 0 giorni | -| MiniMax M3 | Non utilizzato | 0 giorni | -| MiniMax M2.7 | Non utilizzato | 0 giorni | -| Muse Spark 1.2 Contributor | Sì | Non ZDR | -| DeepSeek V4 Pro | Non utilizzato | 0 giorni | -| DeepSeek V4 Flash | Non utilizzato | 0 giorni | +| Modello | Addestramento del modello | Conservazione dei dati | +| ---------------------------- | ------------------------- | ---------------------- | +| Grok 4.5 | Non utilizzato | 30 giorni | +| GPT 5.6 Luna | Non utilizzato | 30 giorni | +| GLM-5.3 | Non utilizzato | 0 giorni | +| GLM-5.2 | Non utilizzato | 0 giorni | +| GLM-5.1 | Non utilizzato | 0 giorni | +| Kimi K3 | Non utilizzato | 0 giorni | +| Kimi K2.7 Code | Non utilizzato | 0 giorni | +| Kimi K2.6 | Non utilizzato | 0 giorni | +| MiMo-V2.5-Pro | Non utilizzato | 0 giorni | +| MiMo-V2.5 | Non utilizzato | 0 giorni | +| Qwen3.8 Max | Non utilizzato | 0 giorni | +| Qwen3.7 Max | Non utilizzato | 0 giorni | +| Qwen3.7 Plus | Non utilizzato | 0 giorni | +| Qwen3.6 Plus | Non utilizzato | 0 giorni | +| MiniMax M3 | Non utilizzato | 0 giorni | +| MiniMax M2.7 | Non utilizzato | 0 giorni | +| Muse Spark 1.2 Contributor | Sì | Non ZDR | +| DeepSeek V4 Pro | Non utilizzato | 0 giorni | +| DeepSeek V4 Flash | Non utilizzato | 0 giorni | | DeepSeek V4 Flash Vision Exp | Non utilizzato | 0 giorni | -| Hy3 | Non utilizzato | 0 giorni | -| Ox Alpha Free | Non utilizzato | 0 giorni | +| Hy3 | Non utilizzato | 0 giorni | +| Ox Alpha Free | Non utilizzato | 0 giorni | - **Grok 4.5:** ZDR disabilita importanti funzionalità API che dipendono dai dati archiviati, tra cui la Responses API con stato, Files and Collections e Batch API. [Scopri di più](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** I log di monitoraggio degli abusi vengono generati per l'utilizzo di tutte le funzionalità API e conservati per un massimo di 30 giorni. [Scopri di più](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index dc6f0500b..f0253821d 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -88,30 +88,30 @@ OpenCode Goには以下の制限が含まれています: 以下の表は、一般的なGoの利用パターンに基づいた推定リクエスト数を示しています: -| Model | 5時間あたりのリクエスト数 | 週間リクエスト数 | 月間リクエスト数 | -| -------------------------- | ------------------------- | ---------------- | ---------------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | 5時間あたりのリクエスト数 | 週間リクエスト数 | 月間リクエスト数 | +| ---------------------------- | ------------------------- | ---------------- | ---------------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | 推定値は、観測されたリクエストパターンに基づいています: @@ -136,37 +136,37 @@ OpenCode Goには以下の制限が含まれています: 推定値は、100万トークンあたりの以下の価格と、各モデルに含まれる月間利用枠にも基づいています: -| Model | Input | Output | Cached Read | Cached Write | Usage | -| ---------------------------- | ------ | ------ | ----------- | ------------ | ----- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Model | Input | Output | Cached Read | Cached Write | Usage | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | ----- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak時間は01:00-04:00と06:00-10:00 UTCで、それ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 @@ -206,31 +206,31 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを 以下のAPIエンドポイントを通じて、Goモデルにアクセスすることもできます。 -| Model | Model ID | Endpoint | AI SDK Package | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode設定の[model id](/docs/config/#models)は、`opencode-go/`という形式を使用します。たとえば、Kimi K3の場合は、設定で`opencode-go/kimi-k3`を使用します。 @@ -248,30 +248,30 @@ https://opencode.ai/zen/go/v1/models ## プライバシー -| モデル | モデルのトレーニング | データ保持 | -| -------------------------- | -------------------- | ----------- | -| Grok 4.5 | 使用なし | 30日 | -| GPT 5.6 Luna | 使用なし | 30日 | -| GLM-5.3 | 使用なし | 0日 | -| GLM-5.2 | 使用なし | 0日 | -| GLM-5.1 | 使用なし | 0日 | -| Kimi K3 | 使用なし | 0日 | -| Kimi K2.7 Code | 使用なし | 0日 | -| Kimi K2.6 | 使用なし | 0日 | -| MiMo-V2.5-Pro | 使用なし | 0日 | -| MiMo-V2.5 | 使用なし | 0日 | -| Qwen3.8 Max | 使用なし | 0日 | -| Qwen3.7 Max | 使用なし | 0日 | -| Qwen3.7 Plus | 使用なし | 0日 | -| Qwen3.6 Plus | 使用なし | 0日 | -| MiniMax M3 | 使用なし | 0日 | -| MiniMax M2.7 | 使用なし | 0日 | -| Muse Spark 1.2 Contributor | はい | ZDRではない | -| DeepSeek V4 Pro | 使用なし | 0日 | -| DeepSeek V4 Flash | 使用なし | 0日 | -| DeepSeek V4 Flash Vision Exp | 使用なし | 0日 | -| Hy3 | 使用なし | 0日 | -| Ox Alpha Free | 使用なし | 0日 | +| モデル | モデルのトレーニング | データ保持 | +| ---------------------------- | -------------------- | ----------- | +| Grok 4.5 | 使用なし | 30日 | +| GPT 5.6 Luna | 使用なし | 30日 | +| GLM-5.3 | 使用なし | 0日 | +| GLM-5.2 | 使用なし | 0日 | +| GLM-5.1 | 使用なし | 0日 | +| Kimi K3 | 使用なし | 0日 | +| Kimi K2.7 Code | 使用なし | 0日 | +| Kimi K2.6 | 使用なし | 0日 | +| MiMo-V2.5-Pro | 使用なし | 0日 | +| MiMo-V2.5 | 使用なし | 0日 | +| Qwen3.8 Max | 使用なし | 0日 | +| Qwen3.7 Max | 使用なし | 0日 | +| Qwen3.7 Plus | 使用なし | 0日 | +| Qwen3.6 Plus | 使用なし | 0日 | +| MiniMax M3 | 使用なし | 0日 | +| MiniMax M2.7 | 使用なし | 0日 | +| Muse Spark 1.2 Contributor | はい | ZDRではない | +| DeepSeek V4 Pro | 使用なし | 0日 | +| DeepSeek V4 Flash | 使用なし | 0日 | +| DeepSeek V4 Flash Vision Exp | 使用なし | 0日 | +| Hy3 | 使用なし | 0日 | +| Ox Alpha Free | 使用なし | 0日 | - **Grok 4.5:** ZDRでは、保存データに依存する重要なAPI機能(ステートフルなResponses API、Files and Collections、Batch APIなど)が無効になります。[詳しく見る](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 不正使用監視ログはすべてのAPI機能の使用時に生成され、最大30日間保持されます。[詳しく見る](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index df5e69db1..fe1b8c0fd 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -88,30 +88,30 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. 아래 표는 일반적인 Go 사용 패턴을 기준으로 한 예상 요청 횟수를 보여줍니다. -| Model | 5시간당 요청 횟수 | 주간 요청 횟수 | 월간 요청 횟수 | -| -------------------------- | ----------------- | -------------- | -------------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | 5시간당 요청 횟수 | 주간 요청 횟수 | 월간 요청 횟수 | +| ---------------------------- | ----------------- | -------------- | -------------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | 이 예상치는 관찰된 요청 패턴을 기준으로 합니다. @@ -136,37 +136,37 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. 이 예상치는 또한 1M tokens당 다음 가격과 각 모델에 포함된 월간 사용량을 기준으로 합니다. -| Model | Input | Output | Cached Read | Cached Write | Usage | -| ---------------------------- | ------ | ------ | ----------- | ------------ | ----- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Model | Input | Output | Cached Read | Cached Write | Usage | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | ----- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 시간은 01:00-04:00 및 06:00-10:00 UTC이며, 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). @@ -206,31 +206,31 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 다음 API 엔드포인트를 통해서도 Go 모델에 액세스할 수 있습니다. -| 모델 | 모델 ID | 엔드포인트 | AI SDK 패키지 | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| 모델 | 모델 ID | 엔드포인트 | AI SDK 패키지 | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode config의 [model id](/docs/config/#models)는 `opencode-go/` 형식을 사용합니다. 예를 들어 Kimi K3의 경우 config에서 `opencode-go/kimi-k3`를 사용하면 됩니다. @@ -248,30 +248,30 @@ https://opencode.ai/zen/go/v1/models ## 개인정보 보호 -| 모델 | 모델 학습 | 데이터 보존 | -| -------------------------- | ------------- | ----------- | -| Grok 4.5 | 사용되지 않음 | 30일 | -| GPT 5.6 Luna | 사용되지 않음 | 30일 | -| GLM-5.3 | 사용되지 않음 | 0일 | -| GLM-5.2 | 사용되지 않음 | 0일 | -| GLM-5.1 | 사용되지 않음 | 0일 | -| Kimi K3 | 사용되지 않음 | 0일 | -| Kimi K2.7 Code | 사용되지 않음 | 0일 | -| Kimi K2.6 | 사용되지 않음 | 0일 | -| MiMo-V2.5-Pro | 사용되지 않음 | 0일 | -| MiMo-V2.5 | 사용되지 않음 | 0일 | -| Qwen3.8 Max | 사용되지 않음 | 0일 | -| Qwen3.7 Max | 사용되지 않음 | 0일 | -| Qwen3.7 Plus | 사용되지 않음 | 0일 | -| Qwen3.6 Plus | 사용되지 않음 | 0일 | -| MiniMax M3 | 사용되지 않음 | 0일 | -| MiniMax M2.7 | 사용되지 않음 | 0일 | -| Muse Spark 1.2 Contributor | 예 | ZDR 아님 | -| DeepSeek V4 Pro | 사용되지 않음 | 0일 | -| DeepSeek V4 Flash | 사용되지 않음 | 0일 | -| DeepSeek V4 Flash Vision Exp | 사용되지 않음 | 0일 | -| Hy3 | 사용되지 않음 | 0일 | -| Ox Alpha Free | 사용되지 않음 | 0일 | +| 모델 | 모델 학습 | 데이터 보존 | +| ---------------------------- | ------------- | ----------- | +| Grok 4.5 | 사용되지 않음 | 30일 | +| GPT 5.6 Luna | 사용되지 않음 | 30일 | +| GLM-5.3 | 사용되지 않음 | 0일 | +| GLM-5.2 | 사용되지 않음 | 0일 | +| GLM-5.1 | 사용되지 않음 | 0일 | +| Kimi K3 | 사용되지 않음 | 0일 | +| Kimi K2.7 Code | 사용되지 않음 | 0일 | +| Kimi K2.6 | 사용되지 않음 | 0일 | +| MiMo-V2.5-Pro | 사용되지 않음 | 0일 | +| MiMo-V2.5 | 사용되지 않음 | 0일 | +| Qwen3.8 Max | 사용되지 않음 | 0일 | +| Qwen3.7 Max | 사용되지 않음 | 0일 | +| Qwen3.7 Plus | 사용되지 않음 | 0일 | +| Qwen3.6 Plus | 사용되지 않음 | 0일 | +| MiniMax M3 | 사용되지 않음 | 0일 | +| MiniMax M2.7 | 사용되지 않음 | 0일 | +| Muse Spark 1.2 Contributor | 예 | ZDR 아님 | +| DeepSeek V4 Pro | 사용되지 않음 | 0일 | +| DeepSeek V4 Flash | 사용되지 않음 | 0일 | +| DeepSeek V4 Flash Vision Exp | 사용되지 않음 | 0일 | +| Hy3 | 사용되지 않음 | 0일 | +| Ox Alpha Free | 사용되지 않음 | 0일 | - **Grok 4.5:** ZDR은 저장된 데이터에 의존하는 중요한 API 기능(상태 저장형 Responses API, Files and Collections, Batch API 포함)을 비활성화합니다. [자세히 알아보기](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** 모든 API 기능 사용에 대해 악용 모니터링 로그가 생성되며 최대 30일 동안 보존됩니다. [자세히 알아보기](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 3a3defd48..f10b239d1 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -98,30 +98,30 @@ Grensene er definert i dollarverdi. Dette betyr at ditt faktiske antall forespø Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksmønstre for Go: -| Model | forespørsler per 5 timer | forespørsler per uke | forespørsler per måned | -| -------------------------- | ------------------------ | -------------------- | ---------------------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | forespørsler per 5 timer | forespørsler per uke | forespørsler per måned | +| ---------------------------- | ------------------------ | -------------------- | ---------------------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | Estimatene er basert på observerte forespørselsmønstre: @@ -146,37 +146,37 @@ Estimatene er basert på observerte forespørselsmønstre: Estimatene er også basert på følgende priser per 1M tokens og den månedlige bruken som er inkludert med hver modell: -| Model | Input | Output | Cached Read | Cached Write | Bruk | -| ---------------------------- | ------ | ------ | ----------- | ------------ | ---- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Model | Input | Output | Cached Read | Cached Write | Bruk | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | ---- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). @@ -218,31 +218,31 @@ For disse modellene får du fortsatt litt mer enn om du betalte modellleverandø Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. -| Modell | Modell-ID | Endepunkt | AI SDK Package | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modell | Modell-ID | Endepunkt | AI SDK Package | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Modell-ID-en](/docs/config/#models) i din OpenCode-konfigurasjon bruker formatet `opencode-go/`. For eksempel, for Kimi K3, vil du @@ -262,30 +262,30 @@ https://opencode.ai/zen/go/v1/models ## Personvern -| Modell | Modelltrening | Dataoppbevaring | -| -------------------------- | ------------- | --------------- | -| Grok 4.5 | Brukes ikke | 30 dager | -| GPT 5.6 Luna | Brukes ikke | 30 dager | -| GLM-5.3 | Brukes ikke | 0 dager | -| GLM-5.2 | Brukes ikke | 0 dager | -| GLM-5.1 | Brukes ikke | 0 dager | -| Kimi K3 | Brukes ikke | 0 dager | -| Kimi K2.7 Code | Brukes ikke | 0 dager | -| Kimi K2.6 | Brukes ikke | 0 dager | -| MiMo-V2.5-Pro | Brukes ikke | 0 dager | -| MiMo-V2.5 | Brukes ikke | 0 dager | -| Qwen3.8 Max | Brukes ikke | 0 dager | -| Qwen3.7 Max | Brukes ikke | 0 dager | -| Qwen3.7 Plus | Brukes ikke | 0 dager | -| Qwen3.6 Plus | Brukes ikke | 0 dager | -| MiniMax M3 | Brukes ikke | 0 dager | -| MiniMax M2.7 | Brukes ikke | 0 dager | -| Muse Spark 1.2 Contributor | Ja | Ikke ZDR | -| DeepSeek V4 Pro | Brukes ikke | 0 dager | -| DeepSeek V4 Flash | Brukes ikke | 0 dager | +| Modell | Modelltrening | Dataoppbevaring | +| ---------------------------- | ------------- | --------------- | +| Grok 4.5 | Brukes ikke | 30 dager | +| GPT 5.6 Luna | Brukes ikke | 30 dager | +| GLM-5.3 | Brukes ikke | 0 dager | +| GLM-5.2 | Brukes ikke | 0 dager | +| GLM-5.1 | Brukes ikke | 0 dager | +| Kimi K3 | Brukes ikke | 0 dager | +| Kimi K2.7 Code | Brukes ikke | 0 dager | +| Kimi K2.6 | Brukes ikke | 0 dager | +| MiMo-V2.5-Pro | Brukes ikke | 0 dager | +| MiMo-V2.5 | Brukes ikke | 0 dager | +| Qwen3.8 Max | Brukes ikke | 0 dager | +| Qwen3.7 Max | Brukes ikke | 0 dager | +| Qwen3.7 Plus | Brukes ikke | 0 dager | +| Qwen3.6 Plus | Brukes ikke | 0 dager | +| MiniMax M3 | Brukes ikke | 0 dager | +| MiniMax M2.7 | Brukes ikke | 0 dager | +| Muse Spark 1.2 Contributor | Ja | Ikke ZDR | +| DeepSeek V4 Pro | Brukes ikke | 0 dager | +| DeepSeek V4 Flash | Brukes ikke | 0 dager | | DeepSeek V4 Flash Vision Exp | Brukes ikke | 0 dager | -| Hy3 | Brukes ikke | 0 dager | -| Ox Alpha Free | Brukes ikke | 0 dager | +| Hy3 | Brukes ikke | 0 dager | +| Ox Alpha Free | Brukes ikke | 0 dager | - **Grok 4.5:** ZDR deaktiverer viktige API-funksjoner som er avhengige av lagrede data, inkludert den tilstandsbaserte Responses API, Files and Collections og Batch API. [Les mer](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logger for overvåking av misbruk genereres for all bruk av API-funksjoner og oppbevares i opptil 30 dager. [Les mer](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index a0e67dab4..ae0e78c31 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -92,30 +92,30 @@ Limity są zdefiniowane w wartości w dolarach. Oznacza to, że rzeczywista licz Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych wzorców korzystania z Go: -| Model | żądania na 5 godzin | żądania na tydzień | żądania na miesiąc | -| -------------------------- | ------------------- | ------------------ | ------------------ | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | żądania na 5 godzin | żądania na tydzień | żądania na miesiąc | +| ---------------------------- | ------------------- | ------------------ | ------------------ | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | Szacunki te opierają się na zaobserwowanych wzorcach żądań: @@ -140,37 +140,37 @@ Szacunki te opierają się na zaobserwowanych wzorcach żądań: Szacunki opierają się również na następujących cenach za 1M tokenów oraz miesięcznym użyciu dostępnym dla każdego modelu: -| Model | Wejście | Wyjście | Odczyt z cache | Zapis do cache | Użycie | -| ---------------------------- | ------- | ------- | -------------- | -------------- | ------ | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Model | Wejście | Wyjście | Odczyt z cache | Zapis do cache | Użycie | +| --------------------------------------- | ------- | ------- | -------------- | -------------- | ------ | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC; wszystkie pozostałe godziny to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). @@ -210,31 +210,31 @@ W przypadku tych modeli nadal otrzymujesz nieco więcej, niż płacąc bezpośre Możesz również uzyskać dostęp do modeli Go za pośrednictwem następujących punktów końcowych API. -| Model | ID modelu | Punkt końcowy | Pakiet AI SDK | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | ID modelu | Punkt końcowy | Pakiet AI SDK | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID modelu](/docs/config/#models) w Twojej konfiguracji OpenCode używa formatu `opencode-go/`. Na przykład dla Kimi K3 należy użyć @@ -254,30 +254,30 @@ https://opencode.ai/zen/go/v1/models ## Prywatność -| Model | Trenowanie modelu | Retencja danych | -| -------------------------- | ----------------- | --------------- | -| Grok 4.5 | Niewykorzystywane | 30 dni | -| GPT 5.6 Luna | Niewykorzystywane | 30 dni | -| GLM-5.3 | Niewykorzystywane | 0 dni | -| GLM-5.2 | Niewykorzystywane | 0 dni | -| GLM-5.1 | Niewykorzystywane | 0 dni | -| Kimi K3 | Niewykorzystywane | 0 dni | -| Kimi K2.7 Code | Niewykorzystywane | 0 dni | -| Kimi K2.6 | Niewykorzystywane | 0 dni | -| MiMo-V2.5-Pro | Niewykorzystywane | 0 dni | -| MiMo-V2.5 | Niewykorzystywane | 0 dni | -| Qwen3.8 Max | Niewykorzystywane | 0 dni | -| Qwen3.7 Max | Niewykorzystywane | 0 dni | -| Qwen3.7 Plus | Niewykorzystywane | 0 dni | -| Qwen3.6 Plus | Niewykorzystywane | 0 dni | -| MiniMax M3 | Niewykorzystywane | 0 dni | -| MiniMax M2.7 | Niewykorzystywane | 0 dni | -| Muse Spark 1.2 Contributor | Tak | Nie ZDR | -| DeepSeek V4 Pro | Niewykorzystywane | 0 dni | -| DeepSeek V4 Flash | Niewykorzystywane | 0 dni | +| Model | Trenowanie modelu | Retencja danych | +| ---------------------------- | ----------------- | --------------- | +| Grok 4.5 | Niewykorzystywane | 30 dni | +| GPT 5.6 Luna | Niewykorzystywane | 30 dni | +| GLM-5.3 | Niewykorzystywane | 0 dni | +| GLM-5.2 | Niewykorzystywane | 0 dni | +| GLM-5.1 | Niewykorzystywane | 0 dni | +| Kimi K3 | Niewykorzystywane | 0 dni | +| Kimi K2.7 Code | Niewykorzystywane | 0 dni | +| Kimi K2.6 | Niewykorzystywane | 0 dni | +| MiMo-V2.5-Pro | Niewykorzystywane | 0 dni | +| MiMo-V2.5 | Niewykorzystywane | 0 dni | +| Qwen3.8 Max | Niewykorzystywane | 0 dni | +| Qwen3.7 Max | Niewykorzystywane | 0 dni | +| Qwen3.7 Plus | Niewykorzystywane | 0 dni | +| Qwen3.6 Plus | Niewykorzystywane | 0 dni | +| MiniMax M3 | Niewykorzystywane | 0 dni | +| MiniMax M2.7 | Niewykorzystywane | 0 dni | +| Muse Spark 1.2 Contributor | Tak | Nie ZDR | +| DeepSeek V4 Pro | Niewykorzystywane | 0 dni | +| DeepSeek V4 Flash | Niewykorzystywane | 0 dni | | DeepSeek V4 Flash Vision Exp | Niewykorzystywane | 0 dni | -| Hy3 | Niewykorzystywane | 0 dni | -| Ox Alpha Free | Niewykorzystywane | 0 dni | +| Hy3 | Niewykorzystywane | 0 dni | +| Ox Alpha Free | Niewykorzystywane | 0 dni | - **Grok 4.5:** ZDR wyłącza ważne funkcje API zależne od przechowywanych danych, w tym stanowy Responses API, Files and Collections oraz Batch API. [Dowiedz się więcej](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Dzienniki monitorowania nadużyć są generowane dla każdego użycia funkcji API i przechowywane przez maksymalnie 30 dni. [Dowiedz się więcej](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 2309e3644..2383fe02c 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -98,30 +98,30 @@ Os limites são definidos em valor em dólares. Isso significa que a sua contage A tabela abaixo fornece uma contagem estimada de requisições com base nos padrões típicos de uso do Go: -| Model | requisições por 5 horas | requisições por semana | requisições por mês | -| -------------------------- | ----------------------- | ---------------------- | ------------------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | requisições por 5 horas | requisições por semana | requisições por mês | +| ---------------------------- | ----------------------- | ---------------------- | ------------------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | As estimativas se baseiam nos padrões de requisições observados: @@ -146,37 +146,37 @@ As estimativas se baseiam nos padrões de requisições observados: As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso mensal incluído com cada modelo: -| Modelo | Entrada | Saída | Leitura em cache | Escrita em cache | Uso | -| ---------------------------- | ------- | ------ | ---------------- | ---------------- | --- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Modelo | Entrada | Saída | Leitura em cache | Escrita em cache | Uso | +| --------------------------------------- | ------- | ------ | ---------------- | ---------------- | --- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC; todos os demais horários são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). @@ -218,31 +218,31 @@ Para esses modelos, você ainda recebe um pouco mais do que receberia se pagasse Você também pode acessar os modelos do Go através dos seguintes endpoints de API. -| Modelo | ID do Modelo | Endpoint | Pacote do AI SDK | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Modelo | ID do Modelo | Endpoint | Pacote do AI SDK | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | O [ID do modelo](/docs/config/#models) na sua configuração do OpenCode usa o formato `opencode-go/`. Por exemplo, para o Kimi K3, você usaria @@ -262,30 +262,30 @@ https://opencode.ai/zen/go/v1/models ## Privacidade -| Modelo | Treinamento de modelos | Retenção de dados | -| -------------------------- | ---------------------- | ----------------- | -| Grok 4.5 | Não usado | 30 dias | -| GPT 5.6 Luna | Não usado | 30 dias | -| GLM-5.3 | Não usado | 0 dias | -| GLM-5.2 | Não usado | 0 dias | -| GLM-5.1 | Não usado | 0 dias | -| Kimi K3 | Não usado | 0 dias | -| Kimi K2.7 Code | Não usado | 0 dias | -| Kimi K2.6 | Não usado | 0 dias | -| MiMo-V2.5-Pro | Não usado | 0 dias | -| MiMo-V2.5 | Não usado | 0 dias | -| Qwen3.8 Max | Não usado | 0 dias | -| Qwen3.7 Max | Não usado | 0 dias | -| Qwen3.7 Plus | Não usado | 0 dias | -| Qwen3.6 Plus | Não usado | 0 dias | -| MiniMax M3 | Não usado | 0 dias | -| MiniMax M2.7 | Não usado | 0 dias | -| Muse Spark 1.2 Contributor | Sim | Não é ZDR | -| DeepSeek V4 Pro | Não usado | 0 dias | -| DeepSeek V4 Flash | Não usado | 0 dias | +| Modelo | Treinamento de modelos | Retenção de dados | +| ---------------------------- | ---------------------- | ----------------- | +| Grok 4.5 | Não usado | 30 dias | +| GPT 5.6 Luna | Não usado | 30 dias | +| GLM-5.3 | Não usado | 0 dias | +| GLM-5.2 | Não usado | 0 dias | +| GLM-5.1 | Não usado | 0 dias | +| Kimi K3 | Não usado | 0 dias | +| Kimi K2.7 Code | Não usado | 0 dias | +| Kimi K2.6 | Não usado | 0 dias | +| MiMo-V2.5-Pro | Não usado | 0 dias | +| MiMo-V2.5 | Não usado | 0 dias | +| Qwen3.8 Max | Não usado | 0 dias | +| Qwen3.7 Max | Não usado | 0 dias | +| Qwen3.7 Plus | Não usado | 0 dias | +| Qwen3.6 Plus | Não usado | 0 dias | +| MiniMax M3 | Não usado | 0 dias | +| MiniMax M2.7 | Não usado | 0 dias | +| Muse Spark 1.2 Contributor | Sim | Não é ZDR | +| DeepSeek V4 Pro | Não usado | 0 dias | +| DeepSeek V4 Flash | Não usado | 0 dias | | DeepSeek V4 Flash Vision Exp | Não usado | 0 dias | -| Hy3 | Não usado | 0 dias | -| Ox Alpha Free | Não usado | 0 dias | +| Hy3 | Não usado | 0 dias | +| Ox Alpha Free | Não usado | 0 dias | - **Grok 4.5:** O ZDR desativa recursos importantes da API que dependem de dados armazenados, incluindo a Responses API com estado, Files and Collections e a Batch API. [Saiba mais](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logs de monitoramento de abuso são gerados para todo uso de recursos da API e retidos por até 30 dias. [Saiba mais](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 157abe345..eb70ffa9c 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -98,30 +98,30 @@ OpenCode Go включает следующие лимиты: В таблице ниже приведено примерное количество запросов на основе типичных сценариев использования Go: -| Model | запросов за 5 часов | запросов в неделю | запросов в месяц | -| -------------------------- | ------------------- | ----------------- | ---------------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | запросов за 5 часов | запросов в неделю | запросов в месяц | +| ---------------------------- | ------------------- | ----------------- | ---------------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | Эти оценки основаны на наблюдаемых показателях запросов: @@ -146,37 +146,37 @@ OpenCode Go включает следующие лимиты: Эти оценки также основаны на следующих ценах за 1M токенов и месячном объеме использования, включенном для каждой модели: -| Model | Input | Output | Cached Read | Cached Write | Использование | -| ---------------------------- | ------ | ------ | ----------- | ------------ | ------------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Model | Input | Output | Cached Read | Cached Write | Использование | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | ------------- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Часы Peak: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). @@ -218,31 +218,31 @@ OpenCode Go включает следующие лимиты: Вы также можете получить доступ к моделям Go через следующие API-эндпоинты. -| Модель | ID модели | Эндпоинт | Пакет AI SDK | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Модель | ID модели | Эндпоинт | Пакет AI SDK | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID модели](/docs/config/#models) в вашем конфиге OpenCode использует формат `opencode-go/`. Например, для Kimi K3 вам нужно @@ -262,30 +262,30 @@ https://opencode.ai/zen/go/v1/models ## Конфиденциальность -| Модель | Обучение моделей | Хранение данных | -| -------------------------- | ---------------- | --------------- | -| Grok 4.5 | Не используется | 30 дней | -| GPT 5.6 Luna | Не используется | 30 дней | -| GLM-5.3 | Не используется | 0 дней | -| GLM-5.2 | Не используется | 0 дней | -| GLM-5.1 | Не используется | 0 дней | -| Kimi K3 | Не используется | 0 дней | -| Kimi K2.7 Code | Не используется | 0 дней | -| Kimi K2.6 | Не используется | 0 дней | -| MiMo-V2.5-Pro | Не используется | 0 дней | -| MiMo-V2.5 | Не используется | 0 дней | -| Qwen3.8 Max | Не используется | 0 дней | -| Qwen3.7 Max | Не используется | 0 дней | -| Qwen3.7 Plus | Не используется | 0 дней | -| Qwen3.6 Plus | Не используется | 0 дней | -| MiniMax M3 | Не используется | 0 дней | -| MiniMax M2.7 | Не используется | 0 дней | -| Muse Spark 1.2 Contributor | Да | Не ZDR | -| DeepSeek V4 Pro | Не используется | 0 дней | -| DeepSeek V4 Flash | Не используется | 0 дней | +| Модель | Обучение моделей | Хранение данных | +| ---------------------------- | ---------------- | --------------- | +| Grok 4.5 | Не используется | 30 дней | +| GPT 5.6 Luna | Не используется | 30 дней | +| GLM-5.3 | Не используется | 0 дней | +| GLM-5.2 | Не используется | 0 дней | +| GLM-5.1 | Не используется | 0 дней | +| Kimi K3 | Не используется | 0 дней | +| Kimi K2.7 Code | Не используется | 0 дней | +| Kimi K2.6 | Не используется | 0 дней | +| MiMo-V2.5-Pro | Не используется | 0 дней | +| MiMo-V2.5 | Не используется | 0 дней | +| Qwen3.8 Max | Не используется | 0 дней | +| Qwen3.7 Max | Не используется | 0 дней | +| Qwen3.7 Plus | Не используется | 0 дней | +| Qwen3.6 Plus | Не используется | 0 дней | +| MiniMax M3 | Не используется | 0 дней | +| MiniMax M2.7 | Не используется | 0 дней | +| Muse Spark 1.2 Contributor | Да | Не ZDR | +| DeepSeek V4 Pro | Не используется | 0 дней | +| DeepSeek V4 Flash | Не используется | 0 дней | | DeepSeek V4 Flash Vision Exp | Не используется | 0 дней | -| Hy3 | Не используется | 0 дней | -| Ox Alpha Free | Не используется | 0 дней | +| Hy3 | Не используется | 0 дней | +| Ox Alpha Free | Не используется | 0 дней | - **Grok 4.5:** ZDR отключает важные функции API, зависящие от сохраненных данных, включая Responses API с сохранением состояния, Files and Collections и Batch API. [Подробнее](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Журналы мониторинга злоупотреблений создаются при любом использовании функций API и хранятся до 30 дней. [Подробнее](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 403e7a0d2..c615e3c30 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -88,30 +88,30 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: ตารางด้านล่างแสดงจำนวน request โดยประมาณตามรูปแบบการใช้งานปกติของ Go: -| Model | requests ต่อ 5 ชั่วโมง | requests ต่อสัปดาห์ | requests ต่อเดือน | -| -------------------------- | ---------------------- | ------------------- | ----------------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | requests ต่อ 5 ชั่วโมง | requests ต่อสัปดาห์ | requests ต่อเดือน | +| ---------------------------- | ---------------------- | ------------------- | ----------------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | การประมาณการนี้อ้างอิงจากรูปแบบการใช้งาน request ที่สังเกตพบ: @@ -136,37 +136,37 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: การประมาณการนี้ยังอ้างอิงจากราคาต่อ 1M tokens และปริมาณการใช้งานรายเดือนที่รวมอยู่ในแต่ละโมเดลดังต่อไปนี้: -| Model | Input | Output | Cached Read | Cached Write | Usage | -| ---------------------------- | ------ | ------ | ----------- | ------------ | ----- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Model | Input | Output | Cached Read | Cached Write | Usage | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | ----- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ส่วนเวลาอื่นทั้งหมดเป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) @@ -206,31 +206,31 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: คุณสามารถเข้าถึงโมเดลของ Go ผ่าน API endpoints ต่อไปนี้ได้เช่นกัน -| Model | Model ID | Endpoint | AI SDK Package | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Endpoint | AI SDK Package | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [model id](/docs/config/#models) ใน OpenCode config ของคุณจะใช้รูปแบบ `opencode-go/` ตัวอย่างเช่น สำหรับ Kimi K3 คุณจะใช้ `opencode-go/kimi-k3` ใน config ของคุณ @@ -248,30 +248,30 @@ https://opencode.ai/zen/go/v1/models ## Privacy -| โมเดล | การฝึกโมเดล | การเก็บรักษาข้อมูล | -| -------------------------- | ----------- | ------------------ | -| Grok 4.5 | ไม่นำไปใช้ | 30 วัน | -| GPT 5.6 Luna | ไม่นำไปใช้ | 30 วัน | -| GLM-5.3 | ไม่นำไปใช้ | 0 วัน | -| GLM-5.2 | ไม่นำไปใช้ | 0 วัน | -| GLM-5.1 | ไม่นำไปใช้ | 0 วัน | -| Kimi K3 | ไม่นำไปใช้ | 0 วัน | -| Kimi K2.7 Code | ไม่นำไปใช้ | 0 วัน | -| Kimi K2.6 | ไม่นำไปใช้ | 0 วัน | -| MiMo-V2.5-Pro | ไม่นำไปใช้ | 0 วัน | -| MiMo-V2.5 | ไม่นำไปใช้ | 0 วัน | -| Qwen3.8 Max | ไม่นำไปใช้ | 0 วัน | -| Qwen3.7 Max | ไม่นำไปใช้ | 0 วัน | -| Qwen3.7 Plus | ไม่นำไปใช้ | 0 วัน | -| Qwen3.6 Plus | ไม่นำไปใช้ | 0 วัน | -| MiniMax M3 | ไม่นำไปใช้ | 0 วัน | -| MiniMax M2.7 | ไม่นำไปใช้ | 0 วัน | -| Muse Spark 1.2 Contributor | ใช่ | ไม่ใช่ ZDR | -| DeepSeek V4 Pro | ไม่นำไปใช้ | 0 วัน | -| DeepSeek V4 Flash | ไม่นำไปใช้ | 0 วัน | +| โมเดล | การฝึกโมเดล | การเก็บรักษาข้อมูล | +| ---------------------------- | ----------- | ------------------ | +| Grok 4.5 | ไม่นำไปใช้ | 30 วัน | +| GPT 5.6 Luna | ไม่นำไปใช้ | 30 วัน | +| GLM-5.3 | ไม่นำไปใช้ | 0 วัน | +| GLM-5.2 | ไม่นำไปใช้ | 0 วัน | +| GLM-5.1 | ไม่นำไปใช้ | 0 วัน | +| Kimi K3 | ไม่นำไปใช้ | 0 วัน | +| Kimi K2.7 Code | ไม่นำไปใช้ | 0 วัน | +| Kimi K2.6 | ไม่นำไปใช้ | 0 วัน | +| MiMo-V2.5-Pro | ไม่นำไปใช้ | 0 วัน | +| MiMo-V2.5 | ไม่นำไปใช้ | 0 วัน | +| Qwen3.8 Max | ไม่นำไปใช้ | 0 วัน | +| Qwen3.7 Max | ไม่นำไปใช้ | 0 วัน | +| Qwen3.7 Plus | ไม่นำไปใช้ | 0 วัน | +| Qwen3.6 Plus | ไม่นำไปใช้ | 0 วัน | +| MiniMax M3 | ไม่นำไปใช้ | 0 วัน | +| MiniMax M2.7 | ไม่นำไปใช้ | 0 วัน | +| Muse Spark 1.2 Contributor | ใช่ | ไม่ใช่ ZDR | +| DeepSeek V4 Pro | ไม่นำไปใช้ | 0 วัน | +| DeepSeek V4 Flash | ไม่นำไปใช้ | 0 วัน | | DeepSeek V4 Flash Vision Exp | ไม่นำไปใช้ | 0 วัน | -| Hy3 | ไม่นำไปใช้ | 0 วัน | -| Ox Alpha Free | ไม่นำไปใช้ | 0 วัน | +| Hy3 | ไม่นำไปใช้ | 0 วัน | +| Ox Alpha Free | ไม่นำไปใช้ | 0 วัน | - **Grok 4.5:** ZDR ปิดใช้งานฟีเจอร์ API สำคัญที่ต้องอาศัยข้อมูลที่จัดเก็บไว้ ซึ่งรวมถึง Responses API แบบมีสถานะ, Files and Collections และ Batch API [ดูข้อมูลเพิ่มเติม](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr) - **GPT 5.6 Luna:** ระบบจะสร้างบันทึกการตรวจสอบการใช้งานในทางที่ผิดสำหรับการใช้งานฟีเจอร์ API ทั้งหมด และเก็บรักษาไว้นานสูงสุด 30 วัน [ดูข้อมูลเพิ่มเติม](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring) diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 3f24d3f8f..2cfd7c23a 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -88,30 +88,30 @@ Limitler dolar değeri üzerinden belirlenmiştir. Bu, gerçek istek sayınızı Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek sayısı sunmaktadır: -| Model | 5 saatte bir istek | haftalık istek | aylık istek | -| -------------------------- | ------------------ | -------------- | ----------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | 5 saatte bir istek | haftalık istek | aylık istek | +| ---------------------------- | ------------------ | -------------- | ----------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | Tahminler, gözlemlenen istek modellerine dayanır: @@ -136,37 +136,37 @@ Tahminler, gözlemlenen istek modellerine dayanır: Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlikte sunulan aylık kullanıma dayanır: -| Model | Input | Output | Cached Read | Cached Write | Kullanım | -| ---------------------------- | ------ | ------ | ----------- | ------------ | -------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| Model | Input | Output | Cached Read | Cached Write | Kullanım | +| --------------------------------------- | ------ | ------ | ----------- | ------------ | -------- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak saatleri 01:00-04:00 ve 06:00-10:00 UTC'dir; diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). @@ -206,31 +206,31 @@ Bu modellerde bile model sağlayıcılarına doğrudan ödeme yaptığınız dur Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsiniz. -| Model | Model ID | Uç Nokta | AI SDK Paketi | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Model | Model ID | Uç Nokta | AI SDK Paketi | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode yapılandırmanızdaki [model id](/docs/config/#models) formatı `opencode-go/` şeklindedir. Örneğin, Kimi K3 için yapılandırmanızda `opencode-go/kimi-k3` kullanmalısınız. @@ -248,30 +248,30 @@ https://opencode.ai/zen/go/v1/models ## Gizlilik -| Model | Model eğitimi | Veri saklama | -| -------------------------- | ------------- | ------------ | -| Grok 4.5 | Kullanılmaz | 30 gün | -| GPT 5.6 Luna | Kullanılmaz | 30 gün | -| GLM-5.3 | Kullanılmaz | 0 gün | -| GLM-5.2 | Kullanılmaz | 0 gün | -| GLM-5.1 | Kullanılmaz | 0 gün | -| Kimi K3 | Kullanılmaz | 0 gün | -| Kimi K2.7 Code | Kullanılmaz | 0 gün | -| Kimi K2.6 | Kullanılmaz | 0 gün | -| MiMo-V2.5-Pro | Kullanılmaz | 0 gün | -| MiMo-V2.5 | Kullanılmaz | 0 gün | -| Qwen3.8 Max | Kullanılmaz | 0 gün | -| Qwen3.7 Max | Kullanılmaz | 0 gün | -| Qwen3.7 Plus | Kullanılmaz | 0 gün | -| Qwen3.6 Plus | Kullanılmaz | 0 gün | -| MiniMax M3 | Kullanılmaz | 0 gün | -| MiniMax M2.7 | Kullanılmaz | 0 gün | -| Muse Spark 1.2 Contributor | Evet | ZDR değil | -| DeepSeek V4 Pro | Kullanılmaz | 0 gün | -| DeepSeek V4 Flash | Kullanılmaz | 0 gün | +| Model | Model eğitimi | Veri saklama | +| ---------------------------- | ------------- | ------------ | +| Grok 4.5 | Kullanılmaz | 30 gün | +| GPT 5.6 Luna | Kullanılmaz | 30 gün | +| GLM-5.3 | Kullanılmaz | 0 gün | +| GLM-5.2 | Kullanılmaz | 0 gün | +| GLM-5.1 | Kullanılmaz | 0 gün | +| Kimi K3 | Kullanılmaz | 0 gün | +| Kimi K2.7 Code | Kullanılmaz | 0 gün | +| Kimi K2.6 | Kullanılmaz | 0 gün | +| MiMo-V2.5-Pro | Kullanılmaz | 0 gün | +| MiMo-V2.5 | Kullanılmaz | 0 gün | +| Qwen3.8 Max | Kullanılmaz | 0 gün | +| Qwen3.7 Max | Kullanılmaz | 0 gün | +| Qwen3.7 Plus | Kullanılmaz | 0 gün | +| Qwen3.6 Plus | Kullanılmaz | 0 gün | +| MiniMax M3 | Kullanılmaz | 0 gün | +| MiniMax M2.7 | Kullanılmaz | 0 gün | +| Muse Spark 1.2 Contributor | Evet | ZDR değil | +| DeepSeek V4 Pro | Kullanılmaz | 0 gün | +| DeepSeek V4 Flash | Kullanılmaz | 0 gün | | DeepSeek V4 Flash Vision Exp | Kullanılmaz | 0 gün | -| Hy3 | Kullanılmaz | 0 gün | -| Ox Alpha Free | Kullanılmaz | 0 gün | +| Hy3 | Kullanılmaz | 0 gün | +| Ox Alpha Free | Kullanılmaz | 0 gün | - **Grok 4.5:** ZDR, durum bilgisi tutan Responses API, Files and Collections ve Batch API dahil olmak üzere saklanan verilere bağlı önemli API özelliklerini devre dışı bırakır. [Daha fazla bilgi](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Tüm API özelliklerinin kullanımı için kötüye kullanım izleme günlükleri oluşturulur ve 30 güne kadar saklanır. [Daha fazla bilgi](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 56ad66e97..68f176062 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -88,30 +88,30 @@ OpenCode Go 包含以下限制: 下表提供了基于典型 Go 使用模式的预估请求数: -| Model | 每 5 小时请求数 | 每周请求数 | 每月请求数 | -| -------------------------- | --------------- | ---------- | ---------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | 每 5 小时请求数 | 每周请求数 | 每月请求数 | +| ---------------------------- | --------------- | ---------- | ---------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | 预估值基于观察到的请求模式: @@ -136,37 +136,37 @@ OpenCode Go 包含以下限制: 预估值还基于以下每 1M tokens 的价格以及每个模型包含的每月使用额度: -| 模型 | 输入 | 输出 | 缓存读取 | 缓存写入 | 使用额度 | -| ---------------------------- | ------ | ------ | --------- | -------- | -------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| 模型 | 输入 | 输出 | 缓存读取 | 缓存写入 | 使用额度 | +| --------------------------------------- | ------ | ------ | --------- | -------- | -------- | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 时段为 01:00-04:00 和 06:00-10:00 UTC;其他所有时段均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 @@ -206,31 +206,31 @@ OpenCode Go 包含以下限制: 你也可以通过以下 API 端点访问 Go 模型。 -| 模型 | 模型 ID | 端点 | AI SDK 包 | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| 模型 | 模型 ID | 端点 | AI SDK 包 | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 你的 OpenCode 配置中的 [模型 ID](/docs/config/#models) 使用 `opencode-go/` 格式。例如,对于 Kimi K3,你将在配置中使用 `opencode-go/kimi-k3`。 @@ -248,30 +248,30 @@ https://opencode.ai/zen/go/v1/models ## 隐私保护 -| 模型 | 模型训练 | 数据留存 | -| -------------------------- | -------- | -------- | -| Grok 4.5 | 不使用 | 30 天 | -| GPT 5.6 Luna | 不使用 | 30 天 | -| GLM-5.3 | 不使用 | 0 天 | -| GLM-5.2 | 不使用 | 0 天 | -| GLM-5.1 | 不使用 | 0 天 | -| Kimi K3 | 不使用 | 0 天 | -| Kimi K2.7 Code | 不使用 | 0 天 | -| Kimi K2.6 | 不使用 | 0 天 | -| MiMo-V2.5-Pro | 不使用 | 0 天 | -| MiMo-V2.5 | 不使用 | 0 天 | -| Qwen3.8 Max | 不使用 | 0 天 | -| Qwen3.7 Max | 不使用 | 0 天 | -| Qwen3.7 Plus | 不使用 | 0 天 | -| Qwen3.6 Plus | 不使用 | 0 天 | -| MiniMax M3 | 不使用 | 0 天 | -| MiniMax M2.7 | 不使用 | 0 天 | -| Muse Spark 1.2 Contributor | 是 | 非 ZDR | -| DeepSeek V4 Pro | 不使用 | 0 天 | -| DeepSeek V4 Flash | 不使用 | 0 天 | -| DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | -| Hy3 | 不使用 | 0 天 | -| Ox Alpha Free | 不使用 | 0 天 | +| 模型 | 模型训练 | 数据留存 | +| ---------------------------- | -------- | -------- | +| Grok 4.5 | 不使用 | 30 天 | +| GPT 5.6 Luna | 不使用 | 30 天 | +| GLM-5.3 | 不使用 | 0 天 | +| GLM-5.2 | 不使用 | 0 天 | +| GLM-5.1 | 不使用 | 0 天 | +| Kimi K3 | 不使用 | 0 天 | +| Kimi K2.7 Code | 不使用 | 0 天 | +| Kimi K2.6 | 不使用 | 0 天 | +| MiMo-V2.5-Pro | 不使用 | 0 天 | +| MiMo-V2.5 | 不使用 | 0 天 | +| Qwen3.8 Max | 不使用 | 0 天 | +| Qwen3.7 Max | 不使用 | 0 天 | +| Qwen3.7 Plus | 不使用 | 0 天 | +| Qwen3.6 Plus | 不使用 | 0 天 | +| MiniMax M3 | 不使用 | 0 天 | +| MiniMax M2.7 | 不使用 | 0 天 | +| Muse Spark 1.2 Contributor | 是 | 非 ZDR | +| DeepSeek V4 Pro | 不使用 | 0 天 | +| DeepSeek V4 Flash | 不使用 | 0 天 | +| DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | +| Hy3 | 不使用 | 0 天 | +| Ox Alpha Free | 不使用 | 0 天 | - **Grok 4.5:** ZDR 会禁用依赖所存储数据的重要 API 功能,包括有状态的 Responses API、Files and Collections 和 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 所有 API 功能的使用都会生成滥用监控日志,并最多保留 30 天。[了解更多](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index a3a5cd4c2..349787ecd 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -88,30 +88,30 @@ OpenCode Go 包含以下限制: 下表提供了基於典型 Go 使用模式的預估請求次數: -| Model | 每 5 小時請求數 | 每週請求數 | 每月請求數 | -| -------------------------- | --------------- | ---------- | ---------- | -| Grok 4.5 | 120 | 300 | 600 | -| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | -| GLM-5.3 | 220 | 540 | 1,080 | -| GLM-5.2 | 880 | 2,150 | 4,300 | -| GLM-5.1 | 880 | 2,150 | 4,300 | -| Kimi K3 | 110 | 250 | 490 | -| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | -| Kimi K2.6 | 1,150 | 2,880 | 5,750 | -| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | -| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | -| MiniMax M3 | 3,200 | 8,000 | 16,000 | -| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | -| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | -| Qwen3.8 Max | 160 | 400 | 810 | -| Qwen3.7 Max | 340 | 840 | 1,690 | -| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | -| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | -| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | -| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | +| Model | 每 5 小時請求數 | 每週請求數 | 每月請求數 | +| ---------------------------- | --------------- | ---------- | ---------- | +| Grok 4.5 | 120 | 300 | 600 | +| GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3 | 220 | 540 | 1,080 | +| GLM-5.2 | 880 | 2,150 | 4,300 | +| GLM-5.1 | 880 | 2,150 | 4,300 | +| Kimi K3 | 110 | 250 | 490 | +| Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | +| Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| MiMo-V2.5 | 30,100 | 75,200 | 150,400 | +| MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | +| MiniMax M3 | 3,200 | 8,000 | 16,000 | +| MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | +| Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | +| Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | +| DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | +| DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | -| Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | +| Hy3 | 4,300 | 10,750 | 21,500 | +| Ox Alpha Free | - | - | - | 這些預估值是基於觀察到的請求模式: @@ -136,37 +136,37 @@ OpenCode Go 包含以下限制: 這些預估值也基於以下每 1M tokens 的價格,以及每個模型所包含的每月使用量: -| 模型 | 輸入 | 輸出 | 快取讀取 | 快取寫入 | 使用量 | -| ---------------------------- | ------ | ------ | --------- | -------- | ------ | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| 模型 | 輸入 | 輸出 | 快取讀取 | 快取寫入 | 使用量 | +| --------------------------------------- | ------ | ------ | --------- | -------- | ------ | +| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 時段為 01:00-04:00 和 06:00-10:00 UTC;其他所有時段均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 @@ -206,31 +206,31 @@ OpenCode Go 包含以下限制: 您也可以透過以下 API 端點存取 Go 模型。 -| 模型 | 模型 ID | 端點 | AI SDK 套件 | -| -------------------------- | -------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| 模型 | 模型 ID | 端點 | AI SDK 套件 | +| ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | +| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | -| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | -| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5 | mimo-v2.5 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiMo-V2.5-Pro | mimo-v2.5-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 您的 OpenCode 設定中的 [model id](/docs/config/#models) 使用 `opencode-go/` 格式。例如,Kimi K3 在設定中應使用 `opencode-go/kimi-k3`。 @@ -248,30 +248,30 @@ https://opencode.ai/zen/go/v1/models ## 隱私權 -| 模型 | 模型訓練 | 資料保留 | -| -------------------------- | -------- | -------- | -| Grok 4.5 | 不使用 | 30 天 | -| GPT 5.6 Luna | 不使用 | 30 天 | -| GLM-5.3 | 不使用 | 0 天 | -| GLM-5.2 | 不使用 | 0 天 | -| GLM-5.1 | 不使用 | 0 天 | -| Kimi K3 | 不使用 | 0 天 | -| Kimi K2.7 Code | 不使用 | 0 天 | -| Kimi K2.6 | 不使用 | 0 天 | -| MiMo-V2.5-Pro | 不使用 | 0 天 | -| MiMo-V2.5 | 不使用 | 0 天 | -| Qwen3.8 Max | 不使用 | 0 天 | -| Qwen3.7 Max | 不使用 | 0 天 | -| Qwen3.7 Plus | 不使用 | 0 天 | -| Qwen3.6 Plus | 不使用 | 0 天 | -| MiniMax M3 | 不使用 | 0 天 | -| MiniMax M2.7 | 不使用 | 0 天 | -| Muse Spark 1.2 Contributor | 是 | 非 ZDR | -| DeepSeek V4 Pro | 不使用 | 0 天 | -| DeepSeek V4 Flash | 不使用 | 0 天 | -| DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | -| Hy3 | 不使用 | 0 天 | -| Ox Alpha Free | 不使用 | 0 天 | +| 模型 | 模型訓練 | 資料保留 | +| ---------------------------- | -------- | -------- | +| Grok 4.5 | 不使用 | 30 天 | +| GPT 5.6 Luna | 不使用 | 30 天 | +| GLM-5.3 | 不使用 | 0 天 | +| GLM-5.2 | 不使用 | 0 天 | +| GLM-5.1 | 不使用 | 0 天 | +| Kimi K3 | 不使用 | 0 天 | +| Kimi K2.7 Code | 不使用 | 0 天 | +| Kimi K2.6 | 不使用 | 0 天 | +| MiMo-V2.5-Pro | 不使用 | 0 天 | +| MiMo-V2.5 | 不使用 | 0 天 | +| Qwen3.8 Max | 不使用 | 0 天 | +| Qwen3.7 Max | 不使用 | 0 天 | +| Qwen3.7 Plus | 不使用 | 0 天 | +| Qwen3.6 Plus | 不使用 | 0 天 | +| MiniMax M3 | 不使用 | 0 天 | +| MiniMax M2.7 | 不使用 | 0 天 | +| Muse Spark 1.2 Contributor | 是 | 非 ZDR | +| DeepSeek V4 Pro | 不使用 | 0 天 | +| DeepSeek V4 Flash | 不使用 | 0 天 | +| DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | +| Hy3 | 不使用 | 0 天 | +| Ox Alpha Free | 不使用 | 0 天 | - **Grok 4.5:** ZDR 會停用依賴儲存資料的重要 API 功能,包括具狀態的 Responses API、Files and Collections 與 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 所有 API 功能的使用都會產生濫用監控日誌,並保留最多 30 天。[了解更多](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 From 361a71ffad9464e7eb63a2fc0a0e35f192a32524 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 15:23:05 +0200 Subject: [PATCH 094/271] fix(opencode): route Vertex multi-regions through REP (#42648) Co-authored-by: Aiden Cline Co-authored-by: Filip <34747899+neriousy@users.noreply.github.com> --- packages/opencode/src/provider/provider.ts | 9 ++++-- .../opencode/test/provider/provider.test.ts | 32 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 0200b212b..dba9cbece 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -98,6 +98,12 @@ function googleVertexAnthropicBaseURL(project: string | undefined, location: str return `https://aiplatform.${location}.rep.googleapis.com/v1/projects/${project}/locations/${location}/publishers/anthropic/models` } +function googleVertexEndpoint(location: string) { + if (location === "global") return "aiplatform.googleapis.com" + if (location === "eu" || location === "us") return `aiplatform.${location}.rep.googleapis.com` + return `${location}-aiplatform.googleapis.com` +} + type BundledSDK = { languageModel(modelId: string): LanguageModelV3 chat?: (modelId: string) => LanguageModelV3 @@ -519,11 +525,10 @@ function custom(dep: CustomDep): Record { return { autoload: true, vars(_options: Record) { - const endpoint = location === "global" ? "aiplatform.googleapis.com" : `${location}-aiplatform.googleapis.com` return { ...(project && { GOOGLE_VERTEX_PROJECT: project }), GOOGLE_VERTEX_LOCATION: location, - GOOGLE_VERTEX_ENDPOINT: endpoint, + GOOGLE_VERTEX_ENDPOINT: googleVertexEndpoint(location), } }, options: { diff --git a/packages/opencode/test/provider/provider.test.ts b/packages/opencode/test/provider/provider.test.ts index df23a5c49..844027b76 100644 --- a/packages/opencode/test/provider/provider.test.ts +++ b/packages/opencode/test/provider/provider.test.ts @@ -1909,6 +1909,38 @@ it.instance("Google Vertex: keeps regional Claude endpoints unchanged", () => }), ) +it.instance("Google Vertex: uses REP endpoint for Gemini continental multi-regions", () => + Effect.gen(function* () { + yield* set("GOOGLE_CLOUD_PROJECT", "test-project") + yield* set("VERTEX_LOCATION", "eu") + const provider = yield* Provider.Service + const model = yield* provider.getModel( + ProviderV2.ID.make("google-vertex"), + ModelV2.ID.make("gemini-3.5-flash"), + ) + const language = yield* provider.getLanguage(model) + expect(languageBaseURL(language)).toBe( + "https://aiplatform.eu.rep.googleapis.com/v1beta1/projects/test-project/locations/eu/publishers/google", + ) + }), +) + +it.instance("Google Vertex: keeps regional Gemini endpoints unchanged", () => + Effect.gen(function* () { + yield* set("GOOGLE_CLOUD_PROJECT", "test-project") + yield* set("VERTEX_LOCATION", "europe-west1") + const provider = yield* Provider.Service + const model = yield* provider.getModel( + ProviderV2.ID.make("google-vertex"), + ModelV2.ID.make("gemini-3.5-flash"), + ) + const language = yield* provider.getLanguage(model) + expect(languageBaseURL(language)).toBe( + "https://europe-west1-aiplatform.googleapis.com/v1beta1/projects/test-project/locations/europe-west1/publishers/google", + ) + }), +) + it.instance("cloudflare-ai-gateway loads with env variables", () => Effect.gen(function* () { yield* set("CLOUDFLARE_ACCOUNT_ID", "test-account") From 8ecd4c21bf0c985844fd18fa71678b7a351a0f28 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Fri, 21 Aug 2026 13:24:26 +0000 Subject: [PATCH 095/271] chore: generate --- packages/opencode/test/provider/provider.test.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/opencode/test/provider/provider.test.ts b/packages/opencode/test/provider/provider.test.ts index 844027b76..32d4e3a39 100644 --- a/packages/opencode/test/provider/provider.test.ts +++ b/packages/opencode/test/provider/provider.test.ts @@ -1914,10 +1914,7 @@ it.instance("Google Vertex: uses REP endpoint for Gemini continental multi-regio yield* set("GOOGLE_CLOUD_PROJECT", "test-project") yield* set("VERTEX_LOCATION", "eu") const provider = yield* Provider.Service - const model = yield* provider.getModel( - ProviderV2.ID.make("google-vertex"), - ModelV2.ID.make("gemini-3.5-flash"), - ) + const model = yield* provider.getModel(ProviderV2.ID.make("google-vertex"), ModelV2.ID.make("gemini-3.5-flash")) const language = yield* provider.getLanguage(model) expect(languageBaseURL(language)).toBe( "https://aiplatform.eu.rep.googleapis.com/v1beta1/projects/test-project/locations/eu/publishers/google", @@ -1930,10 +1927,7 @@ it.instance("Google Vertex: keeps regional Gemini endpoints unchanged", () => yield* set("GOOGLE_CLOUD_PROJECT", "test-project") yield* set("VERTEX_LOCATION", "europe-west1") const provider = yield* Provider.Service - const model = yield* provider.getModel( - ProviderV2.ID.make("google-vertex"), - ModelV2.ID.make("gemini-3.5-flash"), - ) + const model = yield* provider.getModel(ProviderV2.ID.make("google-vertex"), ModelV2.ID.make("gemini-3.5-flash")) const language = yield* provider.getLanguage(model) expect(languageBaseURL(language)).toBe( "https://europe-west1-aiplatform.googleapis.com/v1beta1/projects/test-project/locations/europe-west1/publishers/google", From 0af9dd61d2d28ea0bf11cbbf654469b686bb9dd0 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Fri, 21 Aug 2026 08:38:31 -0500 Subject: [PATCH 096/271] fix(stats): merge renamed model data (#43883) --- packages/stats/core/src/domain/inference.test.ts | 11 +++++++++++ packages/stats/core/src/domain/inference.ts | 4 ++++ packages/stats/core/src/domain/model-normalization.ts | 8 +++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index 0f8248ad1..d8937ff28 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -41,6 +41,17 @@ describe("inference stat normalization", () => { expect(statProvider("unknown", "", "custom-provider")).toBe("custom-provider") }) + test("merges renamed models under their current name", () => { + expect(statModel("x-preview-f", "")).toBe("ox-alpha") + expect(statModel("xiaomi/mimo-v2.5", "")).toBe("mimo-v2.5") + expect(toModelAggregate(aggregate("x-preview-f", "openai"))).toMatchObject([ + { + provider: "openai", + model: "ox-alpha", + }, + ]) + }) + test("model aggregates prefer provider.model and use normalized model", () => { expect(toModelAggregate(aggregate("alpha-gpt-next", "openai"))).toEqual([]) diff --git a/packages/stats/core/src/domain/inference.ts b/packages/stats/core/src/domain/inference.ts index 8c488c327..ee0468407 100644 --- a/packages/stats/core/src/domain/inference.ts +++ b/packages/stats/core/src/domain/inference.ts @@ -6,6 +6,7 @@ import { EXCLUDED_MODELS, FREE_MODELS, MODEL_AUTHOR_RULES, + MODEL_NAME_ALIASES, RETIRED_STAT_PROVIDERS, statModel, statProvider, @@ -302,6 +303,9 @@ function statPeriods(grain: "day" | "week", periodStart: Date, periodEnd: Date) function statModelSql(model: string, providerModel: string) { return `COALESCE(NULLIF(regexp_replace(CASE WHEN lower(${model}) = 'big-pickle' THEN regexp_replace(NULLIF(${providerModel}, ''), '^.*/', '') +${Object.entries(MODEL_NAME_ALIASES) + .map(([from, to]) => ` WHEN lower(${model}) = ${sqlString(from)} THEN ${sqlString(to)}`) + .join("\n")} ELSE ${model} END, '(-free|:free|:global)+$', ''), ''), 'unknown')` } diff --git a/packages/stats/core/src/domain/model-normalization.ts b/packages/stats/core/src/domain/model-normalization.ts index 4b6f47406..778e5edb8 100644 --- a/packages/stats/core/src/domain/model-normalization.ts +++ b/packages/stats/core/src/domain/model-normalization.ts @@ -15,7 +15,11 @@ export const MODEL_AUTHOR_RULES = [ ] as const export const EXCLUDED_MODELS = new Set(["alpha-gpt-next"]) export const FREE_MODELS = new Set(["gpt-5-nano", "grok-code", "big-pickle"]) -export const RETIRED_STAT_MODELS = ["big-pickle"] +export const MODEL_NAME_ALIASES: Record = { + "x-preview-f": "ox-alpha", + "xiaomi/mimo-v2.5": "mimo-v2.5", +} +export const RETIRED_STAT_MODELS = ["big-pickle", ...Object.keys(MODEL_NAME_ALIASES)] export const RETIRED_STAT_PROVIDERS = ["opencode"] export function normalizeInferenceModel(value: string | undefined) { @@ -31,6 +35,8 @@ export function modelAuthor(value: string | undefined) { export function statModel(model: string | undefined, providerModel: string | undefined) { const normalized = normalizeInferenceModel(model) + const alias = MODEL_NAME_ALIASES[normalized.toLowerCase()] + if (alias) return alias if (RETIRED_STAT_MODELS.includes(normalized.toLowerCase())) return normalizeInferenceModel(providerModel?.split("/").at(-1)) return normalized From 57fa34f23599f65dd1027f9caac31e6c576ce644 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 10:30:15 -0400 Subject: [PATCH 097/271] fix(opencode): continue unknown finish responses (#43892) Co-authored-by: rekram1-node --- packages/opencode/src/session/prompt.ts | 2 +- packages/opencode/test/session/prompt.test.ts | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 22b1d7d99..0f85d44f2 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -1110,7 +1110,7 @@ const layer = Layer.effect( if ( lastAssistant?.finish && - !["tool-calls"].includes(lastAssistant.finish) && + !["tool-calls", "unknown"].includes(lastAssistant.finish) && !hasToolCalls && lastAssistant.parentID === lastUser.id ) { diff --git a/packages/opencode/test/session/prompt.test.ts b/packages/opencode/test/session/prompt.test.ts index 5a0176abc..da6e0f8d0 100644 --- a/packages/opencode/test/session/prompt.test.ts +++ b/packages/opencode/test/session/prompt.test.ts @@ -850,6 +850,34 @@ it.instance("loop continues when finish is tool-calls", () => }), ) +it.instance("loop continues when finish is unknown", () => + Effect.gen(function* () { + const { llm } = yield* useServerConfig(providerCfg) + const prompt = yield* SessionPrompt.Service + const sessions = yield* Session.Service + const session = yield* sessions.create({ + title: "Pinned", + permission: [{ permission: "*", pattern: "*", action: "allow" }], + }) + yield* prompt.prompt({ + sessionID: session.id, + agent: "build", + noReply: true, + parts: [{ type: "text", text: "hello" }], + }) + yield* llm.push(reply()) + yield* llm.text("second") + + const result = yield* prompt.loop({ sessionID: session.id }) + expect(yield* llm.calls).toBe(2) + expect(result.info.role).toBe("assistant") + if (result.info.role === "assistant") { + expect(result.parts.some((part) => part.type === "text" && part.text === "second")).toBe(true) + expect(result.info.finish).toBe("stop") + } + }), +) + it.instance("glob tool keeps instance context during prompt runs", () => Effect.gen(function* () { const { dir, llm } = yield* useServerConfig(providerCfg) From 487d584402f4ce994d69f89afaaff0960071744b Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 22:49:25 +0800 Subject: [PATCH 098/271] docs(zen): reflect GPT 5.6 Sol discount (#43874) --- packages/web/src/content/docs/ar/zen.mdx | 6 ++++-- packages/web/src/content/docs/bs/zen.mdx | 6 ++++-- packages/web/src/content/docs/da/zen.mdx | 6 ++++-- packages/web/src/content/docs/de/zen.mdx | 6 ++++-- packages/web/src/content/docs/es/zen.mdx | 6 ++++-- packages/web/src/content/docs/fr/zen.mdx | 6 ++++-- packages/web/src/content/docs/it/zen.mdx | 6 ++++-- packages/web/src/content/docs/ja/zen.mdx | 6 ++++-- packages/web/src/content/docs/ko/zen.mdx | 6 ++++-- packages/web/src/content/docs/nb/zen.mdx | 6 ++++-- packages/web/src/content/docs/pl/zen.mdx | 6 ++++-- packages/web/src/content/docs/pt-br/zen.mdx | 6 ++++-- packages/web/src/content/docs/ru/zen.mdx | 6 ++++-- packages/web/src/content/docs/th/zen.mdx | 6 ++++-- packages/web/src/content/docs/tr/zen.mdx | 6 ++++-- packages/web/src/content/docs/zen.mdx | 6 ++++-- packages/web/src/content/docs/zh-cn/zen.mdx | 6 ++++-- packages/web/src/content/docs/zh-tw/zen.mdx | 6 ++++-- 18 files changed, 72 insertions(+), 36 deletions(-) diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index cd89bf1f6..45b59015d 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -188,8 +188,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -214,6 +214,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** تشمل الأسعار المعروضة خصمًا بنسبة 50% حتى 18 سبتمبر 2026. + **DeepSeek V4 Flash / Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC؛ وجميع الساعات الأخرى Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). قد تلاحظ [نماذج منخفضة التكلفة](/docs/config/#models)، مثل Haiku أو Nano أو Flash، في سجل الاستخدام. يستخدم OpenCode هذه النماذج لإنشاء عناوين الجلسات. diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index ed128124b..0ad34d116 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -195,8 +195,8 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -221,6 +221,8 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** Prikazane cijene uključuju popust od 50% do 18. septembra 2026. + **DeepSeek V4 Flash / Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC; svi ostali sati su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). U historiji korištenja možete primijetiti [jeftinije modele](/docs/config/#models), kao što su Haiku, Nano ili Flash. OpenCode koristi ove modele za generisanje naslova sesija. diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index f5ba90ed8..a5403b9cf 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -195,8 +195,8 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -221,6 +221,8 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** De viste priser inkluderer 50 % rabat til og med den 18. september 2026. + **DeepSeek V4 Flash / Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). Du vil måske bemærke [lavprismodeller](/docs/config/#models), såsom Haiku, Nano eller Flash, i din brugshistorik. OpenCode bruger disse modeller til at generere sessionstitler. diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index df393a3a8..59e6d4e77 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -184,8 +184,8 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -210,6 +210,8 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** Die angezeigten Preise enthalten bis zum 18. September 2026 einen Rabatt von 50 %. + **DeepSeek V4 Flash / Pro:** Die Peak-Zeiten sind 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). Möglicherweise siehst du [kostengünstige Modelle](/docs/config/#models) wie Haiku, Nano oder Flash in deinem Nutzungsverlauf. OpenCode verwendet diese Modelle, um Session-Titel zu generieren. diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index bcdd85b15..bcc62c0f4 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -195,8 +195,8 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -221,6 +221,8 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** Los precios mostrados incluyen un 50 % de descuento hasta el 18 de septiembre de 2026. + **DeepSeek V4 Flash / Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC; todas las demás horas son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). Puede que notes [modelos de bajo costo](/docs/config/#models), como Haiku, Nano o Flash, en tu historial de uso. OpenCode usa estos modelos para generar títulos de sesiones. diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index bab013828..77458714d 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -184,8 +184,8 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -210,6 +210,8 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** Les prix affichés incluent une réduction de 50 % jusqu’au 18 septembre 2026. + **DeepSeek V4 Flash / Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC ; toutes les autres heures sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). Vous remarquerez peut-être des [modèles à faible coût](/docs/config/#models), tels que Haiku, Nano ou Flash, dans votre historique d'utilisation. OpenCode utilise ces modèles pour générer les titres des sessions. diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index 16ea12c0d..12d9d83cc 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -195,8 +195,8 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -221,6 +221,8 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** I prezzi mostrati includono uno sconto del 50% fino al 18 settembre 2026. + **DeepSeek V4 Flash / Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC; tutti gli altri orari sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). Potresti notare [modelli a basso costo](/docs/config/#models), come Haiku, Nano o Flash, nella cronologia di utilizzo. OpenCode usa questi modelli per generare i titoli delle sessioni. diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index a756fae01..4dac2ad5c 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -184,8 +184,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -210,6 +210,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** 表示価格には、2026年9月18日まで50%の割引が適用されています。 + **DeepSeek V4 Flash / Pro:** Peak時間は01:00-04:00と06:00-10:00 UTCで、それ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 使用履歴に Haiku、Nano、Flash などの[低コストモデル](/docs/config/#models)が表示されることがあります。OpenCode はこれらのモデルをセッションタイトルの生成に使用します。 diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index f1e12bd49..c6bdf77fb 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -184,8 +184,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -210,6 +210,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** 표시된 가격에는 2026년 9월 18일까지 50% 할인이 적용됩니다. + **DeepSeek V4 Flash / Pro:** Peak 시간은 01:00-04:00 및 06:00-10:00 UTC이며, 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). 사용 기록에서 Haiku, Nano 또는 Flash와 같은 [저비용 모델](/docs/config/#models)을 볼 수 있습니다. OpenCode는 이러한 모델을 사용해 세션 제목을 생성합니다. diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index 2c3da89df..0af4b1f65 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -195,8 +195,8 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -221,6 +221,8 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** Prisene som vises inkluderer 50 % rabatt til og med 18. september 2026. + **DeepSeek V4 Flash / Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). Du vil kanskje legge merke til [lavprismodeller](/docs/config/#models), som Haiku, Nano eller Flash, i brukshistorikken din. OpenCode bruker disse modellene til å generere økttitler. diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index e60a90246..6df0a8582 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -195,8 +195,8 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -221,6 +221,8 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** Podane ceny obejmują 50% zniżki do 18 września 2026 r. + **DeepSeek V4 Flash / Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC; wszystkie pozostałe godziny to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). W historii użycia możesz zauważyć [niedrogie modele](/docs/config/#models), takie jak Haiku, Nano lub Flash. OpenCode używa tych modeli do generowania tytułów sesji. diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index cf8891c5e..855d07725 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -184,8 +184,8 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -210,6 +210,8 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** Os preços exibidos incluem 50% de desconto até 18 de setembro de 2026. + **DeepSeek V4 Flash / Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC; todos os demais horários são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). Você pode notar [modelos de baixo custo](/docs/config/#models), como Haiku, Nano ou Flash, no seu histórico de uso. O OpenCode usa esses modelos para gerar títulos de sessões. diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index 6aa38a284..07c06be9c 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -195,8 +195,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -221,6 +221,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** Указанные цены включают скидку 50% до 18 сентября 2026 года. + **DeepSeek V4 Flash / Pro:** Часы Peak: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). В истории использования могут появляться [недорогие модели](/docs/config/#models), такие как Haiku, Nano или Flash. OpenCode использует эти модели для создания заголовков сессий. diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index 6de05d146..88e940582 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -186,8 +186,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -212,6 +212,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** ราคาที่แสดงรวมส่วนลด 50% จนถึงวันที่ 18 กันยายน 2026 + **DeepSeek V4 Flash / Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ส่วนเวลาอื่นทั้งหมดเป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) คุณอาจสังเกตเห็น[โมเดลต้นทุนต่ำ](/docs/config/#models) เช่น Haiku, Nano หรือ Flash ในประวัติการใช้งานของคุณ OpenCode ใช้โมเดลเหล่านี้เพื่อสร้างชื่อเซสชัน diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index 8bce82a2a..2bdd7809a 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -184,8 +184,8 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -210,6 +210,8 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** Gösterilen fiyatlara 18 Eylül 2026 tarihine kadar %50 indirim dahildir. + **DeepSeek V4 Flash / Pro:** Peak saatleri 01:00-04:00 ve 06:00-10:00 UTC'dir; diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). Kullanım geçmişinizde Haiku, Nano veya Flash gibi [düşük maliyetli modeller](/docs/config/#models) görebilirsiniz. OpenCode, oturum başlıklarını oluşturmak için bu modelleri kullanır. diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index 07261c5ad..1b202bfe3 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -195,8 +195,8 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -221,6 +221,8 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** Prices shown include a 50% discount through September 18, 2026. + **DeepSeek V4 Flash / Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC; all other hours are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). You may notice [low-cost models](/docs/config/#models), such as Haiku, Nano, or Flash, in your usage history. OpenCode uses these models to generate session titles. diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index 10ff4f230..f811b7f0e 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -184,8 +184,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -210,6 +210,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** 所示价格已包含 50% 折扣,有效期至 2026 年 9 月 18 日。 + **DeepSeek V4 Flash / Pro:** Peak 时段为 01:00-04:00 和 06:00-10:00 UTC;其他所有时段均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 你可能会在使用记录中看到 Haiku、Nano 或 Flash 等[低成本模型](/docs/config/#models)。OpenCode 使用这些模型生成会话标题。 diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 91d8568c8..174260632 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -189,8 +189,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $5.00 | $30.00 | $0.50 | $6.25 | -| GPT 5.6 Sol (> 272K tokens) | $10.00 | $45.00 | $1.00 | $12.50 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | +| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -215,6 +215,8 @@ https://opencode.ai/zen/v1/models | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | +**GPT 5.6 Sol:** 顯示價格已包含 50% 折扣,有效期至 2026 年 9 月 18 日。 + **DeepSeek V4 Flash / Pro:** Peak 時段為 01:00-04:00 和 06:00-10:00 UTC;其他所有時段均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 你可能會在使用紀錄中看到 Haiku、Nano 或 Flash 等[低成本模型](/docs/config/#models)。OpenCode 使用這些模型產生工作階段標題。 From ad0bb6d9a3e779def694adc093a811e86a529df0 Mon Sep 17 00:00:00 2001 From: opencode Date: Fri, 21 Aug 2026 14:51:08 +0000 Subject: [PATCH 099/271] sync release versions for v1.18.21 --- bun.lock | 56 ++++++++++----------- packages/app/package.json | 2 +- packages/cli/package.json | 2 +- packages/codemode/package.json | 2 +- packages/console/app/package.json | 2 +- packages/console/core/package.json | 2 +- packages/console/function/package.json | 2 +- packages/console/mail/package.json | 2 +- packages/console/support/package.json | 2 +- packages/core/package.json | 2 +- packages/desktop/package.json | 2 +- packages/effect-drizzle-sqlite/package.json | 2 +- packages/effect-sqlite-node/package.json | 2 +- packages/enterprise/package.json | 2 +- packages/function/package.json | 2 +- packages/http-recorder/package.json | 2 +- packages/llm/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/server/package.json | 2 +- packages/session-ui/package.json | 2 +- packages/slack/package.json | 2 +- packages/stats/app/package.json | 2 +- packages/stats/core/package.json | 2 +- packages/stats/server/package.json | 2 +- packages/tui/package.json | 2 +- packages/ui/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 30 files changed, 57 insertions(+), 57 deletions(-) diff --git a/bun.lock b/bun.lock index 8aeee5823..d73961bfd 100644 --- a/bun.lock +++ b/bun.lock @@ -29,7 +29,7 @@ }, "packages/app": { "name": "@opencode-ai/app", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", @@ -96,7 +96,7 @@ }, "packages/cli": { "name": "@opencode-ai/cli", - "version": "1.18.20", + "version": "1.18.21", "bin": { "lildax": "./bin/lildax.cjs", }, @@ -144,7 +144,7 @@ }, "packages/codemode": { "name": "@opencode-ai/codemode", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "acorn": "8.15.0", "effect": "catalog:", @@ -158,7 +158,7 @@ }, "packages/console/app": { "name": "@opencode-ai/console-app", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@ibm/plex": "6.4.1", @@ -194,7 +194,7 @@ }, "packages/console/core": { "name": "@opencode-ai/console-core", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@jsx-email/render": "1.1.1", @@ -221,7 +221,7 @@ }, "packages/console/function": { "name": "@opencode-ai/console-function", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/openai": "3.0.48", @@ -243,7 +243,7 @@ }, "packages/console/mail": { "name": "@opencode-ai/console-mail", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", @@ -267,7 +267,7 @@ }, "packages/console/support": { "name": "@opencode-ai/console-support", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@opencode-ai/console-core": "workspace:*", @@ -287,7 +287,7 @@ }, "packages/core": { "name": "@opencode-ai/core", - "version": "1.18.20", + "version": "1.18.21", "bin": { "opencode": "./bin/opencode", }, @@ -381,7 +381,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@zip.js/zip.js": "2.7.62", "drizzle-orm": "catalog:", @@ -435,7 +435,7 @@ }, "packages/effect-drizzle-sqlite": { "name": "@opencode-ai/effect-drizzle-sqlite", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "drizzle-orm": "catalog:", "effect": "catalog:", @@ -449,7 +449,7 @@ }, "packages/effect-sqlite-node": { "name": "@opencode-ai/effect-sqlite-node", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "effect": "catalog:", }, @@ -461,7 +461,7 @@ }, "packages/enterprise": { "name": "@opencode-ai/enterprise", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@hono/standard-validator": "catalog:", "@opencode-ai/core": "workspace:*", @@ -493,7 +493,7 @@ }, "packages/function": { "name": "@opencode-ai/function", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "catalog:", @@ -509,7 +509,7 @@ }, "packages/http-recorder": { "name": "@opencode-ai/http-recorder", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@effect/platform-node": "4.0.0-beta.83", "@effect/platform-node-shared": "4.0.0-beta.83", @@ -540,7 +540,7 @@ }, "packages/llm": { "name": "@opencode-ai/llm", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@opencode-ai/schema": "workspace:*", "@smithy/eventstream-codec": "4.2.14", @@ -559,7 +559,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "1.18.20", + "version": "1.18.21", "bin": { "opencode": "./bin/opencode", }, @@ -690,7 +690,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@ai-sdk/provider": "3.0.8", "@opencode-ai/sdk": "workspace:*", @@ -766,7 +766,7 @@ }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "cross-spawn": "catalog:", }, @@ -781,7 +781,7 @@ }, "packages/server": { "name": "@opencode-ai/server", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", @@ -796,7 +796,7 @@ }, "packages/session-ui": { "name": "@opencode-ai/session-ui", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@kobalte/core": "catalog:", "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13-v2.tgz", @@ -836,7 +836,7 @@ }, "packages/slack": { "name": "@opencode-ai/slack", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@opencode-ai/sdk": "workspace:*", "@slack/bolt": "^3.17.1", @@ -849,7 +849,7 @@ }, "packages/stats/app": { "name": "@opencode-ai/stats-app", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@ibm/plex": "6.4.1", "@kobalte/core": "catalog:", @@ -883,7 +883,7 @@ }, "packages/stats/core": { "name": "@opencode-ai/stats-core", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@aws-sdk/client-athena": "3.933.0", "@planetscale/database": "1.19.0", @@ -902,7 +902,7 @@ }, "packages/stats/server": { "name": "@opencode-ai/stats-server", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@aws-sdk/client-firehose": "3.933.0", "@effect/platform-node": "catalog:", @@ -944,7 +944,7 @@ }, "packages/tui": { "name": "@opencode-ai/tui", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", @@ -971,7 +971,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@kobalte/core": "catalog:", "@pierre/diffs": "catalog:", @@ -1022,7 +1022,7 @@ }, "packages/web": { "name": "@opencode-ai/web", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", diff --git a/packages/app/package.json b/packages/app/package.json index 4adcb5e75..729c16e4a 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "1.18.20", + "version": "1.18.21", "description": "", "type": "module", "exports": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 846dd8184..af75216f8 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/cli", - "version": "1.18.20", + "version": "1.18.21", "type": "module", "license": "MIT", "bin": { diff --git a/packages/codemode/package.json b/packages/codemode/package.json index e0029780c..041307717 100644 --- a/packages/codemode/package.json +++ b/packages/codemode/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/codemode", - "version": "1.18.20", + "version": "1.18.21", "description": "Effect-native confined code execution over schema-described tools", "private": true, "type": "module", diff --git a/packages/console/app/package.json b/packages/console/app/package.json index cf24853ae..46b387dbb 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-app", - "version": "1.18.20", + "version": "1.18.21", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/console/core/package.json b/packages/console/core/package.json index 0ebfaf992..61ae28be5 100644 --- a/packages/console/core/package.json +++ b/packages/console/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/console-core", - "version": "1.18.20", + "version": "1.18.21", "private": true, "type": "module", "license": "MIT", diff --git a/packages/console/function/package.json b/packages/console/function/package.json index c2f75862d..b489cf818 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-function", - "version": "1.18.20", + "version": "1.18.21", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json index b2dcc533a..ff52e141f 100644 --- a/packages/console/mail/package.json +++ b/packages/console/mail/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-mail", - "version": "1.18.20", + "version": "1.18.21", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", diff --git a/packages/console/support/package.json b/packages/console/support/package.json index 9d9165fbf..94340b03c 100644 --- a/packages/console/support/package.json +++ b/packages/console/support/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-support", - "version": "1.18.20", + "version": "1.18.21", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/core/package.json b/packages/core/package.json index f5a948e3c..941da7574 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.20", + "version": "1.18.21", "name": "@opencode-ai/core", "type": "module", "license": "MIT", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index c59d049b0..2f8f492e4 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop", "private": true, - "version": "1.18.20", + "version": "1.18.21", "type": "module", "license": "MIT", "homepage": "https://opencode.ai", diff --git a/packages/effect-drizzle-sqlite/package.json b/packages/effect-drizzle-sqlite/package.json index 33e98cbdc..cbcc8c17a 100644 --- a/packages/effect-drizzle-sqlite/package.json +++ b/packages/effect-drizzle-sqlite/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.20", + "version": "1.18.21", "name": "@opencode-ai/effect-drizzle-sqlite", "type": "module", "license": "MIT", diff --git a/packages/effect-sqlite-node/package.json b/packages/effect-sqlite-node/package.json index fb3b0a9ad..95244c7a9 100644 --- a/packages/effect-sqlite-node/package.json +++ b/packages/effect-sqlite-node/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.20", + "version": "1.18.21", "name": "@opencode-ai/effect-sqlite-node", "type": "module", "license": "MIT", diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json index ceb94faed..42ca50d83 100644 --- a/packages/enterprise/package.json +++ b/packages/enterprise/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/enterprise", - "version": "1.18.20", + "version": "1.18.21", "private": true, "type": "module", "license": "MIT", diff --git a/packages/function/package.json b/packages/function/package.json index ce00eb768..f6a6915f4 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/function", - "version": "1.18.20", + "version": "1.18.21", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json index feceae616..fa314ce8c 100644 --- a/packages/http-recorder/package.json +++ b/packages/http-recorder/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.20", + "version": "1.18.21", "name": "@opencode-ai/http-recorder", "description": "Record and replay Effect HTTP client traffic with deterministic cassettes", "type": "module", diff --git a/packages/llm/package.json b/packages/llm/package.json index 78344936d..82e32ae42 100644 --- a/packages/llm/package.json +++ b/packages/llm/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.20", + "version": "1.18.21", "name": "@opencode-ai/llm", "type": "module", "license": "MIT", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index dfa84a7ec..cd7f2a591 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.20", + "version": "1.18.21", "name": "opencode", "type": "module", "license": "MIT", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index bbf256415..77ff21ccb 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "1.18.20", + "version": "1.18.21", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 827d41ade..55e63e2ee 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "1.18.20", + "version": "1.18.21", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index deecb2954..767cd16e1 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/server", - "version": "1.18.20", + "version": "1.18.21", "private": true, "type": "module", "license": "MIT", diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json index 4680caef2..080d3db9c 100644 --- a/packages/session-ui/package.json +++ b/packages/session-ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/session-ui", - "version": "1.18.20", + "version": "1.18.21", "private": true, "type": "module", "license": "MIT", diff --git a/packages/slack/package.json b/packages/slack/package.json index c6512a805..f476ecc6b 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/slack", - "version": "1.18.20", + "version": "1.18.21", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index 8116beb2a..f3f554bff 100644 --- a/packages/stats/app/package.json +++ b/packages/stats/app/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-app", - "version": "1.18.20", + "version": "1.18.21", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json index 84220afd3..c88fccdca 100644 --- a/packages/stats/core/package.json +++ b/packages/stats/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-core", - "version": "1.18.20", + "version": "1.18.21", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json index d03302f6a..8497fb04b 100644 --- a/packages/stats/server/package.json +++ b/packages/stats/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-server", - "version": "1.18.20", + "version": "1.18.21", "private": true, "type": "module", "license": "MIT", diff --git a/packages/tui/package.json b/packages/tui/package.json index 1de282ad8..9eb84261c 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/tui", - "version": "1.18.20", + "version": "1.18.21", "private": true, "type": "module", "license": "MIT", diff --git a/packages/ui/package.json b/packages/ui/package.json index 4a770b5b9..8810528c8 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/ui", - "version": "1.18.20", + "version": "1.18.21", "type": "module", "license": "MIT", "repository": { diff --git a/packages/web/package.json b/packages/web/package.json index f56362e96..400171ffd 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,7 +2,7 @@ "name": "@opencode-ai/web", "type": "module", "license": "MIT", - "version": "1.18.20", + "version": "1.18.21", "scripts": { "dev": "astro dev", "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index f8b8fa10d..1a78b436f 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "1.18.20", + "version": "1.18.21", "publisher": "sst-dev", "repository": { "type": "git", From 1b937c860b6fd8a83e69f916b1236515aa17ea0d Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 10:56:50 -0400 Subject: [PATCH 100/271] test(opencode): align unknown finish coverage (#43895) Co-authored-by: thdxr <826656+thdxr@users.noreply.github.com> --- .../opencode/test/cli/run/run-process.test.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/opencode/test/cli/run/run-process.test.ts b/packages/opencode/test/cli/run/run-process.test.ts index bd5847e27..d2d4bae87 100644 --- a/packages/opencode/test/cli/run/run-process.test.ts +++ b/packages/opencode/test/cli/run/run-process.test.ts @@ -82,10 +82,10 @@ describe("opencode run (non-interactive subprocess)", () => { ) // The test provider's SSE error item is interpreted by the SDK as an unknown - // finish, not a fatal provider/session error. Lock that distinction in so it - // is not accidentally used as the failure compatibility oracle. + // finish, not a fatal provider/session error. Unknown finishes should continue + // the prompt loop so a subsequent response can complete the run. cliIt.concurrent( - "unknown stream finish preserves partial output and exits 0", + "unknown stream finish preserves partial output and continues", ({ llm, opencode }) => Effect.gen(function* () { yield* llm.push( @@ -95,9 +95,10 @@ describe("opencode run (non-interactive subprocess)", () => { }), ) yield* llm.fail("upstream provider exploded mid-stream") + yield* llm.text("recovered") const result = yield* opencode.run("trigger midstream error", { timeoutMs: 30_000 }) expect(result.exitCode).toBe(0) - expect(result.stdout).toBe("partial response\n") + expect(result.stdout).toBe("partial response\nrecovered\n") expect(result.stderr).not.toContain("upstream provider exploded mid-stream") }), 60_000, @@ -213,7 +214,7 @@ describe("opencode run (non-interactive subprocess)", () => { ) cliIt.concurrent( - "--format json records partial output for an unknown stream finish", + "--format json records an unknown stream finish and continuation", ({ llm, opencode }) => Effect.gen(function* () { yield* llm.push( @@ -223,6 +224,7 @@ describe("opencode run (non-interactive subprocess)", () => { }), ) yield* llm.fail("provider failed") + yield* llm.text("recovered") const result = yield* opencode.run("fail after output", { format: "json" }) const events = opencode.parseJsonEvents(result.stdout) @@ -234,9 +236,14 @@ describe("opencode run (non-interactive subprocess)", () => { "step_finish", "step_start", "step_finish", + "step_start", + "text", + "step_finish", ]) expect(events[1]?.part).toEqual(expect.objectContaining({ type: "text", text: "partial json" })) - expect(events.at(-1)?.part).toEqual(expect.objectContaining({ type: "step-finish", reason: "unknown" })) + expect(events[5]?.part).toEqual(expect.objectContaining({ type: "step-finish", reason: "unknown" })) + expect(events[7]?.part).toEqual(expect.objectContaining({ type: "text", text: "recovered" })) + expect(events.at(-1)?.part).toEqual(expect.objectContaining({ type: "step-finish", reason: "stop" })) }), 60_000, ) From 9cb6fb65290764677ee0c2eb68cb84c55fd08abc Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 21 Aug 2026 16:58:24 -0400 Subject: [PATCH 101/271] fix(console): cache desktop downloads --- .../routes/download/[channel]/[platform].ts | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/console/app/src/routes/download/[channel]/[platform].ts b/packages/console/app/src/routes/download/[channel]/[platform].ts index 7a4b5ef65..4a4be13f4 100644 --- a/packages/console/app/src/routes/download/[channel]/[platform].ts +++ b/packages/console/app/src/routes/download/[channel]/[platform].ts @@ -1,4 +1,5 @@ import type { APIEvent } from "@solidjs/start" +import { waitUntil } from "@opencode-ai/console-resource" import type { DownloadPlatform } from "../types" const prodAssetNames: Record = { @@ -30,14 +31,34 @@ export async function GET({ params: { platform, channel } }: APIEvent) { const assetName = channel === "stable" ? prodAssetNames[platform] : betaAssetNames[platform] if (!assetName) return new Response(null, { status: 404 }) - const resp = await fetch( + const latest = await fetch( `https://github.com/anomalyco/${channel === "stable" ? "opencode" : "opencode-beta"}/releases/latest/download/${assetName}`, + { redirect: "manual" }, ) + const location = latest.headers.get("location") + if (!location) return new Response(null, { status: 502 }) - const downloadName = downloadNames[platform] + const key = new Request(location) + const cache = (caches as CacheStorage & { default: Cache }).default + const cached = await cache.match(key) + if (cached) return download(cached, platform, "HIT") + + const resp = await fetch(location) + if (!resp.ok) return resp + + const headers = new Headers(resp.headers) + headers.set("cache-control", "public, max-age=31536000, immutable") + headers.delete("set-cookie") + const result = new Response(resp.body, { status: resp.status, statusText: resp.statusText, headers }) + waitUntil(cache.put(key, result.clone())) + return download(result, platform, "MISS") +} +function download(resp: Response, platform: string, cache: "HIT" | "MISS") { + const downloadName = downloadNames[platform] const headers = new Headers(resp.headers) if (downloadName) headers.set("content-disposition", `attachment; filename="${downloadName}"`) + headers.set("x-opencode-cache", cache) return new Response(resp.body, { status: resp.status, statusText: resp.statusText, headers }) } From bcf1103a8c8653acd7afdd5fc2ebd9f6e5486b3c Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 17:00:03 -0400 Subject: [PATCH 102/271] docs(zen): update GPT 5.6 Sol pricing (#43986) Co-authored-by: Slickstef11 <98915060+Slickstef11@users.noreply.github.com> --- packages/web/src/content/docs/ar/zen.mdx | 4 ++-- packages/web/src/content/docs/bs/zen.mdx | 4 ++-- packages/web/src/content/docs/da/zen.mdx | 4 ++-- packages/web/src/content/docs/de/zen.mdx | 4 ++-- packages/web/src/content/docs/es/zen.mdx | 4 ++-- packages/web/src/content/docs/fr/zen.mdx | 4 ++-- packages/web/src/content/docs/it/zen.mdx | 6 +++--- packages/web/src/content/docs/ja/zen.mdx | 4 ++-- packages/web/src/content/docs/ko/zen.mdx | 4 ++-- packages/web/src/content/docs/nb/zen.mdx | 4 ++-- packages/web/src/content/docs/pl/zen.mdx | 4 ++-- packages/web/src/content/docs/pt-br/zen.mdx | 4 ++-- packages/web/src/content/docs/ru/zen.mdx | 4 ++-- packages/web/src/content/docs/th/zen.mdx | 4 ++-- packages/web/src/content/docs/tr/zen.mdx | 4 ++-- packages/web/src/content/docs/zen.mdx | 4 ++-- packages/web/src/content/docs/zh-cn/zen.mdx | 4 ++-- packages/web/src/content/docs/zh-tw/zen.mdx | 4 ++-- 18 files changed, 37 insertions(+), 37 deletions(-) diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index 45b59015d..c4e7e8dd9 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -188,8 +188,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index 0ad34d116..0b99b4a1c 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -195,8 +195,8 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index a5403b9cf..7ff136aaa 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -195,8 +195,8 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index 59e6d4e77..4084fa9ce 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -184,8 +184,8 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index bcc62c0f4..4fbd7048a 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -195,8 +195,8 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index 77458714d..f16a748c1 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -184,8 +184,8 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index 12d9d83cc..917bf3a30 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -195,8 +195,8 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | @@ -221,7 +221,7 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | | GPT 5 Nano | $0.05 | $0.40 | $0.005 | - | -**GPT 5.6 Sol:** I prezzi mostrati includono uno sconto del 50% fino al 18 settembre 2026. +**GPT 5.6 Sol:** I prezzi mostrati includono uno sconto del 50% fino al 18 septembre 2026. **DeepSeek V4 Flash / Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC; tutti gli altri orari sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index 4dac2ad5c..601509dcd 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -184,8 +184,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index c6bdf77fb..58a646f01 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -184,8 +184,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index 0af4b1f65..0c98f3dc5 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -195,8 +195,8 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index 6df0a8582..b73fe5bd5 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -195,8 +195,8 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index 855d07725..6fb7331b5 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -184,8 +184,8 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index 07c06be9c..cd3c646d1 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -195,8 +195,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index 88e940582..33d19cdd7 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -186,8 +186,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index 2bdd7809a..15d592d5c 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -184,8 +184,8 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index 1b202bfe3..83ae91603 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -195,8 +195,8 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index f811b7f0e..7aa69ff3e 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -184,8 +184,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 174260632..7e50d05cf 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -189,8 +189,8 @@ https://opencode.ai/zen/v1/models | Grok 4.5 (> 200K tokens) | $4.00 | $12.00 | $0.60 | - | | Grok Build 0.1 | $1.00 | $2.00 | $0.20 | - | | Muse Spark 1.2 | $1.25 | $4.25 | $0.15 | - | -| GPT 5.6 Sol (≤ 272K tokens) | $2.50 | $15.00 | $0.25 | $3.125 | -| GPT 5.6 Sol (> 272K tokens) | $5.00 | $22.50 | $0.50 | $6.25 | +| GPT 5.6 Sol (≤ 272K tokens) | $2.00 | $10.00 | $0.20 | $2.50 | +| GPT 5.6 Sol (> 272K tokens) | $4.00 | $15.00 | $0.40 | $5.00 | | GPT 5.6 Terra (≤ 272K tokens) | $2.00 | $12.00 | $0.20 | $2.50 | | GPT 5.6 Terra (> 272K tokens) | $4.00 | $18.00 | $0.40 | $5.00 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | From e2ec62d07327ba0632ece00f6dde705f6f77dead Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 23:39:17 +0200 Subject: [PATCH 103/271] fix: bump Amazon Bedrock provider (#43909) Co-authored-by: neriousy <34747899+neriousy@users.noreply.github.com> --- bun.lock | 16 +++++++++------- packages/core/package.json | 2 +- packages/opencode/package.json | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/bun.lock b/bun.lock index d73961bfd..edc7eb6d7 100644 --- a/bun.lock +++ b/bun.lock @@ -293,7 +293,7 @@ }, "dependencies": { "@ai-sdk/alibaba": "1.0.17", - "@ai-sdk/amazon-bedrock": "4.0.112", + "@ai-sdk/amazon-bedrock": "4.0.158", "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.41", @@ -568,7 +568,7 @@ "@actions/github": "6.0.1", "@agentclientprotocol/sdk": "0.21.0", "@ai-sdk/alibaba": "1.0.17", - "@ai-sdk/amazon-bedrock": "4.0.112", + "@ai-sdk/amazon-bedrock": "4.0.158", "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.60", @@ -1173,7 +1173,7 @@ "@ai-sdk/alibaba": ["@ai-sdk/alibaba@1.0.17", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.41", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ZbE+U5bWz2JBc5DERLowx5+TKbjGBE93LqKZAWvuEn7HOSQMraxFMZuc0ST335QZJAyfBOzh7m1mPQ+y7EaaoA=="], - "@ai-sdk/amazon-bedrock": ["@ai-sdk/amazon-bedrock@4.0.112", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.81", "@ai-sdk/openai": "3.0.67", "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27", "@smithy/eventstream-codec": "^4.0.1", "@smithy/util-utf8": "^4.0.0", "aws4fetch": "^1.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-PsSh7a6qW+3kQXPs1kD4wDwuZby0t1PIaB6j/1aMKmPFJ5LxcIcULLMF/bjITLt5o/8lc0t6TXIwG0zlhH7uZw=="], + "@ai-sdk/amazon-bedrock": ["@ai-sdk/amazon-bedrock@4.0.158", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.111", "@ai-sdk/openai": "3.0.98", "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.46", "@smithy/eventstream-codec": "^4.0.1", "@smithy/util-utf8": "^4.0.0", "aws4fetch": "^1.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-yZebHEszUzPLsK+Rq5sVZJkJj7EYDgY+Lz36IGf/RSkSC5LOMDbVKoQ55S8xNzJqVjUDqlWuZiQzg40HQslmCw=="], "@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.82", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-WKKou2wbhGGYV8PSALAPyV2YY4nfCqCPkyBzYtJtDA9yCcIFwsbtkTNgg7bqtLCVzeEsY7wwxRoCWy+EMfrw/A=="], @@ -5641,13 +5641,13 @@ "@ai-sdk/alibaba/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.41", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g=="], - "@ai-sdk/amazon-bedrock/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.81", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-B1JDd9Ugq9R5AgIaW3674lhGCMMYJcPUxnrZh8fzbGojgg4QvHFRv6eZahGQAUsmGHbcf74G9bdSBDLWQGY2GA=="], + "@ai-sdk/amazon-bedrock/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.111", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.46" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-atgBW8jZPr/KuaKX5FvDIHuXBI8VCol6kVeoD4P0657+VXR73QsLogXQVN/Zt5FHtq9WzpdIZseCJiXPqkgwwA=="], - "@ai-sdk/amazon-bedrock/@ai-sdk/openai": ["@ai-sdk/openai@3.0.67", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-oAiGC9eWG7IgtdsdS74bOCnAAHarAfTJhWN9x5INwnWPekL802AvF+0I5DvLzIF1MIRmNw4N8mPSL/GUVbX9Mw=="], + "@ai-sdk/amazon-bedrock/@ai-sdk/openai": ["@ai-sdk/openai@3.0.98", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.46" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-nAvp8pVOUJ3znJHRzZs54Y7CJQSikOW1Ty7LTdtQT+/pgtAwqhuKd8oaXbiW2xQaYBdH2i8o9AcEpcUdXIyF+g=="], - "@ai-sdk/amazon-bedrock/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@ai-sdk/amazon-bedrock/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], - "@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.46", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^6.28.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-tEtld97plCFiYevsJuOkGkeuhQndeMWFBVrJS4AjnbD5AqrNSXRCe0p+BZ3Cju/sxDeeZ9ym3q9YUV8fASA7aQ=="], "@ai-sdk/amazon-bedrock/@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.14", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.14.1", "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw=="], @@ -6589,6 +6589,8 @@ "@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils/undici": ["undici@6.28.0", "", {}, "sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA=="], + "@ai-sdk/anthropic/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], "@ai-sdk/azure/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], diff --git a/packages/core/package.json b/packages/core/package.json index 941da7574..019f4b52a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -62,7 +62,7 @@ }, "dependencies": { "@ai-sdk/alibaba": "1.0.17", - "@ai-sdk/amazon-bedrock": "4.0.112", + "@ai-sdk/amazon-bedrock": "4.0.158", "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.41", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index cd7f2a591..be6f25f89 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -56,7 +56,7 @@ "@actions/github": "6.0.1", "@agentclientprotocol/sdk": "0.21.0", "@ai-sdk/alibaba": "1.0.17", - "@ai-sdk/amazon-bedrock": "4.0.112", + "@ai-sdk/amazon-bedrock": "4.0.158", "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.60", From ff3ef6e3e60da475ba2d6605baa3956d40a390ca Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Fri, 21 Aug 2026 21:54:44 +0000 Subject: [PATCH 104/271] chore: update nix node_modules hashes --- nix/hashes.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/hashes.json b/nix/hashes.json index 60a76de0a..acc1a09e0 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-yQ8EIxxYkzlEWIMY/UiIR+7lbGBuizsoehMPZzFA65Y=", - "aarch64-linux": "sha256-JF9VVgnl5QUZ430fqb5Qu8y0kchYJ00LO3FbYcd0lBM=", - "aarch64-darwin": "sha256-f3Tu6eu463NWcHgr7dupfD/zUTh26bJ6N2vVXuEyi6c=", - "x86_64-darwin": "sha256-miv9Sv4KdhD0UIi2O5LVS1wQOfq29IV+9S+BvIzAvgo=" + "x86_64-linux": "sha256-Be1I6OG6UitofhcGu2BeNzevmoQXc4Or5r/NPzwtft4=", + "aarch64-linux": "sha256-O+d+26CQIjZ08Rn8Qm3IytdDqIMbPdhzaGOZeUKAvIU=", + "aarch64-darwin": "sha256-ObS50y/oy6fM9wSGUL/wx6O0+fTWHC04mXJNd7w/2Z0=", + "x86_64-darwin": "sha256-eoR7ZSyH62Fq2ZaW2b2QqU2FC97rYxTMeEe+djT0nto=" } } From 34a83b27c3f858412ca75ffd5c42f3c3dd22cb40 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Fri, 21 Aug 2026 17:13:13 -0500 Subject: [PATCH 105/271] fix(stats): improve chart tooltip truncation --- packages/stats/app/src/routes/[lab]/[model].tsx | 3 ++- packages/stats/app/src/routes/[lab]/index.tsx | 6 ++++-- packages/stats/app/src/routes/index.css | 11 +++++++++-- packages/stats/app/src/routes/index.tsx | 4 ++-- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx index d7c0e3042..ad931aab1 100644 --- a/packages/stats/app/src/routes/[lab]/[model].tsx +++ b/packages/stats/app/src/routes/[lab]/[model].tsx @@ -812,7 +812,8 @@ function ModelTrendSection(props: {

      - {props.rowLabel} + + {props.rowLabel} {props.formatValue(props.value(active.point))}

      diff --git a/packages/stats/app/src/routes/[lab]/index.tsx b/packages/stats/app/src/routes/[lab]/index.tsx index 4eddf75ef..f79f5c21f 100644 --- a/packages/stats/app/src/routes/[lab]/index.tsx +++ b/packages/stats/app/src/routes/[lab]/index.tsx @@ -473,13 +473,15 @@ function LabUsageSection(props: { lab: ModelCatalogLab; data: StatsLabData | nul

      - {i18n.t("lab.dailyTokens")} + + {i18n.t("lab.dailyTokens")} {formatTokens(active.point.tokens)}

      - {i18n.t("model.uniqueUsers")} + + {i18n.t("model.uniqueUsers")} {formatUsers(active.point.users)}

      diff --git a/packages/stats/app/src/routes/index.css b/packages/stats/app/src/routes/index.css index b3f25eff0..edbdd0483 100644 --- a/packages/stats/app/src/routes/index.css +++ b/packages/stats/app/src/routes/index.css @@ -1590,6 +1590,13 @@ body { white-space: nowrap; } +[data-page="stats"] [data-component="chart-tooltip"] [data-slot="tooltip-name"] { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + [data-page="stats"] [data-component="chart-tooltip"] [data-slot="tooltip-divider"] { height: 1px; margin: 4px -16px 2px; @@ -1677,7 +1684,7 @@ body { [data-page="stats"] :is([data-section="top-models"], [data-section="unique-users"]) [data-component="chart-tooltip"] p { grid-template-columns: minmax(0, 1fr) auto; - gap: 4px; + gap: 1ch; height: 16px; margin: 4px 0 0; padding: 0 8px; @@ -4723,7 +4730,7 @@ body { [data-page="stats"] [data-component="model-usage-chart"] [data-component="chart-tooltip"] p { grid-template-columns: minmax(0, 1fr) auto; - gap: 4px; + gap: 1ch; height: 20px; margin: 8px 0; padding: 0 8px; diff --git a/packages/stats/app/src/routes/index.tsx b/packages/stats/app/src/routes/index.tsx index 398f53f71..f984cb739 100644 --- a/packages/stats/app/src/routes/index.tsx +++ b/packages/stats/app/src/routes/index.tsx @@ -568,8 +568,8 @@ function TopModelsChart(props: { style={{ background: getRankColor(item.segment.model, item.index, segmentOrder(), usageColors), }} - />{" "} - {item.segment.model} + /> + {item.segment.model} {formatUsageChartValue(item.segment.value, metric())}

      From 3a4c253969870e42d166fe6754133e848acbd81b Mon Sep 17 00:00:00 2001 From: joelstucki-taulia Date: Fri, 21 Aug 2026 16:19:33 -0600 Subject: [PATCH 106/271] fix(provider): guard textVerbosity injection for @ai-sdk/openai-compatible providers (#43915) Co-authored-by: Joel Stucki --- packages/opencode/src/provider/transform.ts | 6 +++--- packages/opencode/test/provider/transform.test.ts | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index b388297ae..0667fc2eb 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -1303,13 +1303,13 @@ export function options(input: { } } - // Only set textVerbosity for non-chat gpt-5.x models - // Chat models (e.g. gpt-5.2-chat-latest) only support "medium" verbosity + // Generic OpenAI-compatible APIs do not necessarily support OpenAI's verbosity parameter. + // Only enable the default for integrations known to implement it. if ( input.model.api.id.includes("gpt-5.") && !input.model.api.id.includes("codex") && !input.model.api.id.includes("-chat") && - input.model.providerID !== "azure" + (input.model.api.npm === "@ai-sdk/openai" || input.model.api.npm === "@ai-sdk/amazon-bedrock/mantle") ) { result["textVerbosity"] = "low" } diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index 77aa38ad7..97f0de281 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -523,6 +523,7 @@ describe("ProviderTransform.options - gpt-5 textVerbosity", () => { expect(result.reasoningEffort).toBe("medium") expect(result.reasoningSummary).toBeUndefined() expect(result.include).toBeUndefined() + expect(result.textVerbosity).toBeUndefined() }) test("azure chat completions omit Responses-only reasoning options after variants merge", async () => { From e00890c67261a435cee6409366a68999a93393fd Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Fri, 21 Aug 2026 20:25:56 -0400 Subject: [PATCH 107/271] fix: resolve console device URLs (#44029) --- packages/core/src/plugin/provider/opencode.ts | 11 +++- .../test/plugin/provider-opencode.test.ts | 62 ++++++++++++++++++- packages/opencode/src/account/account.ts | 10 ++- .../opencode/test/account/service.test.ts | 35 ++++++++--- 4 files changed, 108 insertions(+), 10 deletions(-) diff --git a/packages/core/src/plugin/provider/opencode.ts b/packages/core/src/plugin/provider/opencode.ts index 8e1cc1a0a..7bd78cae4 100644 --- a/packages/core/src/plugin/provider/opencode.ts +++ b/packages/core/src/plugin/provider/opencode.ts @@ -45,9 +45,18 @@ function oauth(http: HttpClient.HttpClient) { authorize: () => Effect.gen(function* () { const device = yield* post(http, `${defaultServer}/auth/device/code`, { client_id: clientID }, Device) + const verification = yield* Effect.try({ + try: () => { + const url = new URL(device.verification_uri_complete, `${defaultServer}/`) + if (url.protocol !== "http:" && url.protocol !== "https:") throw new Error("expected HTTP(S)") + return url + }, + catch: (cause) => + new Error(`Invalid device verification URL: ${cause instanceof Error ? cause.message : String(cause)}`), + }) return { mode: "auto" as const, - url: `${defaultServer}${device.verification_uri_complete}`, + url: verification.href, instructions: `Enter code: ${device.user_code}`, callback: poll(http, defaultServer, device.device_code, Duration.seconds(device.interval)), } diff --git a/packages/core/test/plugin/provider-opencode.test.ts b/packages/core/test/plugin/provider-opencode.test.ts index 20af84d02..e1f8bdd6e 100644 --- a/packages/core/test/plugin/provider-opencode.test.ts +++ b/packages/core/test/plugin/provider-opencode.test.ts @@ -1,5 +1,6 @@ import { describe, expect } from "bun:test" import { Effect } from "effect" +import { HttpClient, HttpClientResponse } from "effect/unstable/http" import { Catalog } from "@opencode-ai/core/catalog" import { Credential } from "@opencode-ai/core/credential" import { EventV2 } from "@opencode-ai/core/event" @@ -14,14 +15,16 @@ import { PluginTestLayer } from "./fixture" const it = testEffect(PluginTestLayer) -const addPlugin = Effect.fn(function* () { +const addPlugin = Effect.fn(function* (http?: HttpClient.HttpClient) { const plugin = yield* PluginV2.Service const host = yield* PluginHost.make(plugin) const events = yield* EventV2.Service const integration = yield* Integration.Service + const client = yield* HttpClient.HttpClient yield* OpencodePlugin.effect(host).pipe( Effect.provideService(EventV2.Service, events), Effect.provideService(Integration.Service, integration), + Effect.provideService(HttpClient.HttpClient, http ?? client), ) }) @@ -82,6 +85,63 @@ describe("OpencodePlugin", () => { }), ) + it.effect("resolves origin-rooted device verification URLs", () => + Effect.gen(function* () { + const http = HttpClient.make((request) => + Effect.succeed( + HttpClientResponse.fromWeb( + request, + Response.json({ + device_code: "device", + user_code: "user", + verification_uri_complete: "/console/device?user_code=user&client_id=opencode-cli", + expires_in: 60, + interval: 60, + }), + ), + ), + ) + yield* addPlugin(http) + const integration = yield* Integration.Service + const attempt = yield* integration.connection.oauth({ + integrationID: Integration.ID.make("opencode"), + methodID: Integration.MethodID.make("device"), + inputs: {}, + }) + expect(attempt.url).toBe("https://opencode.ai/console/device?user_code=user&client_id=opencode-cli") + }), + ) + + it.effect("rejects malformed device verification URLs", () => + Effect.gen(function* () { + const http = HttpClient.make((request) => + Effect.succeed( + HttpClientResponse.fromWeb( + request, + Response.json({ + device_code: "device", + user_code: "user", + verification_uri_complete: "http://[::1", + expires_in: 60, + interval: 60, + }), + ), + ), + ) + yield* addPlugin(http) + const integration = yield* Integration.Service + const error = yield* integration.connection + .oauth({ + integrationID: Integration.ID.make("opencode"), + methodID: Integration.MethodID.make("device"), + inputs: {}, + }) + .pipe(Effect.flip) + expect(error).toBeInstanceOf(Integration.AuthorizationError) + expect(String(error.cause)).toContain("Invalid device verification URL") + }), + ) + it.live("loads providers and models from the connected OpenCode server", () => Effect.acquireUseRelease( Effect.sync(() => { diff --git a/packages/opencode/src/account/account.ts b/packages/opencode/src/account/account.ts index 4b49d2a74..fb21f878f 100644 --- a/packages/opencode/src/account/account.ts +++ b/packages/opencode/src/account/account.ts @@ -396,10 +396,18 @@ const layer: Layer.Layer { + const url = new URL(parsed.verification_uri_complete, `${normalizedServer}/`) + if (url.protocol !== "http:" && url.protocol !== "https:") throw new Error("expected HTTP(S)") + return url.href + }, + catch: (cause) => new AccountServiceError({ message: "Invalid device verification URL", cause }), + }) return new Login({ code: parsed.device_code, user: parsed.user_code, - url: `${normalizedServer}${parsed.verification_uri_complete}`, + url: verification, server: normalizedServer, expiry: parsed.expires_in, interval: parsed.interval, diff --git a/packages/opencode/test/account/service.test.ts b/packages/opencode/test/account/service.test.ts index 672d54971..802e91233 100644 --- a/packages/opencode/test/account/service.test.ts +++ b/packages/opencode/test/account/service.test.ts @@ -10,6 +10,7 @@ import { Account } from "../../src/account/account" import { AccessToken, AccountID, + AccountServiceError, AccountTransportError, DeviceCode, Login, @@ -71,18 +72,18 @@ const deviceTokenClient = (body: unknown, status = 400) => const poll = (body: unknown, status = 400) => Account.Service.use((s) => s.poll(login())).pipe(Effect.provide(live(deviceTokenClient(body, status)))) -it.live("login normalizes trailing slashes in the provided server URL", () => +it.live("login resolves origin-rooted verification URLs from servers with base paths", () => Effect.gen(function* () { const seen: Array = [] const client = HttpClient.make((req) => Effect.gen(function* () { seen.push(`${req.method} ${req.url}`) - if (req.url === "https://one.example.com/auth/device/code") { + if (req.url === "https://one.example.com/console/auth/device/code") { return json(req, { device_code: "device-code", user_code: "user-code", - verification_uri_complete: "/device?user_code=user-code", + verification_uri_complete: "/console/device?user_code=user-code", expires_in: 600, interval: 5, }) @@ -92,11 +93,31 @@ it.live("login normalizes trailing slashes in the provided server URL", () => }), ) - const result = yield* Account.use.login("https://one.example.com/").pipe(Effect.provide(live(client))) + const result = yield* Account.use.login("https://one.example.com/console/").pipe(Effect.provide(live(client))) - expect(seen).toEqual(["POST https://one.example.com/auth/device/code"]) - expect(result.server).toBe("https://one.example.com") - expect(result.url).toBe("https://one.example.com/device?user_code=user-code") + expect(seen).toEqual(["POST https://one.example.com/console/auth/device/code"]) + expect(result.server).toBe("https://one.example.com/console") + expect(result.url).toBe("https://one.example.com/console/device?user_code=user-code") + }), +) + +it.live("login rejects malformed device verification URLs", () => + Effect.gen(function* () { + const client = HttpClient.make((req) => + Effect.succeed( + json(req, { + device_code: "device-code", + user_code: "user-code", + verification_uri_complete: "http://[::1", + expires_in: 600, + interval: 5, + }), + ), + ) + + const error = yield* Effect.flip(Account.use.login("https://one.example.com").pipe(Effect.provide(live(client)))) + expect(error).toBeInstanceOf(AccountServiceError) + if (error instanceof AccountServiceError) expect(error.message).toBe("Invalid device verification URL") }), ) From 3a31c4ea801915c0b050df4b3842997ea62b6e93 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Sat, 22 Aug 2026 20:50:02 +0800 Subject: [PATCH 108/271] fix(app): keep model provider headers visible (#44115) --- packages/app/src/components/dialog-select-model.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/src/components/dialog-select-model.tsx b/packages/app/src/components/dialog-select-model.tsx index 9066f7243..587a36a66 100644 --- a/packages/app/src/components/dialog-select-model.tsx +++ b/packages/app/src/components/dialog-select-model.tsx @@ -450,7 +450,7 @@ function ModelSelectorPopoverV2View(props: { {(group) => ( - + {group.items[0].provider.name} From dc13c6bb3d08762ab186b7922208e0155b8d8928 Mon Sep 17 00:00:00 2001 From: Dax Date: Sun, 23 Aug 2026 09:59:29 -0400 Subject: [PATCH 109/271] fix(console): reduce zen request memory (#44403) --- .../app/src/routes/zen/util/handler.ts | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index c6296c25a..8a46ed897 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -98,10 +98,13 @@ export async function handler( try { const url = input.request.url - const body = await input.request.json() - const model = opts.parseModel(url, body) - const variant = opts.parseVariant(url, body) - const isStream = opts.parseIsStream(url, body) + const body = await input.request.text() + const model = + opts.format === "google" + ? opts.parseModel(url, undefined) + : body.match(/"model"\s*:\s*"([^"]+)"/)?.[1] ?? "" + const isStream = + opts.format === "google" ? opts.parseIsStream(url, undefined) : /"stream"\s*:\s*true/.test(body) const rawIp = input.request.headers.get("x-real-ip") ?? "" const ip = rawIp.includes(":") ? rawIp.split(":").slice(0, 4).join(":") : rawIp const rawZenApiKey = opts.parseApiKey(input.request.headers) @@ -117,7 +120,6 @@ export async function handler( request: requestId, client: ocClient, user_agent: userAgent, - "model.variant": variant, "model.tier": opts.modelList === "full" ? "zen" : "go", }) const zenData = ZenData.list(opts.modelList) @@ -200,9 +202,25 @@ export async function handler( const startTimestamp = Date.now() const reqUrl = providerInfo.modifyUrl(providerInfo.api, isStream) - const reqBody = JSON.stringify( + const directBody = (() => { + const specialAnthropic = + providerInfo.format === "anthropic" && + (providerInfo.model.startsWith("arn:aws:bedrock:") || + providerInfo.model.startsWith("global.anthropic.") || + providerInfo.model.startsWith("databricks-claude-")) + if (providerInfo.format === opts.format && !providerInfo.payloadModifier && !specialAnthropic) { + const patched = body.replace( + /"model"\s*:\s*"[^"]+"/, + `"model":${JSON.stringify(providerInfo.model)}`, + ) + if (providerInfo.format !== "oa-compat" || !isStream) return patched + return patched.replace(/}\s*$/, ',"stream_options":{"include_usage":true}}') + } + return undefined + })() + const reqBody = directBody ?? JSON.stringify( providerInfo.modifyBody({ - ...createBodyConverter(opts.format, providerInfo.format)(body), + ...createBodyConverter(opts.format, providerInfo.format)(JSON.parse(body)), model: providerInfo.model, ...(() => { const replacer = (obj: Record): Record => From e3bd6e09475a18175298b96a14d87a2ba3f45a3d Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Sun, 23 Aug 2026 14:00:45 +0000 Subject: [PATCH 110/271] chore: generate --- .../app/src/routes/zen/util/handler.ts | 66 +++++++++---------- 1 file changed, 31 insertions(+), 35 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 8a46ed897..92c5515a6 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -100,11 +100,8 @@ export async function handler( const url = input.request.url const body = await input.request.text() const model = - opts.format === "google" - ? opts.parseModel(url, undefined) - : body.match(/"model"\s*:\s*"([^"]+)"/)?.[1] ?? "" - const isStream = - opts.format === "google" ? opts.parseIsStream(url, undefined) : /"stream"\s*:\s*true/.test(body) + opts.format === "google" ? opts.parseModel(url, undefined) : (body.match(/"model"\s*:\s*"([^"]+)"/)?.[1] ?? "") + const isStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : /"stream"\s*:\s*true/.test(body) const rawIp = input.request.headers.get("x-real-ip") ?? "" const ip = rawIp.includes(":") ? rawIp.split(":").slice(0, 4).join(":") : rawIp const rawZenApiKey = opts.parseApiKey(input.request.headers) @@ -209,42 +206,41 @@ export async function handler( providerInfo.model.startsWith("global.anthropic.") || providerInfo.model.startsWith("databricks-claude-")) if (providerInfo.format === opts.format && !providerInfo.payloadModifier && !specialAnthropic) { - const patched = body.replace( - /"model"\s*:\s*"[^"]+"/, - `"model":${JSON.stringify(providerInfo.model)}`, - ) + const patched = body.replace(/"model"\s*:\s*"[^"]+"/, `"model":${JSON.stringify(providerInfo.model)}`) if (providerInfo.format !== "oa-compat" || !isStream) return patched return patched.replace(/}\s*$/, ',"stream_options":{"include_usage":true}}') } return undefined })() - const reqBody = directBody ?? JSON.stringify( - providerInfo.modifyBody({ - ...createBodyConverter(opts.format, providerInfo.format)(JSON.parse(body)), - model: providerInfo.model, - ...(() => { - const replacer = (obj: Record): Record => - Object.fromEntries( - Object.entries(obj).flatMap(([k, v]) => { - if (Array.isArray(v)) return [[k, v]] - if (typeof v === "object") return [[k, replacer(v)]] - if (typeof v === "string") { - if (v === "$workspace") return authInfo?.workspaceID ? [[k, authInfo.workspaceID]] : [] - if (v === "$org") - return authInfo?.workspaceID ? [[k, authInfo.workspaceID.replace("wrk_", "org_")]] : [] - if (v === "$user") return stickyId ? [[k, stickyId]] : [] - if (v.startsWith("$header.")) { - const headerValue = input.request.headers.get(v.slice(8)) - return headerValue ? [[k, headerValue]] : [] + const reqBody = + directBody ?? + JSON.stringify( + providerInfo.modifyBody({ + ...createBodyConverter(opts.format, providerInfo.format)(JSON.parse(body)), + model: providerInfo.model, + ...(() => { + const replacer = (obj: Record): Record => + Object.fromEntries( + Object.entries(obj).flatMap(([k, v]) => { + if (Array.isArray(v)) return [[k, v]] + if (typeof v === "object") return [[k, replacer(v)]] + if (typeof v === "string") { + if (v === "$workspace") return authInfo?.workspaceID ? [[k, authInfo.workspaceID]] : [] + if (v === "$org") + return authInfo?.workspaceID ? [[k, authInfo.workspaceID.replace("wrk_", "org_")]] : [] + if (v === "$user") return stickyId ? [[k, stickyId]] : [] + if (v.startsWith("$header.")) { + const headerValue = input.request.headers.get(v.slice(8)) + return headerValue ? [[k, headerValue]] : [] + } } - } - return [[k, v]] - }), - ) - return replacer(providerInfo.payloadModifier ?? {}) - })(), - }), - ) + return [[k, v]] + }), + ) + return replacer(providerInfo.payloadModifier ?? {}) + })(), + }), + ) logger.debug("REQUEST URL: " + reqUrl) logger.debug("REQUEST: " + reqBody.substring(0, 300) + "...") const isNewInference = From 9d466cd8497d02db40010077201e07bd10ac33b4 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 23 Aug 2026 10:33:11 -0400 Subject: [PATCH 111/271] fix(stats): normalize model casing --- packages/stats/core/src/domain/inference.test.ts | 1 + packages/stats/core/src/domain/model-normalization.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index d8937ff28..ad95dad18 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -4,6 +4,7 @@ import { modelAuthor, normalizeInferenceModel, statModel, statProvider } from ". describe("inference stat normalization", () => { test("normalizes model suffixes used by router/provider variants", () => { + expect(normalizeInferenceModel("GPT-5-Free")).toBe("gpt-5") expect(normalizeInferenceModel("deepseek-v4-flash-free")).toBe("deepseek-v4-flash") expect(normalizeInferenceModel("deepseek-v4-flash:global")).toBe("deepseek-v4-flash") expect(normalizeInferenceModel("mimo-v2.5-free")).toBe("mimo-v2.5") diff --git a/packages/stats/core/src/domain/model-normalization.ts b/packages/stats/core/src/domain/model-normalization.ts index 778e5edb8..c950fda93 100644 --- a/packages/stats/core/src/domain/model-normalization.ts +++ b/packages/stats/core/src/domain/model-normalization.ts @@ -23,7 +23,7 @@ export const RETIRED_STAT_MODELS = ["big-pickle", ...Object.keys(MODEL_NAME_ALIA export const RETIRED_STAT_PROVIDERS = ["opencode"] export function normalizeInferenceModel(value: string | undefined) { - return (value || "unknown").replace(/(-free|:free|:global)+$/, "") || "unknown" + return (value || "unknown").toLowerCase().replace(/(-free|:free|:global)+$/, "") || "unknown" } export function modelAuthor(value: string | undefined) { From 32c3637da078b22f3246e1a7bf19c4ae9a54e249 Mon Sep 17 00:00:00 2001 From: Dax Date: Sun, 23 Aug 2026 11:18:38 -0400 Subject: [PATCH 112/271] fix(console): stream zen request bodies (#44429) --- .../app/src/routes/zen/util/handler.ts | 195 ++++++------------ .../app/src/routes/zen/util/requestBody.ts | 155 ++++++++++++++ packages/console/app/test/requestBody.test.ts | 78 +++++++ 3 files changed, 299 insertions(+), 129 deletions(-) create mode 100644 packages/console/app/src/routes/zen/util/requestBody.ts create mode 100644 packages/console/app/test/requestBody.test.ts diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 92c5515a6..1853f5ea8 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -30,7 +30,6 @@ import { } from "./error" import { buildCostChunk, - createBodyConverter, createStreamPartConverter, createResponseConverter, UsageInfo, @@ -53,12 +52,10 @@ import { createProviderBudgetTracker } from "./providerBudgetTracker" import { accumulateUsage, HOT_WORKSPACES } from "./usageBatcher" import { Workspace } from "@opencode-ai/console-core/workspace.js" import { countryFromRequest, isModelCountryRestricted } from "~/lib/request-country" +import { prepareRequestBody } from "./requestBody" type ZenData = Awaited> -type RetryOptions = { - excludeProviders: string[] - retryCount: number -} +type PreparedBody = Awaited> type BillingSource = "anonymous" | "free" | "byok" | "subscription" | "lite" | "balance" function resolve(text: string, params?: Record) { @@ -86,8 +83,6 @@ export async function handler( type ProviderInfo = Awaited> type CostInfo = ReturnType - const MAX_FAILOVER_RETRIES = 3 - const MAX_RETRYABLE_STATUS_RETRIES = 3 const dict = i18n(localeFromRequest(input.request)) const t = (key: Key, params?: Record) => resolve(dict[key], params) const ADMIN_WORKSPACES = [ @@ -96,12 +91,15 @@ export async function handler( "wrk_01KKZDKDWCS1VTJF8QTX62DD50", // contributors ] + let requestBody: PreparedBody | undefined try { const url = input.request.url - const body = await input.request.text() + const body = input.request.body + if (!body) throw new Error("Missing request body") + requestBody = opts.format === "google" ? undefined : await prepareRequestBody(body) const model = - opts.format === "google" ? opts.parseModel(url, undefined) : (body.match(/"model"\s*:\s*"([^"]+)"/)?.[1] ?? "") - const isStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : /"stream"\s*:\s*true/.test(body) + opts.format === "google" ? opts.parseModel(url, undefined) : (requestBody?.model ?? "") + const googleStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : undefined const rawIp = input.request.headers.get("x-real-ip") ?? "" const ip = rawIp.includes(":") ? rawIp.split(":").slice(0, 4).join(":") : rawIp const rawZenApiKey = opts.parseApiKey(input.request.headers) @@ -112,7 +110,6 @@ export async function handler( const projectId = input.request.headers.get("x-opencode-project") ?? "" const userAgent = input.request.headers.get("user-agent") ?? "" logger.metric({ - is_stream: isStream, session: sessionId, request: requestId, client: ocClient, @@ -174,7 +171,7 @@ export async function handler( ) const providerBudget = await providerBudgetTracker?.check() - const retriableRequest = async (retry: RetryOptions = { excludeProviders: [], retryCount: 0 }) => { + const providerRequest = async () => { const providerInfo = selectProvider( model, zenData, @@ -182,7 +179,6 @@ export async function handler( modelInfo, stickyId, trialProviders, - retry, stickyProvider, modelTpmLimits, modelTpsLimits, @@ -198,95 +194,66 @@ export async function handler( }) const startTimestamp = Date.now() - const reqUrl = providerInfo.modifyUrl(providerInfo.api, isStream) - const directBody = (() => { - const specialAnthropic = - providerInfo.format === "anthropic" && - (providerInfo.model.startsWith("arn:aws:bedrock:") || - providerInfo.model.startsWith("global.anthropic.") || - providerInfo.model.startsWith("databricks-claude-")) - if (providerInfo.format === opts.format && !providerInfo.payloadModifier && !specialAnthropic) { - const patched = body.replace(/"model"\s*:\s*"[^"]+"/, `"model":${JSON.stringify(providerInfo.model)}`) - if (providerInfo.format !== "oa-compat" || !isStream) return patched - return patched.replace(/}\s*$/, ',"stream_options":{"include_usage":true}}') - } - return undefined + const reqUrl = providerInfo.modifyUrl(providerInfo.api, googleStream ?? false) + const specialAnthropic = + providerInfo.format === "anthropic" && + (providerInfo.model.startsWith("arn:aws:bedrock:") || + providerInfo.model.startsWith("global.anthropic.") || + providerInfo.model.startsWith("databricks-claude-")) + if (providerInfo.format !== opts.format) throw new Error("Zen provider format must match request format") + if (providerInfo.payloadModifier) throw new Error("Zen provider payload modifiers are incompatible with streaming") + if (specialAnthropic) throw new Error("Anthropic provider body modifiers are incompatible with streaming") + const prepared = requestBody + + const reqBody = (() => { + if (opts.format === "google") return body + if (!prepared) throw new Error("Missing prepared request body") + return prepared.stream(providerInfo.model, providerInfo.format === "oa-compat") })() - const reqBody = - directBody ?? - JSON.stringify( - providerInfo.modifyBody({ - ...createBodyConverter(opts.format, providerInfo.format)(JSON.parse(body)), - model: providerInfo.model, - ...(() => { - const replacer = (obj: Record): Record => - Object.fromEntries( - Object.entries(obj).flatMap(([k, v]) => { - if (Array.isArray(v)) return [[k, v]] - if (typeof v === "object") return [[k, replacer(v)]] - if (typeof v === "string") { - if (v === "$workspace") return authInfo?.workspaceID ? [[k, authInfo.workspaceID]] : [] - if (v === "$org") - return authInfo?.workspaceID ? [[k, authInfo.workspaceID.replace("wrk_", "org_")]] : [] - if (v === "$user") return stickyId ? [[k, stickyId]] : [] - if (v.startsWith("$header.")) { - const headerValue = input.request.headers.get(v.slice(8)) - return headerValue ? [[k, headerValue]] : [] - } - } - return [[k, v]] - }), - ) - return replacer(providerInfo.payloadModifier ?? {}) - })(), - }), - ) logger.debug("REQUEST URL: " + reqUrl) - logger.debug("REQUEST: " + reqBody.substring(0, 300) + "...") + logger.debug("REQUEST: " + (requestBody?.preview ?? "") + "...") const isNewInference = providerInfo.id.startsWith("console.") || providerInfo.id.startsWith("console-go.") || providerInfo.id.startsWith("inf.") || providerInfo.id.startsWith("inf-go.") - const res = await fetchWithRetryableStatus( - reqUrl, - { - method: "POST", - headers: (() => { - const headers = new Headers(input.request.headers) - providerInfo.modifyHeaders(headers, providerInfo.apiKey, stickyId) - Object.entries(providerInfo.headerModifier ?? {}).forEach(([k, v]) => { - if (v === "$ip") return headers.set(k, ip) - if (v === "$caller") return headers.set(k, stickyId) - if (v === "$session") return headers.set(k, sessionId) - if (v === "$model") return headers.set(k, model) - if (v === "$request") return headers.set(k, requestId) - if (v === "$project") return headers.set(k, projectId) - if (v === "$workspace") { - if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID) - return - } - if (v === "$org") { - if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID.replace("wrk_", "org_")) - return - } - headers.set(k, v) - }) - headers.delete("host") - headers.delete("content-length") - headers.delete("x-opencode-request") - if (!isNewInference) headers.delete("x-opencode-session") - headers.delete("x-opencode-project") - headers.delete("x-opencode-client") - return headers - })(), - body: reqBody, - // Propagate caller disconnects to the upstream provider request so - // abandoned Console requests do not leave orphaned inference work open. - signal: input.request.signal, - }, - { count: isNewInference ? MAX_RETRYABLE_STATUS_RETRIES : 0 }, - ) + const res = await fetch(reqUrl, { + method: "POST", + headers: (() => { + const headers = new Headers(input.request.headers) + providerInfo.modifyHeaders(headers, providerInfo.apiKey, stickyId) + Object.entries(providerInfo.headerModifier ?? {}).forEach(([k, v]) => { + if (v === "$ip") return headers.set(k, ip) + if (v === "$caller") return headers.set(k, stickyId) + if (v === "$session") return headers.set(k, sessionId) + if (v === "$model") return headers.set(k, model) + if (v === "$request") return headers.set(k, requestId) + if (v === "$project") return headers.set(k, projectId) + if (v === "$workspace") { + if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID) + return + } + if (v === "$org") { + if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID.replace("wrk_", "org_")) + return + } + headers.set(k, v) + }) + headers.delete("host") + headers.delete("content-length") + headers.delete("x-opencode-request") + if (!isNewInference) headers.delete("x-opencode-session") + headers.delete("x-opencode-project") + headers.delete("x-opencode-client") + return headers + })(), + body: reqBody, + // Propagate caller disconnects to the upstream provider request so + // abandoned Console requests do not leave orphaned inference work open. + signal: input.request.signal, + }) + const isStream = res.headers.get("content-type")?.toLowerCase().includes("text/event-stream") ?? false + logger.metric({ is_stream: isStream }) if (isNewInference) { const resEndpointId = res.headers.get("x-opencode-endpoint-id") @@ -305,29 +272,10 @@ export async function handler( }) } - // Try another provider => stop retrying if using fallback provider - if ( - //!isNewInference && - res.status !== 200 && - // ie. 400 error is usually provider error like malformed request - res.status !== 400 && - // ie. openai 404 error: Item with id 'msg_0ead8b004a3b165d0069436a6b6834819896da85b63b196a3f' not found. - !(modelInfo.id.startsWith("gpt-") && res.status === 404) && - // ie. cannot change codex model providers mid-session - modelInfo.stickyProvider !== "strict" && - modelInfo.fallbackProvider && - providerInfo.id !== modelInfo.fallbackProvider - ) { - return retriableRequest({ - excludeProviders: [...retry.excludeProviders, providerInfo.id], - retryCount: retry.retryCount + 1, - }) - } - - return { providerInfo, reqBody, res, startTimestamp } + return { providerInfo, res, startTimestamp, isStream } } - const { providerInfo, reqBody, res, startTimestamp } = await retriableRequest() + const { providerInfo, res, startTimestamp, isStream } = await providerRequest() // Store sticky provider if (res.status === 200) await stickyTracker?.set(providerInfo.id) @@ -483,6 +431,8 @@ export async function handler( headers: resHeaders, }) } catch (error: any) { + if (requestBody) void requestBody.cancel().catch(() => {}) + else void input.request.body?.cancel().catch(() => {}) // The caller disconnected before we finished. Because the outbound provider // request shares input.request.signal, an aborted caller surfaces here as an // AbortError. There is no client left to receive a body, so skip the error @@ -607,7 +557,6 @@ export async function handler( modelInfo: ModelInfo, stickyId: string, trialProviders: string[] | undefined, - retry: RetryOptions, stickyProviderId: string | undefined, modelTpmLimits: Record | undefined, modelTpsLimits: Record | undefined, @@ -634,14 +583,11 @@ export async function handler( })) } - // Use fallback provider if max retries reached const fallbackProvider = allProviders.find((provider) => provider.id === modelInfo.fallbackProvider) - if (retry.retryCount === MAX_FAILOVER_RETRIES) return fallbackProvider let topPriority = Infinity const providers = allProviders .filter((provider) => provider.weight !== 0) - .filter((provider) => !retry.excludeProviders.includes(provider.id)) .filter((provider) => { if (provider.budgetPriority === undefined) return true if (!providerBudget) return true @@ -1049,15 +995,6 @@ export async function handler( providerInfo.apiKey = authInfo.provider.credentials } - async function fetchWithRetryableStatus(url: string, options: RequestInit, retry = { count: 0 }) { - const res = await fetch(url, options) - if ([429, 529].includes(res.status) && retry.count < MAX_RETRYABLE_STATUS_RETRIES) { - await new Promise((resolve) => setTimeout(resolve, Math.pow(2, retry.count) * 500)) - return fetchWithRetryableStatus(url, options, { count: retry.count + 1 }) - } - return res - } - function calculateCost(modelInfo: ModelInfo, usageInfo: UsageInfo) { const { inputTokens, outputTokens, reasoningTokens, cacheReadTokens, cacheWrite5mTokens, cacheWrite1hTokens } = usageInfo diff --git a/packages/console/app/src/routes/zen/util/requestBody.ts b/packages/console/app/src/routes/zen/util/requestBody.ts new file mode 100644 index 000000000..23161d35b --- /dev/null +++ b/packages/console/app/src/routes/zen/util/requestBody.ts @@ -0,0 +1,155 @@ +const PREFIX_LIMIT = 64 * 1024 +const TAIL_LIMIT = 4 * 1024 +const encoder = new TextEncoder() + +export async function prepareRequestBody(body: ReadableStream) { + const reader = body.getReader() + const chunks: Uint8Array[] = [] + const decoder = new TextDecoder() + let text = "" + let inspected = 0 + let done = false + + while (!done && inspected < PREFIX_LIMIT) { + const next = await reader.read() + done = next.done + if (!next.value) continue + chunks.push(next.value) + const length = Math.min(next.value.length, PREFIX_LIMIT - inspected) + text += decoder.decode(next.value.subarray(0, length), { stream: true }) + inspected += length + if (/^\s*{\s*"model"\s*:\s*"[^"]+"/.test(text)) break + } + + const match = text.match(/^(\s*{\s*"model"\s*:\s*")([^"]+)"/) + let used = false + + return { + model: match?.[2] ?? "", + preview: text.substring(0, 300), + cancel: () => reader.cancel(), + stream(providerModel: string, includeUsage: boolean) { + if (used) throw new Error("Request body stream already consumed") + if (!match) throw new Error("Missing leading model field") + used = true + + const initial = replace(chunks, match[1].length, match[1].length + match[2].length, providerModel) + const output = passthrough(initial, reader, done) + if (!includeUsage) return output + return appendUsage(output) + }, + } +} + +function replace(chunks: Uint8Array[], start: number, end: number, value: string) { + let offset = 0 + let inserted = false + return chunks.flatMap((chunk) => { + const chunkStart = offset + const chunkEnd = offset + chunk.length + offset = chunkEnd + if (chunkEnd <= start || chunkStart >= end) return [chunk] + + const parts = [chunk.subarray(0, Math.max(0, start - chunkStart))] + if (!inserted) { + parts.push(encoder.encode(value)) + inserted = true + } + parts.push(chunk.subarray(Math.min(chunk.length, end - chunkStart))) + return parts.filter((part) => part.length) + }) +} + +function passthrough( + initial: Uint8Array[], + reader: ReadableStreamDefaultReader, + sourceDone: boolean, +) { + let done = sourceDone + return new ReadableStream({ + async pull(controller) { + const chunk = initial.shift() + if (chunk) { + controller.enqueue(chunk) + return + } + if (done) { + controller.close() + return + } + const next = await reader.read() + done = next.done + if (next.value) controller.enqueue(next.value) + if (done) controller.close() + }, + cancel(reason) { + return reader.cancel(reason) + }, + }) +} + +function appendUsage(body: ReadableStream) { + const reader = body.getReader() + const decoder = new TextDecoder() + let tail = new Uint8Array() + let streamText = "" + let isStream = false + const inspect = (chunk?: Uint8Array) => { + streamText += chunk ? decoder.decode(chunk, { stream: true }) : decoder.decode() + for (const match of streamText.matchAll(/"stream"\s*:\s*(true|false)/g)) isStream = match[1] === "true" + streamText = streamText.slice(-64) + } + return new ReadableStream({ + async pull(controller) { + while (true) { + const next = await reader.read() + if (next.done) { + inspect() + if (!isStream) { + if (tail.length) controller.enqueue(tail) + controller.close() + return + } + const close = tail.lastIndexOf(125) + if (close < 0) { + controller.error(new Error("Invalid JSON request body")) + return + } + if (close) controller.enqueue(tail.subarray(0, close)) + controller.enqueue(encoder.encode(',"stream_options":{"include_usage":true}}')) + if (close + 1 < tail.length) controller.enqueue(tail.subarray(close + 1)) + controller.close() + return + } + + const chunk = next.value + inspect(chunk) + if (tail.length + chunk.length <= TAIL_LIMIT) { + const combined = new Uint8Array(tail.length + chunk.length) + combined.set(tail) + combined.set(chunk, tail.length) + tail = combined + continue + } + + const emit = tail.length + chunk.length - TAIL_LIMIT + if (emit <= tail.length) { + controller.enqueue(tail.subarray(0, emit)) + const combined = new Uint8Array(TAIL_LIMIT) + combined.set(tail.subarray(emit)) + combined.set(chunk, tail.length - emit) + tail = combined + return + } + + if (tail.length) controller.enqueue(tail) + controller.enqueue(chunk.subarray(0, emit - tail.length)) + tail = chunk.slice(emit - tail.length) + return + } + }, + cancel(reason) { + return reader.cancel(reason) + }, + }) +} diff --git a/packages/console/app/test/requestBody.test.ts b/packages/console/app/test/requestBody.test.ts new file mode 100644 index 000000000..4e09bc23c --- /dev/null +++ b/packages/console/app/test/requestBody.test.ts @@ -0,0 +1,78 @@ +import { describe, expect, test } from "bun:test" +import { prepareRequestBody } from "../src/routes/zen/util/requestBody" + +describe("Zen request body streaming", () => { + test("patches the leading model without buffering the remaining body", async () => { + let reads = 0 + const body = new ReadableStream( + { + pull(controller) { + const chunks = [ + '{"model":"client-model","stream":true,"messages":[', + JSON.stringify({ role: "user", content: "large payload" }), + "]}", + ] + const chunk = chunks[reads++] + if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) + else controller.close() + }, + }, + { highWaterMark: 0 }, + ) + + const request = await prepareRequestBody(body) + expect(request.model).toBe("client-model") + expect(reads).toBe(1) + + const output = await new Response(request.stream("provider-model", false)).text() + expect(JSON.parse(output)).toEqual({ + model: "provider-model", + stream: true, + messages: [{ role: "user", content: "large payload" }], + }) + }) + + test("appends stream usage options at the end of the request", async () => { + const body = new Blob(['{"model":"client-model","stream":true,"messages":[]} ']).stream() + const request = await prepareRequestBody(body) + const output = await new Response(request.stream("provider-model", true)).text() + + expect(JSON.parse(output)).toEqual({ + model: "provider-model", + stream: true, + messages: [], + stream_options: { include_usage: true }, + }) + expect(output.endsWith(" ")).toBe(true) + }) + + test("detects streaming after a large message while forwarding", async () => { + const content = "x".repeat(128 * 1024) + let reads = 0 + const chunks = [ + '{"model":"client-model","messages":[', + JSON.stringify({ role: "user", content }), + '],"stream":true}', + ] + const body = new ReadableStream( + { + pull(controller) { + const chunk = chunks[reads++] + if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) + else controller.close() + }, + }, + { highWaterMark: 0 }, + ) + const request = await prepareRequestBody(body) + expect(reads).toBe(1) + const output = await new Response(request.stream("provider-model", true)).text() + + expect(JSON.parse(output)).toEqual({ + model: "provider-model", + messages: [{ role: "user", content }], + stream: true, + stream_options: { include_usage: true }, + }) + }) +}) From bb72277407798e31e3f7d323c3144807238e0d6e Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Sun, 23 Aug 2026 15:19:54 +0000 Subject: [PATCH 113/271] chore: generate --- packages/console/app/src/routes/zen/util/handler.ts | 13 ++++--------- .../console/app/src/routes/zen/util/requestBody.ts | 6 +----- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 1853f5ea8..b0b502b9b 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -28,12 +28,7 @@ import { GoUsageLimitError, BlackUsageLimitError, } from "./error" -import { - buildCostChunk, - createStreamPartConverter, - createResponseConverter, - UsageInfo, -} from "./provider/provider" +import { buildCostChunk, createStreamPartConverter, createResponseConverter, UsageInfo } from "./provider/provider" import { anthropicHelper } from "./provider/anthropic" import { googleHelper } from "./provider/google" import { openaiHelper } from "./provider/openai" @@ -97,8 +92,7 @@ export async function handler( const body = input.request.body if (!body) throw new Error("Missing request body") requestBody = opts.format === "google" ? undefined : await prepareRequestBody(body) - const model = - opts.format === "google" ? opts.parseModel(url, undefined) : (requestBody?.model ?? "") + const model = opts.format === "google" ? opts.parseModel(url, undefined) : (requestBody?.model ?? "") const googleStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : undefined const rawIp = input.request.headers.get("x-real-ip") ?? "" const ip = rawIp.includes(":") ? rawIp.split(":").slice(0, 4).join(":") : rawIp @@ -201,7 +195,8 @@ export async function handler( providerInfo.model.startsWith("global.anthropic.") || providerInfo.model.startsWith("databricks-claude-")) if (providerInfo.format !== opts.format) throw new Error("Zen provider format must match request format") - if (providerInfo.payloadModifier) throw new Error("Zen provider payload modifiers are incompatible with streaming") + if (providerInfo.payloadModifier) + throw new Error("Zen provider payload modifiers are incompatible with streaming") if (specialAnthropic) throw new Error("Anthropic provider body modifiers are incompatible with streaming") const prepared = requestBody diff --git a/packages/console/app/src/routes/zen/util/requestBody.ts b/packages/console/app/src/routes/zen/util/requestBody.ts index 23161d35b..4f2233ec8 100644 --- a/packages/console/app/src/routes/zen/util/requestBody.ts +++ b/packages/console/app/src/routes/zen/util/requestBody.ts @@ -60,11 +60,7 @@ function replace(chunks: Uint8Array[], start: number, end: number, value: string }) } -function passthrough( - initial: Uint8Array[], - reader: ReadableStreamDefaultReader, - sourceDone: boolean, -) { +function passthrough(initial: Uint8Array[], reader: ReadableStreamDefaultReader, sourceDone: boolean) { let done = sourceDone return new ReadableStream({ async pull(controller) { From 3d31e4bcecc8653745ef1f8647afee9e3ddfce49 Mon Sep 17 00:00:00 2001 From: Dax Date: Sun, 23 Aug 2026 11:54:07 -0400 Subject: [PATCH 114/271] fix(console): revert streamed zen request bodies (#44444) --- .../app/src/routes/zen/util/handler.ts | 204 ++++++++++++------ .../app/src/routes/zen/util/requestBody.ts | 151 ------------- packages/console/app/test/requestBody.test.ts | 78 ------- 3 files changed, 136 insertions(+), 297 deletions(-) delete mode 100644 packages/console/app/src/routes/zen/util/requestBody.ts delete mode 100644 packages/console/app/test/requestBody.test.ts diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index b0b502b9b..92c5515a6 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -28,7 +28,13 @@ import { GoUsageLimitError, BlackUsageLimitError, } from "./error" -import { buildCostChunk, createStreamPartConverter, createResponseConverter, UsageInfo } from "./provider/provider" +import { + buildCostChunk, + createBodyConverter, + createStreamPartConverter, + createResponseConverter, + UsageInfo, +} from "./provider/provider" import { anthropicHelper } from "./provider/anthropic" import { googleHelper } from "./provider/google" import { openaiHelper } from "./provider/openai" @@ -47,10 +53,12 @@ import { createProviderBudgetTracker } from "./providerBudgetTracker" import { accumulateUsage, HOT_WORKSPACES } from "./usageBatcher" import { Workspace } from "@opencode-ai/console-core/workspace.js" import { countryFromRequest, isModelCountryRestricted } from "~/lib/request-country" -import { prepareRequestBody } from "./requestBody" type ZenData = Awaited> -type PreparedBody = Awaited> +type RetryOptions = { + excludeProviders: string[] + retryCount: number +} type BillingSource = "anonymous" | "free" | "byok" | "subscription" | "lite" | "balance" function resolve(text: string, params?: Record) { @@ -78,6 +86,8 @@ export async function handler( type ProviderInfo = Awaited> type CostInfo = ReturnType + const MAX_FAILOVER_RETRIES = 3 + const MAX_RETRYABLE_STATUS_RETRIES = 3 const dict = i18n(localeFromRequest(input.request)) const t = (key: Key, params?: Record) => resolve(dict[key], params) const ADMIN_WORKSPACES = [ @@ -86,14 +96,12 @@ export async function handler( "wrk_01KKZDKDWCS1VTJF8QTX62DD50", // contributors ] - let requestBody: PreparedBody | undefined try { const url = input.request.url - const body = input.request.body - if (!body) throw new Error("Missing request body") - requestBody = opts.format === "google" ? undefined : await prepareRequestBody(body) - const model = opts.format === "google" ? opts.parseModel(url, undefined) : (requestBody?.model ?? "") - const googleStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : undefined + const body = await input.request.text() + const model = + opts.format === "google" ? opts.parseModel(url, undefined) : (body.match(/"model"\s*:\s*"([^"]+)"/)?.[1] ?? "") + const isStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : /"stream"\s*:\s*true/.test(body) const rawIp = input.request.headers.get("x-real-ip") ?? "" const ip = rawIp.includes(":") ? rawIp.split(":").slice(0, 4).join(":") : rawIp const rawZenApiKey = opts.parseApiKey(input.request.headers) @@ -104,6 +112,7 @@ export async function handler( const projectId = input.request.headers.get("x-opencode-project") ?? "" const userAgent = input.request.headers.get("user-agent") ?? "" logger.metric({ + is_stream: isStream, session: sessionId, request: requestId, client: ocClient, @@ -165,7 +174,7 @@ export async function handler( ) const providerBudget = await providerBudgetTracker?.check() - const providerRequest = async () => { + const retriableRequest = async (retry: RetryOptions = { excludeProviders: [], retryCount: 0 }) => { const providerInfo = selectProvider( model, zenData, @@ -173,6 +182,7 @@ export async function handler( modelInfo, stickyId, trialProviders, + retry, stickyProvider, modelTpmLimits, modelTpsLimits, @@ -188,67 +198,95 @@ export async function handler( }) const startTimestamp = Date.now() - const reqUrl = providerInfo.modifyUrl(providerInfo.api, googleStream ?? false) - const specialAnthropic = - providerInfo.format === "anthropic" && - (providerInfo.model.startsWith("arn:aws:bedrock:") || - providerInfo.model.startsWith("global.anthropic.") || - providerInfo.model.startsWith("databricks-claude-")) - if (providerInfo.format !== opts.format) throw new Error("Zen provider format must match request format") - if (providerInfo.payloadModifier) - throw new Error("Zen provider payload modifiers are incompatible with streaming") - if (specialAnthropic) throw new Error("Anthropic provider body modifiers are incompatible with streaming") - const prepared = requestBody - - const reqBody = (() => { - if (opts.format === "google") return body - if (!prepared) throw new Error("Missing prepared request body") - return prepared.stream(providerInfo.model, providerInfo.format === "oa-compat") + const reqUrl = providerInfo.modifyUrl(providerInfo.api, isStream) + const directBody = (() => { + const specialAnthropic = + providerInfo.format === "anthropic" && + (providerInfo.model.startsWith("arn:aws:bedrock:") || + providerInfo.model.startsWith("global.anthropic.") || + providerInfo.model.startsWith("databricks-claude-")) + if (providerInfo.format === opts.format && !providerInfo.payloadModifier && !specialAnthropic) { + const patched = body.replace(/"model"\s*:\s*"[^"]+"/, `"model":${JSON.stringify(providerInfo.model)}`) + if (providerInfo.format !== "oa-compat" || !isStream) return patched + return patched.replace(/}\s*$/, ',"stream_options":{"include_usage":true}}') + } + return undefined })() + const reqBody = + directBody ?? + JSON.stringify( + providerInfo.modifyBody({ + ...createBodyConverter(opts.format, providerInfo.format)(JSON.parse(body)), + model: providerInfo.model, + ...(() => { + const replacer = (obj: Record): Record => + Object.fromEntries( + Object.entries(obj).flatMap(([k, v]) => { + if (Array.isArray(v)) return [[k, v]] + if (typeof v === "object") return [[k, replacer(v)]] + if (typeof v === "string") { + if (v === "$workspace") return authInfo?.workspaceID ? [[k, authInfo.workspaceID]] : [] + if (v === "$org") + return authInfo?.workspaceID ? [[k, authInfo.workspaceID.replace("wrk_", "org_")]] : [] + if (v === "$user") return stickyId ? [[k, stickyId]] : [] + if (v.startsWith("$header.")) { + const headerValue = input.request.headers.get(v.slice(8)) + return headerValue ? [[k, headerValue]] : [] + } + } + return [[k, v]] + }), + ) + return replacer(providerInfo.payloadModifier ?? {}) + })(), + }), + ) logger.debug("REQUEST URL: " + reqUrl) - logger.debug("REQUEST: " + (requestBody?.preview ?? "") + "...") + logger.debug("REQUEST: " + reqBody.substring(0, 300) + "...") const isNewInference = providerInfo.id.startsWith("console.") || providerInfo.id.startsWith("console-go.") || providerInfo.id.startsWith("inf.") || providerInfo.id.startsWith("inf-go.") - const res = await fetch(reqUrl, { - method: "POST", - headers: (() => { - const headers = new Headers(input.request.headers) - providerInfo.modifyHeaders(headers, providerInfo.apiKey, stickyId) - Object.entries(providerInfo.headerModifier ?? {}).forEach(([k, v]) => { - if (v === "$ip") return headers.set(k, ip) - if (v === "$caller") return headers.set(k, stickyId) - if (v === "$session") return headers.set(k, sessionId) - if (v === "$model") return headers.set(k, model) - if (v === "$request") return headers.set(k, requestId) - if (v === "$project") return headers.set(k, projectId) - if (v === "$workspace") { - if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID) - return - } - if (v === "$org") { - if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID.replace("wrk_", "org_")) - return - } - headers.set(k, v) - }) - headers.delete("host") - headers.delete("content-length") - headers.delete("x-opencode-request") - if (!isNewInference) headers.delete("x-opencode-session") - headers.delete("x-opencode-project") - headers.delete("x-opencode-client") - return headers - })(), - body: reqBody, - // Propagate caller disconnects to the upstream provider request so - // abandoned Console requests do not leave orphaned inference work open. - signal: input.request.signal, - }) - const isStream = res.headers.get("content-type")?.toLowerCase().includes("text/event-stream") ?? false - logger.metric({ is_stream: isStream }) + const res = await fetchWithRetryableStatus( + reqUrl, + { + method: "POST", + headers: (() => { + const headers = new Headers(input.request.headers) + providerInfo.modifyHeaders(headers, providerInfo.apiKey, stickyId) + Object.entries(providerInfo.headerModifier ?? {}).forEach(([k, v]) => { + if (v === "$ip") return headers.set(k, ip) + if (v === "$caller") return headers.set(k, stickyId) + if (v === "$session") return headers.set(k, sessionId) + if (v === "$model") return headers.set(k, model) + if (v === "$request") return headers.set(k, requestId) + if (v === "$project") return headers.set(k, projectId) + if (v === "$workspace") { + if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID) + return + } + if (v === "$org") { + if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID.replace("wrk_", "org_")) + return + } + headers.set(k, v) + }) + headers.delete("host") + headers.delete("content-length") + headers.delete("x-opencode-request") + if (!isNewInference) headers.delete("x-opencode-session") + headers.delete("x-opencode-project") + headers.delete("x-opencode-client") + return headers + })(), + body: reqBody, + // Propagate caller disconnects to the upstream provider request so + // abandoned Console requests do not leave orphaned inference work open. + signal: input.request.signal, + }, + { count: isNewInference ? MAX_RETRYABLE_STATUS_RETRIES : 0 }, + ) if (isNewInference) { const resEndpointId = res.headers.get("x-opencode-endpoint-id") @@ -267,10 +305,29 @@ export async function handler( }) } - return { providerInfo, res, startTimestamp, isStream } + // Try another provider => stop retrying if using fallback provider + if ( + //!isNewInference && + res.status !== 200 && + // ie. 400 error is usually provider error like malformed request + res.status !== 400 && + // ie. openai 404 error: Item with id 'msg_0ead8b004a3b165d0069436a6b6834819896da85b63b196a3f' not found. + !(modelInfo.id.startsWith("gpt-") && res.status === 404) && + // ie. cannot change codex model providers mid-session + modelInfo.stickyProvider !== "strict" && + modelInfo.fallbackProvider && + providerInfo.id !== modelInfo.fallbackProvider + ) { + return retriableRequest({ + excludeProviders: [...retry.excludeProviders, providerInfo.id], + retryCount: retry.retryCount + 1, + }) + } + + return { providerInfo, reqBody, res, startTimestamp } } - const { providerInfo, res, startTimestamp, isStream } = await providerRequest() + const { providerInfo, reqBody, res, startTimestamp } = await retriableRequest() // Store sticky provider if (res.status === 200) await stickyTracker?.set(providerInfo.id) @@ -426,8 +483,6 @@ export async function handler( headers: resHeaders, }) } catch (error: any) { - if (requestBody) void requestBody.cancel().catch(() => {}) - else void input.request.body?.cancel().catch(() => {}) // The caller disconnected before we finished. Because the outbound provider // request shares input.request.signal, an aborted caller surfaces here as an // AbortError. There is no client left to receive a body, so skip the error @@ -552,6 +607,7 @@ export async function handler( modelInfo: ModelInfo, stickyId: string, trialProviders: string[] | undefined, + retry: RetryOptions, stickyProviderId: string | undefined, modelTpmLimits: Record | undefined, modelTpsLimits: Record | undefined, @@ -578,11 +634,14 @@ export async function handler( })) } + // Use fallback provider if max retries reached const fallbackProvider = allProviders.find((provider) => provider.id === modelInfo.fallbackProvider) + if (retry.retryCount === MAX_FAILOVER_RETRIES) return fallbackProvider let topPriority = Infinity const providers = allProviders .filter((provider) => provider.weight !== 0) + .filter((provider) => !retry.excludeProviders.includes(provider.id)) .filter((provider) => { if (provider.budgetPriority === undefined) return true if (!providerBudget) return true @@ -990,6 +1049,15 @@ export async function handler( providerInfo.apiKey = authInfo.provider.credentials } + async function fetchWithRetryableStatus(url: string, options: RequestInit, retry = { count: 0 }) { + const res = await fetch(url, options) + if ([429, 529].includes(res.status) && retry.count < MAX_RETRYABLE_STATUS_RETRIES) { + await new Promise((resolve) => setTimeout(resolve, Math.pow(2, retry.count) * 500)) + return fetchWithRetryableStatus(url, options, { count: retry.count + 1 }) + } + return res + } + function calculateCost(modelInfo: ModelInfo, usageInfo: UsageInfo) { const { inputTokens, outputTokens, reasoningTokens, cacheReadTokens, cacheWrite5mTokens, cacheWrite1hTokens } = usageInfo diff --git a/packages/console/app/src/routes/zen/util/requestBody.ts b/packages/console/app/src/routes/zen/util/requestBody.ts deleted file mode 100644 index 4f2233ec8..000000000 --- a/packages/console/app/src/routes/zen/util/requestBody.ts +++ /dev/null @@ -1,151 +0,0 @@ -const PREFIX_LIMIT = 64 * 1024 -const TAIL_LIMIT = 4 * 1024 -const encoder = new TextEncoder() - -export async function prepareRequestBody(body: ReadableStream) { - const reader = body.getReader() - const chunks: Uint8Array[] = [] - const decoder = new TextDecoder() - let text = "" - let inspected = 0 - let done = false - - while (!done && inspected < PREFIX_LIMIT) { - const next = await reader.read() - done = next.done - if (!next.value) continue - chunks.push(next.value) - const length = Math.min(next.value.length, PREFIX_LIMIT - inspected) - text += decoder.decode(next.value.subarray(0, length), { stream: true }) - inspected += length - if (/^\s*{\s*"model"\s*:\s*"[^"]+"/.test(text)) break - } - - const match = text.match(/^(\s*{\s*"model"\s*:\s*")([^"]+)"/) - let used = false - - return { - model: match?.[2] ?? "", - preview: text.substring(0, 300), - cancel: () => reader.cancel(), - stream(providerModel: string, includeUsage: boolean) { - if (used) throw new Error("Request body stream already consumed") - if (!match) throw new Error("Missing leading model field") - used = true - - const initial = replace(chunks, match[1].length, match[1].length + match[2].length, providerModel) - const output = passthrough(initial, reader, done) - if (!includeUsage) return output - return appendUsage(output) - }, - } -} - -function replace(chunks: Uint8Array[], start: number, end: number, value: string) { - let offset = 0 - let inserted = false - return chunks.flatMap((chunk) => { - const chunkStart = offset - const chunkEnd = offset + chunk.length - offset = chunkEnd - if (chunkEnd <= start || chunkStart >= end) return [chunk] - - const parts = [chunk.subarray(0, Math.max(0, start - chunkStart))] - if (!inserted) { - parts.push(encoder.encode(value)) - inserted = true - } - parts.push(chunk.subarray(Math.min(chunk.length, end - chunkStart))) - return parts.filter((part) => part.length) - }) -} - -function passthrough(initial: Uint8Array[], reader: ReadableStreamDefaultReader, sourceDone: boolean) { - let done = sourceDone - return new ReadableStream({ - async pull(controller) { - const chunk = initial.shift() - if (chunk) { - controller.enqueue(chunk) - return - } - if (done) { - controller.close() - return - } - const next = await reader.read() - done = next.done - if (next.value) controller.enqueue(next.value) - if (done) controller.close() - }, - cancel(reason) { - return reader.cancel(reason) - }, - }) -} - -function appendUsage(body: ReadableStream) { - const reader = body.getReader() - const decoder = new TextDecoder() - let tail = new Uint8Array() - let streamText = "" - let isStream = false - const inspect = (chunk?: Uint8Array) => { - streamText += chunk ? decoder.decode(chunk, { stream: true }) : decoder.decode() - for (const match of streamText.matchAll(/"stream"\s*:\s*(true|false)/g)) isStream = match[1] === "true" - streamText = streamText.slice(-64) - } - return new ReadableStream({ - async pull(controller) { - while (true) { - const next = await reader.read() - if (next.done) { - inspect() - if (!isStream) { - if (tail.length) controller.enqueue(tail) - controller.close() - return - } - const close = tail.lastIndexOf(125) - if (close < 0) { - controller.error(new Error("Invalid JSON request body")) - return - } - if (close) controller.enqueue(tail.subarray(0, close)) - controller.enqueue(encoder.encode(',"stream_options":{"include_usage":true}}')) - if (close + 1 < tail.length) controller.enqueue(tail.subarray(close + 1)) - controller.close() - return - } - - const chunk = next.value - inspect(chunk) - if (tail.length + chunk.length <= TAIL_LIMIT) { - const combined = new Uint8Array(tail.length + chunk.length) - combined.set(tail) - combined.set(chunk, tail.length) - tail = combined - continue - } - - const emit = tail.length + chunk.length - TAIL_LIMIT - if (emit <= tail.length) { - controller.enqueue(tail.subarray(0, emit)) - const combined = new Uint8Array(TAIL_LIMIT) - combined.set(tail.subarray(emit)) - combined.set(chunk, tail.length - emit) - tail = combined - return - } - - if (tail.length) controller.enqueue(tail) - controller.enqueue(chunk.subarray(0, emit - tail.length)) - tail = chunk.slice(emit - tail.length) - return - } - }, - cancel(reason) { - return reader.cancel(reason) - }, - }) -} diff --git a/packages/console/app/test/requestBody.test.ts b/packages/console/app/test/requestBody.test.ts deleted file mode 100644 index 4e09bc23c..000000000 --- a/packages/console/app/test/requestBody.test.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { describe, expect, test } from "bun:test" -import { prepareRequestBody } from "../src/routes/zen/util/requestBody" - -describe("Zen request body streaming", () => { - test("patches the leading model without buffering the remaining body", async () => { - let reads = 0 - const body = new ReadableStream( - { - pull(controller) { - const chunks = [ - '{"model":"client-model","stream":true,"messages":[', - JSON.stringify({ role: "user", content: "large payload" }), - "]}", - ] - const chunk = chunks[reads++] - if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) - else controller.close() - }, - }, - { highWaterMark: 0 }, - ) - - const request = await prepareRequestBody(body) - expect(request.model).toBe("client-model") - expect(reads).toBe(1) - - const output = await new Response(request.stream("provider-model", false)).text() - expect(JSON.parse(output)).toEqual({ - model: "provider-model", - stream: true, - messages: [{ role: "user", content: "large payload" }], - }) - }) - - test("appends stream usage options at the end of the request", async () => { - const body = new Blob(['{"model":"client-model","stream":true,"messages":[]} ']).stream() - const request = await prepareRequestBody(body) - const output = await new Response(request.stream("provider-model", true)).text() - - expect(JSON.parse(output)).toEqual({ - model: "provider-model", - stream: true, - messages: [], - stream_options: { include_usage: true }, - }) - expect(output.endsWith(" ")).toBe(true) - }) - - test("detects streaming after a large message while forwarding", async () => { - const content = "x".repeat(128 * 1024) - let reads = 0 - const chunks = [ - '{"model":"client-model","messages":[', - JSON.stringify({ role: "user", content }), - '],"stream":true}', - ] - const body = new ReadableStream( - { - pull(controller) { - const chunk = chunks[reads++] - if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) - else controller.close() - }, - }, - { highWaterMark: 0 }, - ) - const request = await prepareRequestBody(body) - expect(reads).toBe(1) - const output = await new Response(request.stream("provider-model", true)).text() - - expect(JSON.parse(output)).toEqual({ - model: "provider-model", - messages: [{ role: "user", content }], - stream: true, - stream_options: { include_usage: true }, - }) - }) -}) From 17b47301ba15a3a441137e7c40d3ccef9d5a5451 Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 23 Aug 2026 12:46:02 -0400 Subject: [PATCH 115/271] feat(console): add unblock workspace action --- .../api/support/actions/unblock-workspace.ts | 21 +++++++++++++++++++ packages/console/core/src/workspace.ts | 12 +++++++++++ 2 files changed, 33 insertions(+) create mode 100644 packages/console/app/src/routes/api/support/actions/unblock-workspace.ts diff --git a/packages/console/app/src/routes/api/support/actions/unblock-workspace.ts b/packages/console/app/src/routes/api/support/actions/unblock-workspace.ts new file mode 100644 index 000000000..fd4baa07f --- /dev/null +++ b/packages/console/app/src/routes/api/support/actions/unblock-workspace.ts @@ -0,0 +1,21 @@ +import type { APIEvent } from "@solidjs/start/server" +import { Workspace } from "@opencode-ai/console-core/workspace.js" +import { safeEqual } from "@opencode-ai/console-core/util/crypto.js" +import { Resource } from "@opencode-ai/console-resource" +import z from "zod" + +const Body = z.object({ workspaceID: z.string().startsWith("wrk_") }) + +export async function POST(event: APIEvent) { + if (!safeEqual(event.request.headers.get("authorization") ?? "", `Bearer ${Resource.SUPPORT_API_KEY.value}`)) { + return Response.json({ error: "Unauthorized" }, { status: 401 }) + } + + const body = Body.safeParse(await event.request.json().catch(() => undefined)) + if (!body.success) { + return Response.json({ error: "Invalid request", issues: body.error.issues }, { status: 400 }) + } + return Workspace.unblock(body.data) + .then(() => Response.json({ success: true, message: "Workspace unblocked" })) + .catch((error) => Response.json({ error: error instanceof Error ? error.message : String(error) }, { status: 400 })) +} diff --git a/packages/console/core/src/workspace.ts b/packages/console/core/src/workspace.ts index 124710b55..432d4947b 100644 --- a/packages/console/core/src/workspace.ts +++ b/packages/console/core/src/workspace.ts @@ -97,6 +97,18 @@ export namespace Workspace { }, ) + export const unblock = fn( + z.object({ + workspaceID: Identifier.schema("workspace"), + }), + async (input) => { + const result = await Database.use((tx) => + tx.update(WorkspaceTable).set({ is_blocked: false }).where(eq(WorkspaceTable.id, input.workspaceID)), + ) + if (result.rowsAffected === 0) throw new Error("Workspace not found") + }, + ) + export const remove = fn(z.void(), async () => { await Database.use((tx) => tx From fa117558ee13c1ae2aa28aa11a62c218eb592e47 Mon Sep 17 00:00:00 2001 From: Dax Date: Sun, 23 Aug 2026 12:47:29 -0400 Subject: [PATCH 116/271] fix(console): scan zen model before streaming (#44463) --- .../app/src/routes/zen/util/handler.ts | 195 ++++++------------ .../app/src/routes/zen/util/requestBody.ts | 184 +++++++++++++++++ packages/console/app/test/requestBody.test.ts | 109 ++++++++++ 3 files changed, 359 insertions(+), 129 deletions(-) create mode 100644 packages/console/app/src/routes/zen/util/requestBody.ts create mode 100644 packages/console/app/test/requestBody.test.ts diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 92c5515a6..1853f5ea8 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -30,7 +30,6 @@ import { } from "./error" import { buildCostChunk, - createBodyConverter, createStreamPartConverter, createResponseConverter, UsageInfo, @@ -53,12 +52,10 @@ import { createProviderBudgetTracker } from "./providerBudgetTracker" import { accumulateUsage, HOT_WORKSPACES } from "./usageBatcher" import { Workspace } from "@opencode-ai/console-core/workspace.js" import { countryFromRequest, isModelCountryRestricted } from "~/lib/request-country" +import { prepareRequestBody } from "./requestBody" type ZenData = Awaited> -type RetryOptions = { - excludeProviders: string[] - retryCount: number -} +type PreparedBody = Awaited> type BillingSource = "anonymous" | "free" | "byok" | "subscription" | "lite" | "balance" function resolve(text: string, params?: Record) { @@ -86,8 +83,6 @@ export async function handler( type ProviderInfo = Awaited> type CostInfo = ReturnType - const MAX_FAILOVER_RETRIES = 3 - const MAX_RETRYABLE_STATUS_RETRIES = 3 const dict = i18n(localeFromRequest(input.request)) const t = (key: Key, params?: Record) => resolve(dict[key], params) const ADMIN_WORKSPACES = [ @@ -96,12 +91,15 @@ export async function handler( "wrk_01KKZDKDWCS1VTJF8QTX62DD50", // contributors ] + let requestBody: PreparedBody | undefined try { const url = input.request.url - const body = await input.request.text() + const body = input.request.body + if (!body) throw new Error("Missing request body") + requestBody = opts.format === "google" ? undefined : await prepareRequestBody(body) const model = - opts.format === "google" ? opts.parseModel(url, undefined) : (body.match(/"model"\s*:\s*"([^"]+)"/)?.[1] ?? "") - const isStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : /"stream"\s*:\s*true/.test(body) + opts.format === "google" ? opts.parseModel(url, undefined) : (requestBody?.model ?? "") + const googleStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : undefined const rawIp = input.request.headers.get("x-real-ip") ?? "" const ip = rawIp.includes(":") ? rawIp.split(":").slice(0, 4).join(":") : rawIp const rawZenApiKey = opts.parseApiKey(input.request.headers) @@ -112,7 +110,6 @@ export async function handler( const projectId = input.request.headers.get("x-opencode-project") ?? "" const userAgent = input.request.headers.get("user-agent") ?? "" logger.metric({ - is_stream: isStream, session: sessionId, request: requestId, client: ocClient, @@ -174,7 +171,7 @@ export async function handler( ) const providerBudget = await providerBudgetTracker?.check() - const retriableRequest = async (retry: RetryOptions = { excludeProviders: [], retryCount: 0 }) => { + const providerRequest = async () => { const providerInfo = selectProvider( model, zenData, @@ -182,7 +179,6 @@ export async function handler( modelInfo, stickyId, trialProviders, - retry, stickyProvider, modelTpmLimits, modelTpsLimits, @@ -198,95 +194,66 @@ export async function handler( }) const startTimestamp = Date.now() - const reqUrl = providerInfo.modifyUrl(providerInfo.api, isStream) - const directBody = (() => { - const specialAnthropic = - providerInfo.format === "anthropic" && - (providerInfo.model.startsWith("arn:aws:bedrock:") || - providerInfo.model.startsWith("global.anthropic.") || - providerInfo.model.startsWith("databricks-claude-")) - if (providerInfo.format === opts.format && !providerInfo.payloadModifier && !specialAnthropic) { - const patched = body.replace(/"model"\s*:\s*"[^"]+"/, `"model":${JSON.stringify(providerInfo.model)}`) - if (providerInfo.format !== "oa-compat" || !isStream) return patched - return patched.replace(/}\s*$/, ',"stream_options":{"include_usage":true}}') - } - return undefined + const reqUrl = providerInfo.modifyUrl(providerInfo.api, googleStream ?? false) + const specialAnthropic = + providerInfo.format === "anthropic" && + (providerInfo.model.startsWith("arn:aws:bedrock:") || + providerInfo.model.startsWith("global.anthropic.") || + providerInfo.model.startsWith("databricks-claude-")) + if (providerInfo.format !== opts.format) throw new Error("Zen provider format must match request format") + if (providerInfo.payloadModifier) throw new Error("Zen provider payload modifiers are incompatible with streaming") + if (specialAnthropic) throw new Error("Anthropic provider body modifiers are incompatible with streaming") + const prepared = requestBody + + const reqBody = (() => { + if (opts.format === "google") return body + if (!prepared) throw new Error("Missing prepared request body") + return prepared.stream(providerInfo.model, providerInfo.format === "oa-compat") })() - const reqBody = - directBody ?? - JSON.stringify( - providerInfo.modifyBody({ - ...createBodyConverter(opts.format, providerInfo.format)(JSON.parse(body)), - model: providerInfo.model, - ...(() => { - const replacer = (obj: Record): Record => - Object.fromEntries( - Object.entries(obj).flatMap(([k, v]) => { - if (Array.isArray(v)) return [[k, v]] - if (typeof v === "object") return [[k, replacer(v)]] - if (typeof v === "string") { - if (v === "$workspace") return authInfo?.workspaceID ? [[k, authInfo.workspaceID]] : [] - if (v === "$org") - return authInfo?.workspaceID ? [[k, authInfo.workspaceID.replace("wrk_", "org_")]] : [] - if (v === "$user") return stickyId ? [[k, stickyId]] : [] - if (v.startsWith("$header.")) { - const headerValue = input.request.headers.get(v.slice(8)) - return headerValue ? [[k, headerValue]] : [] - } - } - return [[k, v]] - }), - ) - return replacer(providerInfo.payloadModifier ?? {}) - })(), - }), - ) logger.debug("REQUEST URL: " + reqUrl) - logger.debug("REQUEST: " + reqBody.substring(0, 300) + "...") + logger.debug("REQUEST: " + (requestBody?.preview ?? "") + "...") const isNewInference = providerInfo.id.startsWith("console.") || providerInfo.id.startsWith("console-go.") || providerInfo.id.startsWith("inf.") || providerInfo.id.startsWith("inf-go.") - const res = await fetchWithRetryableStatus( - reqUrl, - { - method: "POST", - headers: (() => { - const headers = new Headers(input.request.headers) - providerInfo.modifyHeaders(headers, providerInfo.apiKey, stickyId) - Object.entries(providerInfo.headerModifier ?? {}).forEach(([k, v]) => { - if (v === "$ip") return headers.set(k, ip) - if (v === "$caller") return headers.set(k, stickyId) - if (v === "$session") return headers.set(k, sessionId) - if (v === "$model") return headers.set(k, model) - if (v === "$request") return headers.set(k, requestId) - if (v === "$project") return headers.set(k, projectId) - if (v === "$workspace") { - if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID) - return - } - if (v === "$org") { - if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID.replace("wrk_", "org_")) - return - } - headers.set(k, v) - }) - headers.delete("host") - headers.delete("content-length") - headers.delete("x-opencode-request") - if (!isNewInference) headers.delete("x-opencode-session") - headers.delete("x-opencode-project") - headers.delete("x-opencode-client") - return headers - })(), - body: reqBody, - // Propagate caller disconnects to the upstream provider request so - // abandoned Console requests do not leave orphaned inference work open. - signal: input.request.signal, - }, - { count: isNewInference ? MAX_RETRYABLE_STATUS_RETRIES : 0 }, - ) + const res = await fetch(reqUrl, { + method: "POST", + headers: (() => { + const headers = new Headers(input.request.headers) + providerInfo.modifyHeaders(headers, providerInfo.apiKey, stickyId) + Object.entries(providerInfo.headerModifier ?? {}).forEach(([k, v]) => { + if (v === "$ip") return headers.set(k, ip) + if (v === "$caller") return headers.set(k, stickyId) + if (v === "$session") return headers.set(k, sessionId) + if (v === "$model") return headers.set(k, model) + if (v === "$request") return headers.set(k, requestId) + if (v === "$project") return headers.set(k, projectId) + if (v === "$workspace") { + if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID) + return + } + if (v === "$org") { + if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID.replace("wrk_", "org_")) + return + } + headers.set(k, v) + }) + headers.delete("host") + headers.delete("content-length") + headers.delete("x-opencode-request") + if (!isNewInference) headers.delete("x-opencode-session") + headers.delete("x-opencode-project") + headers.delete("x-opencode-client") + return headers + })(), + body: reqBody, + // Propagate caller disconnects to the upstream provider request so + // abandoned Console requests do not leave orphaned inference work open. + signal: input.request.signal, + }) + const isStream = res.headers.get("content-type")?.toLowerCase().includes("text/event-stream") ?? false + logger.metric({ is_stream: isStream }) if (isNewInference) { const resEndpointId = res.headers.get("x-opencode-endpoint-id") @@ -305,29 +272,10 @@ export async function handler( }) } - // Try another provider => stop retrying if using fallback provider - if ( - //!isNewInference && - res.status !== 200 && - // ie. 400 error is usually provider error like malformed request - res.status !== 400 && - // ie. openai 404 error: Item with id 'msg_0ead8b004a3b165d0069436a6b6834819896da85b63b196a3f' not found. - !(modelInfo.id.startsWith("gpt-") && res.status === 404) && - // ie. cannot change codex model providers mid-session - modelInfo.stickyProvider !== "strict" && - modelInfo.fallbackProvider && - providerInfo.id !== modelInfo.fallbackProvider - ) { - return retriableRequest({ - excludeProviders: [...retry.excludeProviders, providerInfo.id], - retryCount: retry.retryCount + 1, - }) - } - - return { providerInfo, reqBody, res, startTimestamp } + return { providerInfo, res, startTimestamp, isStream } } - const { providerInfo, reqBody, res, startTimestamp } = await retriableRequest() + const { providerInfo, res, startTimestamp, isStream } = await providerRequest() // Store sticky provider if (res.status === 200) await stickyTracker?.set(providerInfo.id) @@ -483,6 +431,8 @@ export async function handler( headers: resHeaders, }) } catch (error: any) { + if (requestBody) void requestBody.cancel().catch(() => {}) + else void input.request.body?.cancel().catch(() => {}) // The caller disconnected before we finished. Because the outbound provider // request shares input.request.signal, an aborted caller surfaces here as an // AbortError. There is no client left to receive a body, so skip the error @@ -607,7 +557,6 @@ export async function handler( modelInfo: ModelInfo, stickyId: string, trialProviders: string[] | undefined, - retry: RetryOptions, stickyProviderId: string | undefined, modelTpmLimits: Record | undefined, modelTpsLimits: Record | undefined, @@ -634,14 +583,11 @@ export async function handler( })) } - // Use fallback provider if max retries reached const fallbackProvider = allProviders.find((provider) => provider.id === modelInfo.fallbackProvider) - if (retry.retryCount === MAX_FAILOVER_RETRIES) return fallbackProvider let topPriority = Infinity const providers = allProviders .filter((provider) => provider.weight !== 0) - .filter((provider) => !retry.excludeProviders.includes(provider.id)) .filter((provider) => { if (provider.budgetPriority === undefined) return true if (!providerBudget) return true @@ -1049,15 +995,6 @@ export async function handler( providerInfo.apiKey = authInfo.provider.credentials } - async function fetchWithRetryableStatus(url: string, options: RequestInit, retry = { count: 0 }) { - const res = await fetch(url, options) - if ([429, 529].includes(res.status) && retry.count < MAX_RETRYABLE_STATUS_RETRIES) { - await new Promise((resolve) => setTimeout(resolve, Math.pow(2, retry.count) * 500)) - return fetchWithRetryableStatus(url, options, { count: retry.count + 1 }) - } - return res - } - function calculateCost(modelInfo: ModelInfo, usageInfo: UsageInfo) { const { inputTokens, outputTokens, reasoningTokens, cacheReadTokens, cacheWrite5mTokens, cacheWrite1hTokens } = usageInfo diff --git a/packages/console/app/src/routes/zen/util/requestBody.ts b/packages/console/app/src/routes/zen/util/requestBody.ts new file mode 100644 index 000000000..7c9a13957 --- /dev/null +++ b/packages/console/app/src/routes/zen/util/requestBody.ts @@ -0,0 +1,184 @@ +const TAIL_LIMIT = 4 * 1024 +const encoder = new TextEncoder() + +export async function prepareRequestBody(body: ReadableStream) { + const reader = body.getReader() + const chunks: Uint8Array[] = [] + const decoder = new TextDecoder() + let text = "" + let done = false + let searchFrom = 0 + let match: RegExpExecArray | null = null + const pattern = /("model"\s*:\s*")([^"]+)"/g + + while (!done && !match) { + const next = await reader.read() + done = next.done + if (!next.value) continue + chunks.push(next.value) + text += decoder.decode(next.value, { stream: true }) + pattern.lastIndex = searchFrom + match = pattern.exec(text) + searchFrom = Math.max(0, text.length - 256) + } + if (done) { + text += decoder.decode() + if (!match) { + pattern.lastIndex = searchFrom + match = pattern.exec(text) + } + } + + const found = (() => { + if (!match) return + const start = utf8Length(text, match.index + match[1].length) + return { model: match[2], start, end: start + utf8Length(match[2], match[2].length) } + })() + const preview = text.substring(0, 300) + text = "" + match = null + let used = false + + return { + model: found?.model ?? "", + preview, + cancel: () => reader.cancel(), + stream(providerModel: string, includeUsage: boolean) { + if (used) throw new Error("Request body stream already consumed") + if (!found) throw new Error("Missing model field") + used = true + + const initial = replace(chunks, found.start, found.end, providerModel) + const output = passthrough(initial, reader, done) + if (!includeUsage) return output + return appendUsage(output) + }, + } +} + +function utf8Length(value: string, end: number) { + let length = 0 + for (let i = 0; i < end; i++) { + const code = value.charCodeAt(i) + if (code <= 0x7f) length++ + else if (code <= 0x7ff) length += 2 + else if (code >= 0xd800 && code <= 0xdbff && i + 1 < end && value.charCodeAt(i + 1) >= 0xdc00) { + length += 4 + i++ + } else length += 3 + } + return length +} + +function replace(chunks: Uint8Array[], start: number, end: number, value: string) { + let offset = 0 + let inserted = false + return chunks.flatMap((chunk) => { + const chunkStart = offset + const chunkEnd = offset + chunk.length + offset = chunkEnd + if (chunkEnd <= start || chunkStart >= end) return [chunk] + + const parts = [chunk.subarray(0, Math.max(0, start - chunkStart))] + if (!inserted) { + parts.push(encoder.encode(value)) + inserted = true + } + parts.push(chunk.subarray(Math.min(chunk.length, end - chunkStart))) + return parts.filter((part) => part.length) + }) +} + +function passthrough( + initial: Uint8Array[], + reader: ReadableStreamDefaultReader, + sourceDone: boolean, +) { + let done = sourceDone + return new ReadableStream({ + async pull(controller) { + const chunk = initial.shift() + if (chunk) { + controller.enqueue(chunk) + return + } + if (done) { + controller.close() + return + } + const next = await reader.read() + done = next.done + if (next.value) controller.enqueue(next.value) + if (done) controller.close() + }, + cancel(reason) { + return reader.cancel(reason) + }, + }) +} + +function appendUsage(body: ReadableStream) { + const reader = body.getReader() + const decoder = new TextDecoder() + let tail = new Uint8Array() + let streamText = "" + let isStream = false + const inspect = (chunk?: Uint8Array) => { + streamText += chunk ? decoder.decode(chunk, { stream: true }) : decoder.decode() + for (const match of streamText.matchAll(/"stream"\s*:\s*(true|false)/g)) isStream = match[1] === "true" + streamText = streamText.slice(-64) + } + return new ReadableStream({ + async pull(controller) { + while (true) { + const next = await reader.read() + if (next.done) { + inspect() + if (!isStream) { + if (tail.length) controller.enqueue(tail) + controller.close() + return + } + const close = tail.lastIndexOf(125) + if (close < 0) { + controller.error(new Error("Invalid JSON request body")) + return + } + if (close) controller.enqueue(tail.subarray(0, close)) + controller.enqueue(encoder.encode(',"stream_options":{"include_usage":true}}')) + if (close + 1 < tail.length) controller.enqueue(tail.subarray(close + 1)) + controller.close() + return + } + + const chunk = next.value + inspect(chunk) + if (tail.length + chunk.length <= TAIL_LIMIT) { + const combined = new Uint8Array(tail.length + chunk.length) + combined.set(tail) + combined.set(chunk, tail.length) + tail = combined + continue + } + + const emit = tail.length + chunk.length - TAIL_LIMIT + if (emit <= tail.length) { + controller.enqueue(tail.subarray(0, emit)) + const combined = new Uint8Array(TAIL_LIMIT) + combined.set(tail.subarray(emit)) + combined.set(chunk, tail.length - emit) + tail = combined + return + } + + if (tail.length) controller.enqueue(tail) + controller.enqueue(chunk.subarray(0, emit - tail.length)) + tail = chunk.slice(emit - tail.length) + return + } + }, + cancel(reason) { + return reader.cancel(reason) + }, + }) +} diff --git a/packages/console/app/test/requestBody.test.ts b/packages/console/app/test/requestBody.test.ts new file mode 100644 index 000000000..23ed648e1 --- /dev/null +++ b/packages/console/app/test/requestBody.test.ts @@ -0,0 +1,109 @@ +import { describe, expect, test } from "bun:test" +import { prepareRequestBody } from "../src/routes/zen/util/requestBody" + +describe("Zen request body streaming", () => { + test("patches the leading model without buffering the remaining body", async () => { + let reads = 0 + const body = new ReadableStream( + { + pull(controller) { + const chunks = [ + '{"model":"client-model","stream":true,"messages":[', + JSON.stringify({ role: "user", content: "large payload" }), + "]}", + ] + const chunk = chunks[reads++] + if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) + else controller.close() + }, + }, + { highWaterMark: 0 }, + ) + + const request = await prepareRequestBody(body) + expect(request.model).toBe("client-model") + expect(reads).toBe(1) + + const output = await new Response(request.stream("provider-model", false)).text() + expect(JSON.parse(output)).toEqual({ + model: "provider-model", + stream: true, + messages: [{ role: "user", content: "large payload" }], + }) + }) + + test("appends stream usage options at the end of the request", async () => { + const body = new Blob(['{"model":"client-model","stream":true,"messages":[]} ']).stream() + const request = await prepareRequestBody(body) + const output = await new Response(request.stream("provider-model", true)).text() + + expect(JSON.parse(output)).toEqual({ + model: "provider-model", + stream: true, + messages: [], + stream_options: { include_usage: true }, + }) + expect(output.endsWith(" ")).toBe(true) + }) + + test("detects streaming after a large message while forwarding", async () => { + const content = "x".repeat(128 * 1024) + let reads = 0 + const chunks = [ + '{"model":"client-model","messages":[', + JSON.stringify({ role: "user", content }), + '],"stream":true}', + ] + const body = new ReadableStream( + { + pull(controller) { + const chunk = chunks[reads++] + if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) + else controller.close() + }, + }, + { highWaterMark: 0 }, + ) + const request = await prepareRequestBody(body) + expect(reads).toBe(1) + const output = await new Response(request.stream("provider-model", true)).text() + + expect(JSON.parse(output)).toEqual({ + model: "provider-model", + messages: [{ role: "user", content }], + stream: true, + stream_options: { include_usage: true }, + }) + }) + + test("buffers through a late model field and then streams the rest", async () => { + const content = "こんにちは".repeat(32 * 1024) + let reads = 0 + const chunks = [ + '{"messages":[', + JSON.stringify({ role: "user", content }), + '],"model":"client-model","stream":true,"extra":"after-model"}', + ] + const body = new ReadableStream( + { + pull(controller) { + const chunk = chunks[reads++] + if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) + else controller.close() + }, + }, + { highWaterMark: 0 }, + ) + const request = await prepareRequestBody(body) + + expect(request.model).toBe("client-model") + expect(reads).toBe(3) + expect(JSON.parse(await new Response(request.stream("provider-model", true)).text())).toEqual({ + messages: [{ role: "user", content }], + model: "provider-model", + stream: true, + extra: "after-model", + stream_options: { include_usage: true }, + }) + }) +}) From c11c41bd86fd28b832372fb29ff1cd319e27c03d Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Sun, 23 Aug 2026 16:48:45 +0000 Subject: [PATCH 117/271] chore: generate --- packages/console/app/src/routes/zen/util/handler.ts | 13 ++++--------- .../console/app/src/routes/zen/util/requestBody.ts | 6 +----- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 1853f5ea8..b0b502b9b 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -28,12 +28,7 @@ import { GoUsageLimitError, BlackUsageLimitError, } from "./error" -import { - buildCostChunk, - createStreamPartConverter, - createResponseConverter, - UsageInfo, -} from "./provider/provider" +import { buildCostChunk, createStreamPartConverter, createResponseConverter, UsageInfo } from "./provider/provider" import { anthropicHelper } from "./provider/anthropic" import { googleHelper } from "./provider/google" import { openaiHelper } from "./provider/openai" @@ -97,8 +92,7 @@ export async function handler( const body = input.request.body if (!body) throw new Error("Missing request body") requestBody = opts.format === "google" ? undefined : await prepareRequestBody(body) - const model = - opts.format === "google" ? opts.parseModel(url, undefined) : (requestBody?.model ?? "") + const model = opts.format === "google" ? opts.parseModel(url, undefined) : (requestBody?.model ?? "") const googleStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : undefined const rawIp = input.request.headers.get("x-real-ip") ?? "" const ip = rawIp.includes(":") ? rawIp.split(":").slice(0, 4).join(":") : rawIp @@ -201,7 +195,8 @@ export async function handler( providerInfo.model.startsWith("global.anthropic.") || providerInfo.model.startsWith("databricks-claude-")) if (providerInfo.format !== opts.format) throw new Error("Zen provider format must match request format") - if (providerInfo.payloadModifier) throw new Error("Zen provider payload modifiers are incompatible with streaming") + if (providerInfo.payloadModifier) + throw new Error("Zen provider payload modifiers are incompatible with streaming") if (specialAnthropic) throw new Error("Anthropic provider body modifiers are incompatible with streaming") const prepared = requestBody diff --git a/packages/console/app/src/routes/zen/util/requestBody.ts b/packages/console/app/src/routes/zen/util/requestBody.ts index 7c9a13957..d959f8f5a 100644 --- a/packages/console/app/src/routes/zen/util/requestBody.ts +++ b/packages/console/app/src/routes/zen/util/requestBody.ts @@ -89,11 +89,7 @@ function replace(chunks: Uint8Array[], start: number, end: number, value: string }) } -function passthrough( - initial: Uint8Array[], - reader: ReadableStreamDefaultReader, - sourceDone: boolean, -) { +function passthrough(initial: Uint8Array[], reader: ReadableStreamDefaultReader, sourceDone: boolean) { let done = sourceDone return new ReadableStream({ async pull(controller) { From dd3f915956fdf28e732152dd6ca305d0ac018a4b Mon Sep 17 00:00:00 2001 From: Dax Date: Sun, 23 Aug 2026 12:50:18 -0400 Subject: [PATCH 118/271] fix(console): release streamed zen prefixes (#44465) --- .../console/app/src/routes/zen/util/requestBody.ts | 13 ++++++++++--- packages/console/app/test/requestBody.test.ts | 13 +++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/requestBody.ts b/packages/console/app/src/routes/zen/util/requestBody.ts index d959f8f5a..3e4f4507a 100644 --- a/packages/console/app/src/routes/zen/util/requestBody.ts +++ b/packages/console/app/src/routes/zen/util/requestBody.ts @@ -8,6 +8,7 @@ export async function prepareRequestBody(body: ReadableStream) { let text = "" let done = false let searchFrom = 0 + let bom = 0 let match: RegExpExecArray | null = null const pattern = /("model"\s*:\s*")([^"]+)"/g @@ -15,6 +16,7 @@ export async function prepareRequestBody(body: ReadableStream) { const next = await reader.read() done = next.done if (!next.value) continue + if (!chunks.length && next.value[0] === 0xef && next.value[1] === 0xbb && next.value[2] === 0xbf) bom = 3 chunks.push(next.value) text += decoder.decode(next.value, { stream: true }) pattern.lastIndex = searchFrom @@ -31,7 +33,7 @@ export async function prepareRequestBody(body: ReadableStream) { const found = (() => { if (!match) return - const start = utf8Length(text, match.index + match[1].length) + const start = bom + utf8Length(text, match.index + match[1].length) return { model: match[2], start, end: start + utf8Length(match[2], match[2].length) } })() const preview = text.substring(0, 300) @@ -49,6 +51,7 @@ export async function prepareRequestBody(body: ReadableStream) { used = true const initial = replace(chunks, found.start, found.end, providerModel) + chunks.length = 0 const output = passthrough(initial, reader, done) if (!includeUsage) return output return appendUsage(output) @@ -89,15 +92,18 @@ function replace(chunks: Uint8Array[], start: number, end: number, value: string }) } -function passthrough(initial: Uint8Array[], reader: ReadableStreamDefaultReader, sourceDone: boolean) { +function passthrough(initial: Array, reader: ReadableStreamDefaultReader, sourceDone: boolean) { let done = sourceDone + let index = 0 return new ReadableStream({ async pull(controller) { - const chunk = initial.shift() + const chunk = initial[index] if (chunk) { + initial[index++] = undefined controller.enqueue(chunk) return } + initial.length = 0 if (done) { controller.close() return @@ -108,6 +114,7 @@ function passthrough(initial: Uint8Array[], reader: ReadableStreamDefaultReader< if (done) controller.close() }, cancel(reason) { + initial.length = 0 return reader.cancel(reason) }, }) diff --git a/packages/console/app/test/requestBody.test.ts b/packages/console/app/test/requestBody.test.ts index 23ed648e1..52d86297b 100644 --- a/packages/console/app/test/requestBody.test.ts +++ b/packages/console/app/test/requestBody.test.ts @@ -106,4 +106,17 @@ describe("Zen request body streaming", () => { stream_options: { include_usage: true }, }) }) + + test("preserves a UTF-8 BOM while patching the model", async () => { + const body = new Blob(['\uFEFF{"messages":[],"model":"client-model","stream":false}']).stream() + const request = await prepareRequestBody(body) + const output = new Uint8Array(await new Response(request.stream("provider-model", false)).arrayBuffer()) + + expect([...output.subarray(0, 3)]).toEqual([0xef, 0xbb, 0xbf]) + expect(JSON.parse(new TextDecoder().decode(output))).toEqual({ + messages: [], + model: "provider-model", + stream: false, + }) + }) }) From ca10088bdfcb2842865384af9a3796d955cf284c Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Sun, 23 Aug 2026 16:51:36 +0000 Subject: [PATCH 119/271] chore: generate --- packages/console/app/src/routes/zen/util/requestBody.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/console/app/src/routes/zen/util/requestBody.ts b/packages/console/app/src/routes/zen/util/requestBody.ts index 3e4f4507a..458faf553 100644 --- a/packages/console/app/src/routes/zen/util/requestBody.ts +++ b/packages/console/app/src/routes/zen/util/requestBody.ts @@ -92,7 +92,11 @@ function replace(chunks: Uint8Array[], start: number, end: number, value: string }) } -function passthrough(initial: Array, reader: ReadableStreamDefaultReader, sourceDone: boolean) { +function passthrough( + initial: Array, + reader: ReadableStreamDefaultReader, + sourceDone: boolean, +) { let done = sourceDone let index = 0 return new ReadableStream({ From b3bad6b5818f6f354812f337fef626a38017cb2b Mon Sep 17 00:00:00 2001 From: Dax Date: Sun, 23 Aug 2026 13:03:20 -0400 Subject: [PATCH 120/271] fix(console): revert scanned zen request streaming (#44470) --- .../app/src/routes/zen/util/handler.ts | 204 ++++++++++++------ .../app/src/routes/zen/util/requestBody.ts | 191 ---------------- packages/console/app/test/requestBody.test.ts | 122 ----------- 3 files changed, 136 insertions(+), 381 deletions(-) delete mode 100644 packages/console/app/src/routes/zen/util/requestBody.ts delete mode 100644 packages/console/app/test/requestBody.test.ts diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index b0b502b9b..92c5515a6 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -28,7 +28,13 @@ import { GoUsageLimitError, BlackUsageLimitError, } from "./error" -import { buildCostChunk, createStreamPartConverter, createResponseConverter, UsageInfo } from "./provider/provider" +import { + buildCostChunk, + createBodyConverter, + createStreamPartConverter, + createResponseConverter, + UsageInfo, +} from "./provider/provider" import { anthropicHelper } from "./provider/anthropic" import { googleHelper } from "./provider/google" import { openaiHelper } from "./provider/openai" @@ -47,10 +53,12 @@ import { createProviderBudgetTracker } from "./providerBudgetTracker" import { accumulateUsage, HOT_WORKSPACES } from "./usageBatcher" import { Workspace } from "@opencode-ai/console-core/workspace.js" import { countryFromRequest, isModelCountryRestricted } from "~/lib/request-country" -import { prepareRequestBody } from "./requestBody" type ZenData = Awaited> -type PreparedBody = Awaited> +type RetryOptions = { + excludeProviders: string[] + retryCount: number +} type BillingSource = "anonymous" | "free" | "byok" | "subscription" | "lite" | "balance" function resolve(text: string, params?: Record) { @@ -78,6 +86,8 @@ export async function handler( type ProviderInfo = Awaited> type CostInfo = ReturnType + const MAX_FAILOVER_RETRIES = 3 + const MAX_RETRYABLE_STATUS_RETRIES = 3 const dict = i18n(localeFromRequest(input.request)) const t = (key: Key, params?: Record) => resolve(dict[key], params) const ADMIN_WORKSPACES = [ @@ -86,14 +96,12 @@ export async function handler( "wrk_01KKZDKDWCS1VTJF8QTX62DD50", // contributors ] - let requestBody: PreparedBody | undefined try { const url = input.request.url - const body = input.request.body - if (!body) throw new Error("Missing request body") - requestBody = opts.format === "google" ? undefined : await prepareRequestBody(body) - const model = opts.format === "google" ? opts.parseModel(url, undefined) : (requestBody?.model ?? "") - const googleStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : undefined + const body = await input.request.text() + const model = + opts.format === "google" ? opts.parseModel(url, undefined) : (body.match(/"model"\s*:\s*"([^"]+)"/)?.[1] ?? "") + const isStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : /"stream"\s*:\s*true/.test(body) const rawIp = input.request.headers.get("x-real-ip") ?? "" const ip = rawIp.includes(":") ? rawIp.split(":").slice(0, 4).join(":") : rawIp const rawZenApiKey = opts.parseApiKey(input.request.headers) @@ -104,6 +112,7 @@ export async function handler( const projectId = input.request.headers.get("x-opencode-project") ?? "" const userAgent = input.request.headers.get("user-agent") ?? "" logger.metric({ + is_stream: isStream, session: sessionId, request: requestId, client: ocClient, @@ -165,7 +174,7 @@ export async function handler( ) const providerBudget = await providerBudgetTracker?.check() - const providerRequest = async () => { + const retriableRequest = async (retry: RetryOptions = { excludeProviders: [], retryCount: 0 }) => { const providerInfo = selectProvider( model, zenData, @@ -173,6 +182,7 @@ export async function handler( modelInfo, stickyId, trialProviders, + retry, stickyProvider, modelTpmLimits, modelTpsLimits, @@ -188,67 +198,95 @@ export async function handler( }) const startTimestamp = Date.now() - const reqUrl = providerInfo.modifyUrl(providerInfo.api, googleStream ?? false) - const specialAnthropic = - providerInfo.format === "anthropic" && - (providerInfo.model.startsWith("arn:aws:bedrock:") || - providerInfo.model.startsWith("global.anthropic.") || - providerInfo.model.startsWith("databricks-claude-")) - if (providerInfo.format !== opts.format) throw new Error("Zen provider format must match request format") - if (providerInfo.payloadModifier) - throw new Error("Zen provider payload modifiers are incompatible with streaming") - if (specialAnthropic) throw new Error("Anthropic provider body modifiers are incompatible with streaming") - const prepared = requestBody - - const reqBody = (() => { - if (opts.format === "google") return body - if (!prepared) throw new Error("Missing prepared request body") - return prepared.stream(providerInfo.model, providerInfo.format === "oa-compat") + const reqUrl = providerInfo.modifyUrl(providerInfo.api, isStream) + const directBody = (() => { + const specialAnthropic = + providerInfo.format === "anthropic" && + (providerInfo.model.startsWith("arn:aws:bedrock:") || + providerInfo.model.startsWith("global.anthropic.") || + providerInfo.model.startsWith("databricks-claude-")) + if (providerInfo.format === opts.format && !providerInfo.payloadModifier && !specialAnthropic) { + const patched = body.replace(/"model"\s*:\s*"[^"]+"/, `"model":${JSON.stringify(providerInfo.model)}`) + if (providerInfo.format !== "oa-compat" || !isStream) return patched + return patched.replace(/}\s*$/, ',"stream_options":{"include_usage":true}}') + } + return undefined })() + const reqBody = + directBody ?? + JSON.stringify( + providerInfo.modifyBody({ + ...createBodyConverter(opts.format, providerInfo.format)(JSON.parse(body)), + model: providerInfo.model, + ...(() => { + const replacer = (obj: Record): Record => + Object.fromEntries( + Object.entries(obj).flatMap(([k, v]) => { + if (Array.isArray(v)) return [[k, v]] + if (typeof v === "object") return [[k, replacer(v)]] + if (typeof v === "string") { + if (v === "$workspace") return authInfo?.workspaceID ? [[k, authInfo.workspaceID]] : [] + if (v === "$org") + return authInfo?.workspaceID ? [[k, authInfo.workspaceID.replace("wrk_", "org_")]] : [] + if (v === "$user") return stickyId ? [[k, stickyId]] : [] + if (v.startsWith("$header.")) { + const headerValue = input.request.headers.get(v.slice(8)) + return headerValue ? [[k, headerValue]] : [] + } + } + return [[k, v]] + }), + ) + return replacer(providerInfo.payloadModifier ?? {}) + })(), + }), + ) logger.debug("REQUEST URL: " + reqUrl) - logger.debug("REQUEST: " + (requestBody?.preview ?? "") + "...") + logger.debug("REQUEST: " + reqBody.substring(0, 300) + "...") const isNewInference = providerInfo.id.startsWith("console.") || providerInfo.id.startsWith("console-go.") || providerInfo.id.startsWith("inf.") || providerInfo.id.startsWith("inf-go.") - const res = await fetch(reqUrl, { - method: "POST", - headers: (() => { - const headers = new Headers(input.request.headers) - providerInfo.modifyHeaders(headers, providerInfo.apiKey, stickyId) - Object.entries(providerInfo.headerModifier ?? {}).forEach(([k, v]) => { - if (v === "$ip") return headers.set(k, ip) - if (v === "$caller") return headers.set(k, stickyId) - if (v === "$session") return headers.set(k, sessionId) - if (v === "$model") return headers.set(k, model) - if (v === "$request") return headers.set(k, requestId) - if (v === "$project") return headers.set(k, projectId) - if (v === "$workspace") { - if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID) - return - } - if (v === "$org") { - if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID.replace("wrk_", "org_")) - return - } - headers.set(k, v) - }) - headers.delete("host") - headers.delete("content-length") - headers.delete("x-opencode-request") - if (!isNewInference) headers.delete("x-opencode-session") - headers.delete("x-opencode-project") - headers.delete("x-opencode-client") - return headers - })(), - body: reqBody, - // Propagate caller disconnects to the upstream provider request so - // abandoned Console requests do not leave orphaned inference work open. - signal: input.request.signal, - }) - const isStream = res.headers.get("content-type")?.toLowerCase().includes("text/event-stream") ?? false - logger.metric({ is_stream: isStream }) + const res = await fetchWithRetryableStatus( + reqUrl, + { + method: "POST", + headers: (() => { + const headers = new Headers(input.request.headers) + providerInfo.modifyHeaders(headers, providerInfo.apiKey, stickyId) + Object.entries(providerInfo.headerModifier ?? {}).forEach(([k, v]) => { + if (v === "$ip") return headers.set(k, ip) + if (v === "$caller") return headers.set(k, stickyId) + if (v === "$session") return headers.set(k, sessionId) + if (v === "$model") return headers.set(k, model) + if (v === "$request") return headers.set(k, requestId) + if (v === "$project") return headers.set(k, projectId) + if (v === "$workspace") { + if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID) + return + } + if (v === "$org") { + if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID.replace("wrk_", "org_")) + return + } + headers.set(k, v) + }) + headers.delete("host") + headers.delete("content-length") + headers.delete("x-opencode-request") + if (!isNewInference) headers.delete("x-opencode-session") + headers.delete("x-opencode-project") + headers.delete("x-opencode-client") + return headers + })(), + body: reqBody, + // Propagate caller disconnects to the upstream provider request so + // abandoned Console requests do not leave orphaned inference work open. + signal: input.request.signal, + }, + { count: isNewInference ? MAX_RETRYABLE_STATUS_RETRIES : 0 }, + ) if (isNewInference) { const resEndpointId = res.headers.get("x-opencode-endpoint-id") @@ -267,10 +305,29 @@ export async function handler( }) } - return { providerInfo, res, startTimestamp, isStream } + // Try another provider => stop retrying if using fallback provider + if ( + //!isNewInference && + res.status !== 200 && + // ie. 400 error is usually provider error like malformed request + res.status !== 400 && + // ie. openai 404 error: Item with id 'msg_0ead8b004a3b165d0069436a6b6834819896da85b63b196a3f' not found. + !(modelInfo.id.startsWith("gpt-") && res.status === 404) && + // ie. cannot change codex model providers mid-session + modelInfo.stickyProvider !== "strict" && + modelInfo.fallbackProvider && + providerInfo.id !== modelInfo.fallbackProvider + ) { + return retriableRequest({ + excludeProviders: [...retry.excludeProviders, providerInfo.id], + retryCount: retry.retryCount + 1, + }) + } + + return { providerInfo, reqBody, res, startTimestamp } } - const { providerInfo, res, startTimestamp, isStream } = await providerRequest() + const { providerInfo, reqBody, res, startTimestamp } = await retriableRequest() // Store sticky provider if (res.status === 200) await stickyTracker?.set(providerInfo.id) @@ -426,8 +483,6 @@ export async function handler( headers: resHeaders, }) } catch (error: any) { - if (requestBody) void requestBody.cancel().catch(() => {}) - else void input.request.body?.cancel().catch(() => {}) // The caller disconnected before we finished. Because the outbound provider // request shares input.request.signal, an aborted caller surfaces here as an // AbortError. There is no client left to receive a body, so skip the error @@ -552,6 +607,7 @@ export async function handler( modelInfo: ModelInfo, stickyId: string, trialProviders: string[] | undefined, + retry: RetryOptions, stickyProviderId: string | undefined, modelTpmLimits: Record | undefined, modelTpsLimits: Record | undefined, @@ -578,11 +634,14 @@ export async function handler( })) } + // Use fallback provider if max retries reached const fallbackProvider = allProviders.find((provider) => provider.id === modelInfo.fallbackProvider) + if (retry.retryCount === MAX_FAILOVER_RETRIES) return fallbackProvider let topPriority = Infinity const providers = allProviders .filter((provider) => provider.weight !== 0) + .filter((provider) => !retry.excludeProviders.includes(provider.id)) .filter((provider) => { if (provider.budgetPriority === undefined) return true if (!providerBudget) return true @@ -990,6 +1049,15 @@ export async function handler( providerInfo.apiKey = authInfo.provider.credentials } + async function fetchWithRetryableStatus(url: string, options: RequestInit, retry = { count: 0 }) { + const res = await fetch(url, options) + if ([429, 529].includes(res.status) && retry.count < MAX_RETRYABLE_STATUS_RETRIES) { + await new Promise((resolve) => setTimeout(resolve, Math.pow(2, retry.count) * 500)) + return fetchWithRetryableStatus(url, options, { count: retry.count + 1 }) + } + return res + } + function calculateCost(modelInfo: ModelInfo, usageInfo: UsageInfo) { const { inputTokens, outputTokens, reasoningTokens, cacheReadTokens, cacheWrite5mTokens, cacheWrite1hTokens } = usageInfo diff --git a/packages/console/app/src/routes/zen/util/requestBody.ts b/packages/console/app/src/routes/zen/util/requestBody.ts deleted file mode 100644 index 458faf553..000000000 --- a/packages/console/app/src/routes/zen/util/requestBody.ts +++ /dev/null @@ -1,191 +0,0 @@ -const TAIL_LIMIT = 4 * 1024 -const encoder = new TextEncoder() - -export async function prepareRequestBody(body: ReadableStream) { - const reader = body.getReader() - const chunks: Uint8Array[] = [] - const decoder = new TextDecoder() - let text = "" - let done = false - let searchFrom = 0 - let bom = 0 - let match: RegExpExecArray | null = null - const pattern = /("model"\s*:\s*")([^"]+)"/g - - while (!done && !match) { - const next = await reader.read() - done = next.done - if (!next.value) continue - if (!chunks.length && next.value[0] === 0xef && next.value[1] === 0xbb && next.value[2] === 0xbf) bom = 3 - chunks.push(next.value) - text += decoder.decode(next.value, { stream: true }) - pattern.lastIndex = searchFrom - match = pattern.exec(text) - searchFrom = Math.max(0, text.length - 256) - } - if (done) { - text += decoder.decode() - if (!match) { - pattern.lastIndex = searchFrom - match = pattern.exec(text) - } - } - - const found = (() => { - if (!match) return - const start = bom + utf8Length(text, match.index + match[1].length) - return { model: match[2], start, end: start + utf8Length(match[2], match[2].length) } - })() - const preview = text.substring(0, 300) - text = "" - match = null - let used = false - - return { - model: found?.model ?? "", - preview, - cancel: () => reader.cancel(), - stream(providerModel: string, includeUsage: boolean) { - if (used) throw new Error("Request body stream already consumed") - if (!found) throw new Error("Missing model field") - used = true - - const initial = replace(chunks, found.start, found.end, providerModel) - chunks.length = 0 - const output = passthrough(initial, reader, done) - if (!includeUsage) return output - return appendUsage(output) - }, - } -} - -function utf8Length(value: string, end: number) { - let length = 0 - for (let i = 0; i < end; i++) { - const code = value.charCodeAt(i) - if (code <= 0x7f) length++ - else if (code <= 0x7ff) length += 2 - else if (code >= 0xd800 && code <= 0xdbff && i + 1 < end && value.charCodeAt(i + 1) >= 0xdc00) { - length += 4 - i++ - } else length += 3 - } - return length -} - -function replace(chunks: Uint8Array[], start: number, end: number, value: string) { - let offset = 0 - let inserted = false - return chunks.flatMap((chunk) => { - const chunkStart = offset - const chunkEnd = offset + chunk.length - offset = chunkEnd - if (chunkEnd <= start || chunkStart >= end) return [chunk] - - const parts = [chunk.subarray(0, Math.max(0, start - chunkStart))] - if (!inserted) { - parts.push(encoder.encode(value)) - inserted = true - } - parts.push(chunk.subarray(Math.min(chunk.length, end - chunkStart))) - return parts.filter((part) => part.length) - }) -} - -function passthrough( - initial: Array, - reader: ReadableStreamDefaultReader, - sourceDone: boolean, -) { - let done = sourceDone - let index = 0 - return new ReadableStream({ - async pull(controller) { - const chunk = initial[index] - if (chunk) { - initial[index++] = undefined - controller.enqueue(chunk) - return - } - initial.length = 0 - if (done) { - controller.close() - return - } - const next = await reader.read() - done = next.done - if (next.value) controller.enqueue(next.value) - if (done) controller.close() - }, - cancel(reason) { - initial.length = 0 - return reader.cancel(reason) - }, - }) -} - -function appendUsage(body: ReadableStream) { - const reader = body.getReader() - const decoder = new TextDecoder() - let tail = new Uint8Array() - let streamText = "" - let isStream = false - const inspect = (chunk?: Uint8Array) => { - streamText += chunk ? decoder.decode(chunk, { stream: true }) : decoder.decode() - for (const match of streamText.matchAll(/"stream"\s*:\s*(true|false)/g)) isStream = match[1] === "true" - streamText = streamText.slice(-64) - } - return new ReadableStream({ - async pull(controller) { - while (true) { - const next = await reader.read() - if (next.done) { - inspect() - if (!isStream) { - if (tail.length) controller.enqueue(tail) - controller.close() - return - } - const close = tail.lastIndexOf(125) - if (close < 0) { - controller.error(new Error("Invalid JSON request body")) - return - } - if (close) controller.enqueue(tail.subarray(0, close)) - controller.enqueue(encoder.encode(',"stream_options":{"include_usage":true}}')) - if (close + 1 < tail.length) controller.enqueue(tail.subarray(close + 1)) - controller.close() - return - } - - const chunk = next.value - inspect(chunk) - if (tail.length + chunk.length <= TAIL_LIMIT) { - const combined = new Uint8Array(tail.length + chunk.length) - combined.set(tail) - combined.set(chunk, tail.length) - tail = combined - continue - } - - const emit = tail.length + chunk.length - TAIL_LIMIT - if (emit <= tail.length) { - controller.enqueue(tail.subarray(0, emit)) - const combined = new Uint8Array(TAIL_LIMIT) - combined.set(tail.subarray(emit)) - combined.set(chunk, tail.length - emit) - tail = combined - return - } - - if (tail.length) controller.enqueue(tail) - controller.enqueue(chunk.subarray(0, emit - tail.length)) - tail = chunk.slice(emit - tail.length) - return - } - }, - cancel(reason) { - return reader.cancel(reason) - }, - }) -} diff --git a/packages/console/app/test/requestBody.test.ts b/packages/console/app/test/requestBody.test.ts deleted file mode 100644 index 52d86297b..000000000 --- a/packages/console/app/test/requestBody.test.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { describe, expect, test } from "bun:test" -import { prepareRequestBody } from "../src/routes/zen/util/requestBody" - -describe("Zen request body streaming", () => { - test("patches the leading model without buffering the remaining body", async () => { - let reads = 0 - const body = new ReadableStream( - { - pull(controller) { - const chunks = [ - '{"model":"client-model","stream":true,"messages":[', - JSON.stringify({ role: "user", content: "large payload" }), - "]}", - ] - const chunk = chunks[reads++] - if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) - else controller.close() - }, - }, - { highWaterMark: 0 }, - ) - - const request = await prepareRequestBody(body) - expect(request.model).toBe("client-model") - expect(reads).toBe(1) - - const output = await new Response(request.stream("provider-model", false)).text() - expect(JSON.parse(output)).toEqual({ - model: "provider-model", - stream: true, - messages: [{ role: "user", content: "large payload" }], - }) - }) - - test("appends stream usage options at the end of the request", async () => { - const body = new Blob(['{"model":"client-model","stream":true,"messages":[]} ']).stream() - const request = await prepareRequestBody(body) - const output = await new Response(request.stream("provider-model", true)).text() - - expect(JSON.parse(output)).toEqual({ - model: "provider-model", - stream: true, - messages: [], - stream_options: { include_usage: true }, - }) - expect(output.endsWith(" ")).toBe(true) - }) - - test("detects streaming after a large message while forwarding", async () => { - const content = "x".repeat(128 * 1024) - let reads = 0 - const chunks = [ - '{"model":"client-model","messages":[', - JSON.stringify({ role: "user", content }), - '],"stream":true}', - ] - const body = new ReadableStream( - { - pull(controller) { - const chunk = chunks[reads++] - if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) - else controller.close() - }, - }, - { highWaterMark: 0 }, - ) - const request = await prepareRequestBody(body) - expect(reads).toBe(1) - const output = await new Response(request.stream("provider-model", true)).text() - - expect(JSON.parse(output)).toEqual({ - model: "provider-model", - messages: [{ role: "user", content }], - stream: true, - stream_options: { include_usage: true }, - }) - }) - - test("buffers through a late model field and then streams the rest", async () => { - const content = "こんにちは".repeat(32 * 1024) - let reads = 0 - const chunks = [ - '{"messages":[', - JSON.stringify({ role: "user", content }), - '],"model":"client-model","stream":true,"extra":"after-model"}', - ] - const body = new ReadableStream( - { - pull(controller) { - const chunk = chunks[reads++] - if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) - else controller.close() - }, - }, - { highWaterMark: 0 }, - ) - const request = await prepareRequestBody(body) - - expect(request.model).toBe("client-model") - expect(reads).toBe(3) - expect(JSON.parse(await new Response(request.stream("provider-model", true)).text())).toEqual({ - messages: [{ role: "user", content }], - model: "provider-model", - stream: true, - extra: "after-model", - stream_options: { include_usage: true }, - }) - }) - - test("preserves a UTF-8 BOM while patching the model", async () => { - const body = new Blob(['\uFEFF{"messages":[],"model":"client-model","stream":false}']).stream() - const request = await prepareRequestBody(body) - const output = new Uint8Array(await new Response(request.stream("provider-model", false)).arrayBuffer()) - - expect([...output.subarray(0, 3)]).toEqual([0xef, 0xbb, 0xbf]) - expect(JSON.parse(new TextDecoder().decode(output))).toEqual({ - messages: [], - model: "provider-model", - stream: false, - }) - }) -}) From 63a883a4f770c5b8c7f8a9d37ac99718ef3b03c9 Mon Sep 17 00:00:00 2001 From: Dax Date: Sun, 23 Aug 2026 13:14:18 -0400 Subject: [PATCH 121/271] refactor(console): stream zen bodies without modifiers (#44472) --- .../app/src/routes/zen/util/handler.ts | 194 ++++++------------ .../app/src/routes/zen/util/requestBody.ts | 191 +++++++++++++++++ packages/console/app/test/requestBody.test.ts | 122 +++++++++++ 3 files changed, 378 insertions(+), 129 deletions(-) create mode 100644 packages/console/app/src/routes/zen/util/requestBody.ts create mode 100644 packages/console/app/test/requestBody.test.ts diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 92c5515a6..cd7e795f5 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -30,7 +30,6 @@ import { } from "./error" import { buildCostChunk, - createBodyConverter, createStreamPartConverter, createResponseConverter, UsageInfo, @@ -53,12 +52,10 @@ import { createProviderBudgetTracker } from "./providerBudgetTracker" import { accumulateUsage, HOT_WORKSPACES } from "./usageBatcher" import { Workspace } from "@opencode-ai/console-core/workspace.js" import { countryFromRequest, isModelCountryRestricted } from "~/lib/request-country" +import { prepareRequestBody } from "./requestBody" type ZenData = Awaited> -type RetryOptions = { - excludeProviders: string[] - retryCount: number -} +type PreparedBody = Awaited> type BillingSource = "anonymous" | "free" | "byok" | "subscription" | "lite" | "balance" function resolve(text: string, params?: Record) { @@ -86,8 +83,6 @@ export async function handler( type ProviderInfo = Awaited> type CostInfo = ReturnType - const MAX_FAILOVER_RETRIES = 3 - const MAX_RETRYABLE_STATUS_RETRIES = 3 const dict = i18n(localeFromRequest(input.request)) const t = (key: Key, params?: Record) => resolve(dict[key], params) const ADMIN_WORKSPACES = [ @@ -96,12 +91,15 @@ export async function handler( "wrk_01KKZDKDWCS1VTJF8QTX62DD50", // contributors ] + let requestBody: PreparedBody | undefined try { const url = input.request.url - const body = await input.request.text() + const body = input.request.body + if (!body) throw new Error("Missing request body") + requestBody = opts.format === "google" ? undefined : await prepareRequestBody(body) const model = - opts.format === "google" ? opts.parseModel(url, undefined) : (body.match(/"model"\s*:\s*"([^"]+)"/)?.[1] ?? "") - const isStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : /"stream"\s*:\s*true/.test(body) + opts.format === "google" ? opts.parseModel(url, undefined) : (requestBody?.model ?? "") + const googleStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : undefined const rawIp = input.request.headers.get("x-real-ip") ?? "" const ip = rawIp.includes(":") ? rawIp.split(":").slice(0, 4).join(":") : rawIp const rawZenApiKey = opts.parseApiKey(input.request.headers) @@ -112,7 +110,6 @@ export async function handler( const projectId = input.request.headers.get("x-opencode-project") ?? "" const userAgent = input.request.headers.get("user-agent") ?? "" logger.metric({ - is_stream: isStream, session: sessionId, request: requestId, client: ocClient, @@ -174,7 +171,7 @@ export async function handler( ) const providerBudget = await providerBudgetTracker?.check() - const retriableRequest = async (retry: RetryOptions = { excludeProviders: [], retryCount: 0 }) => { + const providerRequest = async () => { const providerInfo = selectProvider( model, zenData, @@ -182,7 +179,6 @@ export async function handler( modelInfo, stickyId, trialProviders, - retry, stickyProvider, modelTpmLimits, modelTpsLimits, @@ -198,95 +194,65 @@ export async function handler( }) const startTimestamp = Date.now() - const reqUrl = providerInfo.modifyUrl(providerInfo.api, isStream) - const directBody = (() => { - const specialAnthropic = - providerInfo.format === "anthropic" && - (providerInfo.model.startsWith("arn:aws:bedrock:") || - providerInfo.model.startsWith("global.anthropic.") || - providerInfo.model.startsWith("databricks-claude-")) - if (providerInfo.format === opts.format && !providerInfo.payloadModifier && !specialAnthropic) { - const patched = body.replace(/"model"\s*:\s*"[^"]+"/, `"model":${JSON.stringify(providerInfo.model)}`) - if (providerInfo.format !== "oa-compat" || !isStream) return patched - return patched.replace(/}\s*$/, ',"stream_options":{"include_usage":true}}') - } - return undefined + const reqUrl = providerInfo.modifyUrl(providerInfo.api, googleStream ?? false) + const specialAnthropic = + providerInfo.format === "anthropic" && + (providerInfo.model.startsWith("arn:aws:bedrock:") || + providerInfo.model.startsWith("global.anthropic.") || + providerInfo.model.startsWith("databricks-claude-")) + if (providerInfo.format !== opts.format) throw new Error("Zen provider format must match request format") + if (specialAnthropic) throw new Error("Anthropic provider body modifiers are incompatible with streaming") + const prepared = requestBody + + const reqBody = (() => { + if (opts.format === "google") return body + if (!prepared) throw new Error("Missing prepared request body") + return prepared.stream(providerInfo.model, providerInfo.format === "oa-compat") })() - const reqBody = - directBody ?? - JSON.stringify( - providerInfo.modifyBody({ - ...createBodyConverter(opts.format, providerInfo.format)(JSON.parse(body)), - model: providerInfo.model, - ...(() => { - const replacer = (obj: Record): Record => - Object.fromEntries( - Object.entries(obj).flatMap(([k, v]) => { - if (Array.isArray(v)) return [[k, v]] - if (typeof v === "object") return [[k, replacer(v)]] - if (typeof v === "string") { - if (v === "$workspace") return authInfo?.workspaceID ? [[k, authInfo.workspaceID]] : [] - if (v === "$org") - return authInfo?.workspaceID ? [[k, authInfo.workspaceID.replace("wrk_", "org_")]] : [] - if (v === "$user") return stickyId ? [[k, stickyId]] : [] - if (v.startsWith("$header.")) { - const headerValue = input.request.headers.get(v.slice(8)) - return headerValue ? [[k, headerValue]] : [] - } - } - return [[k, v]] - }), - ) - return replacer(providerInfo.payloadModifier ?? {}) - })(), - }), - ) logger.debug("REQUEST URL: " + reqUrl) - logger.debug("REQUEST: " + reqBody.substring(0, 300) + "...") + logger.debug("REQUEST: " + (requestBody?.preview ?? "") + "...") const isNewInference = providerInfo.id.startsWith("console.") || providerInfo.id.startsWith("console-go.") || providerInfo.id.startsWith("inf.") || providerInfo.id.startsWith("inf-go.") - const res = await fetchWithRetryableStatus( - reqUrl, - { - method: "POST", - headers: (() => { - const headers = new Headers(input.request.headers) - providerInfo.modifyHeaders(headers, providerInfo.apiKey, stickyId) - Object.entries(providerInfo.headerModifier ?? {}).forEach(([k, v]) => { - if (v === "$ip") return headers.set(k, ip) - if (v === "$caller") return headers.set(k, stickyId) - if (v === "$session") return headers.set(k, sessionId) - if (v === "$model") return headers.set(k, model) - if (v === "$request") return headers.set(k, requestId) - if (v === "$project") return headers.set(k, projectId) - if (v === "$workspace") { - if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID) - return - } - if (v === "$org") { - if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID.replace("wrk_", "org_")) - return - } - headers.set(k, v) - }) - headers.delete("host") - headers.delete("content-length") - headers.delete("x-opencode-request") - if (!isNewInference) headers.delete("x-opencode-session") - headers.delete("x-opencode-project") - headers.delete("x-opencode-client") - return headers - })(), - body: reqBody, - // Propagate caller disconnects to the upstream provider request so - // abandoned Console requests do not leave orphaned inference work open. - signal: input.request.signal, - }, - { count: isNewInference ? MAX_RETRYABLE_STATUS_RETRIES : 0 }, - ) + const res = await fetch(reqUrl, { + method: "POST", + headers: (() => { + const headers = new Headers(input.request.headers) + providerInfo.modifyHeaders(headers, providerInfo.apiKey, stickyId) + Object.entries(providerInfo.headerModifier ?? {}).forEach(([k, v]) => { + if (v === "$ip") return headers.set(k, ip) + if (v === "$caller") return headers.set(k, stickyId) + if (v === "$session") return headers.set(k, sessionId) + if (v === "$model") return headers.set(k, model) + if (v === "$request") return headers.set(k, requestId) + if (v === "$project") return headers.set(k, projectId) + if (v === "$workspace") { + if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID) + return + } + if (v === "$org") { + if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID.replace("wrk_", "org_")) + return + } + headers.set(k, v) + }) + headers.delete("host") + headers.delete("content-length") + headers.delete("x-opencode-request") + if (!isNewInference) headers.delete("x-opencode-session") + headers.delete("x-opencode-project") + headers.delete("x-opencode-client") + return headers + })(), + body: reqBody, + // Propagate caller disconnects to the upstream provider request so + // abandoned Console requests do not leave orphaned inference work open. + signal: input.request.signal, + }) + const isStream = res.headers.get("content-type")?.toLowerCase().includes("text/event-stream") ?? false + logger.metric({ is_stream: isStream }) if (isNewInference) { const resEndpointId = res.headers.get("x-opencode-endpoint-id") @@ -305,29 +271,10 @@ export async function handler( }) } - // Try another provider => stop retrying if using fallback provider - if ( - //!isNewInference && - res.status !== 200 && - // ie. 400 error is usually provider error like malformed request - res.status !== 400 && - // ie. openai 404 error: Item with id 'msg_0ead8b004a3b165d0069436a6b6834819896da85b63b196a3f' not found. - !(modelInfo.id.startsWith("gpt-") && res.status === 404) && - // ie. cannot change codex model providers mid-session - modelInfo.stickyProvider !== "strict" && - modelInfo.fallbackProvider && - providerInfo.id !== modelInfo.fallbackProvider - ) { - return retriableRequest({ - excludeProviders: [...retry.excludeProviders, providerInfo.id], - retryCount: retry.retryCount + 1, - }) - } - - return { providerInfo, reqBody, res, startTimestamp } + return { providerInfo, res, startTimestamp, isStream } } - const { providerInfo, reqBody, res, startTimestamp } = await retriableRequest() + const { providerInfo, res, startTimestamp, isStream } = await providerRequest() // Store sticky provider if (res.status === 200) await stickyTracker?.set(providerInfo.id) @@ -483,6 +430,8 @@ export async function handler( headers: resHeaders, }) } catch (error: any) { + if (requestBody) void requestBody.cancel().catch(() => {}) + else void input.request.body?.cancel().catch(() => {}) // The caller disconnected before we finished. Because the outbound provider // request shares input.request.signal, an aborted caller surfaces here as an // AbortError. There is no client left to receive a body, so skip the error @@ -607,7 +556,6 @@ export async function handler( modelInfo: ModelInfo, stickyId: string, trialProviders: string[] | undefined, - retry: RetryOptions, stickyProviderId: string | undefined, modelTpmLimits: Record | undefined, modelTpsLimits: Record | undefined, @@ -634,14 +582,11 @@ export async function handler( })) } - // Use fallback provider if max retries reached const fallbackProvider = allProviders.find((provider) => provider.id === modelInfo.fallbackProvider) - if (retry.retryCount === MAX_FAILOVER_RETRIES) return fallbackProvider let topPriority = Infinity const providers = allProviders .filter((provider) => provider.weight !== 0) - .filter((provider) => !retry.excludeProviders.includes(provider.id)) .filter((provider) => { if (provider.budgetPriority === undefined) return true if (!providerBudget) return true @@ -1049,15 +994,6 @@ export async function handler( providerInfo.apiKey = authInfo.provider.credentials } - async function fetchWithRetryableStatus(url: string, options: RequestInit, retry = { count: 0 }) { - const res = await fetch(url, options) - if ([429, 529].includes(res.status) && retry.count < MAX_RETRYABLE_STATUS_RETRIES) { - await new Promise((resolve) => setTimeout(resolve, Math.pow(2, retry.count) * 500)) - return fetchWithRetryableStatus(url, options, { count: retry.count + 1 }) - } - return res - } - function calculateCost(modelInfo: ModelInfo, usageInfo: UsageInfo) { const { inputTokens, outputTokens, reasoningTokens, cacheReadTokens, cacheWrite5mTokens, cacheWrite1hTokens } = usageInfo diff --git a/packages/console/app/src/routes/zen/util/requestBody.ts b/packages/console/app/src/routes/zen/util/requestBody.ts new file mode 100644 index 000000000..458faf553 --- /dev/null +++ b/packages/console/app/src/routes/zen/util/requestBody.ts @@ -0,0 +1,191 @@ +const TAIL_LIMIT = 4 * 1024 +const encoder = new TextEncoder() + +export async function prepareRequestBody(body: ReadableStream) { + const reader = body.getReader() + const chunks: Uint8Array[] = [] + const decoder = new TextDecoder() + let text = "" + let done = false + let searchFrom = 0 + let bom = 0 + let match: RegExpExecArray | null = null + const pattern = /("model"\s*:\s*")([^"]+)"/g + + while (!done && !match) { + const next = await reader.read() + done = next.done + if (!next.value) continue + if (!chunks.length && next.value[0] === 0xef && next.value[1] === 0xbb && next.value[2] === 0xbf) bom = 3 + chunks.push(next.value) + text += decoder.decode(next.value, { stream: true }) + pattern.lastIndex = searchFrom + match = pattern.exec(text) + searchFrom = Math.max(0, text.length - 256) + } + if (done) { + text += decoder.decode() + if (!match) { + pattern.lastIndex = searchFrom + match = pattern.exec(text) + } + } + + const found = (() => { + if (!match) return + const start = bom + utf8Length(text, match.index + match[1].length) + return { model: match[2], start, end: start + utf8Length(match[2], match[2].length) } + })() + const preview = text.substring(0, 300) + text = "" + match = null + let used = false + + return { + model: found?.model ?? "", + preview, + cancel: () => reader.cancel(), + stream(providerModel: string, includeUsage: boolean) { + if (used) throw new Error("Request body stream already consumed") + if (!found) throw new Error("Missing model field") + used = true + + const initial = replace(chunks, found.start, found.end, providerModel) + chunks.length = 0 + const output = passthrough(initial, reader, done) + if (!includeUsage) return output + return appendUsage(output) + }, + } +} + +function utf8Length(value: string, end: number) { + let length = 0 + for (let i = 0; i < end; i++) { + const code = value.charCodeAt(i) + if (code <= 0x7f) length++ + else if (code <= 0x7ff) length += 2 + else if (code >= 0xd800 && code <= 0xdbff && i + 1 < end && value.charCodeAt(i + 1) >= 0xdc00) { + length += 4 + i++ + } else length += 3 + } + return length +} + +function replace(chunks: Uint8Array[], start: number, end: number, value: string) { + let offset = 0 + let inserted = false + return chunks.flatMap((chunk) => { + const chunkStart = offset + const chunkEnd = offset + chunk.length + offset = chunkEnd + if (chunkEnd <= start || chunkStart >= end) return [chunk] + + const parts = [chunk.subarray(0, Math.max(0, start - chunkStart))] + if (!inserted) { + parts.push(encoder.encode(value)) + inserted = true + } + parts.push(chunk.subarray(Math.min(chunk.length, end - chunkStart))) + return parts.filter((part) => part.length) + }) +} + +function passthrough( + initial: Array, + reader: ReadableStreamDefaultReader, + sourceDone: boolean, +) { + let done = sourceDone + let index = 0 + return new ReadableStream({ + async pull(controller) { + const chunk = initial[index] + if (chunk) { + initial[index++] = undefined + controller.enqueue(chunk) + return + } + initial.length = 0 + if (done) { + controller.close() + return + } + const next = await reader.read() + done = next.done + if (next.value) controller.enqueue(next.value) + if (done) controller.close() + }, + cancel(reason) { + initial.length = 0 + return reader.cancel(reason) + }, + }) +} + +function appendUsage(body: ReadableStream) { + const reader = body.getReader() + const decoder = new TextDecoder() + let tail = new Uint8Array() + let streamText = "" + let isStream = false + const inspect = (chunk?: Uint8Array) => { + streamText += chunk ? decoder.decode(chunk, { stream: true }) : decoder.decode() + for (const match of streamText.matchAll(/"stream"\s*:\s*(true|false)/g)) isStream = match[1] === "true" + streamText = streamText.slice(-64) + } + return new ReadableStream({ + async pull(controller) { + while (true) { + const next = await reader.read() + if (next.done) { + inspect() + if (!isStream) { + if (tail.length) controller.enqueue(tail) + controller.close() + return + } + const close = tail.lastIndexOf(125) + if (close < 0) { + controller.error(new Error("Invalid JSON request body")) + return + } + if (close) controller.enqueue(tail.subarray(0, close)) + controller.enqueue(encoder.encode(',"stream_options":{"include_usage":true}}')) + if (close + 1 < tail.length) controller.enqueue(tail.subarray(close + 1)) + controller.close() + return + } + + const chunk = next.value + inspect(chunk) + if (tail.length + chunk.length <= TAIL_LIMIT) { + const combined = new Uint8Array(tail.length + chunk.length) + combined.set(tail) + combined.set(chunk, tail.length) + tail = combined + continue + } + + const emit = tail.length + chunk.length - TAIL_LIMIT + if (emit <= tail.length) { + controller.enqueue(tail.subarray(0, emit)) + const combined = new Uint8Array(TAIL_LIMIT) + combined.set(tail.subarray(emit)) + combined.set(chunk, tail.length - emit) + tail = combined + return + } + + if (tail.length) controller.enqueue(tail) + controller.enqueue(chunk.subarray(0, emit - tail.length)) + tail = chunk.slice(emit - tail.length) + return + } + }, + cancel(reason) { + return reader.cancel(reason) + }, + }) +} diff --git a/packages/console/app/test/requestBody.test.ts b/packages/console/app/test/requestBody.test.ts new file mode 100644 index 000000000..52d86297b --- /dev/null +++ b/packages/console/app/test/requestBody.test.ts @@ -0,0 +1,122 @@ +import { describe, expect, test } from "bun:test" +import { prepareRequestBody } from "../src/routes/zen/util/requestBody" + +describe("Zen request body streaming", () => { + test("patches the leading model without buffering the remaining body", async () => { + let reads = 0 + const body = new ReadableStream( + { + pull(controller) { + const chunks = [ + '{"model":"client-model","stream":true,"messages":[', + JSON.stringify({ role: "user", content: "large payload" }), + "]}", + ] + const chunk = chunks[reads++] + if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) + else controller.close() + }, + }, + { highWaterMark: 0 }, + ) + + const request = await prepareRequestBody(body) + expect(request.model).toBe("client-model") + expect(reads).toBe(1) + + const output = await new Response(request.stream("provider-model", false)).text() + expect(JSON.parse(output)).toEqual({ + model: "provider-model", + stream: true, + messages: [{ role: "user", content: "large payload" }], + }) + }) + + test("appends stream usage options at the end of the request", async () => { + const body = new Blob(['{"model":"client-model","stream":true,"messages":[]} ']).stream() + const request = await prepareRequestBody(body) + const output = await new Response(request.stream("provider-model", true)).text() + + expect(JSON.parse(output)).toEqual({ + model: "provider-model", + stream: true, + messages: [], + stream_options: { include_usage: true }, + }) + expect(output.endsWith(" ")).toBe(true) + }) + + test("detects streaming after a large message while forwarding", async () => { + const content = "x".repeat(128 * 1024) + let reads = 0 + const chunks = [ + '{"model":"client-model","messages":[', + JSON.stringify({ role: "user", content }), + '],"stream":true}', + ] + const body = new ReadableStream( + { + pull(controller) { + const chunk = chunks[reads++] + if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) + else controller.close() + }, + }, + { highWaterMark: 0 }, + ) + const request = await prepareRequestBody(body) + expect(reads).toBe(1) + const output = await new Response(request.stream("provider-model", true)).text() + + expect(JSON.parse(output)).toEqual({ + model: "provider-model", + messages: [{ role: "user", content }], + stream: true, + stream_options: { include_usage: true }, + }) + }) + + test("buffers through a late model field and then streams the rest", async () => { + const content = "こんにちは".repeat(32 * 1024) + let reads = 0 + const chunks = [ + '{"messages":[', + JSON.stringify({ role: "user", content }), + '],"model":"client-model","stream":true,"extra":"after-model"}', + ] + const body = new ReadableStream( + { + pull(controller) { + const chunk = chunks[reads++] + if (chunk) controller.enqueue(new TextEncoder().encode(chunk)) + else controller.close() + }, + }, + { highWaterMark: 0 }, + ) + const request = await prepareRequestBody(body) + + expect(request.model).toBe("client-model") + expect(reads).toBe(3) + expect(JSON.parse(await new Response(request.stream("provider-model", true)).text())).toEqual({ + messages: [{ role: "user", content }], + model: "provider-model", + stream: true, + extra: "after-model", + stream_options: { include_usage: true }, + }) + }) + + test("preserves a UTF-8 BOM while patching the model", async () => { + const body = new Blob(['\uFEFF{"messages":[],"model":"client-model","stream":false}']).stream() + const request = await prepareRequestBody(body) + const output = new Uint8Array(await new Response(request.stream("provider-model", false)).arrayBuffer()) + + expect([...output.subarray(0, 3)]).toEqual([0xef, 0xbb, 0xbf]) + expect(JSON.parse(new TextDecoder().decode(output))).toEqual({ + messages: [], + model: "provider-model", + stream: false, + }) + }) +}) From 03bba464d46f3eddf74195919b1344aa937f7b11 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Sun, 23 Aug 2026 17:15:36 +0000 Subject: [PATCH 122/271] chore: generate --- packages/console/app/src/routes/zen/util/handler.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index cd7e795f5..7e185591e 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -28,12 +28,7 @@ import { GoUsageLimitError, BlackUsageLimitError, } from "./error" -import { - buildCostChunk, - createStreamPartConverter, - createResponseConverter, - UsageInfo, -} from "./provider/provider" +import { buildCostChunk, createStreamPartConverter, createResponseConverter, UsageInfo } from "./provider/provider" import { anthropicHelper } from "./provider/anthropic" import { googleHelper } from "./provider/google" import { openaiHelper } from "./provider/openai" @@ -97,8 +92,7 @@ export async function handler( const body = input.request.body if (!body) throw new Error("Missing request body") requestBody = opts.format === "google" ? undefined : await prepareRequestBody(body) - const model = - opts.format === "google" ? opts.parseModel(url, undefined) : (requestBody?.model ?? "") + const model = opts.format === "google" ? opts.parseModel(url, undefined) : (requestBody?.model ?? "") const googleStream = opts.format === "google" ? opts.parseIsStream(url, undefined) : undefined const rawIp = input.request.headers.get("x-real-ip") ?? "" const ip = rawIp.includes(":") ? rawIp.split(":").slice(0, 4).join(":") : rawIp From b1ce938ebeb9ea184ec36573260424c76fbb8e14 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 01:54:31 -0400 Subject: [PATCH 123/271] fix(console): support DeepSeek weekend pricing (#44305) Co-authored-by: MrMushrooooom Co-authored-by: Frank --- .../console/app/src/routes/zen/util/handler.ts | 4 ++-- .../console/app/src/routes/zen/util/pricing.ts | 11 +++++++++++ packages/console/app/test/pricing.test.ts | 16 ++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 packages/console/app/src/routes/zen/util/pricing.ts create mode 100644 packages/console/app/test/pricing.test.ts diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 7e185591e..107f8ad44 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -47,6 +47,7 @@ import { createProviderBudgetTracker } from "./providerBudgetTracker" import { accumulateUsage, HOT_WORKSPACES } from "./usageBatcher" import { Workspace } from "@opencode-ai/console-core/workspace.js" import { countryFromRequest, isModelCountryRestricted } from "~/lib/request-country" +import { isPeakPricing } from "./pricing" import { prepareRequestBody } from "./requestBody" type ZenData = Awaited> @@ -992,9 +993,8 @@ export async function handler( const { inputTokens, outputTokens, reasoningTokens, cacheReadTokens, cacheWrite5mTokens, cacheWrite1hTokens } = usageInfo - const hour = new Date().getUTCHours() const modelCost = - modelInfo.costPeak && ((hour >= 1 && hour < 4) || (hour >= 6 && hour < 10)) + modelInfo.costPeak && isPeakPricing(new Date()) ? modelInfo.costPeak : modelInfo.cost200K && inputTokens + (cacheReadTokens ?? 0) + (cacheWrite5mTokens ?? 0) + (cacheWrite1hTokens ?? 0) > 200_000 diff --git a/packages/console/app/src/routes/zen/util/pricing.ts b/packages/console/app/src/routes/zen/util/pricing.ts new file mode 100644 index 000000000..b7b6def61 --- /dev/null +++ b/packages/console/app/src/routes/zen/util/pricing.ts @@ -0,0 +1,11 @@ +export function isPeakPricing(date: Date) { + // DeepSeek peak pricing in China Standard Time (UTC+8): + // - Weekdays only + // - 9 AM to noon + // - 2 PM to 6 PM + const dateCN = new Date(date.getTime() + 8 * 3_600 * 1000) + const dayCN = dateCN.getUTCDay() + if (dayCN === 0 || dayCN === 6) return false + const hourCN = dateCN.getUTCHours() + return (hourCN >= 9 && hourCN < 12) || (hourCN >= 14 && hourCN < 18) +} diff --git a/packages/console/app/test/pricing.test.ts b/packages/console/app/test/pricing.test.ts new file mode 100644 index 000000000..2955b3e0f --- /dev/null +++ b/packages/console/app/test/pricing.test.ts @@ -0,0 +1,16 @@ +import { describe, expect, test } from "bun:test" +import { isPeakPricing } from "../src/routes/zen/util/pricing" + +describe("isPeakPricing", () => { + test.each([ + ["weekday 09:00 CN starts peak pricing", "2026-08-27T01:00:00.000Z", true], + ["weekday 12:00 CN ends peak pricing", "2026-08-27T04:00:00.000Z", false], + ["weekday 14:00 CN starts peak pricing", "2026-08-27T06:00:00.000Z", true], + ["weekday 18:00 CN ends peak pricing", "2026-08-27T10:00:00.000Z", false], + ["Saturday in Beijing", "2026-08-29T01:00:00.000Z", false], + ["Sunday in Beijing", "2026-08-30T06:00:00.000Z", false], + ["Monday in Beijing", "2026-08-31T01:00:00.000Z", true], + ] as const)("handles %s", (_name, timestamp, expected) => { + expect(isPeakPricing(new Date(timestamp))).toBe(expected) + }) +}) From f2a1d547f1760babcfe1ba15e368df06125517d5 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 24 Aug 2026 02:13:33 -0400 Subject: [PATCH 124/271] fix(console): set duplex for streamed zen requests --- packages/console/app/src/routes/zen/util/handler.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 107f8ad44..7ef910122 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -242,10 +242,11 @@ export async function handler( return headers })(), body: reqBody, + duplex: "half", // Propagate caller disconnects to the upstream provider request so // abandoned Console requests do not leave orphaned inference work open. signal: input.request.signal, - }) + } as RequestInit & { duplex: "half" }) const isStream = res.headers.get("content-type")?.toLowerCase().includes("text/event-stream") ?? false logger.metric({ is_stream: isStream }) From 7bbfe425f628ad01d9b6e5f7194edc4dc716268a Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 24 Aug 2026 02:18:34 -0400 Subject: [PATCH 125/271] always allow ox alpha in go --- packages/console/app/src/routes/zen/util/handler.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 107f8ad44..05479512d 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -864,6 +864,8 @@ export async function handler( // Validate lite subscription billing if (opts.modelList === "lite" && authInfo.billing.lite && authInfo.lite) { + if (Object.values(modelInfo.cost).every((price) => price === 0)) return "lite" + try { const consoleGoUrl = `https://opencode.ai/workspace/${authInfo.workspaceID}/go` const sub = authInfo.lite From 4dbeeddc77e657d5b8fb0aef3efc9c067c1e5b3f Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 24 Aug 2026 03:01:02 -0400 Subject: [PATCH 126/271] discontinue first month discount --- packages/console/app/src/i18n/ar.ts | 19 +++++++++---------- packages/console/app/src/i18n/br.ts | 19 +++++++++---------- packages/console/app/src/i18n/da.ts | 19 +++++++++---------- packages/console/app/src/i18n/de.ts | 19 +++++++++---------- packages/console/app/src/i18n/en.ts | 19 +++++++++---------- packages/console/app/src/i18n/es.ts | 19 +++++++++---------- packages/console/app/src/i18n/fr.ts | 19 +++++++++---------- packages/console/app/src/i18n/it.ts | 19 +++++++++---------- packages/console/app/src/i18n/ja.ts | 19 +++++++++---------- packages/console/app/src/i18n/ko.ts | 19 +++++++++---------- packages/console/app/src/i18n/no.ts | 19 +++++++++---------- packages/console/app/src/i18n/pl.ts | 19 +++++++++---------- packages/console/app/src/i18n/ru.ts | 19 +++++++++---------- packages/console/app/src/i18n/th.ts | 19 +++++++++---------- packages/console/app/src/i18n/tr.ts | 19 +++++++++---------- packages/console/app/src/i18n/uk.ts | 19 +++++++++---------- packages/console/app/src/i18n/zh.ts | 19 +++++++++---------- packages/console/app/src/i18n/zht.ts | 19 +++++++++---------- packages/console/app/src/routes/go/index.tsx | 7 +------ packages/web/src/content/docs/ar/go.mdx | 4 ++-- packages/web/src/content/docs/bs/go.mdx | 4 ++-- packages/web/src/content/docs/da/go.mdx | 4 ++-- packages/web/src/content/docs/de/go.mdx | 4 ++-- packages/web/src/content/docs/es/go.mdx | 4 ++-- packages/web/src/content/docs/fr/go.mdx | 4 ++-- packages/web/src/content/docs/go.mdx | 4 ++-- packages/web/src/content/docs/it/go.mdx | 4 ++-- packages/web/src/content/docs/ja/go.mdx | 4 ++-- packages/web/src/content/docs/ko/go.mdx | 4 ++-- packages/web/src/content/docs/nb/go.mdx | 4 ++-- packages/web/src/content/docs/pl/go.mdx | 4 ++-- packages/web/src/content/docs/pt-br/go.mdx | 4 ++-- packages/web/src/content/docs/ru/go.mdx | 4 ++-- packages/web/src/content/docs/th/go.mdx | 4 ++-- packages/web/src/content/docs/tr/go.mdx | 4 ++-- packages/web/src/content/docs/zh-cn/go.mdx | 4 ++-- packages/web/src/content/docs/zh-tw/go.mdx | 4 ++-- 37 files changed, 199 insertions(+), 222 deletions(-) diff --git a/packages/console/app/src/i18n/ar.ts b/packages/console/app/src/i18n/ar.ts index d648ceee2..130e93c45 100644 --- a/packages/console/app/src/i18n/ar.ts +++ b/packages/console/app/src/i18n/ar.ts @@ -254,7 +254,7 @@ export const dict = { "go.title": "OpenCode Go | نماذج برمجة منخفضة التكلفة للجميع", "go.banner.text": "Ox Alpha Free متاح على Go لفترة محدودة", "go.meta.description": - "يبدأ Go بسعر $5 للشهر الأول، ثم $10/شهر، مع حدود استخدام سخية ووصول موثوق إلى نماذج البرمجة الرائدة.", + "يبلغ سعر Go ‏$10/شهر، مع حدود استخدام سخية ووصول موثوق إلى نماذج البرمجة الرائدة.", "go.hero.title": "نماذج برمجة منخفضة التكلفة للجميع", "go.hero.body": "يجلب Go البرمجة الوكيلة للمبرمجين حول العالم. يوفر حدودًا سخية ووصولًا موثوقًا إلى أقوى النماذج مفتوحة المصدر، حتى تتمكن من البناء باستخدام وكلاء أقوياء دون القلق بشأن التكلفة أو التوفر.", @@ -263,9 +263,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "اشترك في Go", "go.cta.price": "$10/شهر", - "go.cta.promo": "$5 للشهر الأول", "go.pricing.body": - "استخدمه مع أي وكيل. $5 للشهر الأول، ثم $10/شهر. قم بزيادة الرصيد إذا لزم الأمر. الإلغاء في أي وقت.", + "استخدمه مع أي وكيل. $10/شهر. قم بزيادة الرصيد إذا لزم الأمر. الإلغاء في أي وقت.", "go.graph.free": "مجاني", "go.graph.freePill": "Big Pickle ونماذج مجانية", "go.graph.go": "Go", @@ -298,20 +297,20 @@ export const dict = { "go.testimonials.frank.quote": "أتمنى لو كنت لا أزال في Nvidia.", "go.problem.title": "ما المشكلة التي يحلها Go؟", "go.problem.body": - "نحن نركز على تقديم تجربة OpenCode لأكبر عدد ممكن من الناس. OpenCode Go هو اشتراك منخفض التكلفة: $5 للشهر الأول، ثم $10/شهر. يوفر حدودا سخية ووصولا موثوقا إلى نماذج المصدر المفتوح الأكثر قدرة.", + "نحن نركز على تقديم تجربة OpenCode لأكبر عدد ممكن من الناس. OpenCode Go هو اشتراك منخفض التكلفة بسعر $10/شهر. يوفر حدودا سخية ووصولا موثوقا إلى نماذج المصدر المفتوح الأكثر قدرة.", "go.problem.subtitle": " ", "go.problem.item1": "أسعار اشتراك منخفضة التكلفة", "go.problem.item2": "حدود سخية ووصول موثوق", "go.problem.item3": "مصمم لأكبر عدد ممكن من المبرمجين", "go.problem.item4": "مجموعة منسقة من النماذج المختبرة للبرمجة الوكيلة", "go.how.title": "كيف يعمل Go", - "go.how.body": "يبدأ Go من $5 للشهر الأول، ثم $10/شهر. يمكنك استخدامه مع OpenCode أو أي وكيل.", + "go.how.body": "يبلغ سعر Go ‏$10/شهر. يمكنك استخدامه مع OpenCode أو أي وكيل.", "go.how.step1.title": "أنشئ حسابًا", "go.how.step1.beforeLink": "اتبع", "go.how.step1.link": "تعليمات الإعداد", "go.how.step2.title": "اشترك في Go", - "go.how.step2.link": "$5 للشهر الأول", - "go.how.step2.afterLink": "ثم $10/شهر مع حدود سخية", + "go.how.step2.link": "$10/شهر", + "go.how.step2.afterLink": "مع حدود سخية", "go.how.step3.title": "ابدأ البرمجة", "go.how.step3.body": "مع وصول موثوق لنماذج مفتوحة المصدر", "go.privacy.title": "خصوصيتك مهمة بالنسبة لنا", @@ -327,11 +326,11 @@ export const dict = { "go.faq.a2": "يتضمن Go النماذج المدرجة أدناه، مع حدود سخية وإتاحة موثوقة.", "go.faq.q3": "هل Go هو نفسه Zen؟", "go.faq.a3": - "لا. يعتمد Zen على الدفع حسب الاستخدام، بينما يبدأ Go بسعر $5 للشهر الأول، ثم $10/شهر، مع حدود سخية ووصول موثوق إلى مجموعة منسقة من النماذج.", + "لا. يعتمد Zen على الدفع حسب الاستخدام، بينما يبلغ سعر Go ‏$10/شهر، مع حدود سخية ووصول موثوق إلى مجموعة منسقة من النماذج.", "go.faq.q4": "كم تكلفة Go؟", "go.faq.a4.p1.beforePricing": "تكلفة Go", - "go.faq.a4.p1.pricingLink": "$5 للشهر الأول", - "go.faq.a4.p1.afterPricing": "ثم $10/شهر مع حدود سخية.", + "go.faq.a4.p1.pricingLink": "$10/شهر", + "go.faq.a4.p1.afterPricing": "مع حدود سخية.", "go.faq.a4.p2.beforeAccount": "يمكنك إدارة اشتراكك في", "go.faq.a4.p2.accountLink": "حسابك", "go.faq.a4.p3": "ألغِ في أي وقت.", diff --git a/packages/console/app/src/i18n/br.ts b/packages/console/app/src/i18n/br.ts index 6554f390e..ae60ee500 100644 --- a/packages/console/app/src/i18n/br.ts +++ b/packages/console/app/src/i18n/br.ts @@ -258,7 +258,7 @@ export const dict = { "go.title": "OpenCode Go | Modelos de codificação de baixo custo para todos", "go.banner.text": "Ox Alpha Free está disponível no Go por tempo limitado", "go.meta.description": - "O Go começa em $5 no primeiro mês, depois $10/mês, com limites generosos de uso e acesso confiável aos principais modelos de codificação.", + "O Go custa $10/mês, com limites generosos de uso e acesso confiável aos principais modelos de codificação.", "go.hero.title": "Modelos de codificação de baixo custo para todos", "go.hero.body": "O Go traz a codificação com agentes para programadores em todo o mundo. Oferecendo limites generosos e acesso confiável aos modelos de código aberto mais capazes, para que você possa construir com agentes poderosos sem se preocupar com custos ou disponibilidade.", @@ -267,9 +267,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Assinar o Go", "go.cta.price": "$10/mês", - "go.cta.promo": "$5 no primeiro mês", "go.pricing.body": - "Use com qualquer agente. $5 no primeiro mês, depois $10/mês. Recarregue o crédito se necessário. Cancele a qualquer momento.", + "Use com qualquer agente. $10/mês. Recarregue o crédito se necessário. Cancele a qualquer momento.", "go.graph.free": "Grátis", "go.graph.freePill": "Big Pickle e modelos gratuitos", "go.graph.go": "Go", @@ -303,7 +302,7 @@ export const dict = { "go.testimonials.frank.quote": "Eu queria ainda estar na Nvidia.", "go.problem.title": "Que problema o Go resolve?", "go.problem.body": - "Estamos focados em levar a experiência do OpenCode para o maior número de pessoas possível. OpenCode Go é uma assinatura de baixo custo: $5 no primeiro mês, depois $10/mês. Oferece limites generosos e acesso confiável aos modelos open source mais capazes.", + "Estamos focados em levar a experiência do OpenCode para o maior número de pessoas possível. OpenCode Go é uma assinatura de baixo custo de $10/mês. Oferece limites generosos e acesso confiável aos modelos open source mais capazes.", "go.problem.subtitle": " ", "go.problem.item1": "Preço de assinatura de baixo custo", "go.problem.item2": "Limites generosos e acesso confiável", @@ -311,13 +310,13 @@ export const dict = { "go.problem.item4": "Uma seleção de modelos testados para codificação com agentes", "go.how.title": "Como o Go funciona", "go.how.body": - "O Go começa em $5 no primeiro mês, depois $10/mês. Você pode usá-lo com o OpenCode ou qualquer agente.", + "O Go custa $10/mês. Você pode usá-lo com o OpenCode ou qualquer agente.", "go.how.step1.title": "Crie uma conta", "go.how.step1.beforeLink": "siga as", "go.how.step1.link": "instruções de configuração", "go.how.step2.title": "Assinar o Go", - "go.how.step2.link": "$5 no primeiro mês", - "go.how.step2.afterLink": "depois $10/mês com limites generosos", + "go.how.step2.link": "$10/mês", + "go.how.step2.afterLink": "com limites generosos", "go.how.step3.title": "Comece a codificar", "go.how.step3.body": "com acesso confiável a modelos de código aberto", "go.privacy.title": "Sua privacidade é importante para nós", @@ -334,11 +333,11 @@ export const dict = { "go.faq.a2": "O Go inclui os modelos listados abaixo, com limites generosos e acesso confiável.", "go.faq.q3": "O Go é o mesmo que o Zen?", "go.faq.a3": - "Não. Zen é pay-as-you-go, enquanto o Go começa em $5 no primeiro mês, depois $10/mês, com limites generosos e acesso confiável a uma seleção de modelos.", + "Não. Zen é pay-as-you-go, enquanto o Go custa $10/mês, com limites generosos e acesso confiável a uma seleção de modelos.", "go.faq.q4": "Quanto custa o Go?", "go.faq.a4.p1.beforePricing": "O Go custa", - "go.faq.a4.p1.pricingLink": "$5 no primeiro mês", - "go.faq.a4.p1.afterPricing": "depois $10/mês com limites generosos.", + "go.faq.a4.p1.pricingLink": "$10/mês", + "go.faq.a4.p1.afterPricing": "com limites generosos.", "go.faq.a4.p2.beforeAccount": "Você pode gerenciar sua assinatura em sua", "go.faq.a4.p2.accountLink": "conta", "go.faq.a4.p3": "Cancele a qualquer momento.", diff --git a/packages/console/app/src/i18n/da.ts b/packages/console/app/src/i18n/da.ts index 336f3b827..8f17a2beb 100644 --- a/packages/console/app/src/i18n/da.ts +++ b/packages/console/app/src/i18n/da.ts @@ -256,7 +256,7 @@ export const dict = { "go.title": "OpenCode Go | Kodningsmodeller til lav pris for alle", "go.banner.text": "Ox Alpha Free er tilgængelig på Go i en begrænset periode", "go.meta.description": - "Go starter ved $5 for den første måned, derefter $10/måned, med generøse brugsgrænser og pålidelig adgang til førende kodningsmodeller.", + "Go koster $10/måned, med generøse brugsgrænser og pålidelig adgang til førende kodningsmodeller.", "go.hero.title": "Kodningsmodeller til lav pris for alle", "go.hero.body": "Go bringer agentisk kodning til programmører over hele verden. Med generøse grænser og pålidelig adgang til de mest kapable open source-modeller, så du kan bygge med kraftfulde agenter uden at bekymre dig om omkostninger eller tilgængelighed.", @@ -265,9 +265,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Abonner på Go", "go.cta.price": "$10/måned", - "go.cta.promo": "$5 første måned", "go.pricing.body": - "Brug med enhver agent. $5 første måned, derefter $10/måned. Tank op med kredit efter behov. Afmeld når som helst.", + "Brug med enhver agent. $10/måned. Tank op med kredit efter behov. Afmeld når som helst.", "go.graph.free": "Gratis", "go.graph.freePill": "Big Pickle og gratis modeller", "go.graph.go": "Go", @@ -300,7 +299,7 @@ export const dict = { "go.testimonials.frank.quote": "Jeg ville ønske, jeg stadig var hos Nvidia.", "go.problem.title": "Hvilket problem løser Go?", "go.problem.body": - "Vi fokuserer på at bringe OpenCode-oplevelsen ud til så mange som muligt. OpenCode Go er et lavprisabonnement: $5 for den første måned, derefter $10/måned. Det giver generøse grænser og pålidelig adgang til de mest kapable open source-modeller.", + "Vi fokuserer på at bringe OpenCode-oplevelsen ud til så mange som muligt. OpenCode Go er et lavprisabonnement til $10/måned. Det giver generøse grænser og pålidelig adgang til de mest kapable open source-modeller.", "go.problem.subtitle": " ", "go.problem.item1": "Lavpris abonnementspriser", "go.problem.item2": "Generøse grænser og pålidelig adgang", @@ -308,13 +307,13 @@ export const dict = { "go.problem.item4": "Et kurateret modeludvalg testet til agentisk kodning", "go.how.title": "Hvordan Go virker", "go.how.body": - "Go starter ved $5 for den første måned, derefter $10/måned. Du kan bruge det med OpenCode eller enhver agent.", + "Go koster $10/måned. Du kan bruge det med OpenCode eller enhver agent.", "go.how.step1.title": "Opret en konto", "go.how.step1.beforeLink": "følg", "go.how.step1.link": "opsætningsinstruktionerne", "go.how.step2.title": "Abonner på Go", - "go.how.step2.link": "$5 første måned", - "go.how.step2.afterLink": "derefter $10/måned med generøse grænser", + "go.how.step2.link": "$10/måned", + "go.how.step2.afterLink": "med generøse grænser", "go.how.step3.title": "Start kodning", "go.how.step3.body": "med pålidelig adgang til open source-modeller", "go.privacy.title": "Dit privatliv er vigtigt for os", @@ -331,11 +330,11 @@ export const dict = { "go.faq.a2": "Go inkluderer modellerne nedenfor med generøse grænser og pålidelig adgang.", "go.faq.q3": "Er Go det samme som Zen?", "go.faq.a3": - "Nej. Zen er pay-as-you-go, mens Go starter ved $5 for den første måned, derefter $10/måned, med generøse grænser og pålidelig adgang til et kurateret modeludvalg.", + "Nej. Zen er pay-as-you-go, mens Go koster $10/måned, med generøse grænser og pålidelig adgang til et kurateret modeludvalg.", "go.faq.q4": "Hvad koster Go?", "go.faq.a4.p1.beforePricing": "Go koster", - "go.faq.a4.p1.pricingLink": "$5 første måned", - "go.faq.a4.p1.afterPricing": "derefter $10/måned med generøse grænser.", + "go.faq.a4.p1.pricingLink": "$10/måned", + "go.faq.a4.p1.afterPricing": "med generøse grænser.", "go.faq.a4.p2.beforeAccount": "Du kan administrere dit abonnement i din", "go.faq.a4.p2.accountLink": "konto", "go.faq.a4.p3": "Annuller til enhver tid.", diff --git a/packages/console/app/src/i18n/de.ts b/packages/console/app/src/i18n/de.ts index 5f1218caa..49d9242da 100644 --- a/packages/console/app/src/i18n/de.ts +++ b/packages/console/app/src/i18n/de.ts @@ -258,7 +258,7 @@ export const dict = { "go.title": "OpenCode Go | Kostengünstige Coding-Modelle für alle", "go.banner.text": "Ox Alpha Free ist für begrenzte Zeit auf Go verfügbar", "go.meta.description": - "Go beginnt bei $5 für deinen ersten Monat, danach $10/Monat, mit großzügigen Nutzungslimits und zuverlässigem Zugang zu führenden Coding-Modellen.", + "Go kostet $10/Monat, mit großzügigen Nutzungslimits und zuverlässigem Zugang zu führenden Coding-Modellen.", "go.hero.title": "Kostengünstige Coding-Modelle für alle", "go.hero.body": "Go bringt Agentic Coding zu Programmierern auf der ganzen Welt. Mit großzügigen Limits und zuverlässigem Zugang zu den leistungsfähigsten Open-Source-Modellen, damit du mit leistungsstarken Agenten entwickeln kannst, ohne dir Gedanken über Kosten oder Verfügbarkeit zu machen.", @@ -267,9 +267,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Go abonnieren", "go.cta.price": "$10/Monat", - "go.cta.promo": "$5 im ersten Monat", "go.pricing.body": - "Mit jedem Agenten nutzbar. $5 im ersten Monat, danach $10/Monat. Guthaben bei Bedarf aufladen. Jederzeit kündbar.", + "Mit jedem Agenten nutzbar. $10/Monat. Guthaben bei Bedarf aufladen. Jederzeit kündbar.", "go.graph.free": "Kostenlos", "go.graph.freePill": "Big Pickle und kostenlose Modelle", "go.graph.go": "Go", @@ -302,7 +301,7 @@ export const dict = { "go.testimonials.frank.quote": "Ich wünschte, ich wäre noch bei Nvidia.", "go.problem.title": "Welches Problem löst Go?", "go.problem.body": - "Wir konzentrieren uns darauf, die OpenCode-Erfahrung so vielen Menschen wie möglich zugänglich zu machen. OpenCode Go ist ein kostengünstiges Abonnement: $5 im ersten Monat, danach $10/Monat. Es bietet großzügige Limits und zuverlässigen Zugang zu den leistungsfähigsten Open-Source-Modellen.", + "Wir konzentrieren uns darauf, die OpenCode-Erfahrung so vielen Menschen wie möglich zugänglich zu machen. OpenCode Go ist ein kostengünstiges Abonnement für $10/Monat. Es bietet großzügige Limits und zuverlässigen Zugang zu den leistungsfähigsten Open-Source-Modellen.", "go.problem.subtitle": " ", "go.problem.item1": "Kostengünstiges Abonnement", "go.problem.item2": "Großzügige Limits und zuverlässiger Zugang", @@ -310,13 +309,13 @@ export const dict = { "go.problem.item4": "Eine kuratierte, für Agentic Coding getestete Modellauswahl", "go.how.title": "Wie Go funktioniert", "go.how.body": - "Go beginnt bei $5 für den ersten Monat, danach $10/Monat. Du kannst es mit OpenCode oder jedem Agenten nutzen.", + "Go kostet $10/Monat. Du kannst es mit OpenCode oder jedem Agenten nutzen.", "go.how.step1.title": "Konto erstellen", "go.how.step1.beforeLink": "folge den", "go.how.step1.link": "Einrichtungsanweisungen", "go.how.step2.title": "Go abonnieren", - "go.how.step2.link": "$5 im ersten Monat", - "go.how.step2.afterLink": "danach $10/Monat mit großzügigen Limits", + "go.how.step2.link": "$10/Monat", + "go.how.step2.afterLink": "mit großzügigen Limits", "go.how.step3.title": "Loslegen mit Coding", "go.how.step3.body": "mit zuverlässigem Zugang zu Open-Source-Modellen", "go.privacy.title": "Deine Privatsphäre ist uns wichtig", @@ -333,11 +332,11 @@ export const dict = { "go.faq.a2": "Go umfasst die unten aufgeführten Modelle mit großzügigen Limits und zuverlässigem Zugriff.", "go.faq.q3": "Ist Go dasselbe wie Zen?", "go.faq.a3": - "Nein. Zen ist Pay-as-you-go, während Go bei $5 für deinen ersten Monat beginnt, danach $10/Monat, mit großzügigen Limits und zuverlässigem Zugang zu einer kuratierten Modellauswahl.", + "Nein. Zen ist Pay-as-you-go, während Go $10/Monat kostet, mit großzügigen Limits und zuverlässigem Zugang zu einer kuratierten Modellauswahl.", "go.faq.q4": "Wie viel kostet Go?", "go.faq.a4.p1.beforePricing": "Go kostet", - "go.faq.a4.p1.pricingLink": "$5 im ersten Monat", - "go.faq.a4.p1.afterPricing": "danach $10/Monat mit großzügigen Limits.", + "go.faq.a4.p1.pricingLink": "$10/Monat", + "go.faq.a4.p1.afterPricing": "mit großzügigen Limits.", "go.faq.a4.p2.beforeAccount": "Du kannst dein Abonnement in deinem", "go.faq.a4.p2.accountLink": "Konto verwalten", "go.faq.a4.p3": "Jederzeit kündbar.", diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index 9b57bb875..810b82672 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -255,7 +255,7 @@ export const dict = { "go.title": "OpenCode Go | Low cost coding models for everyone", "go.banner.text": "Ox Alpha Free is available on Go for a limited time", "go.meta.description": - "Go starts at $5 for your first month, then $10/month, with generous usage limits and reliable access to leading coding models.", + "Go costs $10/month, with generous usage limits and reliable access to leading coding models.", "go.hero.title": "Low cost coding models for everyone", "go.hero.body": "Go brings agentic coding to programmers around the world. Offering generous limits and reliable access to the most capable open-source models, so you can build with powerful agents without worrying about cost or availability.", @@ -264,8 +264,7 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Subscribe to Go", "go.cta.price": "$10/month", - "go.cta.promo": "$5 first month", - "go.pricing.body": "Use with any agent. $5 first month, then $10/month. Top up credit if needed. Cancel any time.", + "go.pricing.body": "Use with any agent. $10/month. Top up credit if needed. Cancel any time.", "go.graph.free": "Free", "go.graph.freePill": "Big Pickle and free models", "go.graph.go": "Go", @@ -299,20 +298,20 @@ export const dict = { "go.testimonials.frank.quote": "I wish I was still at Nvidia.", "go.problem.title": "What problem is Go solving?", "go.problem.body": - "We're focused on bringing the OpenCode experience to as many people as possible. OpenCode Go is a low cost subscription: $5 for your first month, then $10/month. It provides generous limits and reliable access to the most capable open source models.", + "We're focused on bringing the OpenCode experience to as many people as possible. OpenCode Go is a low cost $10/month subscription. It provides generous limits and reliable access to the most capable open source models.", "go.problem.subtitle": " ", "go.problem.item1": "Low cost subscription pricing", "go.problem.item2": "Generous limits and reliable access", "go.problem.item3": "Built for as many programmers as possible", "go.problem.item4": "A curated model lineup tested for agentic coding", "go.how.title": "How Go works", - "go.how.body": "Go starts at $5 for your first month, then $10/month. You can use it with OpenCode or any agent.", + "go.how.body": "Go costs $10/month. You can use it with OpenCode or any agent.", "go.how.step1.title": "Create an account", "go.how.step1.beforeLink": "follow the", "go.how.step1.link": "setup instructions", "go.how.step2.title": "Subscribe to Go", - "go.how.step2.link": "$5 first month", - "go.how.step2.afterLink": "then $10/month with generous limits", + "go.how.step2.link": "$10/month", + "go.how.step2.afterLink": "with generous limits", "go.how.step3.title": "Start coding", "go.how.step3.body": "with reliable access to open-source models", "go.privacy.title": "Your privacy is important to us", @@ -329,11 +328,11 @@ export const dict = { "go.faq.a2": "Go includes the models listed below, with generous limits and reliable access.", "go.faq.q3": "Is Go the same as Zen?", "go.faq.a3": - "No. Zen is pay-as-you-go, while Go starts at $5 for your first month, then $10/month, with generous limits and reliable access to a curated model lineup.", + "No. Zen is pay-as-you-go, while Go costs $10/month, with generous limits and reliable access to a curated model lineup.", "go.faq.q4": "How much does Go cost?", "go.faq.a4.p1.beforePricing": "Go costs", - "go.faq.a4.p1.pricingLink": "$5 first month", - "go.faq.a4.p1.afterPricing": "then $10/month with generous limits.", + "go.faq.a4.p1.pricingLink": "$10/month", + "go.faq.a4.p1.afterPricing": "with generous limits.", "go.faq.a4.p2.beforeAccount": "You can manage your subscription in your", "go.faq.a4.p2.accountLink": "account", "go.faq.a4.p3": "Cancel any time.", diff --git a/packages/console/app/src/i18n/es.ts b/packages/console/app/src/i18n/es.ts index da0edf3e8..3e796ecde 100644 --- a/packages/console/app/src/i18n/es.ts +++ b/packages/console/app/src/i18n/es.ts @@ -259,7 +259,7 @@ export const dict = { "go.title": "OpenCode Go | Modelos de programación de bajo coste para todos", "go.banner.text": "Ox Alpha Free está disponible en Go por tiempo limitado", "go.meta.description": - "Go comienza en $5 el primer mes, luego 10 $/mes, con límites de uso generosos y acceso fiable a modelos de programación líderes.", + "Go cuesta 10 $/mes, con límites de uso generosos y acceso fiable a modelos de programación líderes.", "go.hero.title": "Modelos de programación de bajo coste para todos", "go.hero.body": "Go lleva la programación agéntica a programadores de todo el mundo. Ofrece límites generosos y acceso fiable a los modelos de código abierto más capaces, para que puedas crear con agentes potentes sin preocuparte por el coste o la disponibilidad.", @@ -268,9 +268,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Suscribirse a Go", "go.cta.price": "10 $/mes", - "go.cta.promo": "$5 el primer mes", "go.pricing.body": - "Úsalo con cualquier agente. $5 el primer mes, luego 10 $/mes. Recarga crédito si es necesario. Cancela en cualquier momento.", + "Úsalo con cualquier agente. 10 $/mes. Recarga crédito si es necesario. Cancela en cualquier momento.", "go.graph.free": "Gratis", "go.graph.freePill": "Big Pickle y modelos gratuitos", "go.graph.go": "Go", @@ -304,20 +303,20 @@ export const dict = { "go.testimonials.frank.quote": "Ojalá siguiera en Nvidia.", "go.problem.title": "¿Qué problema resuelve Go?", "go.problem.body": - "Nos enfocamos en llevar la experiencia de OpenCode a tantas personas como sea posible. OpenCode Go es una suscripción de bajo coste: $5 el primer mes, luego 10 $/mes. Proporciona límites generosos y acceso fiable a los modelos de código abierto más capaces.", + "Nos enfocamos en llevar la experiencia de OpenCode a tantas personas como sea posible. OpenCode Go es una suscripción de bajo coste de 10 $/mes. Proporciona límites generosos y acceso fiable a los modelos de código abierto más capaces.", "go.problem.subtitle": " ", "go.problem.item1": "Precios de suscripción de bajo coste", "go.problem.item2": "Límites generosos y acceso fiable", "go.problem.item3": "Creado para tantos programadores como sea posible", "go.problem.item4": "Una selección de modelos probados para programación agéntica", "go.how.title": "Cómo funciona Go", - "go.how.body": "Go comienza en $5 el primer mes, luego 10 $/mes. Puedes usarlo con OpenCode o cualquier agente.", + "go.how.body": "Go cuesta 10 $/mes. Puedes usarlo con OpenCode o cualquier agente.", "go.how.step1.title": "Crear una cuenta", "go.how.step1.beforeLink": "sigue las", "go.how.step1.link": "instrucciones de configuración", "go.how.step2.title": "Suscribirse a Go", - "go.how.step2.link": "$5 el primer mes", - "go.how.step2.afterLink": "luego 10 $/mes con límites generosos", + "go.how.step2.link": "10 $/mes", + "go.how.step2.afterLink": "con límites generosos", "go.how.step3.title": "Empezar a programar", "go.how.step3.body": "con acceso fiable a modelos de código abierto", "go.privacy.title": "Tu privacidad es importante para nosotros", @@ -334,11 +333,11 @@ export const dict = { "go.faq.a2": "Go incluye los modelos que se indican abajo, con límites generosos y acceso confiable.", "go.faq.q3": "¿Es Go lo mismo que Zen?", "go.faq.a3": - "No. Zen es de pago por uso, mientras que Go comienza en $5 el primer mes, luego 10 $/mes, con límites generosos y acceso fiable a una selección de modelos.", + "No. Zen es de pago por uso, mientras que Go cuesta 10 $/mes, con límites generosos y acceso fiable a una selección de modelos.", "go.faq.q4": "¿Cuánto cuesta Go?", "go.faq.a4.p1.beforePricing": "Go cuesta", - "go.faq.a4.p1.pricingLink": "$5 el primer mes", - "go.faq.a4.p1.afterPricing": "luego 10 $/mes con límites generosos.", + "go.faq.a4.p1.pricingLink": "10 $/mes", + "go.faq.a4.p1.afterPricing": "con límites generosos.", "go.faq.a4.p2.beforeAccount": "Puedes gestionar tu suscripción en tu", "go.faq.a4.p2.accountLink": "cuenta", "go.faq.a4.p3": "Cancela en cualquier momento.", diff --git a/packages/console/app/src/i18n/fr.ts b/packages/console/app/src/i18n/fr.ts index 29f7a1958..737583535 100644 --- a/packages/console/app/src/i18n/fr.ts +++ b/packages/console/app/src/i18n/fr.ts @@ -260,7 +260,7 @@ export const dict = { "go.title": "OpenCode Go | Modèles de code à faible coût pour tous", "go.banner.text": "Ox Alpha Free est disponible sur Go pour une durée limitée", "go.meta.description": - "Go commence à $5 pour le premier mois, puis 10 $/mois, avec des limites d'utilisation généreuses et un accès fiable aux principaux modèles de codage.", + "Go coûte 10 $/mois, avec des limites d'utilisation généreuses et un accès fiable aux principaux modèles de codage.", "go.hero.title": "Modèles de code à faible coût pour tous", "go.hero.body": "Go apporte le codage agentique aux programmeurs du monde entier. Offrant des limites généreuses et un accès fiable aux modèles open source les plus capables, pour que vous puissiez construire avec des agents puissants sans vous soucier du coût ou de la disponibilité.", @@ -269,9 +269,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "S'abonner à Go", "go.cta.price": "10 $/mois", - "go.cta.promo": "$5 le premier mois", "go.pricing.body": - "Utilisez-le avec n'importe quel agent. $5 le premier mois, puis 10 $/mois. Rechargez du crédit si nécessaire. Annulez à tout moment.", + "Utilisez-le avec n'importe quel agent. 10 $/mois. Rechargez du crédit si nécessaire. Annulez à tout moment.", "go.graph.free": "Gratuit", "go.graph.freePill": "Big Pickle et modèles gratuits", "go.graph.go": "Go", @@ -304,7 +303,7 @@ export const dict = { "go.testimonials.frank.quote": "J'aimerais être encore chez Nvidia.", "go.problem.title": "Quel problème Go résout-il ?", "go.problem.body": - "Nous nous efforçons d'apporter l'expérience OpenCode au plus grand nombre. OpenCode Go est un abonnement à faible coût : $5 pour le premier mois, puis 10 $/mois. Il offre des limites généreuses et un accès fiable aux modèles open source les plus performants.", + "Nous nous efforçons d'apporter l'expérience OpenCode au plus grand nombre. OpenCode Go est un abonnement à faible coût de 10 $/mois. Il offre des limites généreuses et un accès fiable aux modèles open source les plus performants.", "go.problem.subtitle": " ", "go.problem.item1": "Prix d'abonnement bas", "go.problem.item2": "Limites généreuses et accès fiable", @@ -312,13 +311,13 @@ export const dict = { "go.problem.item4": "Une sélection de modèles testés pour le codage agentique", "go.how.title": "Comment fonctionne Go", "go.how.body": - "Go commence à $5 pour le premier mois, puis 10 $/mois. Vous pouvez l'utiliser avec OpenCode ou n'importe quel agent.", + "Go coûte 10 $/mois. Vous pouvez l'utiliser avec OpenCode ou n'importe quel agent.", "go.how.step1.title": "Créez un compte", "go.how.step1.beforeLink": "suivez les", "go.how.step1.link": "instructions de configuration", "go.how.step2.title": "Abonnez-vous à Go", - "go.how.step2.link": "$5 le premier mois", - "go.how.step2.afterLink": "puis 10 $/mois avec des limites généreuses", + "go.how.step2.link": "10 $/mois", + "go.how.step2.afterLink": "avec des limites généreuses", "go.how.step3.title": "Commencez à coder", "go.how.step3.body": "avec un accès fiable aux modèles open source", "go.privacy.title": "Votre vie privée est importante pour nous", @@ -335,11 +334,11 @@ export const dict = { "go.faq.a2": "Go inclut les modèles ci-dessous, avec des limites généreuses et un accès fiable.", "go.faq.q3": "Est-ce que Go est la même chose que Zen ?", "go.faq.a3": - "Non. Zen est un paiement à l'utilisation, tandis que Go commence à $5 pour le premier mois, puis 10 $/mois, avec des limites généreuses et un accès fiable à une sélection de modèles.", + "Non. Zen est un paiement à l'utilisation, tandis que Go coûte 10 $/mois, avec des limites généreuses et un accès fiable à une sélection de modèles.", "go.faq.q4": "Combien coûte Go ?", "go.faq.a4.p1.beforePricing": "Go coûte", - "go.faq.a4.p1.pricingLink": "$5 le premier mois", - "go.faq.a4.p1.afterPricing": "puis 10 $/mois avec des limites généreuses.", + "go.faq.a4.p1.pricingLink": "10 $/mois", + "go.faq.a4.p1.afterPricing": "avec des limites généreuses.", "go.faq.a4.p2.beforeAccount": "Vous pouvez gérer votre abonnement dans votre", "go.faq.a4.p2.accountLink": "compte", "go.faq.a4.p3": "Annulez à tout moment.", diff --git a/packages/console/app/src/i18n/it.ts b/packages/console/app/src/i18n/it.ts index 18d26e0d3..af6b35f46 100644 --- a/packages/console/app/src/i18n/it.ts +++ b/packages/console/app/src/i18n/it.ts @@ -256,7 +256,7 @@ export const dict = { "go.title": "OpenCode Go | Modelli di coding a basso costo per tutti", "go.banner.text": "Ox Alpha Free è disponibile su Go per un periodo limitato", "go.meta.description": - "Go inizia a $5 per il primo mese, poi $10/mese, con limiti di utilizzo generosi e un accesso affidabile ai principali modelli di coding.", + "Go costa $10/mese, con limiti di utilizzo generosi e un accesso affidabile ai principali modelli di coding.", "go.hero.title": "Modelli di coding a basso costo per tutti", "go.hero.body": "Go porta il coding agentico ai programmatori di tutto il mondo. Offrendo limiti generosi e un accesso affidabile ai modelli open source più capaci, in modo da poter costruire con agenti potenti senza preoccuparsi dei costi o della disponibilità.", @@ -265,9 +265,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Abbonati a Go", "go.cta.price": "$10/mese", - "go.cta.promo": "$5 il primo mese", "go.pricing.body": - "Usalo con qualsiasi agente. $5 il primo mese, poi $10/mese. Ricarica il credito se necessario. Annulla in qualsiasi momento.", + "Usalo con qualsiasi agente. $10/mese. Ricarica il credito se necessario. Annulla in qualsiasi momento.", "go.graph.free": "Gratis", "go.graph.freePill": "Big Pickle e modelli gratuiti", "go.graph.go": "Go", @@ -300,20 +299,20 @@ export const dict = { "go.testimonials.frank.quote": "Vorrei essere ancora a Nvidia.", "go.problem.title": "Quale problema risolve Go?", "go.problem.body": - "Ci concentriamo nel portare l'esperienza OpenCode a quante più persone possibile. OpenCode Go è un abbonamento a basso costo: $5 il primo mese, poi $10/mese. Offre limiti generosi e accesso affidabile ai modelli open source più capaci.", + "Ci concentriamo nel portare l'esperienza OpenCode a quante più persone possibile. OpenCode Go è un abbonamento a basso costo da $10/mese. Offre limiti generosi e accesso affidabile ai modelli open source più capaci.", "go.problem.subtitle": " ", "go.problem.item1": "Prezzo di abbonamento a basso costo", "go.problem.item2": "Limiti generosi e accesso affidabile", "go.problem.item3": "Costruito per il maggior numero possibile di programmatori", "go.problem.item4": "Una selezione curata di modelli testati per il coding agentico", "go.how.title": "Come funziona Go", - "go.how.body": "Go inizia a $5 per il primo mese, poi $10/mese. Puoi usarlo con OpenCode o qualsiasi agente.", + "go.how.body": "Go costa $10/mese. Puoi usarlo con OpenCode o qualsiasi agente.", "go.how.step1.title": "Crea un account", "go.how.step1.beforeLink": "segui le", "go.how.step1.link": "istruzioni di configurazione", "go.how.step2.title": "Abbonati a Go", - "go.how.step2.link": "$5 il primo mese", - "go.how.step2.afterLink": "poi $10/mese con limiti generosi", + "go.how.step2.link": "$10/mese", + "go.how.step2.afterLink": "con limiti generosi", "go.how.step3.title": "Inizia a programmare", "go.how.step3.body": "con accesso affidabile ai modelli open source", "go.privacy.title": "La tua privacy è importante per noi", @@ -330,11 +329,11 @@ export const dict = { "go.faq.a2": "Go include i modelli elencati di seguito, con limiti generosi e accesso affidabile.", "go.faq.q3": "Go è lo stesso di Zen?", "go.faq.a3": - "No. Zen è a consumo, mentre Go inizia a $5 per il primo mese, poi $10/mese, con limiti generosi e un accesso affidabile a una selezione curata di modelli.", + "No. Zen è a consumo, mentre Go costa $10/mese, con limiti generosi e un accesso affidabile a una selezione curata di modelli.", "go.faq.q4": "Quanto costa Go?", "go.faq.a4.p1.beforePricing": "Go costa", - "go.faq.a4.p1.pricingLink": "$5 il primo mese", - "go.faq.a4.p1.afterPricing": "poi $10/mese con limiti generosi.", + "go.faq.a4.p1.pricingLink": "$10/mese", + "go.faq.a4.p1.afterPricing": "con limiti generosi.", "go.faq.a4.p2.beforeAccount": "Puoi gestire il tuo abbonamento nel tuo", "go.faq.a4.p2.accountLink": "account", "go.faq.a4.p3": "Annulla in qualsiasi momento.", diff --git a/packages/console/app/src/i18n/ja.ts b/packages/console/app/src/i18n/ja.ts index 7521971c2..a94febc6b 100644 --- a/packages/console/app/src/i18n/ja.ts +++ b/packages/console/app/src/i18n/ja.ts @@ -255,7 +255,7 @@ export const dict = { "go.title": "OpenCode Go | すべての人のための低価格なコーディングモデル", "go.banner.text": "Ox Alpha Freeは期間限定でGoで利用できます", "go.meta.description": - "Goは最初の月$5、その後$10/月で、主要なコーディングモデルへのゆとりある利用上限と安定したアクセスを提供します。", + "Goは月額$10で、主要なコーディングモデルへのゆとりある利用上限と安定したアクセスを提供します。", "go.hero.title": "すべての人のための低価格なコーディングモデル", "go.hero.body": "Goは、世界中のプログラマーにエージェント型コーディングをもたらします。最も高性能なオープンソースモデルへの十分な制限と安定したアクセスを提供し、コストや可用性を気にすることなく強力なエージェントで構築できます。", @@ -264,9 +264,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Goを購読する", "go.cta.price": "$10/月", - "go.cta.promo": "初月 $5", "go.pricing.body": - "どのエージェントでも使えます。最初の月$5、その後$10/月。必要に応じてクレジットを追加。いつでもキャンセルできます。", + "どのエージェントでも使えます。月額$10。必要に応じてクレジットを追加。いつでもキャンセルできます。", "go.graph.free": "無料", "go.graph.freePill": "Big Pickleと無料モデル", "go.graph.go": "Go", @@ -300,20 +299,20 @@ export const dict = { "go.testimonials.frank.quote": "まだNvidiaにいられたらよかったのに。", "go.problem.title": "Goはどのような問題を解決していますか?", "go.problem.body": - "私たちはOpenCodeの体験をできるだけ多くの人に届けることに注力しています。OpenCode Goは低価格のサブスクリプションで、最初の月は$5、その後は$10/月です。ゆとりある上限と、最も高性能なオープンソースモデルへの信頼できるアクセスを提供します。", + "私たちはOpenCodeの体験をできるだけ多くの人に届けることに注力しています。OpenCode Goは月額$10の低価格なサブスクリプションです。ゆとりある上限と、最も高性能なオープンソースモデルへの信頼できるアクセスを提供します。", "go.problem.subtitle": " ", "go.problem.item1": "低価格なサブスクリプション料金", "go.problem.item2": "十分な制限と安定したアクセス", "go.problem.item3": "できるだけ多くのプログラマーのために構築", "go.problem.item4": "エージェント型コーディング向けにテストされた厳選モデルラインナップ", "go.how.title": "Goの仕組み", - "go.how.body": "Goは最初の月$5、その後$10/月で始まります。OpenCodeまたは任意のエージェントで使えます。", + "go.how.body": "Goは月額$10です。OpenCodeまたは任意のエージェントで使えます。", "go.how.step1.title": "アカウントを作成", "go.how.step1.beforeLink": "", "go.how.step1.link": "セットアップ手順はこちら", "go.how.step2.title": "Goを購読する", - "go.how.step2.link": "最初の月$5", - "go.how.step2.afterLink": "その後$10/月、ゆとりある上限付き", + "go.how.step2.link": "月額$10", + "go.how.step2.afterLink": "ゆとりある上限付き", "go.how.step3.title": "コーディングを開始", "go.how.step3.body": "オープンソースモデルへの安定したアクセスで", "go.privacy.title": "あなたのプライバシーは私たちにとって重要です", @@ -330,11 +329,11 @@ export const dict = { "go.faq.a2": "Go には、十分な利用上限と安定したアクセスを備えた、以下のモデルが含まれます。", "go.faq.q3": "GoはZenと同じですか?", "go.faq.a3": - "いいえ。Zenは従量課金制ですが、Goは最初の月$5、その後$10/月で、厳選されたモデルラインナップへのゆとりある上限と安定したアクセスを提供します。", + "いいえ。Zenは従量課金制ですが、Goは月額$10で、厳選されたモデルラインナップへのゆとりある上限と安定したアクセスを提供します。", "go.faq.q4": "Goの料金は?", "go.faq.a4.p1.beforePricing": "Goは", - "go.faq.a4.p1.pricingLink": "最初の月$5", - "go.faq.a4.p1.afterPricing": "その後$10/月、ゆとりある上限付き。", + "go.faq.a4.p1.pricingLink": "月額$10", + "go.faq.a4.p1.afterPricing": "ゆとりある上限付き。", "go.faq.a4.p2.beforeAccount": "管理画面:", "go.faq.a4.p2.accountLink": "アカウント", "go.faq.a4.p3": "いつでもキャンセル可能です。", diff --git a/packages/console/app/src/i18n/ko.ts b/packages/console/app/src/i18n/ko.ts index 8a05597de..2884c6fbf 100644 --- a/packages/console/app/src/i18n/ko.ts +++ b/packages/console/app/src/i18n/ko.ts @@ -252,7 +252,7 @@ export const dict = { "go.title": "OpenCode Go | 모두를 위한 저비용 코딩 모델", "go.banner.text": "Ox Alpha Free가 한정된 기간 동안 Go에서 제공됩니다", "go.meta.description": - "Go는 첫 달 $5, 이후 $10/월로 시작하며, 넉넉한 사용 한도와 주요 코딩 모델에 대한 안정적인 액세스를 제공합니다.", + "Go는 월 $10이며, 넉넉한 사용 한도와 주요 코딩 모델에 대한 안정적인 액세스를 제공합니다.", "go.hero.title": "모두를 위한 저비용 코딩 모델", "go.hero.body": "Go는 전 세계 프로그래머들에게 에이전트 코딩을 제공합니다. 가장 유능한 오픈 소스 모델에 대한 넉넉한 한도와 안정적인 액세스를 제공하므로, 비용이나 가용성 걱정 없이 강력한 에이전트로 빌드할 수 있습니다.", @@ -261,9 +261,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Go 구독하기", "go.cta.price": "$10/월", - "go.cta.promo": "첫 달 $5", "go.pricing.body": - "어떤 에이전트와도 사용할 수 있습니다. 첫 달 $5, 이후 $10/월. 필요하면 크레딧을 충전하세요. 언제든지 취소할 수 있습니다.", + "어떤 에이전트와도 사용할 수 있습니다. 월 $10. 필요하면 크레딧을 충전하세요. 언제든지 취소할 수 있습니다.", "go.graph.free": "무료", "go.graph.freePill": "Big Pickle 및 무료 모델", "go.graph.go": "Go", @@ -297,20 +296,20 @@ export const dict = { "go.testimonials.frank.quote": "아직 Nvidia에 있었으면 좋았을 텐데요.", "go.problem.title": "Go는 어떤 문제를 해결하나요?", "go.problem.body": - "우리는 가능한 많은 사람들에게 OpenCode 경험을 제공하는 데 집중하고 있습니다. OpenCode Go는 저렴한 구독 서비스로, 첫 달 $5, 이후 $10/월입니다. 넉넉한 한도와 가장 뛰어난 오픈 소스 모델에 대한 안정적인 액세스를 제공합니다.", + "우리는 가능한 많은 사람들에게 OpenCode 경험을 제공하는 데 집중하고 있습니다. OpenCode Go는 월 $10의 저렴한 구독 서비스입니다. 넉넉한 한도와 가장 뛰어난 오픈 소스 모델에 대한 안정적인 액세스를 제공합니다.", "go.problem.subtitle": " ", "go.problem.item1": "저렴한 구독 가격", "go.problem.item2": "넉넉한 한도와 안정적인 액세스", "go.problem.item3": "가능한 한 많은 프로그래머를 위해 제작됨", "go.problem.item4": "에이전트 코딩용으로 테스트된 엄선된 모델 라인업", "go.how.title": "Go 작동 방식", - "go.how.body": "Go는 첫 달 $5, 이후 $10/월로 시작합니다. OpenCode 또는 어떤 에이전트와도 함께 사용할 수 있습니다.", + "go.how.body": "Go는 월 $10입니다. OpenCode 또는 어떤 에이전트와도 함께 사용할 수 있습니다.", "go.how.step1.title": "계정 생성", "go.how.step1.beforeLink": "", "go.how.step1.link": "설정 지침을 따르세요", "go.how.step2.title": "Go 구독", - "go.how.step2.link": "첫 달 $5", - "go.how.step2.afterLink": "이후 $10/월, 넉넉한 한도 포함", + "go.how.step2.link": "월 $10", + "go.how.step2.afterLink": "넉넉한 한도 포함", "go.how.step3.title": "코딩 시작", "go.how.step3.body": "오픈 소스 모델에 대한 안정적인 액세스와 함께", "go.privacy.title": "귀하의 프라이버시는 우리에게 중요합니다", @@ -326,11 +325,11 @@ export const dict = { "go.faq.a2": "Go에는 넉넉한 한도와 안정적인 액세스를 제공하는 아래 모델이 포함됩니다.", "go.faq.q3": "Go는 Zen과 같은가요?", "go.faq.a3": - "아니요. Zen은 종량제인 반면, Go는 첫 달 $5, 이후 $10/월로 시작하며, 엄선된 모델 라인업에 대한 넉넉한 한도와 안정적인 액세스를 제공합니다.", + "아니요. Zen은 종량제인 반면, Go는 월 $10이며, 엄선된 모델 라인업에 대한 넉넉한 한도와 안정적인 액세스를 제공합니다.", "go.faq.q4": "Go 비용은 얼마인가요?", "go.faq.a4.p1.beforePricing": "Go 비용은", - "go.faq.a4.p1.pricingLink": "첫 달 $5", - "go.faq.a4.p1.afterPricing": "이후 $10/월, 넉넉한 한도 포함.", + "go.faq.a4.p1.pricingLink": "월 $10", + "go.faq.a4.p1.afterPricing": "넉넉한 한도 포함.", "go.faq.a4.p2.beforeAccount": "구독 관리는 다음에서 가능합니다:", "go.faq.a4.p2.accountLink": "계정", "go.faq.a4.p3": "언제든지 취소할 수 있습니다.", diff --git a/packages/console/app/src/i18n/no.ts b/packages/console/app/src/i18n/no.ts index 02b15686d..bca1396cf 100644 --- a/packages/console/app/src/i18n/no.ts +++ b/packages/console/app/src/i18n/no.ts @@ -256,7 +256,7 @@ export const dict = { "go.title": "OpenCode Go | Rimelige kodemodeller for alle", "go.banner.text": "Ox Alpha Free er tilgjengelig på Go i en begrenset periode", "go.meta.description": - "Go starter på $5 for den første måneden, deretter $10/måned, med sjenerøse bruksgrenser og pålitelig tilgang til ledende kodemodeller.", + "Go koster $10/måned, med sjenerøse bruksgrenser og pålitelig tilgang til ledende kodemodeller.", "go.hero.title": "Rimelige kodemodeller for alle", "go.hero.body": "Go bringer agent-koding til programmerere over hele verden. Med rause grenser og pålitelig tilgang til de mest kapable åpen kildekode-modellene, kan du bygge med kraftige agenter uten å bekymre deg for kostnader eller tilgjengelighet.", @@ -265,9 +265,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Abonner på Go", "go.cta.price": "$10/måned", - "go.cta.promo": "$5 første måned", "go.pricing.body": - "Bruk med hvilken som helst agent. $5 første måned, deretter $10/måned. Fyll på kreditt ved behov. Avslutt når som helst.", + "Bruk med hvilken som helst agent. $10/måned. Fyll på kreditt ved behov. Avslutt når som helst.", "go.graph.free": "Gratis", "go.graph.freePill": "Big Pickle og gratis modeller", "go.graph.go": "Go", @@ -300,7 +299,7 @@ export const dict = { "go.testimonials.frank.quote": "Jeg skulle ønske jeg fortsatt var hos Nvidia.", "go.problem.title": "Hvilket problem løser Go?", "go.problem.body": - "Vi fokuserer på å bringe OpenCode-opplevelsen til så mange som mulig. OpenCode Go er et rimelig abonnement: $5 for den første måneden, deretter $10/måned. Det gir sjenerøse grenser og pålitelig tilgang til de mest kapable åpen kildekode-modellene.", + "Vi fokuserer på å bringe OpenCode-opplevelsen til så mange som mulig. OpenCode Go er et rimelig abonnement til $10/måned. Det gir sjenerøse grenser og pålitelig tilgang til de mest kapable åpen kildekode-modellene.", "go.problem.subtitle": " ", "go.problem.item1": "Rimelig abonnementspris", "go.problem.item2": "Rause grenser og pålitelig tilgang", @@ -308,13 +307,13 @@ export const dict = { "go.problem.item4": "Et kuratert modellutvalg testet for agent-koding", "go.how.title": "Hvordan Go fungerer", "go.how.body": - "Go starter på $5 for den første måneden, deretter $10/måned. Du kan bruke det med OpenCode eller hvilken som helst agent.", + "Go koster $10/måned. Du kan bruke det med OpenCode eller hvilken som helst agent.", "go.how.step1.title": "Opprett en konto", "go.how.step1.beforeLink": "følg", "go.how.step1.link": "oppsettsinstruksjonene", "go.how.step2.title": "Abonner på Go", - "go.how.step2.link": "$5 første måned", - "go.how.step2.afterLink": "deretter $10/måned med sjenerøse grenser", + "go.how.step2.link": "$10/måned", + "go.how.step2.afterLink": "med sjenerøse grenser", "go.how.step3.title": "Begynn å kode", "go.how.step3.body": "med pålitelig tilgang til åpen kildekode-modeller", "go.privacy.title": "Personvernet ditt er viktig for oss", @@ -331,11 +330,11 @@ export const dict = { "go.faq.a2": "Go inkluderer modellene nedenfor, med høye grenser og pålitelig tilgang.", "go.faq.q3": "Er Go det samme som Zen?", "go.faq.a3": - "Nei. Zen er betaling etter bruk, mens Go starter på $5 for den første måneden, deretter $10/måned, med sjenerøse grenser og pålitelig tilgang til et kuratert modellutvalg.", + "Nei. Zen er betaling etter bruk, mens Go koster $10/måned, med sjenerøse grenser og pålitelig tilgang til et kuratert modellutvalg.", "go.faq.q4": "Hva koster Go?", "go.faq.a4.p1.beforePricing": "Go koster", - "go.faq.a4.p1.pricingLink": "$5 første måned", - "go.faq.a4.p1.afterPricing": "deretter $10/måned med sjenerøse grenser.", + "go.faq.a4.p1.pricingLink": "$10/måned", + "go.faq.a4.p1.afterPricing": "med sjenerøse grenser.", "go.faq.a4.p2.beforeAccount": "Du kan administrere abonnementet ditt i din", "go.faq.a4.p2.accountLink": "konto", "go.faq.a4.p3": "Avslutt når som helst.", diff --git a/packages/console/app/src/i18n/pl.ts b/packages/console/app/src/i18n/pl.ts index 782747742..36a58f17a 100644 --- a/packages/console/app/src/i18n/pl.ts +++ b/packages/console/app/src/i18n/pl.ts @@ -257,7 +257,7 @@ export const dict = { "go.title": "OpenCode Go | Niskokosztowe modele do kodowania dla każdego", "go.banner.text": "Ox Alpha Free jest dostępny w Go przez ograniczony czas", "go.meta.description": - "Go kosztuje $5 za pierwszy miesiąc, a następnie $10/miesiąc, oferując hojne limity użycia i niezawodny dostęp do wiodących modeli do kodowania.", + "Go kosztuje $10/miesiąc, oferując hojne limity użycia i niezawodny dostęp do wiodących modeli do kodowania.", "go.hero.title": "Niskokosztowe modele do kodowania dla każdego", "go.hero.body": "Go udostępnia programowanie z agentami programistom na całym świecie. Oferuje hojne limity i niezawodny dostęp do najzdolniejszych modeli open source, dzięki czemu możesz budować za pomocą potężnych agentów, nie martwiąc się o koszty czy dostępność.", @@ -266,9 +266,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Zasubskrybuj Go", "go.cta.price": "$10/miesiąc", - "go.cta.promo": "$5 pierwszy miesiąc", "go.pricing.body": - "Używaj z dowolnym agentem. $5 za pierwszy miesiąc, potem $10/miesiąc. Doładuj konto w razie potrzeby. Anuluj w dowolnym momencie.", + "Używaj z dowolnym agentem. $10/miesiąc. Doładuj konto w razie potrzeby. Anuluj w dowolnym momencie.", "go.graph.free": "Darmowe", "go.graph.freePill": "Big Pickle i darmowe modele", "go.graph.go": "Go", @@ -301,7 +300,7 @@ export const dict = { "go.testimonials.frank.quote": "Chciałbym wciąż być w Nvidia.", "go.problem.title": "Jaki problem rozwiązuje Go?", "go.problem.body": - "Skupiamy się na udostępnieniu doświadczenia OpenCode jak największej liczbie osób. OpenCode Go to tania subskrypcja: $5 za pierwszy miesiąc, potem $10/miesiąc. Zapewnia hojne limity i niezawodny dostęp do najbardziej wydajnych modeli open source.", + "Skupiamy się na udostępnieniu doświadczenia OpenCode jak największej liczbie osób. OpenCode Go to tania subskrypcja za $10/miesiąc. Zapewnia hojne limity i niezawodny dostęp do najbardziej wydajnych modeli open source.", "go.problem.subtitle": " ", "go.problem.item1": "Niskokosztowa cena subskrypcji", "go.problem.item2": "Hojne limity i niezawodny dostęp", @@ -309,13 +308,13 @@ export const dict = { "go.problem.item4": "Starannie dobrany zestaw modeli przetestowanych pod kątem kodowania z agentami", "go.how.title": "Jak działa Go", "go.how.body": - "Go zaczyna się od $5 za pierwszy miesiąc, potem $10/miesiąc. Możesz go używać z OpenCode lub dowolnym agentem.", + "Go kosztuje $10/miesiąc. Możesz go używać z OpenCode lub dowolnym agentem.", "go.how.step1.title": "Załóż konto", "go.how.step1.beforeLink": "postępuj zgodnie z", "go.how.step1.link": "instrukcją konfiguracji", "go.how.step2.title": "Zasubskrybuj Go", - "go.how.step2.link": "$5 za pierwszy miesiąc", - "go.how.step2.afterLink": "potem $10/miesiąc z hojnymi limitami", + "go.how.step2.link": "$10/miesiąc", + "go.how.step2.afterLink": "z hojnymi limitami", "go.how.step3.title": "Zacznij kodować", "go.how.step3.body": "z niezawodnym dostępem do modeli open source", "go.privacy.title": "Twoja prywatność jest dla nas ważna", @@ -332,11 +331,11 @@ export const dict = { "go.faq.a2": "Go obejmuje poniższe modele z wysokimi limitami i niezawodnym dostępem.", "go.faq.q3": "Czy Go to to samo co Zen?", "go.faq.a3": - "Nie. Zen działa w modelu płatności za użycie, natomiast Go kosztuje $5 za pierwszy miesiąc, a następnie $10/miesiąc, oferując hojne limity i niezawodny dostęp do starannie dobranego zestawu modeli.", + "Nie. Zen działa w modelu płatności za użycie, natomiast Go kosztuje $10/miesiąc, oferując hojne limity i niezawodny dostęp do starannie dobranego zestawu modeli.", "go.faq.q4": "Ile kosztuje Go?", "go.faq.a4.p1.beforePricing": "Go kosztuje", - "go.faq.a4.p1.pricingLink": "$5 za pierwszy miesiąc", - "go.faq.a4.p1.afterPricing": "potem $10/miesiąc z hojnymi limitami.", + "go.faq.a4.p1.pricingLink": "$10/miesiąc", + "go.faq.a4.p1.afterPricing": "z hojnymi limitami.", "go.faq.a4.p2.beforeAccount": "Możesz zarządzać subskrypcją na swoim", "go.faq.a4.p2.accountLink": "koncie", "go.faq.a4.p3": "Anuluj w dowolnym momencie.", diff --git a/packages/console/app/src/i18n/ru.ts b/packages/console/app/src/i18n/ru.ts index 97029f3f8..ae3f0cc67 100644 --- a/packages/console/app/src/i18n/ru.ts +++ b/packages/console/app/src/i18n/ru.ts @@ -260,7 +260,7 @@ export const dict = { "go.title": "OpenCode Go | Недорогие модели для кодинга для всех", "go.banner.text": "Ox Alpha Free доступна в Go в течение ограниченного времени", "go.meta.description": - "Go стоит $5 за первый месяц, затем $10/месяц и предлагает щедрые лимиты использования и надежный доступ к ведущим моделям для кодинга.", + "Go стоит $10/месяц и предлагает щедрые лимиты использования и надежный доступ к ведущим моделям для кодинга.", "go.hero.title": "Недорогие модели для кодинга для всех", "go.hero.body": "Go открывает доступ к агентам-программистам разработчикам по всему миру. Предлагая щедрые лимиты и надежный доступ к наиболее способным моделям с открытым исходным кодом, вы можете создавать проекты с мощными агентами, не беспокоясь о затратах или доступности.", @@ -269,9 +269,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Подписаться на Go", "go.cta.price": "$10/месяц", - "go.cta.promo": "$5 первый месяц", "go.pricing.body": - "Используйте с любым агентом. $5 за первый месяц, затем $10/месяц. Пополняйте баланс при необходимости. Отменить можно в любое время.", + "Используйте с любым агентом. $10/месяц. Пополняйте баланс при необходимости. Отменить можно в любое время.", "go.graph.free": "Бесплатно", "go.graph.freePill": "Big Pickle и бесплатные модели", "go.graph.go": "Go", @@ -305,7 +304,7 @@ export const dict = { "go.testimonials.frank.quote": "Жаль, что я больше не в Nvidia.", "go.problem.title": "Какую проблему решает Go?", "go.problem.body": - "Мы стремимся сделать OpenCode доступным для как можно большего числа людей. OpenCode Go - это недорогая подписка: $5 за первый месяц, затем $10/месяц. Она предоставляет щедрые лимиты и надежный доступ к самым мощным моделям с открытым исходным кодом.", + "Мы стремимся сделать OpenCode доступным для как можно большего числа людей. OpenCode Go - это недорогая подписка за $10/месяц. Она предоставляет щедрые лимиты и надежный доступ к самым мощным моделям с открытым исходным кодом.", "go.problem.subtitle": " ", "go.problem.item1": "Недорогая подписка", "go.problem.item2": "Щедрые лимиты и надежный доступ", @@ -313,13 +312,13 @@ export const dict = { "go.problem.item4": "Отобранные модели, протестированные для агентного программирования", "go.how.title": "Как работает Go", "go.how.body": - "Go начинается с $5 за первый месяц, затем $10/месяц. Вы можете использовать его с OpenCode или любым агентом.", + "Go стоит $10/месяц. Вы можете использовать его с OpenCode или любым агентом.", "go.how.step1.title": "Создайте аккаунт", "go.how.step1.beforeLink": "следуйте", "go.how.step1.link": "инструкциям по настройке", "go.how.step2.title": "Подпишитесь на Go", - "go.how.step2.link": "$5 за первый месяц", - "go.how.step2.afterLink": "затем $10/месяц с щедрыми лимитами", + "go.how.step2.link": "$10/месяц", + "go.how.step2.afterLink": "с щедрыми лимитами", "go.how.step3.title": "Начните кодить", "go.how.step3.body": "с надежным доступом к open-source моделям", "go.privacy.title": "Ваша приватность важна для нас", @@ -336,11 +335,11 @@ export const dict = { "go.faq.a2": "Go включает перечисленные ниже модели с щедрыми лимитами и надежным доступом.", "go.faq.q3": "Go — это то же самое, что и Zen?", "go.faq.a3": - "Нет. Zen оплачивается по мере использования, а Go стоит $5 за первый месяц, затем $10/месяц и предлагает щедрые лимиты и надежный доступ к отобранным моделям.", + "Нет. Zen оплачивается по мере использования, а Go стоит $10/месяц и предлагает щедрые лимиты и надежный доступ к отобранным моделям.", "go.faq.q4": "Сколько стоит Go?", "go.faq.a4.p1.beforePricing": "Go стоит", - "go.faq.a4.p1.pricingLink": "$5 за первый месяц", - "go.faq.a4.p1.afterPricing": "затем $10/месяц с щедрыми лимитами.", + "go.faq.a4.p1.pricingLink": "$10/месяц", + "go.faq.a4.p1.afterPricing": "с щедрыми лимитами.", "go.faq.a4.p2.beforeAccount": "Вы можете управлять подпиской в своем", "go.faq.a4.p2.accountLink": "аккаунте", "go.faq.a4.p3": "Отмена в любое время.", diff --git a/packages/console/app/src/i18n/th.ts b/packages/console/app/src/i18n/th.ts index 3d1de2536..db8efed74 100644 --- a/packages/console/app/src/i18n/th.ts +++ b/packages/console/app/src/i18n/th.ts @@ -255,7 +255,7 @@ export const dict = { "go.title": "OpenCode Go | โมเดลเขียนโค้ดราคาประหยัดสำหรับทุกคน", "go.banner.text": "Ox Alpha Free พร้อมใช้งานบน Go ในช่วงเวลาจำกัด", "go.meta.description": - "Go เริ่มต้นที่ $5 สำหรับเดือนแรก จากนั้น $10/เดือน พร้อมขีดจำกัดการใช้งานที่เอื้อเฟื้อและการเข้าถึงโมเดลเขียนโค้ดชั้นนำอย่างเชื่อถือได้", + "Go มีราคา $10/เดือน พร้อมขีดจำกัดการใช้งานที่เอื้อเฟื้อและการเข้าถึงโมเดลเขียนโค้ดชั้นนำอย่างเชื่อถือได้", "go.hero.title": "โมเดลเขียนโค้ดราคาประหยัดสำหรับทุกคน", "go.hero.body": "Go นำการเขียนโค้ดแบบเอเจนต์มาสู่นักเขียนโปรแกรมทั่วโลก เสนอขีดจำกัดที่กว้างขวางและการเข้าถึงโมเดลโอเพนซอร์สที่มีความสามารถสูงสุดได้อย่างน่าเชื่อถือ เพื่อให้คุณสามารถสร้างสรรค์ด้วยเอเจนต์ที่ทรงพลังโดยไม่ต้องกังวลเรื่องค่าใช้จ่ายหรือความพร้อมใช้งาน", @@ -264,8 +264,7 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "สมัครสมาชิก Go", "go.cta.price": "$10/เดือน", - "go.cta.promo": "$5 เดือนแรก", - "go.pricing.body": "ใช้กับเอเจนต์ใดก็ได้ $5 ในเดือนแรก จากนั้น $10/เดือน เติมเครดิตหากจำเป็น ยกเลิกได้ตลอดเวลา", + "go.pricing.body": "ใช้กับเอเจนต์ใดก็ได้ $10/เดือน เติมเครดิตหากจำเป็น ยกเลิกได้ตลอดเวลา", "go.graph.free": "ฟรี", "go.graph.freePill": "Big Pickle และโมเดลฟรี", "go.graph.go": "Go", @@ -298,20 +297,20 @@ export const dict = { "go.testimonials.frank.quote": "ผมหวังว่าผมจะยังอยู่ที่ Nvidia", "go.problem.title": "Go แก้ปัญหาอะไร?", "go.problem.body": - "เรามุ่งมั่นที่จะนำประสบการณ์ OpenCode ไปสู่ผู้คนให้ได้มากที่สุด OpenCode Go เป็นการสมัครสมาชิกราคาประหยัด: $5 สำหรับเดือนแรก จากนั้น $10/เดือน โดยมอบขีดจำกัดที่เอื้อเฟื้อและการเข้าถึงโมเดลโอเพนซอร์สที่มีความสามารถสูงสุดอย่างเชื่อถือได้", + "เรามุ่งมั่นที่จะนำประสบการณ์ OpenCode ไปสู่ผู้คนให้ได้มากที่สุด OpenCode Go เป็นการสมัครสมาชิกราคาประหยัด $10/เดือน โดยมอบขีดจำกัดที่เอื้อเฟื้อและการเข้าถึงโมเดลโอเพนซอร์สที่มีความสามารถสูงสุดอย่างเชื่อถือได้", "go.problem.subtitle": " ", "go.problem.item1": "ราคาการสมัครสมาชิกที่ต่ำ", "go.problem.item2": "ขีดจำกัดที่กว้างขวางและการเข้าถึงที่เชื่อถือได้", "go.problem.item3": "สร้างขึ้นเพื่อโปรแกรมเมอร์จำนวนมากที่สุดเท่าที่จะเป็นไปได้", "go.problem.item4": "ชุดโมเดลที่คัดสรรและผ่านการทดสอบสำหรับการเขียนโค้ดแบบเอเจนต์", "go.how.title": "Go ทำงานอย่างไร", - "go.how.body": "Go เริ่มต้นที่ $5 สำหรับเดือนแรก จากนั้น $10/เดือน คุณสามารถใช้กับ OpenCode หรือเอเจนต์ใดก็ได้", + "go.how.body": "Go มีราคา $10/เดือน คุณสามารถใช้กับ OpenCode หรือเอเจนต์ใดก็ได้", "go.how.step1.title": "สร้างบัญชี", "go.how.step1.beforeLink": "ทำตาม", "go.how.step1.link": "คำแนะนำการตั้งค่า", "go.how.step2.title": "สมัครสมาชิก Go", - "go.how.step2.link": "$5 เดือนแรก", - "go.how.step2.afterLink": "จากนั้น $10/เดือน พร้อมขีดจำกัดที่เอื้อเฟื้อ", + "go.how.step2.link": "$10/เดือน", + "go.how.step2.afterLink": "พร้อมขีดจำกัดที่เอื้อเฟื้อ", "go.how.step3.title": "เริ่มเขียนโค้ด", "go.how.step3.body": "ด้วยการเข้าถึงโมเดลโอเพนซอร์สที่เชื่อถือได้", "go.privacy.title": "ความเป็นส่วนตัวของคุณสำคัญสำหรับเรา", @@ -328,11 +327,11 @@ export const dict = { "go.faq.a2": "Go รวมโมเดลด้านล่างนี้ พร้อมขีดจำกัดที่มากและการเข้าถึงที่เชื่อถือได้", "go.faq.q3": "Go เหมือนกับ Zen หรือไม่?", "go.faq.a3": - "ไม่ Zen เป็นแบบจ่ายตามการใช้งาน ขณะที่ Go เริ่มต้นที่ $5 สำหรับเดือนแรก จากนั้น $10/เดือน พร้อมขีดจำกัดที่เอื้อเฟื้อและการเข้าถึงชุดโมเดลที่คัดสรรอย่างเชื่อถือได้", + "ไม่ Zen เป็นแบบจ่ายตามการใช้งาน ขณะที่ Go มีราคา $10/เดือน พร้อมขีดจำกัดที่เอื้อเฟื้อและการเข้าถึงชุดโมเดลที่คัดสรรอย่างเชื่อถือได้", "go.faq.q4": "Go ราคาเท่าไหร่?", "go.faq.a4.p1.beforePricing": "Go ราคา", - "go.faq.a4.p1.pricingLink": "$5 เดือนแรก", - "go.faq.a4.p1.afterPricing": "จากนั้น $10/เดือน พร้อมขีดจำกัดที่เอื้อเฟื้อ", + "go.faq.a4.p1.pricingLink": "$10/เดือน", + "go.faq.a4.p1.afterPricing": "พร้อมขีดจำกัดที่เอื้อเฟื้อ", "go.faq.a4.p2.beforeAccount": "คุณสามารถจัดการการสมัครสมาชิกของคุณได้ใน", "go.faq.a4.p2.accountLink": "บัญชีของคุณ", "go.faq.a4.p3": "ยกเลิกได้ตลอดเวลา", diff --git a/packages/console/app/src/i18n/tr.ts b/packages/console/app/src/i18n/tr.ts index 394203493..b5b8b1fe6 100644 --- a/packages/console/app/src/i18n/tr.ts +++ b/packages/console/app/src/i18n/tr.ts @@ -258,7 +258,7 @@ export const dict = { "go.title": "OpenCode Go | Herkes için düşük maliyetli kodlama modelleri", "go.banner.text": "Ox Alpha Free sınırlı bir süre için Go'da kullanılabilir", "go.meta.description": - "Go ilk ay $5, sonrasında ayda 10$ fiyatıyla başlar; cömert kullanım limitleri ve önde gelen kodlama modellerine güvenilir erişim sunar.", + "Go ayda 10$'dır; cömert kullanım limitleri ve önde gelen kodlama modellerine güvenilir erişim sunar.", "go.hero.title": "Herkes için düşük maliyetli kodlama modelleri", "go.hero.body": "Go, dünya çapındaki programcılara ajan tabanlı kodlama getiriyor. En yetenekli açık kaynaklı modellere cömert limitler ve güvenilir erişim sunarak, maliyet veya erişilebilirlik konusunda endişelenmeden güçlü ajanlarla geliştirme yapmanızı sağlar.", @@ -267,9 +267,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Go'ya abone ol", "go.cta.price": "Ayda 10$", - "go.cta.promo": "İlk ay $5", "go.pricing.body": - "Herhangi bir ajanla kullanın. İlk ay $5, sonrasında ayda 10$. Gerekirse kredi yükleyin. İstediğiniz zaman iptal edin.", + "Herhangi bir ajanla kullanın. Ayda 10$. Gerekirse kredi yükleyin. İstediğiniz zaman iptal edin.", "go.graph.free": "Ücretsiz", "go.graph.freePill": "Big Pickle ve ücretsiz modeller", "go.graph.go": "Go", @@ -303,7 +302,7 @@ export const dict = { "go.testimonials.frank.quote": "Keşke hala Nvidia'da olsaydım.", "go.problem.title": "Go hangi sorunu çözüyor?", "go.problem.body": - "OpenCode deneyimini mümkün olduğunca çok kişiye ulaştırmaya odaklandık. OpenCode Go düşük maliyetli bir aboneliktir: İlk ay $5, sonrasında ayda 10$. Cömert limitler ve en yetenekli açık kaynak modellere güvenilir erişim sağlar.", + "OpenCode deneyimini mümkün olduğunca çok kişiye ulaştırmaya odaklandık. OpenCode Go, ayda 10$ olan düşük maliyetli bir aboneliktir. Cömert limitler ve en yetenekli açık kaynak modellere güvenilir erişim sağlar.", "go.problem.subtitle": " ", "go.problem.item1": "Düşük maliyetli abonelik fiyatlandırması", "go.problem.item2": "Cömert limitler ve güvenilir erişim", @@ -311,13 +310,13 @@ export const dict = { "go.problem.item4": "Ajan tabanlı kodlama için test edilmiş, özenle seçilmiş model seçenekleri", "go.how.title": "Go nasıl çalışır?", "go.how.body": - "Go ilk ay $5, sonrasında ayda 10$ fiyatıyla başlar. OpenCode veya herhangi bir ajanla kullanabilirsiniz.", + "Go ayda 10$'dır. OpenCode veya herhangi bir ajanla kullanabilirsiniz.", "go.how.step1.title": "Bir hesap oluşturun", "go.how.step1.beforeLink": "takip edin", "go.how.step1.link": "kurulum talimatları", "go.how.step2.title": "Go'ya abone olun", - "go.how.step2.link": "İlk ay $5", - "go.how.step2.afterLink": "sonrasında cömert limitlerle ayda 10$", + "go.how.step2.link": "Ayda 10$", + "go.how.step2.afterLink": "cömert limitlerle", "go.how.step3.title": "Kodlamaya başlayın", "go.how.step3.body": "açık kaynaklı modellere güvenilir erişimle", "go.privacy.title": "Gizliliğiniz bizim için önemlidir", @@ -334,11 +333,11 @@ export const dict = { "go.faq.a2": "Go, aşağıda listelenen modelleri cömert limitler ve güvenilir erişimle sunar.", "go.faq.q3": "Go, Zen ile aynı mı?", "go.faq.a3": - "Hayır. Zen kullandıkça öde modelidir; Go ise ilk ay $5, sonrasında ayda 10$ fiyatıyla başlar ve özenle seçilmiş model seçeneklerine cömert limitlerle güvenilir erişim sunar.", + "Hayır. Zen kullandıkça öde modelidir; Go ise ayda 10$'dır ve özenle seçilmiş model seçeneklerine cömert limitlerle güvenilir erişim sunar.", "go.faq.q4": "Go ne kadar?", "go.faq.a4.p1.beforePricing": "Go'nun maliyeti", - "go.faq.a4.p1.pricingLink": "İlk ay $5", - "go.faq.a4.p1.afterPricing": "sonrasında cömert limitlerle ayda 10$.", + "go.faq.a4.p1.pricingLink": "ayda 10$", + "go.faq.a4.p1.afterPricing": "cömert limitlerle.", "go.faq.a4.p2.beforeAccount": "Aboneliğinizi", "go.faq.a4.p2.accountLink": "hesabınızdan", "go.faq.a4.p3": "yönetebilirsiniz. İstediğiniz zaman iptal edin.", diff --git a/packages/console/app/src/i18n/uk.ts b/packages/console/app/src/i18n/uk.ts index 587b3a133..f56cee238 100644 --- a/packages/console/app/src/i18n/uk.ts +++ b/packages/console/app/src/i18n/uk.ts @@ -257,7 +257,7 @@ export const dict = { "go.title": "OpenCode Go | Недорогі моделі кодування для всіх", "go.banner.text": "Ox Alpha Free доступна в Go протягом обмеженого часу", "go.meta.description": - "Go починається від $5 за перший місяць, потім $10/місяць, зі щедрими лімітами використання та надійним доступом до провідних моделей для кодування.", + "Go коштує $10/місяць, зі щедрими лімітами використання та надійним доступом до провідних моделей для кодування.", "go.hero.title": "Недорогі моделі кодування для всіх", "go.hero.body": "Go надає агентне програмування програмістам у всьому світі, пропонуючи щедрі ліміти та надійний доступ до найкращих моделей з відкритим кодом.", @@ -266,9 +266,8 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Підписатися на Go", "go.cta.price": "$10/місяць", - "go.cta.promo": "$5 перший місяць", "go.pricing.body": - "Використовуйте з будь-яким агентом. $5 перший місяць, потім $10/місяць. Поповнюйте за потреби. Скасуйте в будь-який час.", + "Використовуйте з будь-яким агентом. $10/місяць. Поповнюйте за потреби. Скасуйте в будь-який час.", "go.graph.free": "Безкоштовно", "go.graph.freePill": "Big Pickle та безкоштовні моделі", "go.graph.go": "Go", @@ -301,7 +300,7 @@ export const dict = { "go.testimonials.frank.quote": "Хотів би я досі бути в Nvidia.", "go.problem.title": "Яку проблему вирішує Go?", "go.problem.body": - "Ми зосереджені на тому, щоб зробити досвід OpenCode доступним для якомога більшої кількості людей. OpenCode Go — це недорога підписка: $5 за перший місяць, потім $10/місяць. Вона надає щедрі ліміти та надійний доступ до найкращих моделей з відкритим кодом.", + "Ми зосереджені на тому, щоб зробити досвід OpenCode доступним для якомога більшої кількості людей. OpenCode Go — це недорога підписка за $10/місяць. Вона надає щедрі ліміти та надійний доступ до найкращих моделей з відкритим кодом.", "go.problem.subtitle": " ", "go.problem.item1": "Недорога підписка", "go.problem.item2": "Щедрі ліміти та надійний доступ", @@ -309,13 +308,13 @@ export const dict = { "go.problem.item4": "Добірка моделей, протестованих для агентного кодування", "go.how.title": "Як працює Go", "go.how.body": - "Go починається від $5 за перший місяць, потім $10/місяць. Використовуйте з OpenCode або будь-яким агентом.", + "Go коштує $10/місяць. Використовуйте з OpenCode або будь-яким агентом.", "go.how.step1.title": "Створіть обліковий запис", "go.how.step1.beforeLink": "дотримуйтесь", "go.how.step1.link": "інструкцій з налаштування", "go.how.step2.title": "Підпишіться на Go", - "go.how.step2.link": "$5 перший місяць", - "go.how.step2.afterLink": "потім $10/місяць із щедрими лімітами", + "go.how.step2.link": "$10/місяць", + "go.how.step2.afterLink": "із щедрими лімітами", "go.how.step3.title": "Почніть кодувати", "go.how.step3.body": "з надійним доступом до моделей з відкритим кодом", "go.privacy.title": "Ваша конфіденційність важлива для нас", @@ -332,11 +331,11 @@ export const dict = { "go.faq.a2": "Go включає моделі, перелічені нижче, із щедрими лімітами та надійним доступом.", "go.faq.q3": "Чи Go те саме, що Zen?", "go.faq.a3": - "Ні. Zen — це плата за використання, тоді як Go починається від $5 за перший місяць, потім $10/місяць, із щедрими лімітами та надійним доступом до добірки моделей.", + "Ні. Zen — це плата за використання, тоді як Go коштує $10/місяць, із щедрими лімітами та надійним доступом до добірки моделей.", "go.faq.q4": "Скільки коштує Go?", "go.faq.a4.p1.beforePricing": "Go коштує", - "go.faq.a4.p1.pricingLink": "$5 за перший місяць", - "go.faq.a4.p1.afterPricing": "потім $10/місяць із щедрими лімітами.", + "go.faq.a4.p1.pricingLink": "$10/місяць", + "go.faq.a4.p1.afterPricing": "із щедрими лімітами.", "go.faq.a4.p2.beforeAccount": "Ви можете керувати підпискою в", "go.faq.a4.p2.accountLink": "обліковому записі", "go.faq.a4.p3": "Скасуйте в будь-який час.", diff --git a/packages/console/app/src/i18n/zh.ts b/packages/console/app/src/i18n/zh.ts index 5ffc220cc..e55cf0715 100644 --- a/packages/console/app/src/i18n/zh.ts +++ b/packages/console/app/src/i18n/zh.ts @@ -245,7 +245,7 @@ export const dict = { "go.title": "OpenCode Go | 人人可用的低成本编程模型", "go.banner.text": "Ox Alpha Free 限时加入 Go", - "go.meta.description": "Go 首月 $5,之后 $10/月,提供充裕的使用限额,并可可靠访问领先的编程模型。", + "go.meta.description": "Go 每月 $10,提供充裕的使用限额,并可可靠访问领先的编程模型。", "go.hero.title": "人人可用的低成本编程模型", "go.hero.body": "Go 将代理编程带给全世界的程序员。提供充裕的限额和对最强大的开源模型的可靠访问,让您可以利用强大的代理进行构建,而无需担心成本或可用性。", @@ -254,8 +254,7 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "订阅 Go", "go.cta.price": "$10/月", - "go.cta.promo": "首月 $5", - "go.pricing.body": "可配合任何代理使用。首月 $5,之后 $10/月。如有需要可充值。随时取消。", + "go.pricing.body": "可配合任何代理使用。每月 $10。如有需要可充值。随时取消。", "go.graph.free": "免费", "go.graph.freePill": "Big Pickle 和免费模型", "go.graph.go": "Go", @@ -288,20 +287,20 @@ export const dict = { "go.testimonials.frank.quote": "我希望我还在 Nvidia。", "go.problem.title": "Go 解决了什么问题?", "go.problem.body": - "我们致力于将 OpenCode 体验带给尽可能多的人。OpenCode Go 是一款低成本订阅服务:首月 $5,之后 $10/月。它提供充裕的额度,并让您能可靠地使用最强大的开源模型。", + "我们致力于将 OpenCode 体验带给尽可能多的人。OpenCode Go 是一款每月 $10 的低成本订阅服务。它提供充裕的额度,并让您能可靠地使用最强大的开源模型。", "go.problem.subtitle": " ", "go.problem.item1": "低成本订阅定价", "go.problem.item2": "充裕的限额和可靠的访问", "go.problem.item3": "为尽可能多的程序员打造", "go.problem.item4": "经过代理编程测试的精选模型阵容", "go.how.title": "Go 如何工作", - "go.how.body": "Go 起价为首月 $5,之后 $10/月。您可以将其与 OpenCode 或任何代理搭配使用。", + "go.how.body": "Go 每月 $10。您可以将其与 OpenCode 或任何代理搭配使用。", "go.how.step1.title": "创建账户", "go.how.step1.beforeLink": "遵循", "go.how.step1.link": "设置说明", "go.how.step2.title": "订阅 Go", - "go.how.step2.link": "首月 $5", - "go.how.step2.afterLink": "之后 $10/月,额度充裕", + "go.how.step2.link": "每月 $10", + "go.how.step2.afterLink": "额度充裕", "go.how.step3.title": "开始编程", "go.how.step3.body": "可靠访问开源模型", "go.privacy.title": "您的隐私对我们很重要", @@ -314,11 +313,11 @@ export const dict = { "go.faq.q2": "Go 包含哪些模型?", "go.faq.a2": "Go 包含下方列出的模型,提供充足的限额和可靠的访问。", "go.faq.q3": "Go 和 Zen 一样吗?", - "go.faq.a3": "不。Zen 是按量付费,而 Go 首月 $5,之后 $10/月,提供充裕的限额,并可可靠访问精选模型阵容。", + "go.faq.a3": "不。Zen 是按量付费,而 Go 每月 $10,提供充裕的限额,并可可靠访问精选模型阵容。", "go.faq.q4": "Go 多少钱?", "go.faq.a4.p1.beforePricing": "Go 费用为", - "go.faq.a4.p1.pricingLink": "首月 $5", - "go.faq.a4.p1.afterPricing": "之后 $10/月,额度充裕。", + "go.faq.a4.p1.pricingLink": "每月 $10", + "go.faq.a4.p1.afterPricing": "额度充裕。", "go.faq.a4.p2.beforeAccount": "您可以在您的", "go.faq.a4.p2.accountLink": "账户", "go.faq.a4.p3": "中管理订阅。随时取消。", diff --git a/packages/console/app/src/i18n/zht.ts b/packages/console/app/src/i18n/zht.ts index 274542dae..0c0247edc 100644 --- a/packages/console/app/src/i18n/zht.ts +++ b/packages/console/app/src/i18n/zht.ts @@ -245,7 +245,7 @@ export const dict = { "go.title": "OpenCode Go | 低成本全民編碼模型", "go.banner.text": "Ox Alpha Free 限時加入 Go", - "go.meta.description": "Go 首月 $5,之後 $10/月,提供充裕的使用限額,並可穩定存取領先的編碼模型。", + "go.meta.description": "Go 每月 $10,提供充裕的使用限額,並可穩定存取領先的編碼模型。", "go.hero.title": "低成本全民編碼模型", "go.hero.body": "Go 將代理編碼帶給全世界的程式設計師。提供寬裕的限額以及對最強大開源模型的穩定存取,讓你可以使用強大的代理進行構建,而無需擔心成本或可用性。", @@ -254,8 +254,7 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "訂閱 Go", "go.cta.price": "$10/月", - "go.cta.promo": "首月 $5", - "go.pricing.body": "可搭配任何代理使用。首月 $5,之後 $10/月。如有需要可儲值。隨時取消。", + "go.pricing.body": "可搭配任何代理使用。每月 $10。如有需要可儲值。隨時取消。", "go.graph.free": "免費", "go.graph.freePill": "Big Pickle 與免費模型", "go.graph.go": "Go", @@ -288,20 +287,20 @@ export const dict = { "go.testimonials.frank.quote": "我希望我還在 Nvidia。", "go.problem.title": "Go 正在解決什麼問題?", "go.problem.body": - "我們致力於將 OpenCode 體驗帶給盡可能多的人。OpenCode Go 是一款低成本訂閱服務:首月 $5,之後 $10/月。它提供充裕的額度,並讓您能可靠地使用最強大的開源模型。", + "我們致力於將 OpenCode 體驗帶給盡可能多的人。OpenCode Go 是一款每月 $10 的低成本訂閱服務。它提供充裕的額度,並讓您能可靠地使用最強大的開源模型。", "go.problem.subtitle": " ", "go.problem.item1": "低成本訂閱定價", "go.problem.item2": "寬裕的限額與穩定存取", "go.problem.item3": "專為盡可能多的程式設計師打造", "go.problem.item4": "針對代理編碼測試的精選模型陣容", "go.how.title": "Go 如何運作", - "go.how.body": "Go 起價為首月 $5,之後 $10/月。您可以將其與 OpenCode 或任何代理搭配使用。", + "go.how.body": "Go 每月 $10。您可以將其與 OpenCode 或任何代理搭配使用。", "go.how.step1.title": "建立帳號", "go.how.step1.beforeLink": "遵循", "go.how.step1.link": "設定說明", "go.how.step2.title": "訂閱 Go", - "go.how.step2.link": "首月 $5", - "go.how.step2.afterLink": "之後 $10/月,額度充裕", + "go.how.step2.link": "每月 $10", + "go.how.step2.afterLink": "額度充裕", "go.how.step3.title": "開始編碼", "go.how.step3.body": "穩定存取開源模型", "go.privacy.title": "你的隱私對我們很重要", @@ -314,11 +313,11 @@ export const dict = { "go.faq.q2": "Go 包含哪些模型?", "go.faq.a2": "Go 包含下方列出的模型,提供充足的額度與穩定的存取。", "go.faq.q3": "Go 與 Zen 一樣嗎?", - "go.faq.a3": "不。Zen 是按量付費,而 Go 首月 $5,之後 $10/月,提供充裕的限額,並可穩定存取精選模型陣容。", + "go.faq.a3": "不。Zen 是按量付費,而 Go 每月 $10,提供充裕的限額,並可穩定存取精選模型陣容。", "go.faq.q4": "Go 費用是多少?", "go.faq.a4.p1.beforePricing": "Go 費用為", - "go.faq.a4.p1.pricingLink": "首月 $5", - "go.faq.a4.p1.afterPricing": "之後 $10/月,額度充裕。", + "go.faq.a4.p1.pricingLink": "每月 $10", + "go.faq.a4.p1.afterPricing": "額度充裕。", "go.faq.a4.p2.beforeAccount": "你可以在你的", "go.faq.a4.p2.accountLink": "帳戶", "go.faq.a4.p3": "中管理訂閱。隨時取消。", diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index 025599067..f5177ce6d 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -375,12 +375,7 @@ export default function Home() { {(part) => { if (part === "{{text}}") return {i18n.t("go.cta.text")} if (part === "{{price}}") { - return ( - - {i18n.t("go.cta.price")} - {i18n.t("go.cta.promo")} - - ) + return {i18n.t("go.cta.price")} } return part }} diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index b08caa858..0beba1bce 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر الأول**، ثم **$10/شهريًا** — يمنحك وصولًا موثوقًا إلى نماذج البرمجة المفتوحة الشائعة. +OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهريًا** يمنحك وصولًا موثوقًا إلى نماذج البرمجة المفتوحة الشائعة. يعمل Go مثل أي مزود آخر في OpenCode. تشترك في OpenCode Go وتحصل على مفتاح API الخاص بك. وهو **اختياري تمامًا**، ولا تحتاج إلى استخدامه لاستخدام OpenCode. @@ -31,7 +31,7 @@ OpenCode Go هو اشتراك منخفض التكلفة — **$5 للشهر ال 2. ثم عملنا مع عدد قليل من المزودين للتأكد من تقديم هذه النماذج بالشكل الصحيح. 3. وأخيرًا، أجرينا مقارنات معيارية لمزيج النموذج/المزود، وتوصلنا إلى قائمة نشعر بالثقة في التوصية بها. -يمنحك OpenCode Go الوصول إلى هذه النماذج مقابل **$5 للشهر الأول**، ثم **$10/شهريًا**. +يمنحك OpenCode Go الوصول إلى هذه النماذج مقابل **$10/شهريًا**. --- diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 593c0a974..ffa9ee462 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go je povoljna pretplata — **$5 za vaš prvi mjesec**, a zatim **$10/mjesečno** — koja vam pruža pouzdan pristup popularnim otvorenim modelima za programiranje. +OpenCode Go je povoljna pretplata od **$10/mjesečno** koja vam pruža pouzdan pristup popularnim otvorenim modelima za programiranje. Go radi kao bilo koji drugi provajder u OpenCode-u. Pretplatite se na OpenCode Go i dobijete svoj API ključ. On je **potpuno opcionalan** i ne morate ga koristiti da @@ -39,7 +39,7 @@ Da bismo to popravili, uradili smo nekoliko stvari: 3. Na kraju smo benchmarkovali kombinaciju modela/provajdera i osmislili listu koju rado preporučujemo. -OpenCode Go vam daje pristup ovim modelima za **$5 za vaš prvi mjesec**, a zatim **$10/mjesečno**. +OpenCode Go vam daje pristup ovim modelima za **$10/mjesečno**. --- diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 3a5241aa2..e490fd79c 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go er et lavprisabonnement — **$5 for din første måned**, derefter **$10/måned** — der giver dig pålidelig adgang til populære åbne kodningsmodeller. +OpenCode Go er et lavprisabonnement til **$10/måned**, der giver dig pålidelig adgang til populære åbne kodningsmodeller. Go fungerer som enhver anden udbyder i OpenCode. Du abonnerer på OpenCode Go og får din API-nøgle. Det er **helt valgfrit**, og du behøver ikke at bruge det for at @@ -39,7 +39,7 @@ For at løse dette, gjorde vi et par ting: 3. Til sidst benchmarkede vi kombinationen af model og udbyder, og kom frem til en liste, som vi trygt kan anbefale. -OpenCode Go giver dig adgang til disse modeller for **$5 for din første måned**, derefter **$10/måned**. +OpenCode Go giver dig adgang til disse modeller for **$10/måned**. --- diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index fdab5d989..f8afac5a9 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go ist ein kostengünstiges Abonnement — **5 $ für deinen ersten Monat**, danach **10 $/Monat** —, das dir zuverlässigen Zugriff auf beliebte offene Coding-Modelle bietet. +OpenCode Go ist ein kostengünstiges Abonnement für **10 $/Monat**, das dir zuverlässigen Zugriff auf beliebte offene Coding-Modelle bietet. Go funktioniert wie jeder andere Provider in OpenCode. Du abonnierst OpenCode Go und erhältst deinen API-Key. Es ist **völlig optional** und du musst es nicht nutzen, um @@ -33,7 +33,7 @@ Um dies zu beheben, haben wir einige Dinge getan: 2. Anschließend haben wir mit einigen Providern zusammengearbeitet, um sicherzustellen, dass diese korrekt bereitgestellt werden. 3. Zuletzt haben wir die Kombination aus Modell und Provider einem Benchmark unterzogen und eine Liste erstellt, die wir mit gutem Gewissen empfehlen können. -OpenCode Go bietet dir Zugriff auf diese Modelle für **5 $ im ersten Monat**, danach **10 $/Monat**. +OpenCode Go bietet dir Zugriff auf diese Modelle für **10 $/Monat**. --- diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 99de80372..ae1ded7f6 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go es una suscripción de bajo costo — **$5 por tu primer mes**, luego **$10/mes** — que te brinda acceso confiable a modelos abiertos de programación populares. +OpenCode Go es una suscripción de bajo costo de **$10/mes** que te brinda acceso confiable a modelos abiertos de programación populares. Go funciona como cualquier otro proveedor en OpenCode. Te suscribes a OpenCode Go y obtienes tu API key. Es **completamente opcional** y no necesitas usarlo para @@ -39,7 +39,7 @@ Para solucionar esto, hicimos un par de cosas: 3. Finalmente, evaluamos el rendimiento de la combinación del modelo/proveedor y elaboramos una lista que nos sentimos seguros de recomendar. -OpenCode Go te da acceso a estos modelos por **$5 por tu primer mes**, luego **$10/mes**. +OpenCode Go te da acceso a estos modelos por **$10/mes**. --- diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 8f2ab085c..ae22a99b9 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go est un abonnement à bas coût — **5 $ pour votre premier mois**, puis **10 $/mois** — qui vous donne un accès fiable aux modèles de codage ouverts populaires. +OpenCode Go est un abonnement à bas coût à **10 $/mois** qui vous donne un accès fiable aux modèles de codage ouverts populaires. Go fonctionne comme n'importe quel autre fournisseur dans OpenCode. Vous vous abonnez à OpenCode Go et obtenez votre clé d'API. C'est **totalement facultatif** et vous n'avez pas besoin de l'utiliser pour utiliser OpenCode. @@ -31,7 +31,7 @@ Pour remédier à cela, nous avons fait plusieurs choses : 2. Nous avons ensuite travaillé avec quelques fournisseurs pour nous assurer qu'ils étaient correctement servis. 3. Enfin, nous avons évalué les performances de la combinaison modèle/fournisseur et avons dressé une liste que nous nous sentons à l'aise de recommander. -OpenCode Go vous donne accès à ces modèles pour **5 $ pour votre premier mois**, puis **10 $/mois**. +OpenCode Go vous donne accès à ces modèles pour **10 $/mois**. --- diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 38faf1c00..14b59bda2 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -7,7 +7,7 @@ import config from "../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go is a low cost subscription — **$5 for your first month**, then **$10/month** — that gives you reliable access to popular open coding models. +OpenCode Go is a low cost **$10/month subscription** that gives you reliable access to popular open coding models. Go works like any other provider in OpenCode. You subscribe to OpenCode Go and get your API key. It's **completely optional** and you don't need to use it to @@ -39,7 +39,7 @@ To fix this, we did a couple of things: 3. Finally, we benchmarked the combination of the model/provider and came up with a list that we feel good recommending. -OpenCode Go gives you access to these models for **$5 for your first month**, then **$10/month**. +OpenCode Go gives you access to these models for **$10/month**. --- diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 7f2ba354d..c9cf9a9ce 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go è un abbonamento a basso costo — **5 $ per il primo mese**, poi **10 $/mese** — che ti offre un accesso affidabile ai popolari modelli di programmazione aperti. +OpenCode Go è un abbonamento a basso costo da **10 $/mese** che ti offre un accesso affidabile ai popolari modelli di programmazione aperti. Go funziona come qualsiasi altro provider in OpenCode. Ti abboni a OpenCode Go e ottieni la tua chiave API. È **completamente facoltativo** e non hai bisogno di usarlo per @@ -37,7 +37,7 @@ Per risolvere questo problema, abbiamo fatto un paio di cose: 3. Infine, abbiamo eseguito dei benchmark sulla combinazione modello/provider e abbiamo stilato un elenco che ci sentiamo di raccomandare. -OpenCode Go ti dà accesso a questi modelli a **5 $ per il primo mese**, poi a **10 $/mese**. +OpenCode Go ti dà accesso a questi modelli a **10 $/mese**. --- diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index f0253821d..dfdf981e1 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Goは低価格のサブスクリプションで、**初月は5ドル**、その後は**月額10ドル**で、人気のオープンなコーディングモデルに安定してアクセスできます。 +OpenCode Goは、人気のオープンなコーディングモデルに安定してアクセスできる、低価格の**月額10ドルのサブスクリプション**です。 GoはOpenCodeの他のプロバイダーと同様に機能します。OpenCode GoをサブスクライブしてAPIキーを取得します。これは**完全に任意**であり、OpenCodeを使用するために必須ではありません。 @@ -31,7 +31,7 @@ OpenCodeでうまく動作する一部のモデルとプロバイダーをテス 2. 次に、これらが正しく提供されていることを確認するために、いくつかのプロバイダーと協力しました。 3. 最後に、モデルとプロバイダーの組み合わせをベンチマークし、自信を持ってお勧めできるリストを作成しました。 -OpenCode Goを使用すると、これらのモデルに**初月は5ドル**、その後は**月額10ドル**でアクセスできます。 +OpenCode Goを使用すると、これらのモデルに**月額10ドル**でアクセスできます。 --- diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index fe1b8c0fd..1ebb317df 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go는 인기 있는 오픈 코딩 모델에 안정적으로 액세스할 수 있게 해주는 저비용 구독 서비스입니다. **첫 달은 $5**, 이후에는 **월 $10**입니다. +OpenCode Go는 인기 있는 오픈 코딩 모델에 안정적으로 액세스할 수 있게 해주는 **월 $10**의 저비용 구독 서비스입니다. Go는 OpenCode의 다른 제공자와 똑같이 작동합니다. OpenCode Go를 구독하고 API 키를 발급받으면 됩니다. 이는 **완전히 선택 사항**이며, OpenCode를 사용하기 위해 꼭 필요하지는 않습니다. @@ -31,7 +31,7 @@ OpenCode와 잘 맞는 선별된 모델과 제공자 그룹을 테스트했습 2. 그런 다음 몇몇 제공자와 협력해, 이 모델들이 올바르게 서비스되도록 했습니다. 3. 마지막으로 모델/제공자 조합을 벤치마킹해, 자신 있게 추천할 수 있는 목록을 만들었습니다. -OpenCode Go를 사용하면 **첫 달은 $5**, 이후에는 **월 $10**으로 이러한 모델에 액세스할 수 있습니다. +OpenCode Go를 사용하면 **월 $10**으로 이러한 모델에 액세스할 수 있습니다. --- diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index f10b239d1..d687cb6ed 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go er et lavkostnadsabonnement — **$5 for din første måned**, deretter **$10/måned** — som gir deg pålitelig tilgang til populære åpne kodemodeller. +OpenCode Go er et lavkostnadsabonnement til **$10/måned** som gir deg pålitelig tilgang til populære åpne kodemodeller. Go fungerer som enhver annen leverandør i OpenCode. Du abonnerer på OpenCode Go og får din API-nøkkel. Det er **helt valgfritt**, og du trenger ikke å bruke det for å @@ -39,7 +39,7 @@ For å fikse dette, gjorde vi et par ting: 3. Til slutt utførte vi ytelsestester på kombinasjonen av modell og leverandør, og kom frem til en liste som vi trygt kan anbefale. -OpenCode Go gir deg tilgang til disse modellene for **$5 for din første måned**, deretter **$10/måned**. +OpenCode Go gir deg tilgang til disse modellene for **$10/måned**. --- diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index ae0e78c31..3190e32ee 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go to niskokosztowa subskrypcja — **5 $ za pierwszy miesiąc**, a następnie **10 $/miesiąc** — która zapewnia niezawodny dostęp do popularnych otwartych modeli do kodowania. +OpenCode Go to niskokosztowa subskrypcja za **10 $/miesiąc**, która zapewnia niezawodny dostęp do popularnych otwartych modeli do kodowania. Go działa jak każdy inny dostawca w OpenCode. Subskrybujesz OpenCode Go i otrzymujesz swój klucz API. Jest to **całkowicie opcjonalne** i nie musisz z tego korzystać, aby @@ -33,7 +33,7 @@ Aby to naprawić, zrobiliśmy kilka rzeczy: 2. Następnie nawiązaliśmy współpracę z kilkoma dostawcami, aby upewnić się, że są one obsługiwane poprawnie. 3. Na koniec przetestowaliśmy kombinację modelu/dostawcy i stworzyliśmy listę, którą możemy z przekonaniem polecić. -OpenCode Go daje Ci dostęp do tych modeli za **5 $ za pierwszy miesiąc**, a następnie **10 $/miesiąc**. +OpenCode Go daje Ci dostęp do tych modeli za **10 $/miesiąc**. --- diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 2383fe02c..abbd2ec71 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -O OpenCode Go é uma assinatura de baixo custo — **US$ 5 no seu primeiro mês**, depois **US$ 10/mês** — que oferece acesso confiável a modelos abertos de programação populares. +O OpenCode Go é uma assinatura de baixo custo de **US$ 10/mês** que oferece acesso confiável a modelos abertos de programação populares. O Go funciona como qualquer outro provedor no OpenCode. Você assina o OpenCode Go e obtém a sua chave de API. Ele é **totalmente opcional** e você não precisa usá-lo para @@ -39,7 +39,7 @@ Para resolver isso, fizemos algumas coisas: 3. Por fim, avaliamos por benchmark a combinação de modelo/provedor e elaboramos uma lista que nos sentimos confortáveis em recomendar. -O OpenCode Go lhe dá acesso a esses modelos por **US$ 5 no seu primeiro mês**, depois **US$ 10/mês**. +O OpenCode Go lhe dá acesso a esses modelos por **US$ 10/mês**. --- diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index eb70ffa9c..67ed83f5d 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go — это недорогая подписка (**$5 за первый месяц**, далее **$10 в месяц**), которая предоставляет надежный доступ к популярным открытым моделям для программирования. +OpenCode Go — это недорогая подписка за **$10 в месяц**, которая предоставляет надежный доступ к популярным открытым моделям для программирования. Go работает так же, как и любой другой провайдер в OpenCode. Вы оформляете подписку на OpenCode Go и получаете свой API-ключ. Использование Go **абсолютно необязательно**, и вам не нужно использовать его, чтобы @@ -39,7 +39,7 @@ Go работает так же, как и любой другой провай 3. Наконец, мы провели бенчмаркинг комбинаций модель/провайдер и составили список, который мы смело можем рекомендовать. -OpenCode Go дает вам доступ к этим моделям за **$5 в первый месяц**, далее **$10 в месяц**. +OpenCode Go дает вам доступ к этим моделям за **$10 в месяц**. --- diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index c615e3c30..e620ba09f 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go คือการสมัครสมาชิกในราคาประหยัด — **$5 สำหรับเดือนแรก** จากนั้น **$10/เดือน** — ซึ่งให้คุณเข้าถึงโมเดลโอเพนซอร์สยอดนิยมสำหรับการเขียนโค้ดได้อย่างเสถียร +OpenCode Go คือการสมัครสมาชิกในราคาประหยัด **$10/เดือน** ซึ่งให้คุณเข้าถึงโมเดลโอเพนซอร์สยอดนิยมสำหรับการเขียนโค้ดได้อย่างเสถียร Go ทำงานเหมือนกับผู้ให้บริการ (provider) รายอื่นๆ ใน OpenCode คุณสามารถสมัครสมาชิก OpenCode Go และรับ API key ของคุณ บริการนี้เป็น**ทางเลือกเพิ่มเติม** และคุณไม่จำเป็นต้องใช้มันเพื่อใช้งาน OpenCode @@ -31,7 +31,7 @@ Go ทำงานเหมือนกับผู้ให้บริกา 2. จากนั้นเราได้ทำงานร่วมกับผู้ให้บริการบางรายเพื่อให้แน่ใจว่าการให้บริการเป็นไปอย่างถูกต้อง 3. สุดท้าย เราได้ทำการวัดประสิทธิภาพ (benchmark) ของการทำงานร่วมกันระหว่างโมเดลและผู้ให้บริการ จนได้รายชื่อที่เรามั่นใจในการแนะนำ -OpenCode Go ให้คุณเข้าถึงโมเดลเหล่านี้ได้ในราคา **$5 สำหรับเดือนแรก** จากนั้น **$10/เดือน** +OpenCode Go ให้คุณเข้าถึงโมเดลเหล่านี้ได้ในราคา **$10/เดือน** --- diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 2cfd7c23a..7dab1a6ab 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go, popüler açık kodlama modellerine güvenilir erişim sağlayan düşük maliyetli bir aboneliktir — **ilk ayınız için 5$**, sonrasında **aylık 10$**. +OpenCode Go, popüler açık kodlama modellerine güvenilir erişim sağlayan düşük maliyetli **aylık 10$ aboneliğidir**. Go, OpenCode'daki diğer sağlayıcılar gibi çalışır. OpenCode Go'ya abone olur ve API anahtarınızı alırsınız. Bu **tamamen isteğe bağlıdır** ve OpenCode'u kullanmak için bunu kullanmanıza gerek yoktur. @@ -31,7 +31,7 @@ Bunu çözmek için birkaç şey yaptık: 2. Ardından, bunların doğru şekilde sunulduğundan emin olmak için birkaç sağlayıcıyla birlikte çalıştık. 3. Son olarak, model/sağlayıcı kombinasyonunu kıyasladık (benchmark) ve gönül rahatlığıyla önerebileceğimiz bir liste oluşturduk. -OpenCode Go, bu modellere **ilk ayınız için 5$**, ardından **aylık 10$** karşılığında erişmenizi sağlar. +OpenCode Go, bu modellere **aylık 10$** karşılığında erişmenizi sağlar. --- diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 68f176062..e61b8ee74 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go 是一项低成本的订阅服务 —— **首月 5 美元**,之后 **每月 10 美元** —— 让你能够稳定地访问流行的开源编程模型。 +OpenCode Go 是一项**每月 10 美元的低成本订阅服务**,让你能够稳定地访问流行的开源编程模型。 Go 的工作方式与 OpenCode 中的任何其他提供商(provider)一样。订阅 OpenCode Go 后你将获得 API 密钥。它是 **完全可选** 的,并非使用 OpenCode 所必需的条件。 @@ -31,7 +31,7 @@ Go 的工作方式与 OpenCode 中的任何其他提供商(provider)一样 2. 随后我们与一些提供商合作,以确保正确提供这些服务。 3. 最后,我们对模型和提供商的组合进行了基准测试(benchmark),得出了一份我们乐于推荐的列表。 -OpenCode Go 让你能够访问这些模型,**首月只需 5 美元**,之后 **每月 10 美元**。 +OpenCode Go 让你能够以**每月 10 美元**的价格访问这些模型。 --- diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index 349787ecd..8c76676be 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -7,7 +7,7 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -OpenCode Go 是一項低成本的訂閱服務——**首月 $5 美元**,之後**每月 $10 美元**——讓您能穩定使用受歡迎的開源寫程式模型。 +OpenCode Go 是一項**每月 $10 美元的低成本訂閱服務**,讓您能穩定使用受歡迎的開源寫程式模型。 Go 的運作方式與 OpenCode 中的任何其他供應商相同。您訂閱 OpenCode Go 並取得您的 API key。這是**完全可選的**,您不需要使用它也能使用 OpenCode。 @@ -31,7 +31,7 @@ Go 的運作方式與 OpenCode 中的任何其他供應商相同。您訂閱 Ope 2. 接著我們與幾家供應商合作,確保這些模型被正確地提供服務。 3. 最後,我們對模型與供應商的組合進行了基準測試,並整理出一份我們樂於推薦的清單。 -OpenCode Go 讓您可以存取這些模型,**首月只需 $5 美元**,之後**每月 $10 美元**。 +OpenCode Go 讓您可以用**每月 $10 美元**存取這些模型。 --- From 3f2e0e89ecd286483aabad9e52871a08240f13c1 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Mon, 24 Aug 2026 07:18:00 +0000 Subject: [PATCH 127/271] chore: generate --- packages/console/app/src/i18n/ar.ts | 6 ++---- packages/console/app/src/i18n/br.ts | 3 +-- packages/console/app/src/i18n/da.ts | 6 ++---- packages/console/app/src/i18n/de.ts | 6 ++---- packages/console/app/src/i18n/en.ts | 3 +-- packages/console/app/src/i18n/fr.ts | 3 +-- packages/console/app/src/i18n/ko.ts | 3 +-- packages/console/app/src/i18n/no.ts | 6 ++---- packages/console/app/src/i18n/pl.ts | 3 +-- packages/console/app/src/i18n/ru.ts | 3 +-- packages/console/app/src/i18n/tr.ts | 6 ++---- packages/console/app/src/i18n/uk.ts | 6 ++---- 12 files changed, 18 insertions(+), 36 deletions(-) diff --git a/packages/console/app/src/i18n/ar.ts b/packages/console/app/src/i18n/ar.ts index 130e93c45..ab945d533 100644 --- a/packages/console/app/src/i18n/ar.ts +++ b/packages/console/app/src/i18n/ar.ts @@ -253,8 +253,7 @@ export const dict = { "go.title": "OpenCode Go | نماذج برمجة منخفضة التكلفة للجميع", "go.banner.text": "Ox Alpha Free متاح على Go لفترة محدودة", - "go.meta.description": - "يبلغ سعر Go ‏$10/شهر، مع حدود استخدام سخية ووصول موثوق إلى نماذج البرمجة الرائدة.", + "go.meta.description": "يبلغ سعر Go ‏$10/شهر، مع حدود استخدام سخية ووصول موثوق إلى نماذج البرمجة الرائدة.", "go.hero.title": "نماذج برمجة منخفضة التكلفة للجميع", "go.hero.body": "يجلب Go البرمجة الوكيلة للمبرمجين حول العالم. يوفر حدودًا سخية ووصولًا موثوقًا إلى أقوى النماذج مفتوحة المصدر، حتى تتمكن من البناء باستخدام وكلاء أقوياء دون القلق بشأن التكلفة أو التوفر.", @@ -263,8 +262,7 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "اشترك في Go", "go.cta.price": "$10/شهر", - "go.pricing.body": - "استخدمه مع أي وكيل. $10/شهر. قم بزيادة الرصيد إذا لزم الأمر. الإلغاء في أي وقت.", + "go.pricing.body": "استخدمه مع أي وكيل. $10/شهر. قم بزيادة الرصيد إذا لزم الأمر. الإلغاء في أي وقت.", "go.graph.free": "مجاني", "go.graph.freePill": "Big Pickle ونماذج مجانية", "go.graph.go": "Go", diff --git a/packages/console/app/src/i18n/br.ts b/packages/console/app/src/i18n/br.ts index ae60ee500..eff209998 100644 --- a/packages/console/app/src/i18n/br.ts +++ b/packages/console/app/src/i18n/br.ts @@ -309,8 +309,7 @@ export const dict = { "go.problem.item3": "Feito para o maior número possível de programadores", "go.problem.item4": "Uma seleção de modelos testados para codificação com agentes", "go.how.title": "Como o Go funciona", - "go.how.body": - "O Go custa $10/mês. Você pode usá-lo com o OpenCode ou qualquer agente.", + "go.how.body": "O Go custa $10/mês. Você pode usá-lo com o OpenCode ou qualquer agente.", "go.how.step1.title": "Crie uma conta", "go.how.step1.beforeLink": "siga as", "go.how.step1.link": "instruções de configuração", diff --git a/packages/console/app/src/i18n/da.ts b/packages/console/app/src/i18n/da.ts index 8f17a2beb..3f86c9f47 100644 --- a/packages/console/app/src/i18n/da.ts +++ b/packages/console/app/src/i18n/da.ts @@ -265,8 +265,7 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Abonner på Go", "go.cta.price": "$10/måned", - "go.pricing.body": - "Brug med enhver agent. $10/måned. Tank op med kredit efter behov. Afmeld når som helst.", + "go.pricing.body": "Brug med enhver agent. $10/måned. Tank op med kredit efter behov. Afmeld når som helst.", "go.graph.free": "Gratis", "go.graph.freePill": "Big Pickle og gratis modeller", "go.graph.go": "Go", @@ -306,8 +305,7 @@ export const dict = { "go.problem.item3": "Bygget til så mange programmører som muligt", "go.problem.item4": "Et kurateret modeludvalg testet til agentisk kodning", "go.how.title": "Hvordan Go virker", - "go.how.body": - "Go koster $10/måned. Du kan bruge det med OpenCode eller enhver agent.", + "go.how.body": "Go koster $10/måned. Du kan bruge det med OpenCode eller enhver agent.", "go.how.step1.title": "Opret en konto", "go.how.step1.beforeLink": "følg", "go.how.step1.link": "opsætningsinstruktionerne", diff --git a/packages/console/app/src/i18n/de.ts b/packages/console/app/src/i18n/de.ts index 49d9242da..c06b54569 100644 --- a/packages/console/app/src/i18n/de.ts +++ b/packages/console/app/src/i18n/de.ts @@ -267,8 +267,7 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Go abonnieren", "go.cta.price": "$10/Monat", - "go.pricing.body": - "Mit jedem Agenten nutzbar. $10/Monat. Guthaben bei Bedarf aufladen. Jederzeit kündbar.", + "go.pricing.body": "Mit jedem Agenten nutzbar. $10/Monat. Guthaben bei Bedarf aufladen. Jederzeit kündbar.", "go.graph.free": "Kostenlos", "go.graph.freePill": "Big Pickle und kostenlose Modelle", "go.graph.go": "Go", @@ -308,8 +307,7 @@ export const dict = { "go.problem.item3": "Für so viele Programmierer wie möglich gebaut", "go.problem.item4": "Eine kuratierte, für Agentic Coding getestete Modellauswahl", "go.how.title": "Wie Go funktioniert", - "go.how.body": - "Go kostet $10/Monat. Du kannst es mit OpenCode oder jedem Agenten nutzen.", + "go.how.body": "Go kostet $10/Monat. Du kannst es mit OpenCode oder jedem Agenten nutzen.", "go.how.step1.title": "Konto erstellen", "go.how.step1.beforeLink": "folge den", "go.how.step1.link": "Einrichtungsanweisungen", diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index 810b82672..19a1663ab 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -254,8 +254,7 @@ export const dict = { "go.title": "OpenCode Go | Low cost coding models for everyone", "go.banner.text": "Ox Alpha Free is available on Go for a limited time", - "go.meta.description": - "Go costs $10/month, with generous usage limits and reliable access to leading coding models.", + "go.meta.description": "Go costs $10/month, with generous usage limits and reliable access to leading coding models.", "go.hero.title": "Low cost coding models for everyone", "go.hero.body": "Go brings agentic coding to programmers around the world. Offering generous limits and reliable access to the most capable open-source models, so you can build with powerful agents without worrying about cost or availability.", diff --git a/packages/console/app/src/i18n/fr.ts b/packages/console/app/src/i18n/fr.ts index 737583535..90cac7408 100644 --- a/packages/console/app/src/i18n/fr.ts +++ b/packages/console/app/src/i18n/fr.ts @@ -310,8 +310,7 @@ export const dict = { "go.problem.item3": "Conçu pour autant de programmeurs que possible", "go.problem.item4": "Une sélection de modèles testés pour le codage agentique", "go.how.title": "Comment fonctionne Go", - "go.how.body": - "Go coûte 10 $/mois. Vous pouvez l'utiliser avec OpenCode ou n'importe quel agent.", + "go.how.body": "Go coûte 10 $/mois. Vous pouvez l'utiliser avec OpenCode ou n'importe quel agent.", "go.how.step1.title": "Créez un compte", "go.how.step1.beforeLink": "suivez les", "go.how.step1.link": "instructions de configuration", diff --git a/packages/console/app/src/i18n/ko.ts b/packages/console/app/src/i18n/ko.ts index 2884c6fbf..d5018d071 100644 --- a/packages/console/app/src/i18n/ko.ts +++ b/packages/console/app/src/i18n/ko.ts @@ -251,8 +251,7 @@ export const dict = { "go.title": "OpenCode Go | 모두를 위한 저비용 코딩 모델", "go.banner.text": "Ox Alpha Free가 한정된 기간 동안 Go에서 제공됩니다", - "go.meta.description": - "Go는 월 $10이며, 넉넉한 사용 한도와 주요 코딩 모델에 대한 안정적인 액세스를 제공합니다.", + "go.meta.description": "Go는 월 $10이며, 넉넉한 사용 한도와 주요 코딩 모델에 대한 안정적인 액세스를 제공합니다.", "go.hero.title": "모두를 위한 저비용 코딩 모델", "go.hero.body": "Go는 전 세계 프로그래머들에게 에이전트 코딩을 제공합니다. 가장 유능한 오픈 소스 모델에 대한 넉넉한 한도와 안정적인 액세스를 제공하므로, 비용이나 가용성 걱정 없이 강력한 에이전트로 빌드할 수 있습니다.", diff --git a/packages/console/app/src/i18n/no.ts b/packages/console/app/src/i18n/no.ts index bca1396cf..7137791c6 100644 --- a/packages/console/app/src/i18n/no.ts +++ b/packages/console/app/src/i18n/no.ts @@ -265,8 +265,7 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Abonner på Go", "go.cta.price": "$10/måned", - "go.pricing.body": - "Bruk med hvilken som helst agent. $10/måned. Fyll på kreditt ved behov. Avslutt når som helst.", + "go.pricing.body": "Bruk med hvilken som helst agent. $10/måned. Fyll på kreditt ved behov. Avslutt når som helst.", "go.graph.free": "Gratis", "go.graph.freePill": "Big Pickle og gratis modeller", "go.graph.go": "Go", @@ -306,8 +305,7 @@ export const dict = { "go.problem.item3": "Bygget for så mange programmerere som mulig", "go.problem.item4": "Et kuratert modellutvalg testet for agent-koding", "go.how.title": "Hvordan Go fungerer", - "go.how.body": - "Go koster $10/måned. Du kan bruke det med OpenCode eller hvilken som helst agent.", + "go.how.body": "Go koster $10/måned. Du kan bruke det med OpenCode eller hvilken som helst agent.", "go.how.step1.title": "Opprett en konto", "go.how.step1.beforeLink": "følg", "go.how.step1.link": "oppsettsinstruksjonene", diff --git a/packages/console/app/src/i18n/pl.ts b/packages/console/app/src/i18n/pl.ts index 36a58f17a..474050962 100644 --- a/packages/console/app/src/i18n/pl.ts +++ b/packages/console/app/src/i18n/pl.ts @@ -307,8 +307,7 @@ export const dict = { "go.problem.item3": "Stworzony dla jak największej liczby programistów", "go.problem.item4": "Starannie dobrany zestaw modeli przetestowanych pod kątem kodowania z agentami", "go.how.title": "Jak działa Go", - "go.how.body": - "Go kosztuje $10/miesiąc. Możesz go używać z OpenCode lub dowolnym agentem.", + "go.how.body": "Go kosztuje $10/miesiąc. Możesz go używać z OpenCode lub dowolnym agentem.", "go.how.step1.title": "Załóż konto", "go.how.step1.beforeLink": "postępuj zgodnie z", "go.how.step1.link": "instrukcją konfiguracji", diff --git a/packages/console/app/src/i18n/ru.ts b/packages/console/app/src/i18n/ru.ts index ae3f0cc67..30678c52b 100644 --- a/packages/console/app/src/i18n/ru.ts +++ b/packages/console/app/src/i18n/ru.ts @@ -311,8 +311,7 @@ export const dict = { "go.problem.item3": "Создан для максимального числа программистов", "go.problem.item4": "Отобранные модели, протестированные для агентного программирования", "go.how.title": "Как работает Go", - "go.how.body": - "Go стоит $10/месяц. Вы можете использовать его с OpenCode или любым агентом.", + "go.how.body": "Go стоит $10/месяц. Вы можете использовать его с OpenCode или любым агентом.", "go.how.step1.title": "Создайте аккаунт", "go.how.step1.beforeLink": "следуйте", "go.how.step1.link": "инструкциям по настройке", diff --git a/packages/console/app/src/i18n/tr.ts b/packages/console/app/src/i18n/tr.ts index b5b8b1fe6..dddeb94fb 100644 --- a/packages/console/app/src/i18n/tr.ts +++ b/packages/console/app/src/i18n/tr.ts @@ -267,8 +267,7 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Go'ya abone ol", "go.cta.price": "Ayda 10$", - "go.pricing.body": - "Herhangi bir ajanla kullanın. Ayda 10$. Gerekirse kredi yükleyin. İstediğiniz zaman iptal edin.", + "go.pricing.body": "Herhangi bir ajanla kullanın. Ayda 10$. Gerekirse kredi yükleyin. İstediğiniz zaman iptal edin.", "go.graph.free": "Ücretsiz", "go.graph.freePill": "Big Pickle ve ücretsiz modeller", "go.graph.go": "Go", @@ -309,8 +308,7 @@ export const dict = { "go.problem.item3": "Mümkün olduğunca çok programcı için geliştirildi", "go.problem.item4": "Ajan tabanlı kodlama için test edilmiş, özenle seçilmiş model seçenekleri", "go.how.title": "Go nasıl çalışır?", - "go.how.body": - "Go ayda 10$'dır. OpenCode veya herhangi bir ajanla kullanabilirsiniz.", + "go.how.body": "Go ayda 10$'dır. OpenCode veya herhangi bir ajanla kullanabilirsiniz.", "go.how.step1.title": "Bir hesap oluşturun", "go.how.step1.beforeLink": "takip edin", "go.how.step1.link": "kurulum talimatları", diff --git a/packages/console/app/src/i18n/uk.ts b/packages/console/app/src/i18n/uk.ts index f56cee238..958cf9fcb 100644 --- a/packages/console/app/src/i18n/uk.ts +++ b/packages/console/app/src/i18n/uk.ts @@ -266,8 +266,7 @@ export const dict = { "go.cta.template": "{{text}} {{price}}", "go.cta.text": "Підписатися на Go", "go.cta.price": "$10/місяць", - "go.pricing.body": - "Використовуйте з будь-яким агентом. $10/місяць. Поповнюйте за потреби. Скасуйте в будь-який час.", + "go.pricing.body": "Використовуйте з будь-яким агентом. $10/місяць. Поповнюйте за потреби. Скасуйте в будь-який час.", "go.graph.free": "Безкоштовно", "go.graph.freePill": "Big Pickle та безкоштовні моделі", "go.graph.go": "Go", @@ -307,8 +306,7 @@ export const dict = { "go.problem.item3": "Створено для якомога більшої кількості програмістів", "go.problem.item4": "Добірка моделей, протестованих для агентного кодування", "go.how.title": "Як працює Go", - "go.how.body": - "Go коштує $10/місяць. Використовуйте з OpenCode або будь-яким агентом.", + "go.how.body": "Go коштує $10/місяць. Використовуйте з OpenCode або будь-яким агентом.", "go.how.step1.title": "Створіть обліковий запис", "go.how.step1.beforeLink": "дотримуйтесь", "go.how.step1.link": "інструкцій з налаштування", From 4371298fff79bf72c6016ddf05d277f11973913b Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 24 Aug 2026 03:54:38 -0400 Subject: [PATCH 128/271] fix(console): discontinue first-month Go discount (#44633) --- packages/console/app/src/i18n/ar.ts | 4 ++-- packages/console/app/src/i18n/br.ts | 4 ++-- packages/console/app/src/i18n/da.ts | 4 ++-- packages/console/app/src/i18n/de.ts | 4 ++-- packages/console/app/src/i18n/en.ts | 4 ++-- packages/console/app/src/i18n/es.ts | 4 ++-- packages/console/app/src/i18n/fr.ts | 4 ++-- packages/console/app/src/i18n/it.ts | 4 ++-- packages/console/app/src/i18n/ja.ts | 4 ++-- packages/console/app/src/i18n/ko.ts | 4 ++-- packages/console/app/src/i18n/no.ts | 4 ++-- packages/console/app/src/i18n/pl.ts | 4 ++-- packages/console/app/src/i18n/ru.ts | 4 ++-- packages/console/app/src/i18n/th.ts | 4 ++-- packages/console/app/src/i18n/tr.ts | 4 ++-- packages/console/app/src/i18n/uk.ts | 4 ++-- packages/console/app/src/i18n/zh.ts | 4 ++-- packages/console/app/src/i18n/zht.ts | 4 ++-- packages/console/core/src/billing.ts | 1 - packages/opencode/src/session/retry.ts | 2 +- packages/opencode/test/session/retry.test.ts | 2 +- packages/ui/src/i18n/am.ts | 2 +- packages/ui/src/i18n/ar.ts | 2 +- packages/ui/src/i18n/az.ts | 2 +- packages/ui/src/i18n/bg.ts | 2 +- packages/ui/src/i18n/bn.ts | 2 +- packages/ui/src/i18n/br.ts | 2 +- packages/ui/src/i18n/bs.ts | 2 +- packages/ui/src/i18n/ca.ts | 2 +- packages/ui/src/i18n/cs.ts | 2 +- packages/ui/src/i18n/da.ts | 2 +- packages/ui/src/i18n/de.ts | 2 +- packages/ui/src/i18n/dv.ts | 2 +- packages/ui/src/i18n/dz.ts | 2 +- packages/ui/src/i18n/el.ts | 2 +- packages/ui/src/i18n/en.ts | 2 +- packages/ui/src/i18n/es.ts | 2 +- packages/ui/src/i18n/et.ts | 2 +- packages/ui/src/i18n/fa.ts | 2 +- packages/ui/src/i18n/fi.ts | 2 +- packages/ui/src/i18n/fo.ts | 2 +- packages/ui/src/i18n/fr.ts | 2 +- packages/ui/src/i18n/hi.ts | 2 +- packages/ui/src/i18n/hr.ts | 2 +- packages/ui/src/i18n/hu.ts | 2 +- packages/ui/src/i18n/hy.ts | 2 +- packages/ui/src/i18n/id.ts | 2 +- packages/ui/src/i18n/is.ts | 2 +- packages/ui/src/i18n/it.ts | 2 +- packages/ui/src/i18n/ja.ts | 2 +- packages/ui/src/i18n/ka.ts | 2 +- packages/ui/src/i18n/km.ts | 2 +- packages/ui/src/i18n/ko.ts | 2 +- packages/ui/src/i18n/lo.ts | 2 +- packages/ui/src/i18n/lt.ts | 2 +- packages/ui/src/i18n/lv.ts | 2 +- packages/ui/src/i18n/mk.ts | 2 +- packages/ui/src/i18n/mn.ts | 2 +- packages/ui/src/i18n/ms.ts | 2 +- packages/ui/src/i18n/my.ts | 2 +- packages/ui/src/i18n/ne.ts | 2 +- packages/ui/src/i18n/nl.ts | 2 +- packages/ui/src/i18n/no.ts | 2 +- packages/ui/src/i18n/pa.ts | 2 +- packages/ui/src/i18n/pl.ts | 2 +- packages/ui/src/i18n/ro.ts | 2 +- packages/ui/src/i18n/ru.ts | 2 +- packages/ui/src/i18n/si.ts | 2 +- packages/ui/src/i18n/sk.ts | 2 +- packages/ui/src/i18n/sl.ts | 2 +- packages/ui/src/i18n/sq.ts | 2 +- packages/ui/src/i18n/sr.ts | 2 +- packages/ui/src/i18n/sv.ts | 2 +- packages/ui/src/i18n/tg.ts | 2 +- packages/ui/src/i18n/th.ts | 2 +- packages/ui/src/i18n/tk.ts | 2 +- packages/ui/src/i18n/tr.ts | 2 +- packages/ui/src/i18n/uk.ts | 2 +- packages/ui/src/i18n/ur.ts | 2 +- packages/ui/src/i18n/uz.ts | 2 +- packages/ui/src/i18n/vi.ts | 2 +- packages/ui/src/i18n/zh.ts | 2 +- packages/ui/src/i18n/zht.ts | 2 +- 83 files changed, 100 insertions(+), 101 deletions(-) diff --git a/packages/console/app/src/i18n/ar.ts b/packages/console/app/src/i18n/ar.ts index ab945d533..e82395918 100644 --- a/packages/console/app/src/i18n/ar.ts +++ b/packages/console/app/src/i18n/ar.ts @@ -677,8 +677,8 @@ export const dict = { "workspace.lite.other.message": "عضو آخر في مساحة العمل هذه مشترك بالفعل في OpenCode Go. يمكن لعضو واحد فقط لكل مساحة عمل الاشتراك.", "workspace.lite.promo.description": - "يبدأ OpenCode Go بسعر {{price}}، ثم $10/شهر، ويوفر وصولا موثوقا لنماذج البرمجة المفتوحة الشهيرة مع حدود استخدام سخية.", - "workspace.lite.promo.price": "$5 للشهر الأول", + "يبلغ سعر OpenCode Go {{price}}، ويوفر وصولا موثوقا لنماذج البرمجة المفتوحة الشهيرة مع حدود استخدام سخية.", + "workspace.lite.promo.price": "$10/شهر", "workspace.lite.promo.modelsTitle": "ما يتضمنه", "workspace.lite.promo.footer": "صُممت الخطة بشكل أساسي للمستخدمين الدوليين، وتوفر وصولًا عالميًا مستقرًا. قد تتغير الأسعار وحدود الاستخدام بينما نتعلم من الاستخدام المبكر والملاحظات.", diff --git a/packages/console/app/src/i18n/br.ts b/packages/console/app/src/i18n/br.ts index eff209998..49c0f2aa3 100644 --- a/packages/console/app/src/i18n/br.ts +++ b/packages/console/app/src/i18n/br.ts @@ -689,8 +689,8 @@ export const dict = { "workspace.lite.other.message": "Outro membro neste workspace já assina o OpenCode Go. Apenas um membro por workspace pode assinar.", "workspace.lite.promo.description": - "O OpenCode Go começa em {{price}}, depois $10/mês, e oferece acesso confiável a modelos de codificação abertos populares com limites de uso generosos.", - "workspace.lite.promo.price": "$5 no primeiro mês", + "O OpenCode Go custa {{price}} e oferece acesso confiável a modelos de codificação abertos populares com limites de uso generosos.", + "workspace.lite.promo.price": "$10/mês", "workspace.lite.promo.modelsTitle": "O que está incluído", "workspace.lite.promo.footer": "O plano foi desenvolvido principalmente para usuários internacionais e oferece acesso global estável. Os preços e limites de uso podem mudar à medida que aprendemos com o uso inicial e o feedback recebido.", diff --git a/packages/console/app/src/i18n/da.ts b/packages/console/app/src/i18n/da.ts index 3f86c9f47..6e2652ef1 100644 --- a/packages/console/app/src/i18n/da.ts +++ b/packages/console/app/src/i18n/da.ts @@ -685,8 +685,8 @@ export const dict = { "workspace.lite.other.message": "Et andet medlem i dette workspace abonnerer allerede på OpenCode Go. Kun ét medlem pr. workspace kan abonnere.", "workspace.lite.promo.description": - "OpenCode Go starter ved {{price}}, derefter $10/måned, og giver pålidelig adgang til populære åbne kodningsmodeller med generøse brugsgrænser.", - "workspace.lite.promo.price": "$5 for den første måned", + "OpenCode Go koster {{price}} og giver pålidelig adgang til populære åbne kodningsmodeller med generøse brugsgrænser.", + "workspace.lite.promo.price": "$10/måned", "workspace.lite.promo.modelsTitle": "Hvad er inkluderet", "workspace.lite.promo.footer": "Planen er primært udviklet til internationale brugere og giver stabil adgang i hele verden. Priser og forbrugsgrænser kan ændre sig, efterhånden som vi lærer af de første brugserfaringer og tilbagemeldinger.", diff --git a/packages/console/app/src/i18n/de.ts b/packages/console/app/src/i18n/de.ts index c06b54569..20ae27439 100644 --- a/packages/console/app/src/i18n/de.ts +++ b/packages/console/app/src/i18n/de.ts @@ -687,8 +687,8 @@ export const dict = { "workspace.lite.other.message": "Ein anderes Mitglied in diesem Workspace hat OpenCode Go bereits abonniert. Nur ein Mitglied pro Workspace kann abonnieren.", "workspace.lite.promo.description": - "OpenCode Go startet bei {{price}}, danach $10/Monat, und bietet zuverlässigen Zugang zu beliebten offenen Coding-Modellen mit großzügigen Nutzungslimits.", - "workspace.lite.promo.price": "$5 im ersten Monat", + "OpenCode Go kostet {{price}} und bietet zuverlässigen Zugang zu beliebten offenen Coding-Modellen mit großzügigen Nutzungslimits.", + "workspace.lite.promo.price": "$10/Monat", "workspace.lite.promo.modelsTitle": "Was enthalten ist", "workspace.lite.promo.footer": "Der Plan richtet sich in erster Linie an internationale Nutzer und bietet stabilen weltweiten Zugriff. Preise und Nutzungslimits können sich ändern, wenn wir Erkenntnisse aus der ersten Nutzung und dem Feedback gewinnen.", diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index 19a1663ab..b31f79a63 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -685,8 +685,8 @@ export const dict = { "workspace.lite.other.message": "Another member in this workspace is already subscribed to OpenCode Go. Only one member per workspace can subscribe.", "workspace.lite.promo.description": - "OpenCode Go starts at {{price}}, then $10/month, and provides reliable access to popular open coding models with generous usage limits.", - "workspace.lite.promo.price": "$5 for your first month", + "OpenCode Go costs {{price}} and provides reliable access to popular open coding models with generous usage limits.", + "workspace.lite.promo.price": "$10/month", "workspace.lite.promo.modelsTitle": "What's Included", "workspace.lite.promo.footer": "The plan is designed primarily for international users and provides stable global access. Pricing and usage limits may change as we learn from early usage and feedback.", diff --git a/packages/console/app/src/i18n/es.ts b/packages/console/app/src/i18n/es.ts index 3e796ecde..b76e0a5c6 100644 --- a/packages/console/app/src/i18n/es.ts +++ b/packages/console/app/src/i18n/es.ts @@ -690,8 +690,8 @@ export const dict = { "workspace.lite.other.message": "Otro miembro de este espacio de trabajo ya está suscrito a OpenCode Go. Solo un miembro por espacio de trabajo puede suscribirse.", "workspace.lite.promo.description": - "OpenCode Go comienza en {{price}}, luego $10/mes, y ofrece acceso confiable a modelos de codificación abiertos populares con límites de uso generosos.", - "workspace.lite.promo.price": "$5 el primer mes", + "OpenCode Go cuesta {{price}} y ofrece acceso confiable a modelos de codificación abiertos populares con límites de uso generosos.", + "workspace.lite.promo.price": "$10/mes", "workspace.lite.promo.modelsTitle": "Qué incluye", "workspace.lite.promo.footer": "El plan está diseñado principalmente para usuarios internacionales y ofrece un acceso global estable. Los precios y los límites de uso pueden cambiar a medida que aprendemos del uso inicial y de los comentarios recibidos.", diff --git a/packages/console/app/src/i18n/fr.ts b/packages/console/app/src/i18n/fr.ts index 90cac7408..171c481d7 100644 --- a/packages/console/app/src/i18n/fr.ts +++ b/packages/console/app/src/i18n/fr.ts @@ -696,8 +696,8 @@ export const dict = { "workspace.lite.other.message": "Un autre membre de cet espace de travail est déjà abonné à OpenCode Go. Un seul membre par espace de travail peut s'abonner.", "workspace.lite.promo.description": - "OpenCode Go commence à {{price}}, puis 10 $/mois, et offre un accès fiable aux modèles de code ouverts populaires avec des limites d'utilisation généreuses.", - "workspace.lite.promo.price": "$5 le premier mois", + "OpenCode Go coûte {{price}} et offre un accès fiable aux modèles de code ouverts populaires avec des limites d'utilisation généreuses.", + "workspace.lite.promo.price": "10 $/mois", "workspace.lite.promo.modelsTitle": "Ce qui est inclus", "workspace.lite.promo.footer": "Ce forfait est principalement conçu pour les utilisateurs internationaux et offre un accès mondial stable. Les tarifs et les limites d'utilisation peuvent évoluer à mesure que nous tirons les enseignements des premières utilisations et des retours reçus.", diff --git a/packages/console/app/src/i18n/it.ts b/packages/console/app/src/i18n/it.ts index af6b35f46..7906a70dc 100644 --- a/packages/console/app/src/i18n/it.ts +++ b/packages/console/app/src/i18n/it.ts @@ -688,8 +688,8 @@ export const dict = { "workspace.lite.other.message": "Un altro membro in questo workspace è già abbonato a OpenCode Go. Solo un membro per workspace può abbonarsi.", "workspace.lite.promo.description": - "OpenCode Go parte da {{price}}, poi $10/mese, e offre un accesso affidabile a popolari modelli di coding aperti con generosi limiti di utilizzo.", - "workspace.lite.promo.price": "$5 il primo mese", + "OpenCode Go costa {{price}} e offre un accesso affidabile a popolari modelli di coding aperti con generosi limiti di utilizzo.", + "workspace.lite.promo.price": "$10/mese", "workspace.lite.promo.modelsTitle": "Cosa è incluso", "workspace.lite.promo.footer": "Il piano è pensato principalmente per gli utenti internazionali e offre un accesso globale stabile. I prezzi e i limiti di utilizzo potrebbero cambiare in base a quanto apprenderemo dall'utilizzo iniziale e dai feedback.", diff --git a/packages/console/app/src/i18n/ja.ts b/packages/console/app/src/i18n/ja.ts index a94febc6b..ffc97c616 100644 --- a/packages/console/app/src/i18n/ja.ts +++ b/packages/console/app/src/i18n/ja.ts @@ -686,8 +686,8 @@ export const dict = { "workspace.lite.other.message": "このワークスペースの別のメンバーが既に OpenCode Go を購読しています。ワークスペースにつき1人のメンバーのみが購読できます。", "workspace.lite.promo.description": - "OpenCode Goは{{price}}で始まり、その後は$10/月で、人気の高いオープンコーディングモデルへの安定したアクセスと余裕のある利用枠を提供します。", - "workspace.lite.promo.price": "初月$5", + "OpenCode Goは{{price}}で、人気の高いオープンコーディングモデルへの安定したアクセスと余裕のある利用枠を提供します。", + "workspace.lite.promo.price": "$10/月", "workspace.lite.promo.modelsTitle": "含まれるもの", "workspace.lite.promo.footer": "このプランは主に海外のユーザー向けに設計されており、世界中から安定してご利用いただけます。料金と利用上限は、初期の利用状況やフィードバックを踏まえて変更される場合があります。", diff --git a/packages/console/app/src/i18n/ko.ts b/packages/console/app/src/i18n/ko.ts index d5018d071..63468b24a 100644 --- a/packages/console/app/src/i18n/ko.ts +++ b/packages/console/app/src/i18n/ko.ts @@ -677,8 +677,8 @@ export const dict = { "workspace.lite.other.message": "이 워크스페이스의 다른 멤버가 이미 OpenCode Go를 구독 중입니다. 워크스페이스당 한 명의 멤버만 구독할 수 있습니다.", "workspace.lite.promo.description": - "OpenCode Go는 {{price}}부터 시작하며, 이후 $10/월로 넉넉한 사용량 한도와 함께 인기 있는 오픈 코딩 모델에 대한 안정적인 액세스를 제공합니다.", - "workspace.lite.promo.price": "첫 달 $5", + "OpenCode Go는 {{price}}로 넉넉한 사용량 한도와 함께 인기 있는 오픈 코딩 모델에 대한 안정적인 액세스를 제공합니다.", + "workspace.lite.promo.price": "$10/월", "workspace.lite.promo.modelsTitle": "포함 내역", "workspace.lite.promo.footer": "이 플랜은 주로 해외 사용자를 위해 설계되었으며, 전 세계에서 안정적으로 이용할 수 있습니다. 초기 이용 현황과 피드백을 반영하는 과정에서 가격과 사용 한도가 변경될 수 있습니다.", diff --git a/packages/console/app/src/i18n/no.ts b/packages/console/app/src/i18n/no.ts index 7137791c6..48573864a 100644 --- a/packages/console/app/src/i18n/no.ts +++ b/packages/console/app/src/i18n/no.ts @@ -686,8 +686,8 @@ export const dict = { "workspace.lite.other.message": "Et annet medlem i dette arbeidsområdet abonnerer allerede på OpenCode Go. Kun ett medlem per arbeidsområde kan abonnere.", "workspace.lite.promo.description": - "OpenCode Go starter på {{price}}, deretter $10/måned, og gir pålitelig tilgang til populære åpne kodingsmodeller med sjenerøse bruksgrenser.", - "workspace.lite.promo.price": "$5 for den første måneden", + "OpenCode Go koster {{price}} og gir pålitelig tilgang til populære åpne kodingsmodeller med sjenerøse bruksgrenser.", + "workspace.lite.promo.price": "$10/måned", "workspace.lite.promo.modelsTitle": "Hva som er inkludert", "workspace.lite.promo.footer": "Planen er primært utviklet for internasjonale brukere og gir stabil global tilgang. Priser og bruksgrenser kan endres etter hvert som vi lærer av tidlig bruk og tilbakemeldinger.", diff --git a/packages/console/app/src/i18n/pl.ts b/packages/console/app/src/i18n/pl.ts index 474050962..0e27dad30 100644 --- a/packages/console/app/src/i18n/pl.ts +++ b/packages/console/app/src/i18n/pl.ts @@ -687,8 +687,8 @@ export const dict = { "workspace.lite.other.message": "Inny członek tego obszaru roboczego już subskrybuje OpenCode Go. Tylko jeden członek na obszar roboczy może subskrybować.", "workspace.lite.promo.description": - "OpenCode Go zaczyna się od {{price}}, potem $10/miesiąc, i zapewnia niezawodny dostęp do popularnych otwartych modeli kodowania z hojnymi limitami użycia.", - "workspace.lite.promo.price": "$5 za pierwszy miesiąc", + "OpenCode Go kosztuje {{price}} i zapewnia niezawodny dostęp do popularnych otwartych modeli kodowania z hojnymi limitami użycia.", + "workspace.lite.promo.price": "$10/miesiąc", "workspace.lite.promo.modelsTitle": "Co zawiera", "workspace.lite.promo.footer": "Plan został opracowany przede wszystkim z myślą o użytkownikach z całego świata i zapewnia stabilny globalny dostęp. Ceny i limity użycia mogą ulec zmianie w miarę zdobywania doświadczeń na podstawie początkowego korzystania z usługi i otrzymywanych opinii.", diff --git a/packages/console/app/src/i18n/ru.ts b/packages/console/app/src/i18n/ru.ts index 30678c52b..e3ff8c3ff 100644 --- a/packages/console/app/src/i18n/ru.ts +++ b/packages/console/app/src/i18n/ru.ts @@ -694,8 +694,8 @@ export const dict = { "workspace.lite.other.message": "Другой участник в этом рабочем пространстве уже подписан на OpenCode Go. Только один участник в рабочем пространстве может оформить подписку.", "workspace.lite.promo.description": - "OpenCode Go начинается с {{price}}, затем $10/месяц и предоставляет надежный доступ к популярным открытым моделям кодирования с щедрыми лимитами использования.", - "workspace.lite.promo.price": "$5 за первый месяц", + "OpenCode Go стоит {{price}} и предоставляет надежный доступ к популярным открытым моделям кодирования с щедрыми лимитами использования.", + "workspace.lite.promo.price": "$10/месяц", "workspace.lite.promo.modelsTitle": "Что включено", "workspace.lite.promo.footer": "План предназначен в первую очередь для пользователей по всему миру и обеспечивает стабильный глобальный доступ. Цены и лимиты использования могут меняться по мере изучения первых результатов использования и отзывов.", diff --git a/packages/console/app/src/i18n/th.ts b/packages/console/app/src/i18n/th.ts index db8efed74..f1767d540 100644 --- a/packages/console/app/src/i18n/th.ts +++ b/packages/console/app/src/i18n/th.ts @@ -683,8 +683,8 @@ export const dict = { "workspace.lite.other.message": "สมาชิกคนอื่นใน Workspace นี้ได้สมัคร OpenCode Go แล้ว สามารถสมัครได้เพียงหนึ่งคนต่อหนึ่ง Workspace เท่านั้น", "workspace.lite.promo.description": - "OpenCode Go เริ่มต้นที่ {{price}} จากนั้น $10/เดือน และมอบการเข้าถึงโมเดลการเขียนโค้ดแบบเปิดยอดนิยมอย่างเสถียรพร้อมขีดจำกัดการใช้งานที่ให้มาอย่างเหลือเฟือ", - "workspace.lite.promo.price": "$5 สำหรับเดือนแรก", + "OpenCode Go ราคา {{price}} และมอบการเข้าถึงโมเดลการเขียนโค้ดแบบเปิดยอดนิยมอย่างเสถียรพร้อมขีดจำกัดการใช้งานที่ให้มาอย่างเหลือเฟือ", + "workspace.lite.promo.price": "$10/เดือน", "workspace.lite.promo.modelsTitle": "สิ่งที่รวมอยู่ด้วย", "workspace.lite.promo.footer": "แผนนี้ออกแบบมาสำหรับผู้ใช้งานต่างประเทศเป็นหลักและให้การเข้าถึงที่เสถียรทั่วโลก ราคาและขีดจำกัดการใช้งานอาจเปลี่ยนแปลงได้ตามสิ่งที่เราเรียนรู้จากการใช้งานและข้อเสนอแนะในช่วงแรก", diff --git a/packages/console/app/src/i18n/tr.ts b/packages/console/app/src/i18n/tr.ts index dddeb94fb..cd1aaebb9 100644 --- a/packages/console/app/src/i18n/tr.ts +++ b/packages/console/app/src/i18n/tr.ts @@ -689,8 +689,8 @@ export const dict = { "workspace.lite.other.message": "Bu çalışma alanındaki başka bir üye zaten OpenCode Go abonesi. Çalışma alanı başına yalnızca bir üye abone olabilir.", "workspace.lite.promo.description": - "OpenCode Go {{price}} fiyatından başlar, sonrasında ayda 10$ olur ve cömert kullanım limitleriyle popüler açık kodlama modellerine güvenilir erişim sağlar.", - "workspace.lite.promo.price": "İlk ay $5", + "OpenCode Go {{price}} fiyatıyla cömert kullanım limitleri ve popüler açık kodlama modellerine güvenilir erişim sağlar.", + "workspace.lite.promo.price": "Ayda 10$", "workspace.lite.promo.modelsTitle": "Neler Dahil", "workspace.lite.promo.footer": "Plan öncelikle uluslararası kullanıcılar için tasarlanmıştır ve istikrarlı küresel erişim sağlar. Erken kullanım ve geri bildirimlerden öğrendiklerimiz doğrultusunda fiyatlandırma ve kullanım limitleri değişebilir.", diff --git a/packages/console/app/src/i18n/uk.ts b/packages/console/app/src/i18n/uk.ts index 958cf9fcb..c99510456 100644 --- a/packages/console/app/src/i18n/uk.ts +++ b/packages/console/app/src/i18n/uk.ts @@ -682,8 +682,8 @@ export const dict = { "workspace.lite.black.message": "Ви вже підписані на OpenCode Black або в списку очікування. Спочатку скасуйте підписку, якщо хочете перейти на Go.", "workspace.lite.other.message": "Інший учасник цього робочого простору вже підписаний на OpenCode Go.", - "workspace.lite.promo.description": "OpenCode Go починається від {{price}}, потім $10/місяць, із щедрими лімітами.", - "workspace.lite.promo.price": "$5 за перший місяць", + "workspace.lite.promo.description": "OpenCode Go коштує {{price}} і має щедрі ліміти.", + "workspace.lite.promo.price": "$10/місяць", "workspace.lite.promo.modelsTitle": "Що включено", "workspace.lite.promo.footer": "План призначений насамперед для міжнародних користувачів і забезпечує стабільний глобальний доступ. Ціни та ліміти використання можуть змінюватися з урахуванням перших даних про використання та відгуків.", diff --git a/packages/console/app/src/i18n/zh.ts b/packages/console/app/src/i18n/zh.ts index e55cf0715..8fae9a9c0 100644 --- a/packages/console/app/src/i18n/zh.ts +++ b/packages/console/app/src/i18n/zh.ts @@ -656,8 +656,8 @@ export const dict = { "workspace.lite.black.message": "您当前已订阅 OpenCode Black 或在候补名单中。如需切换到 Go,请先取消订阅。", "workspace.lite.other.message": "此工作区中的另一位成员已经订阅了 OpenCode Go。每个工作区只有一名成员可以订阅。", "workspace.lite.promo.description": - "OpenCode Go 起价为 {{price}},之后 $10/月,并提供对流行开放编码模型的可靠访问,同时享有充裕的使用限额。", - "workspace.lite.promo.price": "首月 $5", + "OpenCode Go 每月 {{price}},并提供对流行开放编码模型的可靠访问,同时享有充裕的使用限额。", + "workspace.lite.promo.price": "$10/月", "workspace.lite.promo.modelsTitle": "包含模型", "workspace.lite.promo.footer": "该计划主要面向国际用户,提供稳定的全球访问体验。随着我们持续了解早期使用情况并收集反馈,定价和使用限额可能会有所调整。", diff --git a/packages/console/app/src/i18n/zht.ts b/packages/console/app/src/i18n/zht.ts index 0c0247edc..d30affd99 100644 --- a/packages/console/app/src/i18n/zht.ts +++ b/packages/console/app/src/i18n/zht.ts @@ -656,8 +656,8 @@ export const dict = { "workspace.lite.black.message": "您目前已訂閱 OpenCode Black 或在候補名單中。若要切換至 Go,請先取消訂閱。", "workspace.lite.other.message": "此工作區中的另一位成員已訂閱 OpenCode Go。每個工作區只能有一位成員訂閱。", "workspace.lite.promo.description": - "OpenCode Go 起價為 {{price}},之後 $10/月,並提供對熱門開放編碼模型的可靠存取,同時享有充裕的使用額度。", - "workspace.lite.promo.price": "首月 $5", + "OpenCode Go 每月 {{price}},並提供對熱門開放編碼模型的可靠存取,同時享有充裕的使用額度。", + "workspace.lite.promo.price": "$10/月", "workspace.lite.promo.modelsTitle": "包含模型", "workspace.lite.promo.footer": "此方案主要為國際使用者設計,提供穩定的全球存取服務。隨著我們從初期使用情況和回饋中持續了解需求,價格和使用額度可能會有所調整。", diff --git a/packages/console/core/src/billing.ts b/packages/console/core/src/billing.ts index 879cd8c67..adeabd9c7 100644 --- a/packages/console/core/src/billing.ts +++ b/packages/console/core/src/billing.ts @@ -328,7 +328,6 @@ export namespace Billing { return LiteData.threeMonths100Coupon if (coupons.some((coupon) => coupon.type === "GOFREEMONTH" && !coupon.timeRedeemed)) return LiteData.firstMonth100Coupon - if (!coupons.some((coupon) => coupon.type === "GO1MONTH50")) return LiteData.firstMonth50Coupon return undefined })() const createSession = () => diff --git a/packages/opencode/src/session/retry.ts b/packages/opencode/src/session/retry.ts index 4bc02a9e9..284c0f0ad 100644 --- a/packages/opencode/src/session/retry.ts +++ b/packages/opencode/src/session/retry.ts @@ -103,7 +103,7 @@ export function retryable(error: Err, provider: string) { reason: "free_tier_limit", provider, title: "Free limit reached", - message: "Subscribe to OpenCode Go for reliable access to the best open-source models, starting at $5/month.", + message: "Subscribe to OpenCode Go for reliable access to the best open-source models for $10/month.", label: "subscribe", link: GO_UPSELL_URL, }, diff --git a/packages/opencode/test/session/retry.test.ts b/packages/opencode/test/session/retry.test.ts index 10032b811..20c8678cf 100644 --- a/packages/opencode/test/session/retry.test.ts +++ b/packages/opencode/test/session/retry.test.ts @@ -354,7 +354,7 @@ describe("session.retry.retryable", () => { reason: "free_tier_limit", provider: "opencode", title: "Free limit reached", - message: "Subscribe to OpenCode Go for reliable access to the best open-source models, starting at $5/month.", + message: "Subscribe to OpenCode Go for reliable access to the best open-source models for $10/month.", label: "subscribe", link: SessionRetry.GO_UPSELL_URL, }, diff --git a/packages/ui/src/i18n/am.ts b/packages/ui/src/i18n/am.ts index 12557ab24..01d5cd425 100644 --- a/packages/ui/src/i18n/am.ts +++ b/packages/ui/src/i18n/am.ts @@ -68,7 +68,7 @@ export const dict: Record = { "ui.sessionTurn.error.freeUsageExceeded": "ነፃ አጠቃቀም ታልፏል", "ui.sessionTurn.error.addCredits": "ክሬዲት አክል", "dialog.usageExceeded.freeTier.title": "ነፃ ገደብ ላይ ደርሷል", - "dialog.usageExceeded.freeTier.description": "ለOpenCode Go ለምርጥ ክፍት ምንጭ ሞዴሎች ታማኝ መዳረሻ ለማግኘት ይመዝገቡ፣ ከ$5 በወር ጀምሮ።", + "dialog.usageExceeded.freeTier.description": "ለምርጥ ክፍት ምንጭ ሞዴሎች ታማኝ መዳረሻ ለማግኘት በወር $10 ለOpenCode Go ይመዝገቡ።", "dialog.usageExceeded.freeTier.actionLabel": "ለደንበኝነት ይመዝገቡ", "dialog.usageExceeded.accountRateLimit.title": "የሂድ ገደብ ላይ ደርሷል", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/ar.ts b/packages/ui/src/i18n/ar.ts index 8be4f840a..b23c24b5b 100644 --- a/packages/ui/src/i18n/ar.ts +++ b/packages/ui/src/i18n/ar.ts @@ -77,7 +77,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "تم الوصول إلى الحد المجاني", "dialog.usageExceeded.freeTier.description": - "اشترك في OpenCode Go للحصول على وصول موثوق إلى أفضل النماذج مفتوحة المصدر، ابتداءً من $5/شهر.", + "اشترك في OpenCode Go مقابل $10/شهر للحصول على وصول موثوق إلى أفضل النماذج مفتوحة المصدر.", "dialog.usageExceeded.freeTier.actionLabel": "اشترك", "dialog.usageExceeded.accountRateLimit.title": "تم الوصول إلى حد Go", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/az.ts b/packages/ui/src/i18n/az.ts index a93750645..d5fa9cb25 100644 --- a/packages/ui/src/i18n/az.ts +++ b/packages/ui/src/i18n/az.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Kredit əlavə et", "dialog.usageExceeded.freeTier.title": "Pulsuz limitə çatdınız", "dialog.usageExceeded.freeTier.description": - "Ayda $5-dan başlayan OpenCode Go abunəliyi ilə ən yaxşı açıq mənbəli modellərə etibarlı giriş əldə edin.", + "Ayda $10 olan OpenCode Go abunəliyi ilə ən yaxşı açıq mənbəli modellərə etibarlı giriş əldə edin.", "dialog.usageExceeded.freeTier.actionLabel": "Abunə ol", "dialog.usageExceeded.accountRateLimit.title": "Go limitinə çatdınız", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/bg.ts b/packages/ui/src/i18n/bg.ts index ee4963b2d..ea10ab598 100644 --- a/packages/ui/src/i18n/bg.ts +++ b/packages/ui/src/i18n/bg.ts @@ -69,7 +69,7 @@ export const dict = { "ui.sessionTurn.error.addCredits": "Добавете кредити", "dialog.usageExceeded.freeTier.title": "Безплатният лимит е достигнат", "dialog.usageExceeded.freeTier.description": - "Абонирайте се за OpenCode Go за надежден достъп до най-добрите модели с отворен код, започващи от $5/месец.", + "Абонирайте се за OpenCode Go за надежден достъп до най-добрите модели с отворен код за $10/месец.", "dialog.usageExceeded.freeTier.actionLabel": "Абонирайте се", "dialog.usageExceeded.accountRateLimit.title": "Лимитът за движение е достигнат", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/bn.ts b/packages/ui/src/i18n/bn.ts index fcbf6867e..74a694058 100644 --- a/packages/ui/src/i18n/bn.ts +++ b/packages/ui/src/i18n/bn.ts @@ -71,7 +71,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "ক্রেডিট যোগ করুন", "dialog.usageExceeded.freeTier.title": "বিনামূল্যের সীমা পৌঁছেছে", "dialog.usageExceeded.freeTier.description": - "OpenCode-এ সদস্যতা নিন $5/মাস থেকে শুরু করে সেরা ওপেন-সোর্স মডেলগুলিতে নির্ভরযোগ্য অ্যাক্সেসের জন্য যান৷", + "সেরা ওপেন-সোর্স মডেলগুলিতে নির্ভরযোগ্য অ্যাক্সেসের জন্য $10/মাসে OpenCode Go-তে সদস্যতা নিন৷", "dialog.usageExceeded.freeTier.actionLabel": "সদস্যতা", "dialog.usageExceeded.accountRateLimit.title": "যাওয়ার সীমা পৌঁছে গেছে", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/br.ts b/packages/ui/src/i18n/br.ts index 1844aaf79..19fc68365 100644 --- a/packages/ui/src/i18n/br.ts +++ b/packages/ui/src/i18n/br.ts @@ -74,7 +74,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "Limite gratuito atingido", "dialog.usageExceeded.freeTier.description": - "Assine o OpenCode Go para ter acesso confiável aos melhores modelos de código aberto, a partir de $5/mês.", + "Assine o OpenCode Go por $10/mês para ter acesso confiável aos melhores modelos de código aberto.", "dialog.usageExceeded.freeTier.actionLabel": "Assinar", "dialog.usageExceeded.accountRateLimit.title": "Limite do Go atingido", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/bs.ts b/packages/ui/src/i18n/bs.ts index bf16eceea..5b33f068b 100644 --- a/packages/ui/src/i18n/bs.ts +++ b/packages/ui/src/i18n/bs.ts @@ -78,7 +78,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "Dostignut besplatan limit", "dialog.usageExceeded.freeTier.description": - "Pretplati se na OpenCode Go za pouzdan pristup najboljim modelima otvorenog koda, počevši od $5/mjesec.", + "Pretplati se na OpenCode Go za $10/mjesec i ostvari pouzdan pristup najboljim modelima otvorenog koda.", "dialog.usageExceeded.freeTier.actionLabel": "Pretplati se", "dialog.usageExceeded.accountRateLimit.title": "Dostignut Go limit", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/ca.ts b/packages/ui/src/i18n/ca.ts index ca3d49b00..1141fa404 100644 --- a/packages/ui/src/i18n/ca.ts +++ b/packages/ui/src/i18n/ca.ts @@ -70,7 +70,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Afegeix crèdits", "dialog.usageExceeded.freeTier.title": "S'ha arribat al límit gratuït", "dialog.usageExceeded.freeTier.description": - "Subscriviu-vos a OpenCode Go per obtenir accés fiable als millors models de codi obert, a partir de 5 dòlars al mes.", + "Subscriviu-vos a OpenCode Go per 10 dòlars al mes i obteniu accés fiable als millors models de codi obert.", "dialog.usageExceeded.freeTier.actionLabel": "Subscriu-te", "dialog.usageExceeded.accountRateLimit.title": "S'ha assolit el límit de Go", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/cs.ts b/packages/ui/src/i18n/cs.ts index ed7f9fbf0..58f508cd7 100644 --- a/packages/ui/src/i18n/cs.ts +++ b/packages/ui/src/i18n/cs.ts @@ -71,7 +71,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Přidejte kredity", "dialog.usageExceeded.freeTier.title": "Dosažen limit zdarma", "dialog.usageExceeded.freeTier.description": - "Předplaťte si OpenCode Go a získejte spolehlivý přístup k nejlepším modelům s otevřeným zdrojovým kódem již od 5 USD měsíčně.", + "Předplaťte si OpenCode Go za 10 USD měsíčně a získejte spolehlivý přístup k nejlepším modelům s otevřeným zdrojovým kódem.", "dialog.usageExceeded.freeTier.actionLabel": "Přihlásit se k odběru", "dialog.usageExceeded.accountRateLimit.title": "Dosažen limit služby Go", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/da.ts b/packages/ui/src/i18n/da.ts index 7bac164eb..a3f256c7b 100644 --- a/packages/ui/src/i18n/da.ts +++ b/packages/ui/src/i18n/da.ts @@ -71,7 +71,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "Gratis grænse nået", "dialog.usageExceeded.freeTier.description": - "Abonnér på OpenCode Go for pålidelig adgang til de bedste open source-modeller fra $5/måned.", + "Abonnér på OpenCode Go for $10/måned, og få pålidelig adgang til de bedste open source-modeller.", "dialog.usageExceeded.freeTier.actionLabel": "Abonnér", "dialog.usageExceeded.accountRateLimit.title": "Go-grænse nået", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/de.ts b/packages/ui/src/i18n/de.ts index fbe9f3cd2..ca86cba28 100644 --- a/packages/ui/src/i18n/de.ts +++ b/packages/ui/src/i18n/de.ts @@ -78,7 +78,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "Kostenloses Limit erreicht", "dialog.usageExceeded.freeTier.description": - "OpenCode Go abonnieren und zuverlässigen Zugriff auf die besten Open-Source-Modelle erhalten, ab 5 $ pro Monat.", + "OpenCode Go für 10 $ pro Monat abonnieren und zuverlässigen Zugriff auf die besten Open-Source-Modelle erhalten.", "dialog.usageExceeded.freeTier.actionLabel": "Abonnieren", "dialog.usageExceeded.accountRateLimit.title": "Go-Limit erreicht", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/dv.ts b/packages/ui/src/i18n/dv.ts index 6c6a7384b..9b7f26e8f 100644 --- a/packages/ui/src/i18n/dv.ts +++ b/packages/ui/src/i18n/dv.ts @@ -70,7 +70,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "ކްރެޑިޓްތައް އިތުރުކުރުން", "dialog.usageExceeded.freeTier.title": "ހިލޭ ލިމިޓަށް އާދެވިއްޖެއެވެ", "dialog.usageExceeded.freeTier.description": - "އެންމެ ރަނގަޅު އޮޕަން ސޯސް މޮޑެލްތަކަށް އިތުބާރުހުރި ގޮތެއްގައި އެކްސެސް ހޯދުމަށް OpenCode Go އަށް ސަބްސްކްރައިބް ކޮށްލައްވާ، މަހަކު 5 ޑޮލަރުން ފެށިގެންނެވެ.", + "އެންމެ ރަނގަޅު އޮޕަން ސޯސް މޮޑެލްތަކަށް އިތުބާރުހުރި ގޮތެއްގައި އެކްސެސް ހޯދުމަށް މަހަކު 10 ޑޮލަރަށް OpenCode Go އަށް ސަބްސްކްރައިބް ކޮށްލައްވާ.", "dialog.usageExceeded.freeTier.actionLabel": "ސަބްސްކްރައިބް ކޮށްލައްވާ", "dialog.usageExceeded.accountRateLimit.title": "ގޯ ލިމިޓް އާދެވުނެވެ", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/dz.ts b/packages/ui/src/i18n/dz.ts index b14d576a2..545be671e 100644 --- a/packages/ui/src/i18n/dz.ts +++ b/packages/ui/src/i18n/dz.ts @@ -71,7 +71,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "སྐྱིན་འགྲུལ་ཁ་སྐོང་བརྐྱབ།", "dialog.usageExceeded.freeTier.title": "རིན་མེད་ཚད་ལུ་ལྷོད་ཡོདཔ།", "dialog.usageExceeded.freeTier.description": - "OpenCode ལུ་མཁོ་མངགས་འབད། $5/month ལས་འགོ་བཙུགས་ཏེ་ ཁ་ཕྱེ་ཡོད་པའི་ཐོན་ཁུངས་དཔེ་ཚད་དྲག་ཤོས་ཚུ་ལུ་བློ་གཏད་ཅན་གྱི་འཛུལ་སྤྱོད་ཀྱི་དོན་ལུ་འགྱོ།", + "OpenCode Go ལུ་ཟླཝ་རེར་ $10 གྱིས་མཁོ་མངགས་འབད་དེ་ ཁ་ཕྱེ་ཡོད་པའི་ཐོན་ཁུངས་དཔེ་ཚད་དྲག་ཤོས་ཚུ་ལུ་བློ་གཏད་ཅན་གྱི་འཛུལ་སྤྱོད་ཐོབ།", "dialog.usageExceeded.freeTier.actionLabel": "མཁོ་མངགས་འབད།", "dialog.usageExceeded.accountRateLimit.title": "འགྱོ་ཚད་ལུ་ལྷོད་ཡོདཔ།", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/el.ts b/packages/ui/src/i18n/el.ts index f4fc56c1a..0c9971489 100644 --- a/packages/ui/src/i18n/el.ts +++ b/packages/ui/src/i18n/el.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Προσθήκη πιστώσεων", "dialog.usageExceeded.freeTier.title": "Συμπληρώθηκε το δωρεάν όριο", "dialog.usageExceeded.freeTier.description": - "Εγγραφείτε στο OpenCode Μετάβαση για αξιόπιστη πρόσβαση στα καλύτερα μοντέλα ανοιχτού κώδικα, ξεκινώντας από 5 $/μήνα.", + "Εγγραφείτε στο OpenCode Go για 10 $/μήνα και αποκτήστε αξιόπιστη πρόσβαση στα καλύτερα μοντέλα ανοιχτού κώδικα.", "dialog.usageExceeded.freeTier.actionLabel": "Εγγραφή", "dialog.usageExceeded.accountRateLimit.title": "Συμπληρώθηκε το όριο μετάβασης", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/en.ts b/packages/ui/src/i18n/en.ts index aa0ec9c57..54008fbc8 100644 --- a/packages/ui/src/i18n/en.ts +++ b/packages/ui/src/i18n/en.ts @@ -75,7 +75,7 @@ export const dict: Record = { "dialog.usageExceeded.freeTier.title": "Free limit reached", "dialog.usageExceeded.freeTier.description": - "Subscribe to OpenCode Go for reliable access to the best open-source models, starting at $5/month.", + "Subscribe to OpenCode Go for reliable access to the best open-source models for $10/month.", "dialog.usageExceeded.freeTier.actionLabel": "Subscribe", "dialog.usageExceeded.accountRateLimit.title": "Go limit reached", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/es.ts b/packages/ui/src/i18n/es.ts index 4153680d3..07d3f4243 100644 --- a/packages/ui/src/i18n/es.ts +++ b/packages/ui/src/i18n/es.ts @@ -74,7 +74,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "Límite gratuito alcanzado", "dialog.usageExceeded.freeTier.description": - "Suscríbete a OpenCode Go para acceder de forma fiable a los mejores modelos de código abierto desde 5 USD al mes.", + "Suscríbete a OpenCode Go por 10 USD al mes para acceder de forma fiable a los mejores modelos de código abierto.", "dialog.usageExceeded.freeTier.actionLabel": "Suscribirse", "dialog.usageExceeded.accountRateLimit.title": "Límite de Go alcanzado", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/et.ts b/packages/ui/src/i18n/et.ts index b37223e98..5c548c84e 100644 --- a/packages/ui/src/i18n/et.ts +++ b/packages/ui/src/i18n/et.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Lisa krediite", "dialog.usageExceeded.freeTier.title": "Tasuta limiit on täis", "dialog.usageExceeded.freeTier.description": - "Tellige OpenCode, et saada usaldusväärne juurdepääs parimatele avatud lähtekoodiga mudelitele alates 5 dollarist kuus.", + "Tellige OpenCode Go 10 dollari eest kuus, et saada usaldusväärne juurdepääs parimatele avatud lähtekoodiga mudelitele.", "dialog.usageExceeded.freeTier.actionLabel": "Telli", "dialog.usageExceeded.accountRateLimit.title": "Go limiit on täis", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/fa.ts b/packages/ui/src/i18n/fa.ts index f166bea8f..54b356d10 100644 --- a/packages/ui/src/i18n/fa.ts +++ b/packages/ui/src/i18n/fa.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "اعتبار اضافه کنید", "dialog.usageExceeded.freeTier.title": "به حد مجاز رایگان رسیده است", "dialog.usageExceeded.freeTier.description": - "برای دسترسی مطمئن به بهترین مدل های منبع باز، از 5 دلار در ماه، در OpenCode Go مشترک شوید.", + "برای دسترسی مطمئن به بهترین مدل‌های منبع باز، با قیمت 10 دلار در ماه در OpenCode Go مشترک شوید.", "dialog.usageExceeded.freeTier.actionLabel": "مشترک شوید", "dialog.usageExceeded.accountRateLimit.title": "به حد مجاز رفتن رسید", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/fi.ts b/packages/ui/src/i18n/fi.ts index a78ba7a17..d3a26cb43 100644 --- a/packages/ui/src/i18n/fi.ts +++ b/packages/ui/src/i18n/fi.ts @@ -68,7 +68,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Lisää krediittejä", "dialog.usageExceeded.freeTier.title": "Ilmainen raja saavutettu", "dialog.usageExceeded.freeTier.description": - "Tilaa OpenCode Go saadaksesi luotettavan pääsyn parhaisiin avoimen lähdekoodin malleihin alkaen 5 dollarista kuukaudessa.", + "Tilaa OpenCode Go 10 dollarilla kuukaudessa saadaksesi luotettavan pääsyn parhaisiin avoimen lähdekoodin malleihin.", "dialog.usageExceeded.freeTier.actionLabel": "Tilaa", "dialog.usageExceeded.accountRateLimit.title": "Go-raja saavutettu", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/fo.ts b/packages/ui/src/i18n/fo.ts index df45382c8..098ea8f5b 100644 --- a/packages/ui/src/i18n/fo.ts +++ b/packages/ui/src/i18n/fo.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Legg stig til", "dialog.usageExceeded.freeTier.title": "Frítt mark er nátt", "dialog.usageExceeded.freeTier.description": - "Tekna teg til OpenCode Go fyri álítandi atgongd til bestu open-source modellini, frá $5 um mánaðin.", + "Tekna teg til OpenCode Go fyri $10 um mánaðin og fá álítandi atgongd til bestu open-source modellini.", "dialog.usageExceeded.freeTier.actionLabel": "Tekna teg", "dialog.usageExceeded.accountRateLimit.title": "Go-markið er rokkið", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/fr.ts b/packages/ui/src/i18n/fr.ts index 5e9a54708..c008c2a34 100644 --- a/packages/ui/src/i18n/fr.ts +++ b/packages/ui/src/i18n/fr.ts @@ -75,7 +75,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "Limite gratuite atteinte", "dialog.usageExceeded.freeTier.description": - "Abonnez-vous à OpenCode Go pour un accès fiable aux meilleurs modèles à code source ouvert, à partir de 5 $ US par mois.", + "Abonnez-vous à OpenCode Go pour 10 $ US par mois et accédez de manière fiable aux meilleurs modèles à code source ouvert.", "dialog.usageExceeded.freeTier.actionLabel": "S'abonner", "dialog.usageExceeded.accountRateLimit.title": "Limite Go atteinte", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/hi.ts b/packages/ui/src/i18n/hi.ts index 4805dfcf4..6da92d275 100644 --- a/packages/ui/src/i18n/hi.ts +++ b/packages/ui/src/i18n/hi.ts @@ -70,7 +70,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "क्रेडिट जोड़ें", "dialog.usageExceeded.freeTier.title": "मुफ़्त सीमा पूरी हो गई", "dialog.usageExceeded.freeTier.description": - "$5/month से शुरू होने वाली सदस्यता के साथ सर्वोत्तम ओपन-सोर्स मॉडलों तक विश्वसनीय पहुँच के लिए OpenCode Go की सदस्यता लें।", + "$10/month में सर्वोत्तम ओपन-सोर्स मॉडलों तक विश्वसनीय पहुँच के लिए OpenCode Go की सदस्यता लें।", "dialog.usageExceeded.freeTier.actionLabel": "सदस्यता लें", "dialog.usageExceeded.accountRateLimit.title": "Go सीमा पूरी हो गई", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/hr.ts b/packages/ui/src/i18n/hr.ts index 2d482e6ff..4eb129c9e 100644 --- a/packages/ui/src/i18n/hr.ts +++ b/packages/ui/src/i18n/hr.ts @@ -71,7 +71,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Dodaj kredite", "dialog.usageExceeded.freeTier.title": "Dosegnuto je besplatno ograničenje", "dialog.usageExceeded.freeTier.description": - "Pretplatite se na OpenCode Go za pouzdan pristup najboljim modelima otvorenog koda, počevši od 5 USD mjesečno.", + "Pretplatite se na OpenCode Go za 10 USD mjesečno i ostvarite pouzdan pristup najboljim modelima otvorenog koda.", "dialog.usageExceeded.freeTier.actionLabel": "Pretplatite se", "dialog.usageExceeded.accountRateLimit.title": "Dosegnuto je ograničenje usluge Go", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/hu.ts b/packages/ui/src/i18n/hu.ts index 6039bb6ed..b4d61b4f5 100644 --- a/packages/ui/src/i18n/hu.ts +++ b/packages/ui/src/i18n/hu.ts @@ -71,7 +71,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Adjon hozzá krediteket", "dialog.usageExceeded.freeTier.title": "Elérte a szabad korlátot", "dialog.usageExceeded.freeTier.description": - "Iratkozzon fel a OpenCode Go szolgáltatásra, hogy megbízható hozzáférést kaphasson a legjobb nyílt forráskódú modellekhez, havi 5 dolláros áron.", + "Iratkozzon fel az OpenCode Go szolgáltatásra havi 10 dollárért, hogy megbízható hozzáférést kapjon a legjobb nyílt forráskódú modellekhez.", "dialog.usageExceeded.freeTier.actionLabel": "Iratkozz fel", "dialog.usageExceeded.accountRateLimit.title": "Elérte a Go korlátját", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/hy.ts b/packages/ui/src/i18n/hy.ts index 968163416..39f073c6e 100644 --- a/packages/ui/src/i18n/hy.ts +++ b/packages/ui/src/i18n/hy.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Ավելացնել միավորներ", "dialog.usageExceeded.freeTier.title": "Ազատ սահմանաչափը հասել է", "dialog.usageExceeded.freeTier.description": - "Բաժանորդագրվեք OpenCode-ին Գնացեք՝ բաց կոդով լավագույն մոդելներին հուսալի մուտք ունենալու համար՝ սկսած $5/ամսական արժեքից:", + "Բաժանորդագրվեք OpenCode Go-ին՝ բաց կոդով լավագույն մոդելներին հուսալի մուտք ունենալու համար՝ ամսական $10 արժեքով:", "dialog.usageExceeded.freeTier.actionLabel": "Բաժանորդագրվել", "dialog.usageExceeded.accountRateLimit.title": "Գնալ սահմանաչափը հասել է", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/id.ts b/packages/ui/src/i18n/id.ts index 0e2d74fb4..22e4d4622 100644 --- a/packages/ui/src/i18n/id.ts +++ b/packages/ui/src/i18n/id.ts @@ -74,7 +74,7 @@ export const dict: Record = { "dialog.usageExceeded.freeTier.title": "Batas gratis tercapai", "dialog.usageExceeded.freeTier.description": - "Berlangganan OpenCode Go untuk akses andal ke model sumber terbuka terbaik, mulai dari $5/bulan.", + "Berlangganan OpenCode Go seharga $10/bulan untuk akses andal ke model sumber terbuka terbaik.", "dialog.usageExceeded.freeTier.actionLabel": "Berlangganan", "dialog.usageExceeded.accountRateLimit.title": "Batas Go tercapai", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/is.ts b/packages/ui/src/i18n/is.ts index b9c29a9bb..7b3bf0fb2 100644 --- a/packages/ui/src/i18n/is.ts +++ b/packages/ui/src/i18n/is.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Bæta við inneign", "dialog.usageExceeded.freeTier.title": "Ókeypis hámarki náð", "dialog.usageExceeded.freeTier.description": - "Gerast áskrifandi að OpenCode Go fyrir áreiðanlegan aðgang að bestu opnum gerðum, frá $5/mánuði.", + "Gerast áskrifandi að OpenCode Go fyrir $10 á mánuði og fá áreiðanlegan aðgang að bestu opnu gerðunum.", "dialog.usageExceeded.freeTier.actionLabel": "Gerast áskrifandi", "dialog.usageExceeded.accountRateLimit.title": "Go takmörkum náð", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/it.ts b/packages/ui/src/i18n/it.ts index 73b0461ed..9d104a677 100644 --- a/packages/ui/src/i18n/it.ts +++ b/packages/ui/src/i18n/it.ts @@ -71,7 +71,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Aggiungi crediti", "dialog.usageExceeded.freeTier.title": "Limite gratuito raggiunto", "dialog.usageExceeded.freeTier.description": - "Abbonati a OpenCode Go per un accesso affidabile ai migliori modelli open source, a partire da 5 $ al mese.", + "Abbonati a OpenCode Go per 10 $ al mese e accedi in modo affidabile ai migliori modelli open source.", "dialog.usageExceeded.freeTier.actionLabel": "Iscriviti", "dialog.usageExceeded.accountRateLimit.title": "Limite Go raggiunto", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/ja.ts b/packages/ui/src/i18n/ja.ts index 3bbc00e8a..1b32e05de 100644 --- a/packages/ui/src/i18n/ja.ts +++ b/packages/ui/src/i18n/ja.ts @@ -72,7 +72,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "無料制限に達しました", "dialog.usageExceeded.freeTier.description": - "OpenCode Go にサブスクライブして、最高のオープンソースモデルに安定してアクセスできます。月額 $5 から。", + "OpenCode Go にサブスクライブして、最高のオープンソースモデルに安定してアクセスできます。月額 $10。", "dialog.usageExceeded.freeTier.actionLabel": "サブスクライブ", "dialog.usageExceeded.accountRateLimit.title": "Go の制限に達しました", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/ka.ts b/packages/ui/src/i18n/ka.ts index 02742e840..68f19bc00 100644 --- a/packages/ui/src/i18n/ka.ts +++ b/packages/ui/src/i18n/ka.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "დაამატე კრედიტები", "dialog.usageExceeded.freeTier.title": "უფასო ლიმიტი მიღწეულია", "dialog.usageExceeded.freeTier.description": - "გამოიწერეთ OpenCode გადადით სანდო წვდომისთვის საუკეთესო ღია კოდის მოდელებზე, დაწყებული $5/თვეში.", + "გამოიწერეთ OpenCode Go საუკეთესო ღია კოდის მოდელებზე სანდო წვდომისთვის, თვეში $10-ად.", "dialog.usageExceeded.freeTier.actionLabel": "გამოწერა", "dialog.usageExceeded.accountRateLimit.title": "გადასვლის ლიმიტი მიღწეულია", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/km.ts b/packages/ui/src/i18n/km.ts index df0b6fad7..b50e9c53e 100644 --- a/packages/ui/src/i18n/km.ts +++ b/packages/ui/src/i18n/km.ts @@ -70,7 +70,7 @@ export const dict = { "ui.sessionTurn.error.addCredits": "បន្ថែមក្រេឌីត", "dialog.usageExceeded.freeTier.title": "បានដល់ដែនកំណត់ឥតគិតថ្លៃ", "dialog.usageExceeded.freeTier.description": - "ជាវ OpenCode Go សម្រាប់ការចូលប្រើដែលអាចទុកចិត្តបានចំពោះម៉ូដែលប្រភពបើកចំហល្អបំផុត ដោយចាប់ផ្តើមពី $5/ខែ។", + "ជាវ OpenCode Go ក្នុងតម្លៃ $10/ខែ សម្រាប់ការចូលប្រើដែលអាចទុកចិត្តបានចំពោះម៉ូដែលប្រភពបើកចំហល្អបំផុត។", "dialog.usageExceeded.freeTier.actionLabel": "ជាវ", "dialog.usageExceeded.accountRateLimit.title": "ឈានដល់កម្រិតកំណត់", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/ko.ts b/packages/ui/src/i18n/ko.ts index 6448d9c00..942fa873d 100644 --- a/packages/ui/src/i18n/ko.ts +++ b/packages/ui/src/i18n/ko.ts @@ -49,7 +49,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "무료 한도에 도달했습니다", "dialog.usageExceeded.freeTier.description": - "OpenCode Go를 구독하여 최고의 오픈 소스 모델에 안정적으로 액세스하세요. 월 $5부터 시작합니다.", + "월 $10로 OpenCode Go를 구독하여 최고의 오픈 소스 모델에 안정적으로 액세스하세요.", "dialog.usageExceeded.freeTier.actionLabel": "구독", "dialog.usageExceeded.accountRateLimit.title": "Go 한도에 도달했습니다", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/lo.ts b/packages/ui/src/i18n/lo.ts index 32ad2f721..5053377f3 100644 --- a/packages/ui/src/i18n/lo.ts +++ b/packages/ui/src/i18n/lo.ts @@ -69,7 +69,7 @@ export const dict = { "ui.sessionTurn.error.addCredits": "ເພີ່ມເຄຣດິດ", "dialog.usageExceeded.freeTier.title": "ຮອດຂີດຈຳກັດຟຣີແລ້ວ", "dialog.usageExceeded.freeTier.description": - "ສະໝັກໃຊ້ OpenCode Go ເພື່ອເຂົ້າເຖິງຮູບແບບໂອເພນຊອດທີ່ດີທີ່ສຸດ, ເລີ່ມຕົ້ນທີ່ $5/ເດືອນ.", + "ສະໝັກໃຊ້ OpenCode Go ໃນລາຄາ $10/ເດືອນ ເພື່ອເຂົ້າເຖິງຮູບແບບໂອເພນຊອດທີ່ດີທີ່ສຸດຢ່າງໜ້າເຊື່ອຖື.", "dialog.usageExceeded.freeTier.actionLabel": "ຈອງ", "dialog.usageExceeded.accountRateLimit.title": "ໄປຮອດຂີດຈຳກັດແລ້ວ", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/lt.ts b/packages/ui/src/i18n/lt.ts index 7cec4a8d8..da2e30d96 100644 --- a/packages/ui/src/i18n/lt.ts +++ b/packages/ui/src/i18n/lt.ts @@ -71,7 +71,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Pridėkite kreditų", "dialog.usageExceeded.freeTier.title": "Pasiektas nemokamas limitas", "dialog.usageExceeded.freeTier.description": - "Prenumeruokite OpenCode Go, kad gautumėte patikimą prieigą prie geriausių atvirojo kodo modelių, pradedant nuo 5 USD per mėnesį.", + "Prenumeruokite OpenCode Go už 10 USD per mėnesį ir gaukite patikimą prieigą prie geriausių atvirojo kodo modelių.", "dialog.usageExceeded.freeTier.actionLabel": "Prenumeruoti", "dialog.usageExceeded.accountRateLimit.title": "Pasiektas Go limitas", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/lv.ts b/packages/ui/src/i18n/lv.ts index 52d598f6d..774b1af1b 100644 --- a/packages/ui/src/i18n/lv.ts +++ b/packages/ui/src/i18n/lv.ts @@ -70,7 +70,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Pievienot kredītus", "dialog.usageExceeded.freeTier.title": "Sasniegts bezmaksas limits", "dialog.usageExceeded.freeTier.description": - "Abonē OpenCode Go, lai iegūtu uzticamu piekļuvi labākajiem atvērtā koda modeļiem, sākot no $5/mēn.", + "Abonē OpenCode Go par $10/mēn., lai iegūtu uzticamu piekļuvi labākajiem atvērtā koda modeļiem.", "dialog.usageExceeded.freeTier.actionLabel": "Abonēt", "dialog.usageExceeded.accountRateLimit.title": "Sasniegts Go limits", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/mk.ts b/packages/ui/src/i18n/mk.ts index c99740c6b..d154cac1a 100644 --- a/packages/ui/src/i18n/mk.ts +++ b/packages/ui/src/i18n/mk.ts @@ -69,7 +69,7 @@ export const dict = { "ui.sessionTurn.error.addCredits": "Додадете кредити", "dialog.usageExceeded.freeTier.title": "Достигнато е бесплатното ограничување", "dialog.usageExceeded.freeTier.description": - "Претплатете се на OpenCode Go за сигурен пристап до најдобрите модели со отворен код, почнувајќи од 5 $/месец.", + "Претплатете се на OpenCode Go за 10 $/месец за сигурен пристап до најдобрите модели со отворен код.", "dialog.usageExceeded.freeTier.actionLabel": "Претплатете се", "dialog.usageExceeded.accountRateLimit.title": "Достигнато е ограничувањето на Go", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/mn.ts b/packages/ui/src/i18n/mn.ts index ee68ce917..dafe0067d 100644 --- a/packages/ui/src/i18n/mn.ts +++ b/packages/ui/src/i18n/mn.ts @@ -69,7 +69,7 @@ export const dict = { "ui.sessionTurn.error.addCredits": "Кредит нэмэх", "dialog.usageExceeded.freeTier.title": "Үнэгүй хязгаарт хүрсэн", "dialog.usageExceeded.freeTier.description": - "OpenCode Go-д бүртгүүлж, сард 5 доллараас эхлэн нээлттэй эхийн шилдэг загваруудад найдвартай хандах боломжтой.", + "OpenCode Go-д сард 10 доллараар бүртгүүлж, нээлттэй эхийн шилдэг загваруудад найдвартай хандаарай.", "dialog.usageExceeded.freeTier.actionLabel": "Бүртгүүлэх", "dialog.usageExceeded.accountRateLimit.title": "Явах хязгаарт хүрсэн", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/ms.ts b/packages/ui/src/i18n/ms.ts index 75cc0290a..f71223f17 100644 --- a/packages/ui/src/i18n/ms.ts +++ b/packages/ui/src/i18n/ms.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Tambah kredit", "dialog.usageExceeded.freeTier.title": "Had percuma dicapai", "dialog.usageExceeded.freeTier.description": - "Langgan OpenCode Go untuk akses yang lebih stabil kepada model sumber terbuka terbaik, bermula dari $5/bulan.", + "Langgan OpenCode Go pada harga $10/bulan untuk akses yang lebih stabil kepada model sumber terbuka terbaik.", "dialog.usageExceeded.freeTier.actionLabel": "Langgan", "dialog.usageExceeded.accountRateLimit.title": "Had Go dicapai", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/my.ts b/packages/ui/src/i18n/my.ts index ad804687d..eab3b950e 100644 --- a/packages/ui/src/i18n/my.ts +++ b/packages/ui/src/i18n/my.ts @@ -70,7 +70,7 @@ export const dict = { "ui.sessionTurn.error.addCredits": "ခရက်ဒစ်များထည့်ပါ။", "dialog.usageExceeded.freeTier.title": "အခမဲ့ကန့်သတ်ချက် ပြည့်သွားပါပြီ။", "dialog.usageExceeded.freeTier.description": - "တစ်လလျှင် $5 မှစတင်၍ အကောင်းဆုံးသော open-source မော်ဒယ်များသို့ ယုံကြည်စိတ်ချရသောဝင်ရောက်ခွင့်အတွက် OpenCode Go ကို စာရင်းသွင်းပါ။", + "တစ်လလျှင် $10 ဖြင့် အကောင်းဆုံးသော open-source မော်ဒယ်များသို့ ယုံကြည်စိတ်ချရသောဝင်ရောက်ခွင့်အတွက် OpenCode Go ကို စာရင်းသွင်းပါ။", "dialog.usageExceeded.freeTier.actionLabel": "စာရင်းသွင်းပါ။", "dialog.usageExceeded.accountRateLimit.title": "Go ကန့်သတ်ချက် ပြည့်သွားပါပြီ။", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/ne.ts b/packages/ui/src/i18n/ne.ts index f2bea06af..bc3f8408e 100644 --- a/packages/ui/src/i18n/ne.ts +++ b/packages/ui/src/i18n/ne.ts @@ -71,7 +71,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "क्रेडिटहरू थप्नुहोस्", "dialog.usageExceeded.freeTier.title": "नि: शुल्क सीमा पुग्यो", "dialog.usageExceeded.freeTier.description": - "OpenCode को सदस्यता लिनुहोस्, उत्कृष्ट खुला स्रोत मोडेलहरूमा भरपर्दो पहुँचको लागि जानुहोस्, $5/महिनाबाट सुरु हुँदै।", + "उत्कृष्ट खुला स्रोत मोडेलहरूमा भरपर्दो पहुँचका लागि $10/महिनामा OpenCode Go को सदस्यता लिनुहोस्।", "dialog.usageExceeded.freeTier.actionLabel": "सदस्यता लिनुहोस्", "dialog.usageExceeded.accountRateLimit.title": "जाने सीमा पुग्यो", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/nl.ts b/packages/ui/src/i18n/nl.ts index a9554c070..0a5fe58e7 100644 --- a/packages/ui/src/i18n/nl.ts +++ b/packages/ui/src/i18n/nl.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Tegoed toevoegen", "dialog.usageExceeded.freeTier.title": "Gratis limiet bereikt", "dialog.usageExceeded.freeTier.description": - "Abonneer je op OpenCode Go voor betrouwbare toegang tot de beste open-sourcemodellen, vanaf $ 5 per maand.", + "Abonneer je voor $ 10 per maand op OpenCode Go voor betrouwbare toegang tot de beste open-sourcemodellen.", "dialog.usageExceeded.freeTier.actionLabel": "Abonneer je", "dialog.usageExceeded.accountRateLimit.title": "Go-limiet bereikt", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/no.ts b/packages/ui/src/i18n/no.ts index 9d9738d59..0cdd65390 100644 --- a/packages/ui/src/i18n/no.ts +++ b/packages/ui/src/i18n/no.ts @@ -52,7 +52,7 @@ export const dict: Record = { "dialog.usageExceeded.freeTier.title": "Gratisgrensen er nådd", "dialog.usageExceeded.freeTier.description": - "Abonner på OpenCode Go for pålitelig tilgang til de beste modellene med åpen kildekode, fra $5/måned.", + "Abonner på OpenCode Go for $10/måned for pålitelig tilgang til de beste modellene med åpen kildekode.", "dialog.usageExceeded.freeTier.actionLabel": "Abonner", "dialog.usageExceeded.accountRateLimit.title": "Go-grensen er nådd", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/pa.ts b/packages/ui/src/i18n/pa.ts index dbb09e8d7..5ecb6b67b 100644 --- a/packages/ui/src/i18n/pa.ts +++ b/packages/ui/src/i18n/pa.ts @@ -70,7 +70,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "کریڈٹ شامل کرو", "dialog.usageExceeded.freeTier.title": "مفت حد پوری ہو گئی", "dialog.usageExceeded.freeTier.description": - "$5/مہینہ توں شروع ہون والے بہترین اوپن سورس ماڈلاں تک بھروسے جوگی رسائی لئی OpenCode Go دی رکنیت لوو۔", + "$10/مہینہ وچ بہترین اوپن سورس ماڈلاں تک بھروسے جوگی رسائی لئی OpenCode Go دی رکنیت لوو۔", "dialog.usageExceeded.freeTier.actionLabel": "سبسکرائب کرو", "dialog.usageExceeded.accountRateLimit.title": "Go دی حد پوری ہو گئی", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/pl.ts b/packages/ui/src/i18n/pl.ts index 680eadf7b..7181b0080 100644 --- a/packages/ui/src/i18n/pl.ts +++ b/packages/ui/src/i18n/pl.ts @@ -74,7 +74,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "Osiągnięto limit darmowy", "dialog.usageExceeded.freeTier.description": - "Subskrybuj OpenCode Go, aby uzyskać niezawodny dostęp do najlepszych modeli open source, od $5/miesiąc.", + "Subskrybuj OpenCode Go za $10/miesiąc, aby uzyskać niezawodny dostęp do najlepszych modeli open source.", "dialog.usageExceeded.freeTier.actionLabel": "Subskrybuj", "dialog.usageExceeded.accountRateLimit.title": "Osiągnięto limit Go", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/ro.ts b/packages/ui/src/i18n/ro.ts index 771cf8ff6..6d187caf5 100644 --- a/packages/ui/src/i18n/ro.ts +++ b/packages/ui/src/i18n/ro.ts @@ -70,7 +70,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Adaugă credit", "dialog.usageExceeded.freeTier.title": "Limită gratuită atinsă", "dialog.usageExceeded.freeTier.description": - "Abonează-te la OpenCode Go pentru acces fiabil la cele mai bune modele open-source, de la 5$/lună.", + "Abonează-te la OpenCode Go pentru 10$/lună și obține acces fiabil la cele mai bune modele open-source.", "dialog.usageExceeded.freeTier.actionLabel": "Abonează-te", "dialog.usageExceeded.accountRateLimit.title": "Limită Go atinsă", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/ru.ts b/packages/ui/src/i18n/ru.ts index 77bc4ef6d..2b733166f 100644 --- a/packages/ui/src/i18n/ru.ts +++ b/packages/ui/src/i18n/ru.ts @@ -74,7 +74,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "Достигнут бесплатный лимит", "dialog.usageExceeded.freeTier.description": - "Подпишитесь на OpenCode Go для надёжного доступа к лучшим моделям с открытым исходным кодом, от $5/месяц.", + "Подпишитесь на OpenCode Go за $10/месяц для надёжного доступа к лучшим моделям с открытым исходным кодом.", "dialog.usageExceeded.freeTier.actionLabel": "Подписаться", "dialog.usageExceeded.accountRateLimit.title": "Достигнут лимит Go", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/si.ts b/packages/ui/src/i18n/si.ts index 367a9b33c..3550df3aa 100644 --- a/packages/ui/src/i18n/si.ts +++ b/packages/ui/src/i18n/si.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "ණය එකතු කරන්න", "dialog.usageExceeded.freeTier.title": "නිදහස් සීමාව ළඟා විය", "dialog.usageExceeded.freeTier.description": - "OpenCode වෙත දායක වන්න, හොඳම විවෘත මූලාශ්‍ර ආකෘති වෙත විශ්වාසනීය ප්‍රවේශය සඳහා යන්න, මසකට $5 සිට.", + "හොඳම විවෘත මූලාශ්‍ර ආකෘති වෙත විශ්වාසනීය ප්‍රවේශය සඳහා මසකට $10 බැගින් OpenCode Go වෙත දායක වන්න.", "dialog.usageExceeded.freeTier.actionLabel": "දායක වන්න", "dialog.usageExceeded.accountRateLimit.title": "යන සීමාවට ළඟා විය", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/sk.ts b/packages/ui/src/i18n/sk.ts index 90063ced9..a8ec929b6 100644 --- a/packages/ui/src/i18n/sk.ts +++ b/packages/ui/src/i18n/sk.ts @@ -71,7 +71,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Pridať kredity", "dialog.usageExceeded.freeTier.title": "Dosiahnutý bezplatný limit", "dialog.usageExceeded.freeTier.description": - "Predplaťte si OpenCode Go pre spoľahlivý prístup k najlepším open-source modelom už od 5 $/mesiac.", + "Predplaťte si OpenCode Go za 10 $/mesiac a získajte spoľahlivý prístup k najlepším open-source modelom.", "dialog.usageExceeded.freeTier.actionLabel": "Predplatiť", "dialog.usageExceeded.accountRateLimit.title": "Dosiahnutý limit Go", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/sl.ts b/packages/ui/src/i18n/sl.ts index bc5a4a857..8d5718fc0 100644 --- a/packages/ui/src/i18n/sl.ts +++ b/packages/ui/src/i18n/sl.ts @@ -72,7 +72,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Dodajte kredite", "dialog.usageExceeded.freeTier.title": "Brezplačna omejitev je dosežena", "dialog.usageExceeded.freeTier.description": - "Naročite se na OpenCode Go za zanesljiv dostop do najboljših odprtokodnih modelov, že od 5 $/mesec.", + "Naročite se na OpenCode Go za zanesljiv dostop do najboljših odprtokodnih modelov za 10 $/mesec.", "dialog.usageExceeded.freeTier.actionLabel": "Naročite se", "dialog.usageExceeded.accountRateLimit.title": "Dosežena omejitev", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/sq.ts b/packages/ui/src/i18n/sq.ts index d7261b318..3c1cd24e9 100644 --- a/packages/ui/src/i18n/sq.ts +++ b/packages/ui/src/i18n/sq.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Shto kredite", "dialog.usageExceeded.freeTier.title": "U arrit kufiri falas", "dialog.usageExceeded.freeTier.description": - "Abonohu në OpenCode Go për qasje të besueshme në modelet më të mira me burim të hapur, duke filluar nga 5 dollarë/muaj.", + "Abonohu në OpenCode Go për 10 dollarë/muaj dhe përfito qasje të besueshme në modelet më të mira me burim të hapur.", "dialog.usageExceeded.freeTier.actionLabel": "Abonohu", "dialog.usageExceeded.accountRateLimit.title": "U arrit kufiri i lëvizjes", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/sr.ts b/packages/ui/src/i18n/sr.ts index cb2379e53..9f090cd2e 100644 --- a/packages/ui/src/i18n/sr.ts +++ b/packages/ui/src/i18n/sr.ts @@ -71,7 +71,7 @@ export const dict = { "ui.sessionTurn.error.addCredits": "Додајте кредите", "dialog.usageExceeded.freeTier.title": "Достигнуто је ограничење бесплатног", "dialog.usageExceeded.freeTier.description": - "Претплатите се на OpenCode Go за поуздан приступ најбољим моделима отвореног кода, почевши од 5 УСД месечно.", + "Претплатите се на OpenCode Go за 10 УСД месечно и остварите поуздан приступ најбољим моделима отвореног кода.", "dialog.usageExceeded.freeTier.actionLabel": "Претплатите се", "dialog.usageExceeded.accountRateLimit.title": "Достигнуто је ограничење Го", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/sv.ts b/packages/ui/src/i18n/sv.ts index 921c2a594..3fcc6ff76 100644 --- a/packages/ui/src/i18n/sv.ts +++ b/packages/ui/src/i18n/sv.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Lägg till krediter", "dialog.usageExceeded.freeTier.title": "Gratisgränsen nådd", "dialog.usageExceeded.freeTier.description": - "Prenumerera på OpenCode Go för pålitlig tillgång till de bästa modellerna med öppen källkod, från 5 USD/månad.", + "Prenumerera på OpenCode Go för 10 USD/månad och få pålitlig tillgång till de bästa modellerna med öppen källkod.", "dialog.usageExceeded.freeTier.actionLabel": "Prenumerera", "dialog.usageExceeded.accountRateLimit.title": "Gränsen för Go har nåtts", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/tg.ts b/packages/ui/src/i18n/tg.ts index 210662b01..4c3e824c6 100644 --- a/packages/ui/src/i18n/tg.ts +++ b/packages/ui/src/i18n/tg.ts @@ -69,7 +69,7 @@ export const dict = { "ui.sessionTurn.error.addCredits": "Илова кардани кредитҳо", "dialog.usageExceeded.freeTier.title": "Ба ҳадди ройгон расид", "dialog.usageExceeded.freeTier.description": - "Ба OpenCode Go обуна шавед, то дастрасии боэътимод ба беҳтарин моделҳои кушодаасос аз $5 дар як моҳ оғоз шавад.", + "Ба OpenCode Go бо нархи $10 дар як моҳ обуна шавед, то ба беҳтарин моделҳои кушодаасос дастрасии боэътимод дошта бошед.", "dialog.usageExceeded.freeTier.actionLabel": "Обуна шавед", "dialog.usageExceeded.accountRateLimit.title": "Ба маҳдудияти рафтан расид", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/th.ts b/packages/ui/src/i18n/th.ts index a0aecbe7c..ae0d820d4 100644 --- a/packages/ui/src/i18n/th.ts +++ b/packages/ui/src/i18n/th.ts @@ -73,7 +73,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "ถึงขีดจำกัดฟรีแล้ว", "dialog.usageExceeded.freeTier.description": - "สมัครสมาชิก OpenCode Go เพื่อการเข้าถึงโมเดลโอเพนซอร์สที่ดีที่สุดอย่างเชื่อถือได้ เริ่มต้นที่ $5/เดือน", + "สมัครสมาชิก OpenCode Go ในราคา $10/เดือน เพื่อการเข้าถึงโมเดลโอเพนซอร์สที่ดีที่สุดอย่างเชื่อถือได้", "dialog.usageExceeded.freeTier.actionLabel": "สมัครสมาชิก", "dialog.usageExceeded.accountRateLimit.title": "ถึงขีดจำกัดของ Go แล้ว", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/tk.ts b/packages/ui/src/i18n/tk.ts index e89f7d353..e1bf43208 100644 --- a/packages/ui/src/i18n/tk.ts +++ b/packages/ui/src/i18n/tk.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Karz goşuň", "dialog.usageExceeded.freeTier.title": "Mugt çäk ýetdi", "dialog.usageExceeded.freeTier.description": - "Iň oňat açyk çeşme modellerine ygtybarly girmek üçin aýda 5 $ -dan başlap, OpenCode Go-a ýazylyň.", + "Iň oňat açyk çeşme modellerine ygtybarly girmek üçin aýda 10 $ töläp, OpenCode Go-a ýazylyň.", "dialog.usageExceeded.freeTier.actionLabel": "Abuna ýazylyň", "dialog.usageExceeded.accountRateLimit.title": "Çäklendirildi", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/tr.ts b/packages/ui/src/i18n/tr.ts index 6dd2cd0e3..e0b6fd0cc 100644 --- a/packages/ui/src/i18n/tr.ts +++ b/packages/ui/src/i18n/tr.ts @@ -79,7 +79,7 @@ export const dict = { "dialog.usageExceeded.freeTier.title": "Ücretsiz sınıra ulaşıldı", "dialog.usageExceeded.freeTier.description": - "En iyi açık kaynaklı modellere güvenilir erişim için OpenCode Go'ya abone olun. Aylık $5'ten başlar.", + "En iyi açık kaynaklı modellere güvenilir erişim için aylık $10 karşılığında OpenCode Go'ya abone olun.", "dialog.usageExceeded.freeTier.actionLabel": "Abone ol", "dialog.usageExceeded.accountRateLimit.title": "Go sınırına ulaşıldı", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/uk.ts b/packages/ui/src/i18n/uk.ts index e48f7c1a6..9643b52a9 100644 --- a/packages/ui/src/i18n/uk.ts +++ b/packages/ui/src/i18n/uk.ts @@ -77,7 +77,7 @@ export const dict: Record = { "dialog.usageExceeded.freeTier.title": "Безкоштовний ліміт вичерпано", "dialog.usageExceeded.freeTier.description": - "Підпишіться на OpenCode Go для надійного доступу до найкращих моделей із відкритим кодом від $5 на місяць.", + "Підпишіться на OpenCode Go за $10 на місяць для надійного доступу до найкращих моделей із відкритим кодом.", "dialog.usageExceeded.freeTier.actionLabel": "Підписатися", "dialog.usageExceeded.accountRateLimit.title": "Ліміт Go вичерпано", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/ur.ts b/packages/ui/src/i18n/ur.ts index d235a0760..b9aaa429e 100644 --- a/packages/ui/src/i18n/ur.ts +++ b/packages/ui/src/i18n/ur.ts @@ -70,7 +70,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "کریڈٹ شامل کریں۔", "dialog.usageExceeded.freeTier.title": "مفت استعمال کی حد پوری ہو گئی", "dialog.usageExceeded.freeTier.description": - "$5/ماہ سے شروع ہونے والے بہترین اوپن سورس ماڈلز تک قابل اعتماد رسائی کے لیے OpenCode Go کو سبسکرائب کریں۔", + "$10/ماہ میں بہترین اوپن سورس ماڈلز تک قابل اعتماد رسائی کے لیے OpenCode Go کو سبسکرائب کریں۔", "dialog.usageExceeded.freeTier.actionLabel": "سبسکرائب کریں۔", "dialog.usageExceeded.accountRateLimit.title": "Go حد تک پہنچ گئی۔", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/uz.ts b/packages/ui/src/i18n/uz.ts index 8dd4eb18f..c1a1e671e 100644 --- a/packages/ui/src/i18n/uz.ts +++ b/packages/ui/src/i18n/uz.ts @@ -71,7 +71,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Kredit qo'shing", "dialog.usageExceeded.freeTier.title": "Bepul chegaraga yetdi", "dialog.usageExceeded.freeTier.description": - "Oyiga $5 dan boshlab eng yaxshi ochiq kodli modellarga ishonchli kirish uchun OpenCode Go ga obuna bo'ling.", + "Oyiga $10 evaziga eng yaxshi ochiq kodli modellarga ishonchli kirish uchun OpenCode Go ga obuna bo'ling.", "dialog.usageExceeded.freeTier.actionLabel": "Obuna boʻling", "dialog.usageExceeded.accountRateLimit.title": "Oʻtish chegarasiga yetdi", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/vi.ts b/packages/ui/src/i18n/vi.ts index 7db5f0975..c37ff1a66 100644 --- a/packages/ui/src/i18n/vi.ts +++ b/packages/ui/src/i18n/vi.ts @@ -69,7 +69,7 @@ export const dict: Record = { "ui.sessionTurn.error.addCredits": "Thêm số dư", "dialog.usageExceeded.freeTier.title": "Đã đạt đến giới hạn miễn phí", "dialog.usageExceeded.freeTier.description": - "Đăng ký OpenCode Go để có quyền truy cập đáng tin cậy vào các mô hình nguồn mở tốt nhất, bắt đầu từ $5/tháng.", + "Đăng ký OpenCode Go với giá $10/tháng để có quyền truy cập đáng tin cậy vào các mô hình nguồn mở tốt nhất.", "dialog.usageExceeded.freeTier.actionLabel": "Đăng ký", "dialog.usageExceeded.accountRateLimit.title": "Đã đạt giới hạn Go", "dialog.usageExceeded.accountRateLimit.description": diff --git a/packages/ui/src/i18n/zh.ts b/packages/ui/src/i18n/zh.ts index b0d75b918..c5a33efef 100644 --- a/packages/ui/src/i18n/zh.ts +++ b/packages/ui/src/i18n/zh.ts @@ -76,7 +76,7 @@ export const dict = { "ui.sessionTurn.error.addCredits": "充值", "dialog.usageExceeded.freeTier.title": "免费额度已用完", - "dialog.usageExceeded.freeTier.description": "订阅 OpenCode Go,可靠地使用最佳开源模型,每月 $5 起。", + "dialog.usageExceeded.freeTier.description": "每月 $10 订阅 OpenCode Go,可靠地使用最佳开源模型。", "dialog.usageExceeded.freeTier.actionLabel": "订阅", "dialog.usageExceeded.accountRateLimit.title": "Go 额度已用完", "dialog.usageExceeded.accountRateLimit.description": "使用额度已达上限。如需立即继续使用此模型,请启用余额付费", diff --git a/packages/ui/src/i18n/zht.ts b/packages/ui/src/i18n/zht.ts index 28ceac4f4..736a7961b 100644 --- a/packages/ui/src/i18n/zht.ts +++ b/packages/ui/src/i18n/zht.ts @@ -76,7 +76,7 @@ export const dict = { "ui.sessionTurn.error.addCredits": "新增點數", "dialog.usageExceeded.freeTier.title": "已達免費額度上限", - "dialog.usageExceeded.freeTier.description": "訂閱 OpenCode Go,可靠地使用最佳開源模型,每月 $5 起。", + "dialog.usageExceeded.freeTier.description": "每月 $10 訂閱 OpenCode Go,可靠地使用最佳開源模型。", "dialog.usageExceeded.freeTier.actionLabel": "訂閱", "dialog.usageExceeded.accountRateLimit.title": "已達 Go 額度上限", "dialog.usageExceeded.accountRateLimit.description": "已達使用額度上限。若要立即繼續使用此模型,請啟用可用餘額計費", From 754bb7e3903df6276e6ddc96e3d6daced7160902 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 24 Aug 2026 04:00:55 -0400 Subject: [PATCH 129/271] delay removing first month discount --- packages/console/core/src/billing.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/console/core/src/billing.ts b/packages/console/core/src/billing.ts index adeabd9c7..879cd8c67 100644 --- a/packages/console/core/src/billing.ts +++ b/packages/console/core/src/billing.ts @@ -328,6 +328,7 @@ export namespace Billing { return LiteData.threeMonths100Coupon if (coupons.some((coupon) => coupon.type === "GOFREEMONTH" && !coupon.timeRedeemed)) return LiteData.firstMonth100Coupon + if (!coupons.some((coupon) => coupon.type === "GO1MONTH50")) return LiteData.firstMonth50Coupon return undefined })() const createSession = () => From 03521003fafdc6d340de6a36a189e3c121b07d40 Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 24 Aug 2026 16:21:37 +0800 Subject: [PATCH 130/271] docs(go): clarify DeepSeek weekend pricing (#44637) --- packages/web/src/content/docs/ar/go.mdx | 2 +- packages/web/src/content/docs/bs/go.mdx | 2 +- packages/web/src/content/docs/da/go.mdx | 2 +- packages/web/src/content/docs/de/go.mdx | 2 +- packages/web/src/content/docs/es/go.mdx | 2 +- packages/web/src/content/docs/fr/go.mdx | 2 +- packages/web/src/content/docs/go.mdx | 2 +- packages/web/src/content/docs/it/go.mdx | 2 +- packages/web/src/content/docs/ja/go.mdx | 2 +- packages/web/src/content/docs/ko/go.mdx | 2 +- packages/web/src/content/docs/nb/go.mdx | 2 +- packages/web/src/content/docs/pl/go.mdx | 2 +- packages/web/src/content/docs/pt-br/go.mdx | 2 +- packages/web/src/content/docs/ru/go.mdx | 2 +- packages/web/src/content/docs/th/go.mdx | 2 +- packages/web/src/content/docs/tr/go.mdx | 2 +- packages/web/src/content/docs/zh-cn/go.mdx | 2 +- packages/web/src/content/docs/zh-tw/go.mdx | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 0beba1bce..0bdd1a059 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -168,7 +168,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC؛ وجميع الساعات الأخرى Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC من الاثنين إلى الجمعة؛ وجميع الساعات الأخرى، بما في ذلك عطلات نهاية الأسبوع، Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** يتم تحويل الصور إلى رموز بناءً على أبعادها، وتُحتسب كرموز إدخال إلى جانب رموز النص. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index ffa9ee462..99d0edd21 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -178,7 +178,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC; svi ostali sati su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC od ponedjeljka do petka; svi ostali sati, uključujući vikende, su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Slike se pretvaraju u tokene na osnovu svojih dimenzija i naplaćuju kao ulazni tokeni zajedno s tekstualnim tokenima. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index e490fd79c..4ce8e70fb 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -178,7 +178,7 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC fra mandag til fredag; alle andre tider, herunder weekender, er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Billeder konverteres til tokens baseret på deres dimensioner og afregnes som inputtokens sammen med teksttokens. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index f8afac5a9..21dda2a73 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -170,7 +170,7 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Die Peak-Zeiten sind 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Die Peak-Zeiten sind montags bis freitags von 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten, einschließlich der Wochenenden, sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Bilder werden anhand ihrer Abmessungen in Tokens umgewandelt und zusammen mit Text-Tokens als Input-Tokens abgerechnet. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index ae1ded7f6..ac1d07c01 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -178,7 +178,7 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC; todas las demás horas son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC, de lunes a viernes; todas las demás horas, incluidos los fines de semana, son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Las imágenes se convierten en tokens según sus dimensiones y se facturan como tokens de entrada junto con los tokens de texto. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index ae22a99b9..f487a6e94 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -168,7 +168,7 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC ; toutes les autres heures sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC, du lundi au vendredi ; toutes les autres heures, y compris le week-end, sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Les images sont converties en tokens selon leurs dimensions et facturées comme tokens d’entrée avec les tokens de texte. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 14b59bda2..ffab0d7a5 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -178,7 +178,7 @@ The estimates are also based on the following prices per 1M tokens and the month | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC; all other hours are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC, Monday through Friday; all other hours, including weekends, are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Images are converted into tokens based on their dimensions and billed as input tokens alongside text tokens. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index c9cf9a9ce..7a0d28ad4 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -176,7 +176,7 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC; tutti gli altri orari sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC, dal lunedì al venerdì; tutti gli altri orari, inclusi i fine settimana, sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Le immagini vengono convertite in token in base alle loro dimensioni e fatturate come token di input insieme ai token di testo. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index dfdf981e1..74da619c7 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -168,7 +168,7 @@ OpenCode Goには以下の制限が含まれています: | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak時間は01:00-04:00と06:00-10:00 UTCで、それ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak時間は月曜日から金曜日の01:00-04:00と06:00-10:00 UTCで、週末を含むそれ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 **DeepSeek V4 Flash Vision Exp:** 画像はサイズに基づいてトークンに変換され、テキストトークンと合わせて入力トークンとして課金されます。 [詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 1ebb317df..f2f1a614f 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -168,7 +168,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 시간은 01:00-04:00 및 06:00-10:00 UTC이며, 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 시간은 월요일부터 금요일까지 01:00-04:00 및 06:00-10:00 UTC이며, 주말을 포함한 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** 이미지는 크기에 따라 토큰으로 변환되며 텍스트 토큰과 함께 입력 토큰으로 청구됩니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index d687cb6ed..5c6f875cf 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -178,7 +178,7 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC; alle andre tider er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC fra mandag til fredag; alle andre tider, inkludert helger, er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Bilder konverteres til tokens basert på dimensjonene og faktureres som input-tokens sammen med tekst-tokens. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 3190e32ee..8b27bb8c6 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -172,7 +172,7 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC; wszystkie pozostałe godziny to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC od poniedziałku do piątku; wszystkie pozostałe godziny, w tym weekendy, to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Obrazy są przeliczane na tokeny na podstawie ich wymiarów i rozliczane jako tokeny wejściowe razem z tokenami tekstowymi. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index abbd2ec71..518656366 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -178,7 +178,7 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC; todos os demais horários são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC, de segunda a sexta-feira; todos os demais horários, incluindo os fins de semana, são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** As imagens são convertidas em tokens com base em suas dimensões e cobradas como tokens de entrada junto com os tokens de texto. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 67ed83f5d..5a8681c8d 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -178,7 +178,7 @@ OpenCode Go включает следующие лимиты: | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Часы Peak: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Часы Peak с понедельника по пятницу: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы, включая выходные, относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Изображения преобразуются в токены с учётом их размеров и оплачиваются как входные токены вместе с текстовыми токенами. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index e620ba09f..30b4c28fe 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -168,7 +168,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ส่วนเวลาอื่นทั้งหมดเป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ตั้งแต่วันจันทร์ถึงวันศุกร์ ส่วนเวลาอื่นทั้งหมด รวมถึงวันหยุดสุดสัปดาห์ เป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) **DeepSeek V4 Flash Vision Exp:** รูปภาพจะถูกแปลงเป็น token ตามขนาด และคิดค่าบริการเป็น input token รวมกับ text token [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 7dab1a6ab..82060a66b 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -168,7 +168,7 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak saatleri 01:00-04:00 ve 06:00-10:00 UTC'dir; diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak saatleri pazartesiden cumaya 01:00-04:00 ve 06:00-10:00 UTC'dir; hafta sonları dahil diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Görseller boyutlarına göre token'lara dönüştürülür ve metin token'larıyla birlikte girdi token'ları olarak ücretlendirilir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index e61b8ee74..24af3e16a 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -168,7 +168,7 @@ OpenCode Go 包含以下限制: | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 时段为 01:00-04:00 和 06:00-10:00 UTC;其他所有时段均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 时段为周一至周五的 01:00-04:00 和 06:00-10:00 UTC;其他所有时段(包括周末)均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 **DeepSeek V4 Flash Vision Exp:** 图片会根据尺寸转换为 token,并与文本 token 一起按输入 token 计费。 [了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index 8c76676be..eef637178 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -168,7 +168,7 @@ OpenCode Go 包含以下限制: | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Ox Alpha Free | - | - | - | - | - | -**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 時段為 01:00-04:00 和 06:00-10:00 UTC;其他所有時段均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 +**DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 時段為週一至週五的 01:00-04:00 和 06:00-10:00 UTC;其他所有時段(包括週末)均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 **DeepSeek V4 Flash Vision Exp:** 圖片會根據尺寸轉換為 token,並與文字 token 一起按輸入 token 計費。 [了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 From 6bb772215b08b4b7d9243c27286950d85b9f678d Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 24 Aug 2026 18:02:51 +0800 Subject: [PATCH 131/271] docs(go): add LongCat-2.0 (#44636) --- packages/console/app/src/routes/go/index.tsx | 3 ++- .../app/src/routes/workspace/[id]/go/lite-section.tsx | 1 + packages/web/src/content/docs/ar/go.mdx | 6 ++++++ packages/web/src/content/docs/bs/go.mdx | 6 ++++++ packages/web/src/content/docs/da/go.mdx | 6 ++++++ packages/web/src/content/docs/de/go.mdx | 6 ++++++ packages/web/src/content/docs/es/go.mdx | 6 ++++++ packages/web/src/content/docs/fr/go.mdx | 6 ++++++ packages/web/src/content/docs/go.mdx | 6 ++++++ packages/web/src/content/docs/it/go.mdx | 6 ++++++ packages/web/src/content/docs/ja/go.mdx | 6 ++++++ packages/web/src/content/docs/ko/go.mdx | 6 ++++++ packages/web/src/content/docs/nb/go.mdx | 6 ++++++ packages/web/src/content/docs/pl/go.mdx | 6 ++++++ packages/web/src/content/docs/pt-br/go.mdx | 6 ++++++ packages/web/src/content/docs/ru/go.mdx | 6 ++++++ packages/web/src/content/docs/th/go.mdx | 6 ++++++ packages/web/src/content/docs/tr/go.mdx | 6 ++++++ packages/web/src/content/docs/zh-cn/go.mdx | 6 ++++++ packages/web/src/content/docs/zh-tw/go.mdx | 6 ++++++ 20 files changed, 111 insertions(+), 1 deletion(-) diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index f5177ce6d..d0676027f 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -31,6 +31,7 @@ const models = [ { name: "Kimi K3", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Kimi K2.7 Code", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Kimi K2.6", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, + { name: "LongCat-2.0", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "MiMo-V2.5-Pro", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "MiMo-V2.5", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Qwen3.8 Max", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, @@ -72,11 +73,11 @@ function LimitsGraph(props: { href: string }) { { id: "grok-4.5", name: "Grok 4.5", req: 120, d: "75ms" }, { id: "qwen3.8-max", name: "Qwen3.8 Max", req: 160, d: "90ms" }, { id: "glm-5.2", name: "GLM-5.2", req: 880, d: "100ms" }, - { id: "deepseek-v4-pro", name: "DeepSeek V4 Pro", req: 1050, d: "150ms" }, { id: "gpt-5.6-luna", name: "GPT 5.6 Luna", req: 2050, d: "290ms" }, { id: "minimax-m3", name: "MiniMax M3", req: 3200, d: "210ms" }, { id: "qwen3.7-plus", name: "Qwen3.7 Plus", req: 4300, d: "300ms" }, { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", req: 7600, d: "330ms" }, + { id: "longcat-2.0", name: "LongCat-2.0", req: 11400, d: "335ms" }, { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100, d: "340ms" }, { id: "hy3", name: "Hy3", req: 34400, baseReq: 4300, d: "320ms" }, { id: "muse-spark-1.2-contributor", name: "Muse Spark 1.2 Contributor", req: 45300, edge: true, d: "360ms" }, diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index 8d3fd37ff..11dfc6ed2 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -347,6 +347,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {
    • Kimi K3
    • Kimi K2.7 Code
    • Kimi K2.6
    • +
    • LongCat-2.0
    • MiniMax M3
    • MiniMax M2.7
    • Muse Spark 1.2 Contributor
    • diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 0bdd1a059..7ddb1b7e2 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -57,6 +57,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -98,6 +99,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -120,6 +122,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر - GPT 5.6 Luna — ‏1,000 توكن إدخال، و50,000 توكن مخزّن مؤقتًا، و220 توكن إخراج لكل طلب - Kimi K3 — ‏1,050 input، و76,500 cached، و300 output tokens لكل طلب - Kimi K2.7/K2.6 — ‏870 input، و55,000 cached، و200 output tokens لكل طلب +- LongCat-2.0 — ‏920 input، و88,900 cached، و200 output tokens لكل طلب - DeepSeek V4 Pro — ‏750 input، و82,000 cached، و290 output tokens لكل طلب - DeepSeek V4 Flash — ‏410 input، و71,300 cached، و310 output tokens لكل طلب - DeepSeek V4 Flash Vision Exp — ‏410 input، و71,300 cached، و310 output tokens لكل طلب @@ -147,6 +150,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -216,6 +220,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -258,6 +263,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | غير مستخدَمة | 0 أيام | | Kimi K2.7 Code | غير مستخدَمة | 0 أيام | | Kimi K2.6 | غير مستخدَمة | 0 أيام | +| LongCat-2.0 | غير مستخدَمة | 0 أيام | | MiMo-V2.5-Pro | غير مستخدَمة | 0 أيام | | MiMo-V2.5 | غير مستخدَمة | 0 أيام | | Qwen3.8 Max | غير مستخدَمة | 0 أيام | diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 99d0edd21..6215b938b 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -67,6 +67,7 @@ Trenutna lista modela uključuje: - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -108,6 +109,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -130,6 +132,7 @@ Procjene se zasnivaju na zapaženim obrascima zahtjeva: - GPT 5.6 Luna — 1,000 ulaznih, 50,000 keširanih, 220 izlaznih tokena po zahtjevu - Kimi K3 — 1,050 ulaznih, 76,500 keširanih, 300 izlaznih tokena po zahtjevu - Kimi K2.7/K2.6 — 870 ulaznih, 55,000 keširanih, 200 izlaznih tokena po zahtjevu +- LongCat-2.0 — 920 ulaznih, 88,900 keširanih, 200 izlaznih tokena po zahtjevu - DeepSeek V4 Pro — 750 ulaznih, 82,000 keširanih, 290 izlaznih tokena po zahtjevu - DeepSeek V4 Flash — 410 ulaznih, 71,300 keširanih, 310 izlaznih tokena po zahtjevu - DeepSeek V4 Flash Vision Exp — 410 ulaznih, 71,300 keširanih, 310 izlaznih tokena po zahtjevu @@ -157,6 +160,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -228,6 +232,7 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -272,6 +277,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | Ne koristi se | 0 dana | | Kimi K2.7 Code | Ne koristi se | 0 dana | | Kimi K2.6 | Ne koristi se | 0 dana | +| LongCat-2.0 | Ne koristi se | 0 dana | | MiMo-V2.5-Pro | Ne koristi se | 0 dana | | MiMo-V2.5 | Ne koristi se | 0 dana | | Qwen3.8 Max | Ne koristi se | 0 dana | diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 4ce8e70fb..75da1bb34 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -67,6 +67,7 @@ Den nuværende liste over modeller inkluderer: - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -108,6 +109,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -130,6 +132,7 @@ Estimaterne er baseret på observerede anmodningsmønstre: - GPT 5.6 Luna — 1.000 input, 50.000 cachelagrede, 220 output-tokens pr. anmodning - Kimi K3 — 1.050 input, 76.500 cachelagrede, 300 output-tokens pr. anmodning - Kimi K2.7/K2.6 — 870 input, 55.000 cachelagrede, 200 output-tokens pr. anmodning +- LongCat-2.0 — 920 input, 88.900 cachelagrede, 200 output-tokens pr. anmodning - DeepSeek V4 Pro — 750 input, 82.000 cachelagrede, 290 output-tokens pr. anmodning - DeepSeek V4 Flash — 410 input, 71.300 cachelagrede, 310 output-tokens pr. anmodning - DeepSeek V4 Flash Vision Exp — 410 input, 71.300 cachelagrede, 310 output-tokens pr. anmodning @@ -157,6 +160,7 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -228,6 +232,7 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -272,6 +277,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | Ikke brugt | 0 dage | | Kimi K2.7 Code | Ikke brugt | 0 dage | | Kimi K2.6 | Ikke brugt | 0 dage | +| LongCat-2.0 | Ikke brugt | 0 dage | | MiMo-V2.5-Pro | Ikke brugt | 0 dage | | MiMo-V2.5 | Ikke brugt | 0 dage | | Qwen3.8 Max | Ikke brugt | 0 dage | diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index 21dda2a73..21ba15452 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -59,6 +59,7 @@ Die aktuelle Liste der Modelle umfasst: - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -100,6 +101,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -122,6 +124,7 @@ Die Schätzungen basieren auf beobachteten Anfragemustern: - GPT 5.6 Luna — 1.000 Input-, 50.000 Cached-, 220 Output-Tokens pro Anfrage - Kimi K3 — 1.050 Input-, 76.500 Cached-, 300 Output-Tokens pro Anfrage - Kimi K2.7/K2.6 — 870 Input-, 55.000 Cached-, 200 Output-Tokens pro Anfrage +- LongCat-2.0 — 920 Input-, 88.900 Cached-, 200 Output-Tokens pro Anfrage - DeepSeek V4 Pro — 750 Input-, 82.000 Cached-, 290 Output-Tokens pro Anfrage - DeepSeek V4 Flash — 410 Input-, 71.300 Cached-, 310 Output-Tokens pro Anfrage - DeepSeek V4 Flash Vision Exp — 410 Input-, 71.300 Cached-, 310 Output-Tokens pro Anfrage @@ -149,6 +152,7 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -218,6 +222,7 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -260,6 +265,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | Nicht verwendet | 0 Tage | | Kimi K2.7 Code | Nicht verwendet | 0 Tage | | Kimi K2.6 | Nicht verwendet | 0 Tage | +| LongCat-2.0 | Nicht verwendet | 0 Tage | | MiMo-V2.5-Pro | Nicht verwendet | 0 Tage | | MiMo-V2.5 | Nicht verwendet | 0 Tage | | Qwen3.8 Max | Nicht verwendet | 0 Tage | diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index ac1d07c01..4687c1897 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -67,6 +67,7 @@ La lista actual de modelos incluye: - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -108,6 +109,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -130,6 +132,7 @@ Las estimaciones se basan en los patrones de peticiones observados: - GPT 5.6 Luna — 1,000 tokens de entrada, 50,000 en caché, 220 tokens de salida por petición - Kimi K3 — 1,050 tokens de entrada, 76,500 en caché, 300 tokens de salida por petición - Kimi K2.7/K2.6 — 870 tokens de entrada, 55,000 en caché, 200 tokens de salida por petición +- LongCat-2.0 — 920 tokens de entrada, 88,900 en caché, 200 tokens de salida por petición - DeepSeek V4 Pro — 750 tokens de entrada, 82,000 en caché, 290 tokens de salida por petición - DeepSeek V4 Flash — 410 tokens de entrada, 71,300 en caché, 310 tokens de salida por petición - DeepSeek V4 Flash Vision Exp — 410 tokens de entrada, 71,300 en caché, 310 tokens de salida por petición @@ -157,6 +160,7 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -228,6 +232,7 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -272,6 +277,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | No utilizado | 0 días | | Kimi K2.7 Code | No utilizado | 0 días | | Kimi K2.6 | No utilizado | 0 días | +| LongCat-2.0 | No utilizado | 0 días | | MiMo-V2.5-Pro | No utilizado | 0 días | | MiMo-V2.5 | No utilizado | 0 días | | Qwen3.8 Max | No utilizado | 0 días | diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index f487a6e94..695858c56 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -57,6 +57,7 @@ La liste actuelle des modèles comprend : - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -98,6 +99,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -120,6 +122,7 @@ Les estimations sont basées sur les schémas de requêtes observés : - GPT 5.6 Luna — 1,000 tokens en entrée, 50,000 en cache, 220 tokens en sortie par requête - Kimi K3 — 1,050 tokens en entrée, 76,500 en cache, 300 tokens en sortie par requête - Kimi K2.7/K2.6 — 870 tokens en entrée, 55,000 en cache, 200 tokens en sortie par requête +- LongCat-2.0 — 920 tokens en entrée, 88,900 en cache, 200 tokens en sortie par requête - DeepSeek V4 Pro — 750 tokens en entrée, 82,000 en cache, 290 tokens en sortie par requête - DeepSeek V4 Flash — 410 tokens en entrée, 71,300 en cache, 310 tokens en sortie par requête - DeepSeek V4 Flash Vision Exp — 410 tokens en entrée, 71,300 en cache, 310 tokens en sortie par requête @@ -147,6 +150,7 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -216,6 +220,7 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -258,6 +263,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | Non utilisé | 0 jour | | Kimi K2.7 Code | Non utilisé | 0 jour | | Kimi K2.6 | Non utilisé | 0 jour | +| LongCat-2.0 | Non utilisé | 0 jour | | MiMo-V2.5-Pro | Non utilisé | 0 jour | | MiMo-V2.5 | Non utilisé | 0 jour | | Qwen3.8 Max | Non utilisé | 0 jour | diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index ffab0d7a5..d909d215f 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -67,6 +67,7 @@ The current list of models includes: - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -108,6 +109,7 @@ The table below provides an estimated request count based on typical Go usage pa | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -130,6 +132,7 @@ The estimates are based on observed request patterns: - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens per request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens per request - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens per request +- LongCat-2.0 — 920 input, 88,900 cached, 200 output tokens per request - DeepSeek V4 Pro — 750 input, 82,000 cached, 290 output tokens per request - DeepSeek V4 Flash — 410 input, 71,300 cached, 310 output tokens per request - DeepSeek V4 Flash Vision Exp — 410 input, 71,300 cached, 310 output tokens per request @@ -157,6 +160,7 @@ The estimates are also based on the following prices per 1M tokens and the month | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -228,6 +232,7 @@ You can also access Go models through the following API endpoints. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -272,6 +277,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | Not used | 0 days | | Kimi K2.7 Code | Not used | 0 days | | Kimi K2.6 | Not used | 0 days | +| LongCat-2.0 | Not used | 0 days | | MiMo-V2.5-Pro | Not used | 0 days | | MiMo-V2.5 | Not used | 0 days | | Qwen3.8 Max | Not used | 0 days | diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 7a0d28ad4..8efc91907 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -65,6 +65,7 @@ L'elenco attuale dei modelli include: - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -106,6 +107,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -128,6 +130,7 @@ Le stime si basano sui pattern di richieste osservati: - GPT 5.6 Luna — 1.000 token di input, 50.000 in cache, 220 token di output per richiesta - Kimi K3 — 1.050 di input, 76.500 in cache, 300 token di output per richiesta - Kimi K2.7/K2.6 — 870 di input, 55.000 in cache, 200 token di output per richiesta +- LongCat-2.0 — 920 di input, 88.900 in cache, 200 token di output per richiesta - DeepSeek V4 Pro — 750 di input, 82.000 in cache, 290 token di output per richiesta - DeepSeek V4 Flash — 410 di input, 71.300 in cache, 310 token di output per richiesta - DeepSeek V4 Flash Vision Exp — 410 di input, 71.300 in cache, 310 token di output per richiesta @@ -155,6 +158,7 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -226,6 +230,7 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -270,6 +275,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | Non utilizzato | 0 giorni | | Kimi K2.7 Code | Non utilizzato | 0 giorni | | Kimi K2.6 | Non utilizzato | 0 giorni | +| LongCat-2.0 | Non utilizzato | 0 giorni | | MiMo-V2.5-Pro | Non utilizzato | 0 giorni | | MiMo-V2.5 | Non utilizzato | 0 giorni | | Qwen3.8 Max | Non utilizzato | 0 giorni | diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 74da619c7..0cbaad8b3 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -57,6 +57,7 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -98,6 +99,7 @@ OpenCode Goには以下の制限が含まれています: | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -120,6 +122,7 @@ OpenCode Goには以下の制限が含まれています: - GPT 5.6 Luna — リクエストあたり 入力 1,000トークン、キャッシュ 50,000トークン、出力 220トークン - Kimi K3 — リクエストあたり 入力 1,050トークン、キャッシュ 76,500トークン、出力 300トークン - Kimi K2.7/K2.6 — リクエストあたり 入力 870トークン、キャッシュ 55,000トークン、出力 200トークン +- LongCat-2.0 — リクエストあたり 入力 920トークン、キャッシュ 88,900トークン、出力 200トークン - DeepSeek V4 Pro — リクエストあたり 入力 750トークン、キャッシュ 82,000トークン、出力 290トークン - DeepSeek V4 Flash — リクエストあたり 入力 410トークン、キャッシュ 71,300トークン、出力 310トークン - DeepSeek V4 Flash Vision Exp — リクエストあたり 入力 410トークン、キャッシュ 71,300トークン、出力 310トークン @@ -147,6 +150,7 @@ OpenCode Goには以下の制限が含まれています: | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -216,6 +220,7 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -258,6 +263,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | 使用なし | 0日 | | Kimi K2.7 Code | 使用なし | 0日 | | Kimi K2.6 | 使用なし | 0日 | +| LongCat-2.0 | 使用なし | 0日 | | MiMo-V2.5-Pro | 使用なし | 0日 | | MiMo-V2.5 | 使用なし | 0日 | | Qwen3.8 Max | 使用なし | 0日 | diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index f2f1a614f..f4d9d3ae3 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -57,6 +57,7 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -98,6 +99,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -120,6 +122,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. - GPT 5.6 Luna — 요청당 입력 토큰 1,000개, 캐시 토큰 50,000개, 출력 토큰 220개 - Kimi K3 — 요청당 입력 1,050, 캐시 76,500, 출력 토큰 300 - Kimi K2.7/K2.6 — 요청당 입력 870, 캐시 55,000, 출력 토큰 200 +- LongCat-2.0 — 요청당 입력 920, 캐시 88,900, 출력 토큰 200 - DeepSeek V4 Pro — 요청당 입력 750, 캐시 82,000, 출력 토큰 290 - DeepSeek V4 Flash — 요청당 입력 410, 캐시 71,300, 출력 토큰 310 - DeepSeek V4 Flash Vision Exp — 요청당 입력 410, 캐시 71,300, 출력 토큰 310 @@ -147,6 +150,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -216,6 +220,7 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -258,6 +263,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | 사용되지 않음 | 0일 | | Kimi K2.7 Code | 사용되지 않음 | 0일 | | Kimi K2.6 | 사용되지 않음 | 0일 | +| LongCat-2.0 | 사용되지 않음 | 0일 | | MiMo-V2.5-Pro | 사용되지 않음 | 0일 | | MiMo-V2.5 | 사용되지 않음 | 0일 | | Qwen3.8 Max | 사용되지 않음 | 0일 | diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 5c6f875cf..460c2e787 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -67,6 +67,7 @@ Den nåværende listen over modeller inkluderer: - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -108,6 +109,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -130,6 +132,7 @@ Estimatene er basert på observerte forespørselsmønstre: - GPT 5.6 Luna — 1 000 input, 50 000 bufret, 220 output-tokens per forespørsel - Kimi K3 — 1 050 input, 76 500 bufret, 300 output-tokens per forespørsel - Kimi K2.7/K2.6 — 870 input, 55 000 bufret, 200 output-tokens per forespørsel +- LongCat-2.0 — 920 input, 88 900 bufret, 200 output-tokens per forespørsel - DeepSeek V4 Pro — 750 input, 82 000 bufret, 290 output-tokens per forespørsel - DeepSeek V4 Flash — 410 input, 71 300 bufret, 310 output-tokens per forespørsel - DeepSeek V4 Flash Vision Exp — 410 input, 71 300 bufret, 310 output-tokens per forespørsel @@ -157,6 +160,7 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -228,6 +232,7 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -272,6 +277,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | Brukes ikke | 0 dager | | Kimi K2.7 Code | Brukes ikke | 0 dager | | Kimi K2.6 | Brukes ikke | 0 dager | +| LongCat-2.0 | Brukes ikke | 0 dager | | MiMo-V2.5-Pro | Brukes ikke | 0 dager | | MiMo-V2.5 | Brukes ikke | 0 dager | | Qwen3.8 Max | Brukes ikke | 0 dager | diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 8b27bb8c6..6dfaf3795 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -61,6 +61,7 @@ Obecna lista modeli obejmuje: - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -102,6 +103,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -124,6 +126,7 @@ Szacunki te opierają się na zaobserwowanych wzorcach żądań: - GPT 5.6 Luna — 1 000 tokenów wejściowych, 50 000 w pamięci podręcznej, 220 tokenów wyjściowych na żądanie - Kimi K3 — 1 050 tokenów wejściowych, 76 500 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie - Kimi K2.7/K2.6 — 870 tokenów wejściowych, 55 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie +- LongCat-2.0 — 920 tokenów wejściowych, 88 900 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie - DeepSeek V4 Pro — 750 tokenów wejściowych, 82 000 w pamięci podręcznej, 290 tokenów wyjściowych na żądanie - DeepSeek V4 Flash — 410 tokenów wejściowych, 71 300 w pamięci podręcznej, 310 tokenów wyjściowych na żądanie - DeepSeek V4 Flash Vision Exp — 410 tokenów wejściowych, 71 300 w pamięci podręcznej, 310 tokenów wyjściowych na żądanie @@ -151,6 +154,7 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -220,6 +224,7 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -264,6 +269,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | Niewykorzystywane | 0 dni | | Kimi K2.7 Code | Niewykorzystywane | 0 dni | | Kimi K2.6 | Niewykorzystywane | 0 dni | +| LongCat-2.0 | Niewykorzystywane | 0 dni | | MiMo-V2.5-Pro | Niewykorzystywane | 0 dni | | MiMo-V2.5 | Niewykorzystywane | 0 dni | | Qwen3.8 Max | Niewykorzystywane | 0 dni | diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 518656366..14021d2ff 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -67,6 +67,7 @@ A lista atual de modelos inclui: - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -108,6 +109,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -130,6 +132,7 @@ As estimativas se baseiam nos padrões de requisições observados: - GPT 5.6 Luna — 1.000 tokens de entrada, 50.000 em cache, 220 tokens de saída por requisição - Kimi K3 — 1.050 tokens de entrada, 76.500 em cache, 300 tokens de saída por requisição - Kimi K2.7/K2.6 — 870 tokens de entrada, 55.000 em cache, 200 tokens de saída por requisição +- LongCat-2.0 — 920 tokens de entrada, 88.900 em cache, 200 tokens de saída por requisição - DeepSeek V4 Pro — 750 tokens de entrada, 82.000 em cache, 290 tokens de saída por requisição - DeepSeek V4 Flash — 410 tokens de entrada, 71.300 em cache, 310 tokens de saída por requisição - DeepSeek V4 Flash Vision Exp — 410 tokens de entrada, 71.300 em cache, 310 tokens de saída por requisição @@ -157,6 +160,7 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -228,6 +232,7 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -272,6 +277,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | Não usado | 0 dias | | Kimi K2.7 Code | Não usado | 0 dias | | Kimi K2.6 | Não usado | 0 dias | +| LongCat-2.0 | Não usado | 0 dias | | MiMo-V2.5-Pro | Não usado | 0 dias | | MiMo-V2.5 | Não usado | 0 dias | | Qwen3.8 Max | Não usado | 0 dias | diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 5a8681c8d..900ddb985 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -67,6 +67,7 @@ OpenCode Go работает так же, как и любой другой пр - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -108,6 +109,7 @@ OpenCode Go включает следующие лимиты: | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -130,6 +132,7 @@ OpenCode Go включает следующие лимиты: - GPT 5.6 Luna — 1,000 входных, 50,000 кешированных, 220 выходных токенов на запрос - Kimi K3 — 1,050 входных, 76,500 кешированных, 300 выходных токенов на запрос - Kimi K2.7/K2.6 — 870 входных, 55,000 кешированных, 200 выходных токенов на запрос +- LongCat-2.0 — 920 входных, 88,900 кешированных, 200 выходных токенов на запрос - DeepSeek V4 Pro — 750 входных, 82,000 кешированных, 290 выходных токенов на запрос - DeepSeek V4 Flash — 410 входных, 71,300 кешированных, 310 выходных токенов на запрос - DeepSeek V4 Flash Vision Exp — 410 входных, 71,300 кешированных, 310 выходных токенов на запрос @@ -157,6 +160,7 @@ OpenCode Go включает следующие лимиты: | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -228,6 +232,7 @@ OpenCode Go включает следующие лимиты: | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -272,6 +277,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | Не используется | 0 дней | | Kimi K2.7 Code | Не используется | 0 дней | | Kimi K2.6 | Не используется | 0 дней | +| LongCat-2.0 | Не используется | 0 дней | | MiMo-V2.5-Pro | Не используется | 0 дней | | MiMo-V2.5 | Не используется | 0 дней | | Qwen3.8 Max | Не используется | 0 дней | diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 30b4c28fe..3fd544acc 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -57,6 +57,7 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -98,6 +99,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -120,6 +122,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens ต่อ request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens ต่อ request - Kimi K2.7/K2.6 — 870 input, 55,000 cached, 200 output tokens ต่อ request +- LongCat-2.0 — 920 input, 88,900 cached, 200 output tokens ต่อ request - DeepSeek V4 Pro — 750 input, 82,000 cached, 290 output tokens ต่อ request - DeepSeek V4 Flash — 410 input, 71,300 cached, 310 output tokens ต่อ request - DeepSeek V4 Flash Vision Exp — 410 input, 71,300 cached, 310 output tokens ต่อ request @@ -147,6 +150,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -216,6 +220,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -258,6 +263,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | ไม่นำไปใช้ | 0 วัน | | Kimi K2.7 Code | ไม่นำไปใช้ | 0 วัน | | Kimi K2.6 | ไม่นำไปใช้ | 0 วัน | +| LongCat-2.0 | ไม่นำไปใช้ | 0 วัน | | MiMo-V2.5-Pro | ไม่นำไปใช้ | 0 วัน | | MiMo-V2.5 | ไม่นำไปใช้ | 0 วัน | | Qwen3.8 Max | ไม่นำไปใช้ | 0 วัน | diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 82060a66b..764cfc0d4 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -57,6 +57,7 @@ Mevcut model listesi şunları içerir: - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -98,6 +99,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -120,6 +122,7 @@ Tahminler, gözlemlenen istek modellerine dayanır: - GPT 5.6 Luna — İstek başına 1.000 girdi, 50.000 önbelleğe alınmış, 220 çıktı token'ı - Kimi K3 — İstek başına 1.050 girdi, 76.500 önbelleğe alınmış, 300 çıktı token'ı - Kimi K2.7/K2.6 — İstek başına 870 girdi, 55.000 önbelleğe alınmış, 200 çıktı token'ı +- LongCat-2.0 — İstek başına 920 girdi, 88.900 önbelleğe alınmış, 200 çıktı token'ı - DeepSeek V4 Pro — İstek başına 750 girdi, 82.000 önbelleğe alınmış, 290 çıktı token'ı - DeepSeek V4 Flash — İstek başına 410 girdi, 71.300 önbelleğe alınmış, 310 çıktı token'ı - DeepSeek V4 Flash Vision Exp — İstek başına 410 girdi, 71.300 önbelleğe alınmış, 310 çıktı token'ı @@ -147,6 +150,7 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -216,6 +220,7 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -258,6 +263,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | Kullanılmaz | 0 gün | | Kimi K2.7 Code | Kullanılmaz | 0 gün | | Kimi K2.6 | Kullanılmaz | 0 gün | +| LongCat-2.0 | Kullanılmaz | 0 gün | | MiMo-V2.5-Pro | Kullanılmaz | 0 gün | | MiMo-V2.5 | Kullanılmaz | 0 gün | | Qwen3.8 Max | Kullanılmaz | 0 gün | diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 24af3e16a..c59d28380 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -57,6 +57,7 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -98,6 +99,7 @@ OpenCode Go 包含以下限制: | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -120,6 +122,7 @@ OpenCode Go 包含以下限制: - GPT 5.6 Luna — 每次请求 1,000 个输入 token,50,000 个缓存 token,220 个输出 token - Kimi K3 — 每次请求 1,050 个输入 token,76,500 个缓存 token,300 个输出 token - Kimi K2.7/K2.6 — 每次请求 870 个输入 token,55,000 个缓存 token,200 个输出 token +- LongCat-2.0 — 每次请求 920 个输入 token,88,900 个缓存 token,200 个输出 token - DeepSeek V4 Pro — 每次请求 750 个输入 token,82,000 个缓存 token,290 个输出 token - DeepSeek V4 Flash — 每次请求 410 个输入 token,71,300 个缓存 token,310 个输出 token - DeepSeek V4 Flash Vision Exp — 每次请求 410 个输入 token,71,300 个缓存 token,310 个输出 token @@ -147,6 +150,7 @@ OpenCode Go 包含以下限制: | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -216,6 +220,7 @@ OpenCode Go 包含以下限制: | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -258,6 +263,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | 不使用 | 0 天 | | Kimi K2.7 Code | 不使用 | 0 天 | | Kimi K2.6 | 不使用 | 0 天 | +| LongCat-2.0 | 不使用 | 0 天 | | MiMo-V2.5-Pro | 不使用 | 0 天 | | MiMo-V2.5 | 不使用 | 0 天 | | Qwen3.8 Max | 不使用 | 0 天 | diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index eef637178..db3d06c79 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -57,6 +57,7 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 - **Kimi K3** - **Kimi K2.7 Code** - **Kimi K2.6** +- **LongCat-2.0** - **MiMo-V2.5** - **MiMo-V2.5-Pro** - **MiniMax M3** @@ -98,6 +99,7 @@ OpenCode Go 包含以下限制: | Kimi K3 | 110 | 250 | 490 | | Kimi K2.7 Code | 1,350 | 3,380 | 6,750 | | Kimi K2.6 | 1,150 | 2,880 | 5,750 | +| LongCat-2.0 | 11,400 | 28,600 | 57,200 | | MiMo-V2.5 | 30,100 | 75,200 | 150,400 | | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | @@ -120,6 +122,7 @@ OpenCode Go 包含以下限制: - GPT 5.6 Luna — 每次請求 1,000 個輸入 token、50,000 個快取 token、220 個輸出 token - Kimi K3 — 每次請求 1,050 個輸入 token、76,500 個快取 token、300 個輸出 token - Kimi K2.7/K2.6 — 每次請求 870 個輸入 token、55,000 個快取 token、200 個輸出 token +- LongCat-2.0 — 每次請求 920 個輸入 token、88,900 個快取 token、200 個輸出 token - DeepSeek V4 Pro — 每次請求 750 個輸入 token、82,000 個快取 token、290 個輸出 token - DeepSeek V4 Flash — 每次請求 410 個輸入 token、71,300 個快取 token、310 個輸出 token - DeepSeek V4 Flash Vision Exp — 每次請求 410 個輸入 token、71,300 個快取 token、310 個輸出 token @@ -147,6 +150,7 @@ OpenCode Go 包含以下限制: | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | @@ -216,6 +220,7 @@ OpenCode Go 包含以下限制: | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.6 | kimi-k2.6 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| LongCat-2.0 | longcat-2.0 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Pro | deepseek-v4-pro | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash | deepseek-v4-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | DeepSeek V4 Flash Vision Exp | deepseek-v4-flash-vision-exp | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -258,6 +263,7 @@ https://opencode.ai/zen/go/v1/models | Kimi K3 | 不使用 | 0 天 | | Kimi K2.7 Code | 不使用 | 0 天 | | Kimi K2.6 | 不使用 | 0 天 | +| LongCat-2.0 | 不使用 | 0 天 | | MiMo-V2.5-Pro | 不使用 | 0 天 | | MiMo-V2.5 | 不使用 | 0 天 | | Qwen3.8 Max | 不使用 | 0 天 | From 9fa27bd41c3dc61603553f1ac56ae4446f26faee Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Mon, 24 Aug 2026 10:04:12 +0000 Subject: [PATCH 132/271] chore: generate --- packages/web/src/content/docs/bs/go.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 6215b938b..b8841d99c 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -160,7 +160,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | | Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | | Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | | MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | | MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | From 105b398c2a9ff2f16eaae409836e1dbc4d37671a Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 16:22:48 +0530 Subject: [PATCH 133/271] docs(acp): update Zed custom agent config (#44658) Co-authored-by: nexxeln <95541290+nexxeln@users.noreply.github.com> --- packages/web/src/content/docs/acp.mdx | 5 ++++- packages/web/src/content/docs/ar/acp.mdx | 5 ++++- packages/web/src/content/docs/bs/acp.mdx | 5 ++++- packages/web/src/content/docs/da/acp.mdx | 5 ++++- packages/web/src/content/docs/de/acp.mdx | 5 ++++- packages/web/src/content/docs/es/acp.mdx | 5 ++++- packages/web/src/content/docs/fr/acp.mdx | 5 ++++- packages/web/src/content/docs/it/acp.mdx | 5 ++++- packages/web/src/content/docs/ja/acp.mdx | 5 ++++- packages/web/src/content/docs/ko/acp.mdx | 5 ++++- packages/web/src/content/docs/nb/acp.mdx | 5 ++++- packages/web/src/content/docs/pl/acp.mdx | 5 ++++- packages/web/src/content/docs/pt-br/acp.mdx | 5 ++++- packages/web/src/content/docs/ru/acp.mdx | 5 ++++- packages/web/src/content/docs/th/acp.mdx | 5 ++++- packages/web/src/content/docs/tr/acp.mdx | 5 ++++- packages/web/src/content/docs/zh-cn/acp.mdx | 5 ++++- packages/web/src/content/docs/zh-tw/acp.mdx | 5 ++++- 18 files changed, 72 insertions(+), 18 deletions(-) diff --git a/packages/web/src/content/docs/acp.mdx b/packages/web/src/content/docs/acp.mdx index 43d89eae1..09c556998 100644 --- a/packages/web/src/content/docs/acp.mdx +++ b/packages/web/src/content/docs/acp.mdx @@ -25,12 +25,15 @@ Below are examples for popular editors that support ACP. ### Zed -Add to your [Zed](https://zed.dev) configuration (`~/.config/zed/settings.json`): +Install OpenCode from the [Zed ACP Registry](https://zed.dev/docs/ai/external-agents#registry) by running `zed: acp registry` in the Command Palette. + +To use a custom OpenCode executable instead, add it to your [Zed](https://zed.dev) configuration (`~/.config/zed/settings.json`): ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/ar/acp.mdx b/packages/web/src/content/docs/ar/acp.mdx index 1919e4268..c10246a1f 100644 --- a/packages/web/src/content/docs/ar/acp.mdx +++ b/packages/web/src/content/docs/ar/acp.mdx @@ -25,12 +25,15 @@ ACP بروتوكول مفتوح يوحّد آلية التواصل بين محر ### Zed -أضف إلى إعدادات [Zed](https://zed.dev) (`~/.config/zed/settings.json`): +ثبّت OpenCode من [سجل ACP في Zed](https://zed.dev/docs/ai/external-agents#registry) عبر تشغيل `zed: acp registry` من لوحة الأوامر. + +لاستخدام ملف OpenCode تنفيذي مخصص بدلاً من ذلك، أضفه إلى إعدادات [Zed](https://zed.dev) (`~/.config/zed/settings.json`): ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/bs/acp.mdx b/packages/web/src/content/docs/bs/acp.mdx index a2b2707c8..b4065b926 100644 --- a/packages/web/src/content/docs/bs/acp.mdx +++ b/packages/web/src/content/docs/bs/acp.mdx @@ -25,12 +25,15 @@ Ispod su primjeri za popularne uređivače koji podržavaju ACP. ### Zed -Dodajte u svoju [Zed](https://zed.dev) konfiguraciju (`~/.config/zed/settings.json`): +Instalirajte OpenCode iz [Zed ACP registra](https://zed.dev/docs/ai/external-agents#registry) pokretanjem naredbe `zed: acp registry` u komandnoj paleti. + +Ako umjesto toga želite koristiti prilagođenu OpenCode izvršnu datoteku, dodajte je u svoju [Zed](https://zed.dev) konfiguraciju (`~/.config/zed/settings.json`): ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/da/acp.mdx b/packages/web/src/content/docs/da/acp.mdx index 06cdc89c4..dee1a6f6b 100644 --- a/packages/web/src/content/docs/da/acp.mdx +++ b/packages/web/src/content/docs/da/acp.mdx @@ -25,12 +25,15 @@ Nedenfor er eksempler på populære editorer, der understøtter ACP. ### Zed -Føj til din [Zed](https://zed.dev)-konfiguration (`~/.config/zed/settings.json`): +Installer OpenCode fra [Zeds ACP-register](https://zed.dev/docs/ai/external-agents#registry) ved at køre `zed: acp registry` i kommandopaletten. + +Hvis du i stedet vil bruge en brugerdefineret OpenCode-eksekverbar fil, skal du føje den til din [Zed](https://zed.dev)-konfiguration (`~/.config/zed/settings.json`): ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/de/acp.mdx b/packages/web/src/content/docs/de/acp.mdx index d63a13c52..f8d75ff8c 100644 --- a/packages/web/src/content/docs/de/acp.mdx +++ b/packages/web/src/content/docs/de/acp.mdx @@ -25,12 +25,15 @@ Nachfolgend finden Sie Beispiele für beliebte Editoren, die ACP unterstützen. ### Zed -Fügen Sie Ihrer [Zed](https://zed.dev)-Konfiguration (`~/.config/zed/settings.json`) Folgendes hinzu: +Installieren Sie OpenCode aus der [Zed-ACP-Registry](https://zed.dev/docs/ai/external-agents#registry), indem Sie `zed: acp registry` in der Befehlspalette ausführen. + +Wenn Sie stattdessen eine benutzerdefinierte OpenCode-Programmdatei verwenden möchten, fügen Sie sie Ihrer [Zed](https://zed.dev)-Konfiguration (`~/.config/zed/settings.json`) hinzu: ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/es/acp.mdx b/packages/web/src/content/docs/es/acp.mdx index 6cc14669a..aa9117f15 100644 --- a/packages/web/src/content/docs/es/acp.mdx +++ b/packages/web/src/content/docs/es/acp.mdx @@ -25,12 +25,15 @@ A continuación se muestran ejemplos de editores populares que admiten ACP. ### Zed -Agregue a su configuración [Zed](https://zed.dev) (`~/.config/zed/settings.json`): +Instale OpenCode desde el [registro ACP de Zed](https://zed.dev/docs/ai/external-agents#registry) ejecutando `zed: acp registry` en la paleta de comandos. + +Para usar un ejecutable personalizado de OpenCode, agréguelo a su configuración de [Zed](https://zed.dev) (`~/.config/zed/settings.json`): ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/fr/acp.mdx b/packages/web/src/content/docs/fr/acp.mdx index 81254d479..d1e4a4b2a 100644 --- a/packages/web/src/content/docs/fr/acp.mdx +++ b/packages/web/src/content/docs/fr/acp.mdx @@ -25,12 +25,15 @@ Vous trouverez ci-dessous des exemples d'éditeurs populaires prenant en charge ### Zed -Ajoutez à votre configuration [Zed](https://zed.dev) (`~/.config/zed/settings.json`) : +Installez OpenCode depuis le [registre ACP de Zed](https://zed.dev/docs/ai/external-agents#registry) en exécutant `zed: acp registry` dans la palette de commandes. + +Pour utiliser plutôt un exécutable OpenCode personnalisé, ajoutez-le à votre configuration [Zed](https://zed.dev) (`~/.config/zed/settings.json`) : ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/it/acp.mdx b/packages/web/src/content/docs/it/acp.mdx index 046aba5f2..53e09545e 100644 --- a/packages/web/src/content/docs/it/acp.mdx +++ b/packages/web/src/content/docs/it/acp.mdx @@ -25,12 +25,15 @@ Qui sotto trovi esempi per editor popolari che supportano ACP. ### Zed -Aggiungi alla configurazione di [Zed](https://zed.dev) (`~/.config/zed/settings.json`): +Installa OpenCode dal [registro ACP di Zed](https://zed.dev/docs/ai/external-agents#registry) eseguendo `zed: acp registry` nella palette dei comandi. + +Per usare invece un eseguibile OpenCode personalizzato, aggiungilo alla configurazione di [Zed](https://zed.dev) (`~/.config/zed/settings.json`): ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/ja/acp.mdx b/packages/web/src/content/docs/ja/acp.mdx index f7b995bf3..ba3b04421 100644 --- a/packages/web/src/content/docs/ja/acp.mdx +++ b/packages/web/src/content/docs/ja/acp.mdx @@ -24,12 +24,15 @@ ACP 経由で OpenCode を使用するには、`opencode acp` コマンドを実 ### Zed -[Zed](https://zed.dev) 構成 (`~/.config/zed/settings.json`) に追加します。 +コマンドパレットで `zed: acp registry` を実行し、[Zed ACP レジストリ](https://zed.dev/docs/ai/external-agents#registry)から OpenCode をインストールします。 + +代わりにカスタムの OpenCode 実行ファイルを使用する場合は、[Zed](https://zed.dev) の設定 (`~/.config/zed/settings.json`) に追加します。 ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/ko/acp.mdx b/packages/web/src/content/docs/ko/acp.mdx index a9842f270..971904e72 100644 --- a/packages/web/src/content/docs/ko/acp.mdx +++ b/packages/web/src/content/docs/ko/acp.mdx @@ -25,12 +25,15 @@ ACP로 OpenCode를 사용하려면, 편집기에서 `opencode acp` 명령을 실 ### Zed -[Zed](https://zed.dev) config(`~/.config/zed/settings.json`)에 다음을 추가하세요. +명령 팔레트에서 `zed: acp registry`를 실행하여 [Zed ACP 레지스트리](https://zed.dev/docs/ai/external-agents#registry)에서 OpenCode를 설치하세요. + +대신 사용자 지정 OpenCode 실행 파일을 사용하려면 [Zed](https://zed.dev) 설정(`~/.config/zed/settings.json`)에 추가하세요. ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/nb/acp.mdx b/packages/web/src/content/docs/nb/acp.mdx index 23fbd06d2..3a2c06383 100644 --- a/packages/web/src/content/docs/nb/acp.mdx +++ b/packages/web/src/content/docs/nb/acp.mdx @@ -25,12 +25,15 @@ Nedenfor er eksempler på populære editorer som støtter ACP. ### Zed -Legg til i [Zed](https://zed.dev)-konfigurasjonen (`~/.config/zed/settings.json`): +Installer OpenCode fra [Zeds ACP-register](https://zed.dev/docs/ai/external-agents#registry) ved å kjøre `zed: acp registry` i kommandopaletten. + +Hvis du i stedet vil bruke en egendefinert OpenCode-kjørbar fil, legger du den til i [Zed](https://zed.dev)-konfigurasjonen (`~/.config/zed/settings.json`): ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/pl/acp.mdx b/packages/web/src/content/docs/pl/acp.mdx index 3b3c4720e..c0599b73f 100644 --- a/packages/web/src/content/docs/pl/acp.mdx +++ b/packages/web/src/content/docs/pl/acp.mdx @@ -27,12 +27,15 @@ Poniżej znajdują się przykłady dla edytorów obsługujących ACP. ### Zed -Dodaj do konfiguracji [Zed](https://zed.dev) (`~/.config/zed/settings.json`): +Zainstaluj OpenCode z [rejestru ACP Zed](https://zed.dev/docs/ai/external-agents#registry), uruchamiając `zed: acp registry` w palecie poleceń. + +Aby zamiast tego użyć niestandardowego pliku wykonywalnego OpenCode, dodaj go do konfiguracji [Zed](https://zed.dev) (`~/.config/zed/settings.json`): ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/pt-br/acp.mdx b/packages/web/src/content/docs/pt-br/acp.mdx index 549f6cead..4eb483ecd 100644 --- a/packages/web/src/content/docs/pt-br/acp.mdx +++ b/packages/web/src/content/docs/pt-br/acp.mdx @@ -25,12 +25,15 @@ Abaixo estão exemplos para editores populares que suportam ACP. ### Zed -Adicione à sua configuração do [Zed](https://zed.dev) (`~/.config/zed/settings.json`): +Instale o OpenCode pelo [Registro ACP do Zed](https://zed.dev/docs/ai/external-agents#registry) executando `zed: acp registry` na Paleta de Comandos. + +Para usar um executável personalizado do OpenCode, adicione-o à configuração do [Zed](https://zed.dev) (`~/.config/zed/settings.json`): ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/ru/acp.mdx b/packages/web/src/content/docs/ru/acp.mdx index c4a6132fe..a51476fbc 100644 --- a/packages/web/src/content/docs/ru/acp.mdx +++ b/packages/web/src/content/docs/ru/acp.mdx @@ -25,12 +25,15 @@ ACP — это открытый протокол, который стандар ### Zed -Добавьте в конфигурацию [Zed](https://zed.dev) (`~/.config/zed/settings.json`): +Установите OpenCode из [реестра ACP Zed](https://zed.dev/docs/ai/external-agents#registry), выполнив `zed: acp registry` в палитре команд. + +Чтобы вместо этого использовать собственный исполняемый файл OpenCode, добавьте его в конфигурацию [Zed](https://zed.dev) (`~/.config/zed/settings.json`): ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/th/acp.mdx b/packages/web/src/content/docs/th/acp.mdx index f7850ed40..a02c8c69c 100644 --- a/packages/web/src/content/docs/th/acp.mdx +++ b/packages/web/src/content/docs/th/acp.mdx @@ -25,12 +25,15 @@ ACP เป็นมาตรฐานเปิดสำหรับการส ### Zed -สำหรับ [Zed](https://zed.dev) (`~/.config/zed/settings.json`): +ติดตั้ง OpenCode จาก [รีจิสทรี ACP ของ Zed](https://zed.dev/docs/ai/external-agents#registry) โดยเรียกใช้ `zed: acp registry` ใน Command Palette + +หากต้องการใช้ไฟล์ปฏิบัติการ OpenCode แบบกำหนดเอง ให้เพิ่มลงในการตั้งค่า [Zed](https://zed.dev) (`~/.config/zed/settings.json`): ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/tr/acp.mdx b/packages/web/src/content/docs/tr/acp.mdx index abdfda091..c5020101c 100644 --- a/packages/web/src/content/docs/tr/acp.mdx +++ b/packages/web/src/content/docs/tr/acp.mdx @@ -25,12 +25,15 @@ Aşağıda ACP'yi destekleyen popüler düzenleyicilere ilişkin örnekler veril ### Zed -[Zed](https://zed.dev) yapılandırmanıza (`~/.config/zed/settings.json`) ekleyin: +Komut Paleti’nde `zed: acp registry` komutunu çalıştırarak OpenCode’u [Zed ACP Kayıt Defteri](https://zed.dev/docs/ai/external-agents#registry) üzerinden yükleyin. + +Bunun yerine özel bir OpenCode çalıştırılabilir dosyası kullanmak için [Zed](https://zed.dev) yapılandırmanıza (`~/.config/zed/settings.json`) ekleyin: ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/zh-cn/acp.mdx b/packages/web/src/content/docs/zh-cn/acp.mdx index b07520c5e..7d8808406 100644 --- a/packages/web/src/content/docs/zh-cn/acp.mdx +++ b/packages/web/src/content/docs/zh-cn/acp.mdx @@ -25,12 +25,15 @@ ACP 是一个开放协议,用于标准化代码编辑器与 AI 编码代理之 ### Zed -添加到你的 [Zed](https://zed.dev) 配置文件(`~/.config/zed/settings.json`)中: +在命令面板中运行 `zed: acp registry`,从 [Zed ACP 注册表](https://zed.dev/docs/ai/external-agents#registry)安装 OpenCode。 + +如果要改用自定义 OpenCode 可执行文件,请将其添加到 [Zed](https://zed.dev) 配置文件(`~/.config/zed/settings.json`)中: ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } diff --git a/packages/web/src/content/docs/zh-tw/acp.mdx b/packages/web/src/content/docs/zh-tw/acp.mdx index 4dc7baef3..0d2f7ebae 100644 --- a/packages/web/src/content/docs/zh-tw/acp.mdx +++ b/packages/web/src/content/docs/zh-tw/acp.mdx @@ -25,12 +25,15 @@ ACP 是一個開放協議,用於標準化程式碼編輯器與 AI 編碼代理 ### Zed -新增到你的 [Zed](https://zed.dev) 設定檔(`~/.config/zed/settings.json`)中: +在命令面板中執行 `zed: acp registry`,從 [Zed ACP 登錄檔](https://zed.dev/docs/ai/external-agents#registry)安裝 OpenCode。 + +如果要改用自訂 OpenCode 執行檔,請將它新增到 [Zed](https://zed.dev) 設定檔(`~/.config/zed/settings.json`)中: ```json title="~/.config/zed/settings.json" { "agent_servers": { "OpenCode": { + "type": "custom", "command": "opencode", "args": ["acp"] } From 2a36236132b0588eafbe3a16f2d271144f5a1104 Mon Sep 17 00:00:00 2001 From: Dax Date: Mon, 24 Aug 2026 08:49:33 -0400 Subject: [PATCH 134/271] fix(opencode): normalize upgrade endpoint (#44686) --- .../routes/instance/httpapi/groups/global.ts | 11 ++-- .../instance/httpapi/handlers/global.ts | 56 +++++-------------- .../test/server/httpapi-global.test.ts | 34 +++++++++-- packages/sdk/js/src/v2/gen/sdk.gen.ts | 2 +- packages/sdk/js/src/v2/gen/types.gen.ts | 2 +- 5 files changed, 51 insertions(+), 54 deletions(-) diff --git a/packages/opencode/src/server/routes/instance/httpapi/groups/global.ts b/packages/opencode/src/server/routes/instance/httpapi/groups/global.ts index 61daefe8a..5dded3acf 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/groups/global.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/groups/global.ts @@ -5,7 +5,8 @@ import { InstanceDisposed } from "@/server/event" import "@opencode-ai/core/account" import "@/server/event" import { Schema } from "effect" -import { HttpApi, HttpApiEndpoint, HttpApiError, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi" +import { HttpApi, HttpApiEndpoint, HttpApiError, HttpApiGroup, OpenApi } from "effect/unstable/httpapi" +import semver from "semver" import { described } from "./metadata" const GlobalHealth = Schema.Struct({ @@ -48,7 +49,9 @@ const GlobalEventSchema = Schema.Struct({ }).annotate({ identifier: "GlobalEvent" }) export const GlobalUpgradeInput = Schema.Struct({ - target: Schema.optional(Schema.String), + target: Schema.String.check( + Schema.makeFilter((value) => (semver.valid(value) === null ? "Expected a semantic version" : undefined)), + ), }) const GlobalUpgradeResult = Schema.Union([ @@ -121,14 +124,14 @@ export const GlobalApi = HttpApi.make("global").add( }), ), HttpApiEndpoint.post("upgrade", GlobalPaths.upgrade, { - payload: [HttpApiSchema.NoContent, GlobalUpgradeInput], + payload: GlobalUpgradeInput, success: described(GlobalUpgradeResult, "Upgrade result"), error: HttpApiError.BadRequest, }).annotateMerge( OpenApi.annotations({ identifier: "global.upgrade", summary: "Upgrade opencode", - description: "Upgrade opencode to the specified version or latest if not specified.", + description: "Upgrade opencode to the specified version.", }), ), ) diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/global.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/global.ts index c1f588d5a..ac909032f 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/handlers/global.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/global.ts @@ -5,9 +5,9 @@ import { EventV2 } from "@opencode-ai/core/event" import { Installation } from "@/installation" import { disposeAllInstancesAndEmitGlobalDisposed } from "@/server/global-lifecycle" import { InstallationVersion } from "@opencode-ai/core/installation/version" -import { Effect, Queue, Schema } from "effect" +import { Effect, Queue } from "effect" import * as Stream from "effect/Stream" -import { HttpServerRequest, HttpServerResponse } from "effect/unstable/http" +import { HttpServerResponse } from "effect/unstable/http" import { HttpApiBuilder } from "effect/unstable/httpapi" import * as Sse from "effect/unstable/encoding/Sse" import { RootHttpApi } from "../api" @@ -22,14 +22,6 @@ function eventData(data: unknown): Sse.Event { } } -function parseBody(body: string) { - try { - return JSON.parse(body || "{}") as unknown - } catch { - return undefined - } -} - function eventResponse() { return Effect.gen(function* () { yield* Effect.logInfo("global event connected") @@ -97,25 +89,22 @@ export const globalHandlers = HttpApiBuilder.group(RootHttpApi, "global", (handl const upgrade = Effect.fn("GlobalHttpApi.upgrade")(function* (ctx: { payload: typeof GlobalUpgradeInput.Type }) { const method = yield* installation.method() if (method === "unknown") { - return { - status: 400, - body: { success: false as const, error: "Unknown installation method" }, - } + return HttpServerResponse.jsonUnsafe( + { success: false as const, error: "Unknown installation method" }, + { status: 400 }, + ) } - const target = ctx.payload.target || (yield* installation.latest(method)) + const target = ctx.payload.target const result = yield* installation.upgrade(method, target).pipe( - Effect.as({ status: 200, body: { success: true as const, version: target } }), + Effect.as({ success: true as const, version: target }), Effect.catch((err) => Effect.succeed({ - status: 500, - body: { - success: false as const, - error: err instanceof Error ? err.message : String(err), - }, + success: false as const, + error: err instanceof Error ? err.message : String(err), }), ), ) - if (!result.body.success) return result + if (!result.success) return HttpServerResponse.jsonUnsafe(result, { status: 500 }) GlobalBus.emit("event", { directory: "global", payload: { @@ -123,26 +112,7 @@ export const globalHandlers = HttpApiBuilder.group(RootHttpApi, "global", (handl properties: { version: target }, }, }) - return result - }) - - const upgradeRaw = Effect.fn("GlobalHttpApi.upgradeRaw")(function* (ctx: { - request: HttpServerRequest.HttpServerRequest - }) { - const body = yield* Effect.orDie(ctx.request.text) - const json = parseBody(body) - if (json === undefined) { - return HttpServerResponse.jsonUnsafe({ success: false, error: "Invalid request body" }, { status: 400 }) - } - const payload = yield* Schema.decodeUnknownEffect(GlobalUpgradeInput)(json).pipe( - Effect.map((payload) => ({ valid: true as const, payload })), - Effect.catch(() => Effect.succeed({ valid: false as const })), - ) - if (!payload.valid) { - return HttpServerResponse.jsonUnsafe({ success: false, error: "Invalid request body" }, { status: 400 }) - } - const result = yield* upgrade({ payload: payload.payload }) - return HttpServerResponse.jsonUnsafe(result.body, { status: result.status }) + return HttpServerResponse.jsonUnsafe(result) }) return handlers @@ -151,6 +121,6 @@ export const globalHandlers = HttpApiBuilder.group(RootHttpApi, "global", (handl .handle("configGet", configGet) .handle("configUpdate", configUpdate) .handle("dispose", dispose) - .handleRaw("upgrade", upgradeRaw) + .handle("upgrade", upgrade) }), ) diff --git a/packages/opencode/test/server/httpapi-global.test.ts b/packages/opencode/test/server/httpapi-global.test.ts index bcbe7aecb..55bdcff4f 100644 --- a/packages/opencode/test/server/httpapi-global.test.ts +++ b/packages/opencode/test/server/httpapi-global.test.ts @@ -43,24 +43,48 @@ const apiLayer = HttpRouter.serve( const it = testEffect(apiLayer) describe("global HttpApi", () => { - it.live("upgrades to latest when the request body is omitted", () => + it.live("upgrades to the requested version", () => Effect.gen(function* () { - const response = yield* HttpClient.post(GlobalPaths.upgrade) + const response = yield* HttpClientRequest.post(GlobalPaths.upgrade).pipe( + HttpClientRequest.bodyJsonUnsafe({ target: "9.9.9" }), + HttpClient.execute, + ) expect(response.status).toBe(200) expect(yield* response.json).toEqual({ success: true, version: "9.9.9" }) }), ) - it.live("rejects malformed upgrade payloads", () => + it.live("rejects invalid upgrade payloads", () => + Effect.gen(function* () { + const response = yield* HttpClientRequest.post(GlobalPaths.upgrade).pipe( + HttpClientRequest.bodyJsonUnsafe({ target: 1 }), + HttpClient.execute, + ) + + expect(response.status).toBe(400) + }), + ) + + it.live("rejects invalid upgrade target versions", () => Effect.gen(function* () { const response = yield* HttpClientRequest.post(GlobalPaths.upgrade).pipe( - HttpClientRequest.setBody(HttpBody.text("{", "application/json")), + HttpClientRequest.bodyJsonUnsafe({ target: "latest" }), HttpClient.execute, ) expect(response.status).toBe(400) - expect(yield* response.json).toEqual({ success: false, error: "Invalid request body" }) + }), + ) + + it.live("rejects unsupported upgrade content types", () => + Effect.gen(function* () { + const response = yield* HttpClientRequest.post(GlobalPaths.upgrade).pipe( + HttpClientRequest.setBody(HttpBody.text('{"target":"1.0.0"}', "text/plain")), + HttpClient.execute, + ) + + expect(response.status).toBe(415) }), ) }) diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts index 9ed0084aa..a2bcd4252 100644 --- a/packages/sdk/js/src/v2/gen/sdk.gen.ts +++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts @@ -1355,7 +1355,7 @@ export class Global extends HeyApiClient { /** * Upgrade opencode * - * Upgrade opencode to the specified version or latest if not specified. + * Upgrade opencode to the specified version. */ public upgrade( parameters?: { diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index 90c91e915..72b5e6f30 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -7353,7 +7353,7 @@ export type GlobalDisposeResponse = GlobalDisposeResponses[keyof GlobalDisposeRe export type GlobalUpgradeData = { body?: { - target?: string + target: string } path?: never query?: never From 2a6be0a03b93a6734070e10a6c3b56863475f214 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Mon, 24 Aug 2026 12:50:53 +0000 Subject: [PATCH 135/271] chore: generate --- packages/sdk/openapi.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json index afe14bb60..5e372b6fb 100644 --- a/packages/sdk/openapi.json +++ b/packages/sdk/openapi.json @@ -548,7 +548,7 @@ } } }, - "description": "Upgrade opencode to the specified version or latest if not specified.", + "description": "Upgrade opencode to the specified version.", "summary": "Upgrade opencode", "requestBody": { "content": { @@ -560,6 +560,7 @@ "type": "string" } }, + "required": ["target"], "additionalProperties": false } } From 55f984126cbe26920e532d1e2b09cb16482cb451 Mon Sep 17 00:00:00 2001 From: opencode Date: Mon, 24 Aug 2026 14:37:14 +0000 Subject: [PATCH 136/271] sync release versions for v1.18.22 --- bun.lock | 56 ++++++++++----------- packages/app/package.json | 2 +- packages/cli/package.json | 2 +- packages/codemode/package.json | 2 +- packages/console/app/package.json | 2 +- packages/console/core/package.json | 2 +- packages/console/function/package.json | 2 +- packages/console/mail/package.json | 2 +- packages/console/support/package.json | 2 +- packages/core/package.json | 2 +- packages/desktop/package.json | 2 +- packages/effect-drizzle-sqlite/package.json | 2 +- packages/effect-sqlite-node/package.json | 2 +- packages/enterprise/package.json | 2 +- packages/function/package.json | 2 +- packages/http-recorder/package.json | 2 +- packages/llm/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/server/package.json | 2 +- packages/session-ui/package.json | 2 +- packages/slack/package.json | 2 +- packages/stats/app/package.json | 2 +- packages/stats/core/package.json | 2 +- packages/stats/server/package.json | 2 +- packages/tui/package.json | 2 +- packages/ui/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 30 files changed, 57 insertions(+), 57 deletions(-) diff --git a/bun.lock b/bun.lock index edc7eb6d7..9eb06a99b 100644 --- a/bun.lock +++ b/bun.lock @@ -29,7 +29,7 @@ }, "packages/app": { "name": "@opencode-ai/app", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", @@ -96,7 +96,7 @@ }, "packages/cli": { "name": "@opencode-ai/cli", - "version": "1.18.21", + "version": "1.18.22", "bin": { "lildax": "./bin/lildax.cjs", }, @@ -144,7 +144,7 @@ }, "packages/codemode": { "name": "@opencode-ai/codemode", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "acorn": "8.15.0", "effect": "catalog:", @@ -158,7 +158,7 @@ }, "packages/console/app": { "name": "@opencode-ai/console-app", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@ibm/plex": "6.4.1", @@ -194,7 +194,7 @@ }, "packages/console/core": { "name": "@opencode-ai/console-core", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@jsx-email/render": "1.1.1", @@ -221,7 +221,7 @@ }, "packages/console/function": { "name": "@opencode-ai/console-function", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/openai": "3.0.48", @@ -243,7 +243,7 @@ }, "packages/console/mail": { "name": "@opencode-ai/console-mail", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", @@ -267,7 +267,7 @@ }, "packages/console/support": { "name": "@opencode-ai/console-support", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@opencode-ai/console-core": "workspace:*", @@ -287,7 +287,7 @@ }, "packages/core": { "name": "@opencode-ai/core", - "version": "1.18.21", + "version": "1.18.22", "bin": { "opencode": "./bin/opencode", }, @@ -381,7 +381,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@zip.js/zip.js": "2.7.62", "drizzle-orm": "catalog:", @@ -435,7 +435,7 @@ }, "packages/effect-drizzle-sqlite": { "name": "@opencode-ai/effect-drizzle-sqlite", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "drizzle-orm": "catalog:", "effect": "catalog:", @@ -449,7 +449,7 @@ }, "packages/effect-sqlite-node": { "name": "@opencode-ai/effect-sqlite-node", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "effect": "catalog:", }, @@ -461,7 +461,7 @@ }, "packages/enterprise": { "name": "@opencode-ai/enterprise", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@hono/standard-validator": "catalog:", "@opencode-ai/core": "workspace:*", @@ -493,7 +493,7 @@ }, "packages/function": { "name": "@opencode-ai/function", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "catalog:", @@ -509,7 +509,7 @@ }, "packages/http-recorder": { "name": "@opencode-ai/http-recorder", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@effect/platform-node": "4.0.0-beta.83", "@effect/platform-node-shared": "4.0.0-beta.83", @@ -540,7 +540,7 @@ }, "packages/llm": { "name": "@opencode-ai/llm", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@opencode-ai/schema": "workspace:*", "@smithy/eventstream-codec": "4.2.14", @@ -559,7 +559,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "1.18.21", + "version": "1.18.22", "bin": { "opencode": "./bin/opencode", }, @@ -690,7 +690,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@ai-sdk/provider": "3.0.8", "@opencode-ai/sdk": "workspace:*", @@ -766,7 +766,7 @@ }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "cross-spawn": "catalog:", }, @@ -781,7 +781,7 @@ }, "packages/server": { "name": "@opencode-ai/server", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", @@ -796,7 +796,7 @@ }, "packages/session-ui": { "name": "@opencode-ai/session-ui", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@kobalte/core": "catalog:", "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13-v2.tgz", @@ -836,7 +836,7 @@ }, "packages/slack": { "name": "@opencode-ai/slack", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@opencode-ai/sdk": "workspace:*", "@slack/bolt": "^3.17.1", @@ -849,7 +849,7 @@ }, "packages/stats/app": { "name": "@opencode-ai/stats-app", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@ibm/plex": "6.4.1", "@kobalte/core": "catalog:", @@ -883,7 +883,7 @@ }, "packages/stats/core": { "name": "@opencode-ai/stats-core", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@aws-sdk/client-athena": "3.933.0", "@planetscale/database": "1.19.0", @@ -902,7 +902,7 @@ }, "packages/stats/server": { "name": "@opencode-ai/stats-server", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@aws-sdk/client-firehose": "3.933.0", "@effect/platform-node": "catalog:", @@ -944,7 +944,7 @@ }, "packages/tui": { "name": "@opencode-ai/tui", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", @@ -971,7 +971,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@kobalte/core": "catalog:", "@pierre/diffs": "catalog:", @@ -1022,7 +1022,7 @@ }, "packages/web": { "name": "@opencode-ai/web", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", diff --git a/packages/app/package.json b/packages/app/package.json index 729c16e4a..cadd66a4f 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "1.18.21", + "version": "1.18.22", "description": "", "type": "module", "exports": { diff --git a/packages/cli/package.json b/packages/cli/package.json index af75216f8..12ab9e07f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/cli", - "version": "1.18.21", + "version": "1.18.22", "type": "module", "license": "MIT", "bin": { diff --git a/packages/codemode/package.json b/packages/codemode/package.json index 041307717..7bac79771 100644 --- a/packages/codemode/package.json +++ b/packages/codemode/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/codemode", - "version": "1.18.21", + "version": "1.18.22", "description": "Effect-native confined code execution over schema-described tools", "private": true, "type": "module", diff --git a/packages/console/app/package.json b/packages/console/app/package.json index 46b387dbb..e5153dad3 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-app", - "version": "1.18.21", + "version": "1.18.22", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/console/core/package.json b/packages/console/core/package.json index 61ae28be5..e3acc27b4 100644 --- a/packages/console/core/package.json +++ b/packages/console/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/console-core", - "version": "1.18.21", + "version": "1.18.22", "private": true, "type": "module", "license": "MIT", diff --git a/packages/console/function/package.json b/packages/console/function/package.json index b489cf818..e7fd6dbd8 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-function", - "version": "1.18.21", + "version": "1.18.22", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json index ff52e141f..2b0c88499 100644 --- a/packages/console/mail/package.json +++ b/packages/console/mail/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-mail", - "version": "1.18.21", + "version": "1.18.22", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", diff --git a/packages/console/support/package.json b/packages/console/support/package.json index 94340b03c..4cc026ea7 100644 --- a/packages/console/support/package.json +++ b/packages/console/support/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-support", - "version": "1.18.21", + "version": "1.18.22", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/core/package.json b/packages/core/package.json index 019f4b52a..ea1471500 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.21", + "version": "1.18.22", "name": "@opencode-ai/core", "type": "module", "license": "MIT", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 2f8f492e4..fe0eebd69 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop", "private": true, - "version": "1.18.21", + "version": "1.18.22", "type": "module", "license": "MIT", "homepage": "https://opencode.ai", diff --git a/packages/effect-drizzle-sqlite/package.json b/packages/effect-drizzle-sqlite/package.json index cbcc8c17a..e54c1f594 100644 --- a/packages/effect-drizzle-sqlite/package.json +++ b/packages/effect-drizzle-sqlite/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.21", + "version": "1.18.22", "name": "@opencode-ai/effect-drizzle-sqlite", "type": "module", "license": "MIT", diff --git a/packages/effect-sqlite-node/package.json b/packages/effect-sqlite-node/package.json index 95244c7a9..29c940cdf 100644 --- a/packages/effect-sqlite-node/package.json +++ b/packages/effect-sqlite-node/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.21", + "version": "1.18.22", "name": "@opencode-ai/effect-sqlite-node", "type": "module", "license": "MIT", diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json index 42ca50d83..a32c2cf71 100644 --- a/packages/enterprise/package.json +++ b/packages/enterprise/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/enterprise", - "version": "1.18.21", + "version": "1.18.22", "private": true, "type": "module", "license": "MIT", diff --git a/packages/function/package.json b/packages/function/package.json index f6a6915f4..3f6a41094 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/function", - "version": "1.18.21", + "version": "1.18.22", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json index fa314ce8c..1f1269f12 100644 --- a/packages/http-recorder/package.json +++ b/packages/http-recorder/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.21", + "version": "1.18.22", "name": "@opencode-ai/http-recorder", "description": "Record and replay Effect HTTP client traffic with deterministic cassettes", "type": "module", diff --git a/packages/llm/package.json b/packages/llm/package.json index 82e32ae42..956a9e12c 100644 --- a/packages/llm/package.json +++ b/packages/llm/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.21", + "version": "1.18.22", "name": "@opencode-ai/llm", "type": "module", "license": "MIT", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index be6f25f89..771b05d55 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.21", + "version": "1.18.22", "name": "opencode", "type": "module", "license": "MIT", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 77ff21ccb..32a081fb4 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "1.18.21", + "version": "1.18.22", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 55e63e2ee..89aaf1895 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "1.18.21", + "version": "1.18.22", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index 767cd16e1..a4542f2ff 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/server", - "version": "1.18.21", + "version": "1.18.22", "private": true, "type": "module", "license": "MIT", diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json index 080d3db9c..a5fe78ffd 100644 --- a/packages/session-ui/package.json +++ b/packages/session-ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/session-ui", - "version": "1.18.21", + "version": "1.18.22", "private": true, "type": "module", "license": "MIT", diff --git a/packages/slack/package.json b/packages/slack/package.json index f476ecc6b..349f8178d 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/slack", - "version": "1.18.21", + "version": "1.18.22", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index f3f554bff..abd183860 100644 --- a/packages/stats/app/package.json +++ b/packages/stats/app/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-app", - "version": "1.18.21", + "version": "1.18.22", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json index c88fccdca..4d434ea9c 100644 --- a/packages/stats/core/package.json +++ b/packages/stats/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-core", - "version": "1.18.21", + "version": "1.18.22", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json index 8497fb04b..e7a6c34a1 100644 --- a/packages/stats/server/package.json +++ b/packages/stats/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-server", - "version": "1.18.21", + "version": "1.18.22", "private": true, "type": "module", "license": "MIT", diff --git a/packages/tui/package.json b/packages/tui/package.json index 9eb84261c..8828868e5 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/tui", - "version": "1.18.21", + "version": "1.18.22", "private": true, "type": "module", "license": "MIT", diff --git a/packages/ui/package.json b/packages/ui/package.json index 8810528c8..545217d81 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/ui", - "version": "1.18.21", + "version": "1.18.22", "type": "module", "license": "MIT", "repository": { diff --git a/packages/web/package.json b/packages/web/package.json index 400171ffd..f0242a302 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,7 +2,7 @@ "name": "@opencode-ai/web", "type": "module", "license": "MIT", - "version": "1.18.21", + "version": "1.18.22", "scripts": { "dev": "astro dev", "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index 1a78b436f..e621b6db3 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "1.18.21", + "version": "1.18.22", "publisher": "sst-dev", "repository": { "type": "git", From be15db58618fbc6cd8d090c46cc1e24f1249b556 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 24 Aug 2026 12:07:27 -0400 Subject: [PATCH 137/271] Revert "delay removing first month discount" This reverts commit 754bb7e3903df6276e6ddc96e3d6daced7160902. --- packages/console/core/src/billing.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/console/core/src/billing.ts b/packages/console/core/src/billing.ts index 879cd8c67..adeabd9c7 100644 --- a/packages/console/core/src/billing.ts +++ b/packages/console/core/src/billing.ts @@ -328,7 +328,6 @@ export namespace Billing { return LiteData.threeMonths100Coupon if (coupons.some((coupon) => coupon.type === "GOFREEMONTH" && !coupon.timeRedeemed)) return LiteData.firstMonth100Coupon - if (!coupons.some((coupon) => coupon.type === "GO1MONTH50")) return LiteData.firstMonth50Coupon return undefined })() const createSession = () => From 7cde8329bc33801248d6aafa2a4dd46dc86e5683 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 24 Aug 2026 13:19:53 -0400 Subject: [PATCH 138/271] update model parser --- .../app/src/routes/zen/util/requestBody.ts | 80 +++++++++++++++---- packages/console/app/test/requestBody.test.ts | 15 ++++ 2 files changed, 78 insertions(+), 17 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/requestBody.ts b/packages/console/app/src/routes/zen/util/requestBody.ts index 458faf553..a3970dedf 100644 --- a/packages/console/app/src/routes/zen/util/requestBody.ts +++ b/packages/console/app/src/routes/zen/util/requestBody.ts @@ -7,38 +7,84 @@ export async function prepareRequestBody(body: ReadableStream) { const decoder = new TextDecoder() let text = "" let done = false - let searchFrom = 0 let bom = 0 - let match: RegExpExecArray | null = null - const pattern = /("model"\s*:\s*")([^"]+)"/g + let index = 0 + let depth = 0 + let stringStart = -1 + let escaped = false + let phase: "key" | "colon" | "value" | "comma" = "key" + let key = "" + let found: { model: string; start: number; end: number } | undefined - while (!done && !match) { + const scan = () => { + while (index < text.length && !found) { + const char = text[index] + if (stringStart >= 0) { + if (escaped) escaped = false + else if (char === "\\") escaped = true + else if (char === '"') { + if (depth === 1 && phase === "key") { + key = JSON.parse(text.slice(stringStart, index + 1)) + phase = "colon" + } else if (depth === 1 && phase === "value") { + if (key === "model") { + const start = bom + utf8Length(text, stringStart + 1) + found = { + model: JSON.parse(text.slice(stringStart, index + 1)), + start, + end: bom + utf8Length(text, index), + } + } + phase = "comma" + } + stringStart = -1 + } + index++ + continue + } + + if (char === '"') { + stringStart = index++ + continue + } + if (char === "{" || char === "[") { + if (depth === 1 && phase === "value") phase = "comma" + depth++ + index++ + continue + } + if (char === "}" || char === "]") { + depth-- + index++ + continue + } + if (depth !== 1) { + index++ + continue + } + if (char === ":" && phase === "colon") phase = "value" + else if (char === "," && phase === "comma") phase = "key" + else if (phase === "value" && !/\s/.test(char)) phase = "comma" + index++ + } + } + + while (!done && !found) { const next = await reader.read() done = next.done if (!next.value) continue if (!chunks.length && next.value[0] === 0xef && next.value[1] === 0xbb && next.value[2] === 0xbf) bom = 3 chunks.push(next.value) text += decoder.decode(next.value, { stream: true }) - pattern.lastIndex = searchFrom - match = pattern.exec(text) - searchFrom = Math.max(0, text.length - 256) + scan() } if (done) { text += decoder.decode() - if (!match) { - pattern.lastIndex = searchFrom - match = pattern.exec(text) - } + scan() } - const found = (() => { - if (!match) return - const start = bom + utf8Length(text, match.index + match[1].length) - return { model: match[2], start, end: start + utf8Length(match[2], match[2].length) } - })() const preview = text.substring(0, 300) text = "" - match = null let used = false return { diff --git a/packages/console/app/test/requestBody.test.ts b/packages/console/app/test/requestBody.test.ts index 52d86297b..db3c81b91 100644 --- a/packages/console/app/test/requestBody.test.ts +++ b/packages/console/app/test/requestBody.test.ts @@ -32,6 +32,21 @@ describe("Zen request body streaming", () => { }) }) + test("ignores model fields nested before the root model", async () => { + const body = new Blob([ + '{"metadata":{"model":"ox-alpha-free"},"model":"glm-5.3","messages":[],"stream":false}', + ]).stream() + const request = await prepareRequestBody(body) + + expect(request.model).toBe("glm-5.3") + expect(JSON.parse(await new Response(request.stream("provider-model", false)).text())).toEqual({ + metadata: { model: "ox-alpha-free" }, + model: "provider-model", + messages: [], + stream: false, + }) + }) + test("appends stream usage options at the end of the request", async () => { const body = new Blob(['{"model":"client-model","stream":true,"messages":[]} ']).stream() const request = await prepareRequestBody(body) From 611cc73d84839393d0d2707041955c5d466f64c5 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 15:24:47 -0500 Subject: [PATCH 139/271] fix(opencode): send parent session header (#44752) Co-authored-by: rekram1-node --- packages/opencode/src/session/llm/request.ts | 2 +- packages/opencode/test/session/llm.test.ts | 69 ++++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/session/llm/request.ts b/packages/opencode/src/session/llm/request.ts index 4f9341110..e000d6ca4 100644 --- a/packages/opencode/src/session/llm/request.ts +++ b/packages/opencode/src/session/llm/request.ts @@ -196,9 +196,9 @@ export const prepare = Effect.fn("LLMRequestPrep.prepare")(function* (input: Pre : { "x-session-affinity": input.sessionID, "X-Session-Id": input.sessionID, - ...(input.parentSessionID ? { "x-parent-session-id": input.parentSessionID } : {}), "User-Agent": USER_AGENT, }), + ...(input.parentSessionID ? { "x-parent-session-id": input.parentSessionID } : {}), ...input.model.headers, ...headers, }, diff --git a/packages/opencode/test/session/llm.test.ts b/packages/opencode/test/session/llm.test.ts index 635e69751..fcb536f46 100644 --- a/packages/opencode/test/session/llm.test.ts +++ b/packages/opencode/test/session/llm.test.ts @@ -754,6 +754,75 @@ function createEventResponse(chunks: unknown[], includeDone = false) { describe("session.llm.stream", () => { const vivgridFixture = { providerID: "vivgrid", modelID: "gemini-3.1-pro-preview" } + const opencodeFixture = { providerID: "opencode-test", modelID: vivgridFixture.modelID } + + it.instance( + "sends the parent session header for opencode providers", + () => + Effect.gen(function* () { + const fixture = loadFixture(vivgridFixture.providerID, vivgridFixture.modelID) + const request = waitRequest( + "/chat/completions", + new Response(createChatStream("Hello"), { + status: 200, + headers: { "Content-Type": "text/event-stream" }, + }), + ) + const resolved = yield* Provider.use.getModel( + ProviderV2.ID.make(opencodeFixture.providerID), + ModelV2.ID.make(opencodeFixture.modelID), + ) + const sessionID = SessionID.make("session-child") + const parentSessionID = SessionID.make("session-parent") + const agent = { + name: "test", + mode: "primary", + options: {}, + permission: [{ permission: "*", pattern: "*", action: "allow" }], + } satisfies Agent.Info + const user = { + id: MessageID.make("msg_user-parent-header"), + sessionID, + role: "user", + time: { created: Date.now() }, + agent: agent.name, + model: { + providerID: ProviderV2.ID.make(opencodeFixture.providerID), + modelID: resolved.id, + }, + } satisfies SessionV1.User + + yield* drain({ + user, + sessionID, + parentSessionID, + model: resolved, + agent, + system: ["You are a helpful assistant."], + messages: [{ role: "user", content: "Hello" }], + tools: {}, + }) + + expect((yield* Effect.promise(() => request)).headers.get("x-parent-session-id")).toBe(parentSessionID) + }), + { + config: () => { + const fixture = loadFixture(vivgridFixture.providerID, vivgridFixture.modelID) + return { + enabled_providers: [opencodeFixture.providerID], + provider: { + [opencodeFixture.providerID]: { + name: "OpenCode Test", + npm: "@ai-sdk/openai-compatible", + models: { [fixture.model.id]: configModel(fixture.model) as ConfigModel }, + options: { apiKey: "test-key", baseURL: `${state.server!.url.origin}/v1` }, + }, + }, + } + }, + }, + ) + it.instance( "sends temperature, tokens, and reasoning options for openai-compatible models", () => From f8b4dd70ac26996436e259fc386917944c05f481 Mon Sep 17 00:00:00 2001 From: Charlie Gleason Date: Mon, 24 Aug 2026 16:15:26 -0500 Subject: [PATCH 140/271] fix(provider): send Anthropic's dashed native slug through the AI Gateway (#44281) Co-authored-by: Claude Sonnet 5 --- packages/opencode/src/provider/provider.ts | 7 ++++++- .../test/provider/cf-ai-gateway-e2e.test.ts | 14 +++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index dba9cbece..32e01512f 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -844,7 +844,12 @@ function custom(dep: CustomDep): Record { // The passthrough wrappers inject a CF_TEMP_TOKEN sentinel that the gateway strips before // dispatch, so upstream billing stays on the gateway (Unified Billing / stored BYOK). if (modelID.startsWith("openai/")) return aigateway(createOpenAI()(modelID.slice("openai/".length))) - if (modelID.startsWith("anthropic/")) return aigateway(createAnthropic()(modelID.slice("anthropic/".length))) + // models.dev lists Anthropic ids with dotted versions (claude-haiku-4.5); Anthropic's + // Messages API expects dashed native slugs (claude-haiku-4-5), so translate before passing. + // No native Anthropic slug contains a dot, so the blanket replacement is lossless here - + // unlike OpenAI above, whose native ids (e.g. gpt-4.1) keep their dots and must not be touched. + if (modelID.startsWith("anthropic/")) + return aigateway(createAnthropic()(modelID.slice("anthropic/".length).replaceAll(".", "-"))) // Workers AI is the only first-party provider whose upstream is Cloudflare itself, so it is // the only one that should receive the Cloudflare token as its upstream Authorization header. // The Unified API addresses Workers AI both with the explicit "workers-ai/" prefix and as diff --git a/packages/opencode/test/provider/cf-ai-gateway-e2e.test.ts b/packages/opencode/test/provider/cf-ai-gateway-e2e.test.ts index cb1654006..97f9d4f90 100644 --- a/packages/opencode/test/provider/cf-ai-gateway-e2e.test.ts +++ b/packages/opencode/test/provider/cf-ai-gateway-e2e.test.ts @@ -165,7 +165,8 @@ function extractUpstreamHeaders(body: unknown): Record | undefi function gatewayModel(apiId: string, gatewayToken = "test") { const aigateway = createAiGateway({ accountId: "test", gateway: "test", apiKey: gatewayToken }) if (apiId.startsWith("openai/")) return aigateway(createOpenAI()(apiId.slice("openai/".length))) - if (apiId.startsWith("anthropic/")) return aigateway(createAnthropic()(apiId.slice("anthropic/".length))) + if (apiId.startsWith("anthropic/")) + return aigateway(createAnthropic()(apiId.slice("anthropic/".length).replaceAll(".", "-"))) const isWorkersAi = apiId.startsWith("workers-ai/") || apiId.startsWith("@cf/") const unified = createUnified(isWorkersAi ? { apiKey: gatewayToken } : {}) return aigateway(unified(apiId)) @@ -195,6 +196,17 @@ describe("cf-ai-gateway routing", () => { expect(upstream?.model).toBe("claude-sonnet-4-6") }) + test("anthropic/* with a dotted models.dev id reaches Anthropic as a dashed native slug", async () => { + // models.dev ids are dotted (claude-haiku-4.5); Anthropic's Messages API 404s unless the + // version is dashed (claude-haiku-4-5). Regression guard for the dotted-id translation. + await callThroughGateway("anthropic/claude-haiku-4.5", {}) + const step = firstStep(captured?.outerBody) + expect(step?.provider).toBe("anthropic") + expect(step?.endpoint).toBe("v1/messages") + const upstream = extractUpstreamQuery(captured?.outerBody) + expect(upstream?.model).toBe("claude-haiku-4-5") + }) + test("workers-ai models stay on the unified /compat route", async () => { await callThroughGateway("workers-ai/@cf/moonshotai/kimi-k2.6", {}) const step = firstStep(captured?.outerBody) From f4019cab3eb832108f337caaf55d51a9ab7dd860 Mon Sep 17 00:00:00 2001 From: Filip <34747899+neriousy@users.noreply.github.com> Date: Mon, 24 Aug 2026 23:23:22 +0200 Subject: [PATCH 141/271] fix(github): support immutable OIDC subjects (#44776) --- packages/function/package.json | 3 ++ packages/function/src/api.ts | 52 +++++++++---------- packages/function/src/github.ts | 14 +++++ packages/function/test/github.test.ts | 39 ++++++++++++++ .../opencode/src/cli/cmd/github.handler.ts | 17 ++++-- turbo.json | 3 ++ 6 files changed, 97 insertions(+), 31 deletions(-) create mode 100644 packages/function/src/github.ts create mode 100644 packages/function/test/github.test.ts diff --git a/packages/function/package.json b/packages/function/package.json index 3f6a41094..0bc1b6e6b 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -5,6 +5,9 @@ "private": true, "type": "module", "license": "MIT", + "scripts": { + "test": "bun test" + }, "devDependencies": { "@cloudflare/workers-types": "catalog:", "@tsconfig/node22": "22.0.2", diff --git a/packages/function/src/api.ts b/packages/function/src/api.ts index 58c74fe32..e57a567dc 100644 --- a/packages/function/src/api.ts +++ b/packages/function/src/api.ts @@ -5,6 +5,7 @@ import { jwtVerify, createRemoteJWKSet } from "jose" import { createAppAuth } from "@octokit/auth-app" import { Octokit } from "@octokit/rest" import { Resource } from "sst" +import { parseRepositoryClaim } from "./github" type Env = { SYNC_SERVER: DurableObjectNamespace @@ -269,42 +270,41 @@ export default new Hono<{ Bindings: Env }>() // verify token const JWKS = createRemoteJWKSet(new URL(JWKS_URL)) - let owner, repo + let repository: ReturnType try { const { payload } = await jwtVerify(token, JWKS, { issuer: GITHUB_ISSUER, audience: EXPECTED_AUDIENCE, }) - const sub = payload.sub // e.g. 'repo:my-org/my-repo:ref:refs/heads/main' - const parts = sub.split(":")[1].split("/") - owner = parts[0] - repo = parts[1] + repository = parseRepositoryClaim(payload) } catch (err) { console.error("Token verification failed:", err) return c.json({ error: "Invalid or expired token" }, { status: 403 }) } - // Create app JWT token - const auth = createAppAuth({ - appId: Resource.GITHUB_APP_ID.value, - privateKey: Resource.GITHUB_APP_PRIVATE_KEY.value, - }) - const appAuth = await auth({ type: "app" }) - - // Lookup installation - const octokit = new Octokit({ auth: appAuth.token }) - const { data: installation } = await octokit.apps.getRepoInstallation({ - owner, - repo, - }) - - // Get installation token - const installationAuth = await auth({ - type: "installation", - installationId: installation.id, - }) - - return c.json({ token: installationAuth.token }) + try { + const auth = createAppAuth({ + appId: Resource.GITHUB_APP_ID.value, + privateKey: Resource.GITHUB_APP_PRIVATE_KEY.value, + }) + const appAuth = await auth({ type: "app" }) + const octokit = new Octokit({ auth: appAuth.token }) + const { data: installation } = await octokit.apps.getRepoInstallation({ + owner: repository.owner, + repo: repository.repo, + }) + const installationAuth = await auth({ + type: "installation", + installationId: installation.id, + }) + return c.json({ token: installationAuth.token }) + } catch (error) { + console.error("GitHub App token exchange failed:", error) + return c.json( + { error: `Failed to exchange GitHub App token for ${repository.owner}/${repository.repo}` }, + { status: 502 }, + ) + } }) /** * Used by the GitHub action to get GitHub installation access token given user PAT token (used when testing `opencode github run` locally) diff --git a/packages/function/src/github.ts b/packages/function/src/github.ts new file mode 100644 index 000000000..180d37713 --- /dev/null +++ b/packages/function/src/github.ts @@ -0,0 +1,14 @@ +import type { JWTPayload } from "jose" + +export function parseRepositoryClaim(payload: JWTPayload) { + const claim = payload.repository + if (typeof claim !== "string") throw new Error("Repository claim is missing") + + const parts = claim.split("/") + if (parts.length !== 2 || !parts[0] || !parts[1]) throw new Error("Repository claim is invalid") + + return { + owner: parts[0], + repo: parts[1], + } +} diff --git a/packages/function/test/github.test.ts b/packages/function/test/github.test.ts new file mode 100644 index 000000000..9f5fbac95 --- /dev/null +++ b/packages/function/test/github.test.ts @@ -0,0 +1,39 @@ +import { describe, expect, test } from "bun:test" +import { parseRepositoryClaim } from "../src/github" + +describe("parseRepositoryClaim", () => { + test("reads repository identity with a legacy subject", () => { + expect( + parseRepositoryClaim({ + repository: "octocat/my-repo", + sub: "repo:octocat/my-repo:ref:refs/heads/main", + }), + ).toEqual({ owner: "octocat", repo: "my-repo" }) + }) + + test("reads repository identity with an immutable subject", () => { + expect( + parseRepositoryClaim({ + repository: "octocat/my-repo", + sub: "repo:octocat@123456/my-repo@456789:ref:refs/heads/main", + }), + ).toEqual({ owner: "octocat", repo: "my-repo" }) + }) + + test("does not depend on a repository path in a customized subject", () => { + expect( + parseRepositoryClaim({ + repository: "octocat/my-repo", + sub: "repository_owner:octocat:repository_visibility:private", + }), + ).toEqual({ owner: "octocat", repo: "my-repo" }) + }) + + test("rejects a missing repository claim", () => { + expect(() => parseRepositoryClaim({})).toThrow("Repository claim is missing") + }) + + test("rejects an invalid repository claim", () => { + expect(() => parseRepositoryClaim({ repository: "octocat" })).toThrow("Repository claim is invalid") + }) +}) diff --git a/packages/opencode/src/cli/cmd/github.handler.ts b/packages/opencode/src/cli/cmd/github.handler.ts index 6511ab30e..fcf44279c 100644 --- a/packages/opencode/src/cli/cmd/github.handler.ts +++ b/packages/opencode/src/cli/cmd/github.handler.ts @@ -437,6 +437,7 @@ export const githubRun = Effect.fn("Cli.github.run")(function* (args: { event?: let session: { id: SessionID; title: string; version: string } let shareId: string | undefined let exitCode = 0 + let githubClientReady = false type PromptFiles = Awaited>["promptFiles"] const triggerCommentId = isCommentEvent ? (payload as IssueCommentEvent | PullRequestReviewCommentEvent).comment.id @@ -485,6 +486,7 @@ export const githubRun = Effect.fn("Cli.github.run")(function* (args: { event?: octoGraph = graphql.defaults({ headers: { authorization: `token ${appToken}` }, }) + githubClientReady = true const { userPrompt, promptFiles } = await getUserPrompt() if (!useGithubToken) { @@ -639,9 +641,13 @@ export const githubRun = Effect.fn("Cli.github.run")(function* (args: { event?: } else if (e instanceof Error) { msg = e.message } - if (isUserEvent) { - await createComment(`${msg}${footer()}`) - await removeReaction(commentType) + if (isUserEvent && githubClientReady) { + try { + await createComment(`${msg}${footer()}`) + await removeReaction(commentType) + } catch (error) { + console.error("Failed to report error on GitHub:", error) + } } core.setFailed(msg) // Also output the clean error message for the action to capture @@ -1004,8 +1010,9 @@ export const githubRun = Effect.fn("Cli.github.run")(function* (args: { event?: }) if (!response.ok) { - const responseJson = (await response.json()) as { error?: string } - throw new Error(`App token exchange failed: ${response.status} ${response.statusText} - ${responseJson.error}`) + throw new Error( + `App token exchange failed: ${response.status} ${response.statusText} - ${await response.text()}`, + ) } const responseJson = (await response.json()) as { token: string } diff --git a/turbo.json b/turbo.json index 5e93640b1..daf89195b 100644 --- a/turbo.json +++ b/turbo.json @@ -17,6 +17,9 @@ "dependsOn": ["^build"], "outputs": [] }, + "@opencode-ai/function#test": { + "outputs": [] + }, "@opencode-ai/app#test": { "dependsOn": ["^build"], "outputs": [] From 0561bac189fe866d46ff739ceaa914415e074254 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 24 Aug 2026 17:40:33 -0400 Subject: [PATCH 142/271] add client header replacement --- packages/console/app/src/routes/zen/util/handler.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 16062e99c..8288e203d 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -222,6 +222,7 @@ export async function handler( if (v === "$session") return headers.set(k, sessionId) if (v === "$model") return headers.set(k, model) if (v === "$request") return headers.set(k, requestId) + if (v === "$client") return headers.set(k, ocClient) if (v === "$project") return headers.set(k, projectId) if (v === "$workspace") { if (authInfo?.workspaceID) headers.set(k, authInfo.workspaceID) From 18b4cb6819d7de0b37927fef60d03927e678c9dd Mon Sep 17 00:00:00 2001 From: Filip <34747899+neriousy@users.noreply.github.com> Date: Tue, 25 Aug 2026 00:29:56 +0200 Subject: [PATCH 143/271] docs(github): correct action token configuration (#44793) --- packages/web/src/content/docs/github.mdx | 32 ++++++++++++++++-------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/packages/web/src/content/docs/github.mdx b/packages/web/src/content/docs/github.mdx index e940b616b..08cb27fff 100644 --- a/packages/web/src/content/docs/github.mdx +++ b/packages/web/src/content/docs/github.mdx @@ -57,20 +57,19 @@ Or you can set it up manually. permissions: id-token: write steps: - - name: Checkout repository - uses: actions/checkout@v6 - with: - fetch-depth: 1 - persist-credentials: false + - name: Checkout repository + uses: actions/checkout@v6 + with: + fetch-depth: 1 + persist-credentials: false - - name: Run OpenCode + - name: Run OpenCode uses: anomalyco/opencode/github@latest env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} with: model: anthropic/claude-sonnet-4-20250514 # share: true - # github_token: xxxx ``` 3. **Store the API keys in secrets** @@ -85,19 +84,30 @@ Or you can set it up manually. - `agent`: The agent to use. Must be a primary agent. Falls back to `default_agent` from config or `"build"` if not found. - `share`: Whether to share the OpenCode session. Defaults to **true** for public repositories. - `prompt`: Optional custom prompt to override the default behavior. Use this to customize how OpenCode processes requests. -- `token`: Optional GitHub access token for performing operations such as creating comments, committing changes, and opening pull requests. By default, OpenCode uses the installation access token from the OpenCode GitHub App, so commits, comments, and pull requests appear as coming from the app. +- `mentions`: Comma-separated list of trigger phrases, case-insensitive. Defaults to `/opencode,/oc`. +- `variant`: Model variant for provider-specific reasoning effort, for example `high`, `max`, or `minimal`. +- `oidc_base_url`: Base URL for the OIDC token exchange API. Only needed when running a custom GitHub App install. Defaults to `https://api.opencode.ai`. +- `use_github_token`: Set to `true` to use a caller-provided `GITHUB_TOKEN` instead of exchanging an OIDC token for an OpenCode App installation token. Defaults to `false`. - Alternatively, you can use the GitHub Action runner's [built-in `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) without installing the OpenCode GitHub App. Just make sure to grant the required permissions in your workflow: + Use this mode to run without installing the OpenCode GitHub App. Pass the token through `env` and grant the permissions required by your workflow: ```yaml permissions: - id-token: write contents: write pull-requests: write issues: write + + steps: + - uses: anomalyco/opencode/github@latest + env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + model: anthropic/claude-sonnet-4-20250514 + use_github_token: true ``` - You can also use a [personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT) if preferred. + `id-token: write` is not required in this mode because OIDC exchange is skipped. To use a [personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) or another GitHub App token, store it as a secret and pass that secret as `GITHUB_TOKEN` instead. --- From 51070b6f598fc171636f5a52cb53f90f2cdccbc3 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 22:29:36 -0400 Subject: [PATCH 144/271] docs: clarify prompt data handling (#44854) Co-authored-by: thdxr <826656+thdxr@users.noreply.github.com> Co-authored-by: Dax --- .../console/app/src/routes/legal/privacy-policy/index.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/console/app/src/routes/legal/privacy-policy/index.tsx b/packages/console/app/src/routes/legal/privacy-policy/index.tsx index 4426e0ddd..f7d3b1fb4 100644 --- a/packages/console/app/src/routes/legal/privacy-policy/index.tsx +++ b/packages/console/app/src/routes/legal/privacy-policy/index.tsx @@ -237,9 +237,8 @@ export default function PrivacyPolicy() {
        -
      • Providing, Customizing and Improving the Services
      • -
      • Marketing the Services
      • -
      • Corresponding with You
      • +
      • Passing through to upstream provider to provide services
      • +
      • Not stored
      From 3ef72fe8f6c54a31e9709e6dff82dc609df8e453 Mon Sep 17 00:00:00 2001 From: Charlie Gleason Date: Mon, 24 Aug 2026 22:01:17 -0500 Subject: [PATCH 145/271] fix(provider): route non-native Cloudflare AI Gateway providers via the REST API (#44828) Co-authored-by: Claude Opus 4.8 --- packages/opencode/src/provider/provider.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 32e01512f..0f8cbd23f 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -809,6 +809,7 @@ function custom(dep: CustomDep): Record { const { createUnified } = yield* Effect.promise(() => import("ai-gateway-provider/providers/unified")) const { createOpenAI } = yield* Effect.promise(() => import("ai-gateway-provider/providers/openai")) const { createAnthropic } = yield* Effect.promise(() => import("ai-gateway-provider/providers/anthropic")) + const { createOpenAICompatible } = yield* Effect.promise(() => import("@ai-sdk/openai-compatible")) const metadata = iife(() => { if (input.options?.metadata) return input.options.metadata @@ -855,9 +856,23 @@ function custom(dep: CustomDep): Record { // The Unified API addresses Workers AI both with the explicit "workers-ai/" prefix and as // bare "@cf/..." ids. Third-party providers must not receive the token; they rely on the // gateway's stored/BYOK keys instead. + // Workers AI is Cloudflare's own upstream, so it rides the unified compat route with the + // Cloudflare token as its upstream Authorization header. const isWorkersAi = modelID.startsWith("workers-ai/") || modelID.startsWith("@cf/") - const unified = createUnified(isWorkersAi ? { apiKey: apiToken } : {}) - return aigateway(unified(modelID)) + if (isWorkersAi) return aigateway(createUnified({ apiKey: apiToken })(modelID)) + + // Every other third-party provider (google, xai, alibaba, deepseek, moonshotai, …) is only + // served by Cloudflare's catalog-aware REST API. The universal/compat gateway route rejects + // them with "Invalid provider" (the gateway's compat endpoint doesn't front those upstreams), + // so point an OpenAI-compatible client at the REST endpoint and bind it to the gateway with + // cf-aig-gateway-id — that keeps requests gateway-routed (analytics/caching/BYOK), not a + // bypass. models.dev ids (provider/model, dotted) pass through unchanged. + return createOpenAICompatible({ + name: "cloudflare-ai-gateway", + baseURL: `https://api.cloudflare.com/client/v4/accounts/${accountId}/ai/v1`, + apiKey: apiToken, + headers: { "cf-aig-gateway-id": gateway }, + })(modelID) }, options: {}, } From d0ceaef6aa44ce60b9b02a1084d6650e0decfb94 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 24 Aug 2026 23:32:44 -0400 Subject: [PATCH 146/271] docs(console): prohibit abusive multi-account use --- .../app/src/routes/legal/terms-of-service/index.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/console/app/src/routes/legal/terms-of-service/index.tsx b/packages/console/app/src/routes/legal/terms-of-service/index.tsx index 7847c44bd..76544fc84 100644 --- a/packages/console/app/src/routes/legal/terms-of-service/index.tsx +++ b/packages/console/app/src/routes/legal/terms-of-service/index.tsx @@ -21,7 +21,7 @@ export default function TermsOfService() {

      Terms of Use

      -

      Effective date: Mar 6, 2026

      +

      Effective date: Aug 15, 2026

      Welcome to OpenCode. Please read on to learn the rules and restrictions that govern your use of @@ -154,6 +154,11 @@ export default function TermsOfService() { is dangerous, harmful, fraudulent, deceptive, threatening, harassing, defamatory, obscene, or otherwise objectionable; +

    • + creates, maintains, or uses accounts in bulk, or creates, maintains, or uses multiple accounts to + circumvent usage limits, access restrictions, billing obligations, promotions, suspensions, or any + other restriction or policy applicable to the Services; +
    • automatically or programmatically extracts data or Output (defined below);
    • Represent that the Output was human-generated when it was not;
    • From 31c409a86510e80fd6f798da165c50a6a40fccba Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 25 Aug 2026 01:54:38 -0400 Subject: [PATCH 147/271] update inference headers --- packages/console/app/src/routes/zen/util/handler.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 8288e203d..c743778b3 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -236,10 +236,12 @@ export async function handler( }) headers.delete("host") headers.delete("content-length") - headers.delete("x-opencode-request") - if (!isNewInference) headers.delete("x-opencode-session") - headers.delete("x-opencode-project") - headers.delete("x-opencode-client") + if (!isNewInference) { + headers.delete("x-opencode-session") + headers.delete("x-opencode-project") + headers.delete("x-opencode-client") + headers.delete("x-opencode-request") + } return headers })(), body: reqBody, From 2f36ffe35d569bd0fb1ae6e22f4a859ac08177e0 Mon Sep 17 00:00:00 2001 From: opencode Date: Tue, 25 Aug 2026 06:30:46 +0000 Subject: [PATCH 148/271] sync release versions for v1.18.23 --- bun.lock | 56 ++++++++++----------- packages/app/package.json | 2 +- packages/cli/package.json | 2 +- packages/codemode/package.json | 2 +- packages/console/app/package.json | 2 +- packages/console/core/package.json | 2 +- packages/console/function/package.json | 2 +- packages/console/mail/package.json | 2 +- packages/console/support/package.json | 2 +- packages/core/package.json | 2 +- packages/desktop/package.json | 2 +- packages/effect-drizzle-sqlite/package.json | 2 +- packages/effect-sqlite-node/package.json | 2 +- packages/enterprise/package.json | 2 +- packages/function/package.json | 2 +- packages/http-recorder/package.json | 2 +- packages/llm/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/server/package.json | 2 +- packages/session-ui/package.json | 2 +- packages/slack/package.json | 2 +- packages/stats/app/package.json | 2 +- packages/stats/core/package.json | 2 +- packages/stats/server/package.json | 2 +- packages/tui/package.json | 2 +- packages/ui/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 30 files changed, 57 insertions(+), 57 deletions(-) diff --git a/bun.lock b/bun.lock index 9eb06a99b..7991ff65c 100644 --- a/bun.lock +++ b/bun.lock @@ -29,7 +29,7 @@ }, "packages/app": { "name": "@opencode-ai/app", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", @@ -96,7 +96,7 @@ }, "packages/cli": { "name": "@opencode-ai/cli", - "version": "1.18.22", + "version": "1.18.23", "bin": { "lildax": "./bin/lildax.cjs", }, @@ -144,7 +144,7 @@ }, "packages/codemode": { "name": "@opencode-ai/codemode", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "acorn": "8.15.0", "effect": "catalog:", @@ -158,7 +158,7 @@ }, "packages/console/app": { "name": "@opencode-ai/console-app", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@ibm/plex": "6.4.1", @@ -194,7 +194,7 @@ }, "packages/console/core": { "name": "@opencode-ai/console-core", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@jsx-email/render": "1.1.1", @@ -221,7 +221,7 @@ }, "packages/console/function": { "name": "@opencode-ai/console-function", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/openai": "3.0.48", @@ -243,7 +243,7 @@ }, "packages/console/mail": { "name": "@opencode-ai/console-mail", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", @@ -267,7 +267,7 @@ }, "packages/console/support": { "name": "@opencode-ai/console-support", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@opencode-ai/console-core": "workspace:*", @@ -287,7 +287,7 @@ }, "packages/core": { "name": "@opencode-ai/core", - "version": "1.18.22", + "version": "1.18.23", "bin": { "opencode": "./bin/opencode", }, @@ -381,7 +381,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@zip.js/zip.js": "2.7.62", "drizzle-orm": "catalog:", @@ -435,7 +435,7 @@ }, "packages/effect-drizzle-sqlite": { "name": "@opencode-ai/effect-drizzle-sqlite", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "drizzle-orm": "catalog:", "effect": "catalog:", @@ -449,7 +449,7 @@ }, "packages/effect-sqlite-node": { "name": "@opencode-ai/effect-sqlite-node", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "effect": "catalog:", }, @@ -461,7 +461,7 @@ }, "packages/enterprise": { "name": "@opencode-ai/enterprise", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@hono/standard-validator": "catalog:", "@opencode-ai/core": "workspace:*", @@ -493,7 +493,7 @@ }, "packages/function": { "name": "@opencode-ai/function", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "catalog:", @@ -509,7 +509,7 @@ }, "packages/http-recorder": { "name": "@opencode-ai/http-recorder", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@effect/platform-node": "4.0.0-beta.83", "@effect/platform-node-shared": "4.0.0-beta.83", @@ -540,7 +540,7 @@ }, "packages/llm": { "name": "@opencode-ai/llm", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@opencode-ai/schema": "workspace:*", "@smithy/eventstream-codec": "4.2.14", @@ -559,7 +559,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "1.18.22", + "version": "1.18.23", "bin": { "opencode": "./bin/opencode", }, @@ -690,7 +690,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@ai-sdk/provider": "3.0.8", "@opencode-ai/sdk": "workspace:*", @@ -766,7 +766,7 @@ }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "cross-spawn": "catalog:", }, @@ -781,7 +781,7 @@ }, "packages/server": { "name": "@opencode-ai/server", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", @@ -796,7 +796,7 @@ }, "packages/session-ui": { "name": "@opencode-ai/session-ui", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@kobalte/core": "catalog:", "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13-v2.tgz", @@ -836,7 +836,7 @@ }, "packages/slack": { "name": "@opencode-ai/slack", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@opencode-ai/sdk": "workspace:*", "@slack/bolt": "^3.17.1", @@ -849,7 +849,7 @@ }, "packages/stats/app": { "name": "@opencode-ai/stats-app", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@ibm/plex": "6.4.1", "@kobalte/core": "catalog:", @@ -883,7 +883,7 @@ }, "packages/stats/core": { "name": "@opencode-ai/stats-core", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@aws-sdk/client-athena": "3.933.0", "@planetscale/database": "1.19.0", @@ -902,7 +902,7 @@ }, "packages/stats/server": { "name": "@opencode-ai/stats-server", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@aws-sdk/client-firehose": "3.933.0", "@effect/platform-node": "catalog:", @@ -944,7 +944,7 @@ }, "packages/tui": { "name": "@opencode-ai/tui", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", @@ -971,7 +971,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@kobalte/core": "catalog:", "@pierre/diffs": "catalog:", @@ -1022,7 +1022,7 @@ }, "packages/web": { "name": "@opencode-ai/web", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", diff --git a/packages/app/package.json b/packages/app/package.json index cadd66a4f..044e0cd9e 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "1.18.22", + "version": "1.18.23", "description": "", "type": "module", "exports": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 12ab9e07f..4c77ac3c2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/cli", - "version": "1.18.22", + "version": "1.18.23", "type": "module", "license": "MIT", "bin": { diff --git a/packages/codemode/package.json b/packages/codemode/package.json index 7bac79771..cbfb81c45 100644 --- a/packages/codemode/package.json +++ b/packages/codemode/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/codemode", - "version": "1.18.22", + "version": "1.18.23", "description": "Effect-native confined code execution over schema-described tools", "private": true, "type": "module", diff --git a/packages/console/app/package.json b/packages/console/app/package.json index e5153dad3..ca4db3c70 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-app", - "version": "1.18.22", + "version": "1.18.23", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/console/core/package.json b/packages/console/core/package.json index e3acc27b4..78b0a05e3 100644 --- a/packages/console/core/package.json +++ b/packages/console/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/console-core", - "version": "1.18.22", + "version": "1.18.23", "private": true, "type": "module", "license": "MIT", diff --git a/packages/console/function/package.json b/packages/console/function/package.json index e7fd6dbd8..739921402 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-function", - "version": "1.18.22", + "version": "1.18.23", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json index 2b0c88499..6d81e0bbf 100644 --- a/packages/console/mail/package.json +++ b/packages/console/mail/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-mail", - "version": "1.18.22", + "version": "1.18.23", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", diff --git a/packages/console/support/package.json b/packages/console/support/package.json index 4cc026ea7..1b12ec028 100644 --- a/packages/console/support/package.json +++ b/packages/console/support/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-support", - "version": "1.18.22", + "version": "1.18.23", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/core/package.json b/packages/core/package.json index ea1471500..ba3653df8 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.22", + "version": "1.18.23", "name": "@opencode-ai/core", "type": "module", "license": "MIT", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index fe0eebd69..b2c975f2b 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop", "private": true, - "version": "1.18.22", + "version": "1.18.23", "type": "module", "license": "MIT", "homepage": "https://opencode.ai", diff --git a/packages/effect-drizzle-sqlite/package.json b/packages/effect-drizzle-sqlite/package.json index e54c1f594..d289ec31f 100644 --- a/packages/effect-drizzle-sqlite/package.json +++ b/packages/effect-drizzle-sqlite/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.22", + "version": "1.18.23", "name": "@opencode-ai/effect-drizzle-sqlite", "type": "module", "license": "MIT", diff --git a/packages/effect-sqlite-node/package.json b/packages/effect-sqlite-node/package.json index 29c940cdf..572b7c5e8 100644 --- a/packages/effect-sqlite-node/package.json +++ b/packages/effect-sqlite-node/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.22", + "version": "1.18.23", "name": "@opencode-ai/effect-sqlite-node", "type": "module", "license": "MIT", diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json index a32c2cf71..b5fa9476f 100644 --- a/packages/enterprise/package.json +++ b/packages/enterprise/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/enterprise", - "version": "1.18.22", + "version": "1.18.23", "private": true, "type": "module", "license": "MIT", diff --git a/packages/function/package.json b/packages/function/package.json index 0bc1b6e6b..85771f635 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/function", - "version": "1.18.22", + "version": "1.18.23", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json index 1f1269f12..07ed4c961 100644 --- a/packages/http-recorder/package.json +++ b/packages/http-recorder/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.22", + "version": "1.18.23", "name": "@opencode-ai/http-recorder", "description": "Record and replay Effect HTTP client traffic with deterministic cassettes", "type": "module", diff --git a/packages/llm/package.json b/packages/llm/package.json index 956a9e12c..b18e9ceae 100644 --- a/packages/llm/package.json +++ b/packages/llm/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.22", + "version": "1.18.23", "name": "@opencode-ai/llm", "type": "module", "license": "MIT", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 771b05d55..a8b4ee7a8 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.22", + "version": "1.18.23", "name": "opencode", "type": "module", "license": "MIT", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 32a081fb4..c39a8c9d8 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "1.18.22", + "version": "1.18.23", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 89aaf1895..64ec112cd 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "1.18.22", + "version": "1.18.23", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index a4542f2ff..c5f24b3ff 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/server", - "version": "1.18.22", + "version": "1.18.23", "private": true, "type": "module", "license": "MIT", diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json index a5fe78ffd..341bc8272 100644 --- a/packages/session-ui/package.json +++ b/packages/session-ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/session-ui", - "version": "1.18.22", + "version": "1.18.23", "private": true, "type": "module", "license": "MIT", diff --git a/packages/slack/package.json b/packages/slack/package.json index 349f8178d..46eac6d1f 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/slack", - "version": "1.18.22", + "version": "1.18.23", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index abd183860..1bf1f6738 100644 --- a/packages/stats/app/package.json +++ b/packages/stats/app/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-app", - "version": "1.18.22", + "version": "1.18.23", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json index 4d434ea9c..f4ab6c5ca 100644 --- a/packages/stats/core/package.json +++ b/packages/stats/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-core", - "version": "1.18.22", + "version": "1.18.23", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json index e7a6c34a1..12da00b36 100644 --- a/packages/stats/server/package.json +++ b/packages/stats/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-server", - "version": "1.18.22", + "version": "1.18.23", "private": true, "type": "module", "license": "MIT", diff --git a/packages/tui/package.json b/packages/tui/package.json index 8828868e5..08557e636 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/tui", - "version": "1.18.22", + "version": "1.18.23", "private": true, "type": "module", "license": "MIT", diff --git a/packages/ui/package.json b/packages/ui/package.json index 545217d81..2a8dc93df 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/ui", - "version": "1.18.22", + "version": "1.18.23", "type": "module", "license": "MIT", "repository": { diff --git a/packages/web/package.json b/packages/web/package.json index f0242a302..f3a3f4ab9 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,7 +2,7 @@ "name": "@opencode-ai/web", "type": "module", "license": "MIT", - "version": "1.18.22", + "version": "1.18.23", "scripts": { "dev": "astro dev", "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index e621b6db3..cae6ef427 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "1.18.22", + "version": "1.18.23", "publisher": "sst-dev", "repository": { "type": "git", From bdcb6be6495671006944d2b4f8035a5c1b1e0589 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 25 Aug 2026 03:14:10 -0400 Subject: [PATCH 149/271] update inference headers --- packages/console/app/src/routes/zen/util/handler.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index c743778b3..af3d9f02f 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -234,6 +234,9 @@ export async function handler( } headers.set(k, v) }) + if (isNewInference) { + headers.set("x-opencode-model", model) + } headers.delete("host") headers.delete("content-length") if (!isNewInference) { From 6bb1a76e586c321e214bc59196ea18676eb0d3fc Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 25 Aug 2026 03:30:20 -0400 Subject: [PATCH 150/271] update inference headers --- packages/console/app/src/routes/zen/util/handler.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index af3d9f02f..ca6bd0b05 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -244,6 +244,7 @@ export async function handler( headers.delete("x-opencode-project") headers.delete("x-opencode-client") headers.delete("x-opencode-request") + headers.delete("x-opencode-model") } return headers })(), From a57230b80be1c3bffab71ac021d11b02fb2fbe6c Mon Sep 17 00:00:00 2001 From: Nathan Thomassin Date: Tue, 25 Aug 2026 09:34:24 +0200 Subject: [PATCH 151/271] fix(app): drop archived sessions from home list right away (#44905) Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com> --- .../global-sync/home-session-index.test.ts | 33 ++++++++++++++++++- .../context/global-sync/home-session-index.ts | 14 +++++++- .../pages/home/home-sessions-controller.tsx | 6 ++-- .../app/src/pages/session/session-archive.ts | 3 ++ 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/packages/app/src/context/global-sync/home-session-index.test.ts b/packages/app/src/context/global-sync/home-session-index.test.ts index 4e40cc78e..9b94f1de2 100644 --- a/packages/app/src/context/global-sync/home-session-index.test.ts +++ b/packages/app/src/context/global-sync/home-session-index.test.ts @@ -1,8 +1,10 @@ import { describe, expect, test } from "bun:test" -import type { SessionV2Info } from "@opencode-ai/sdk/v2/client" +import { QueryClient } from "@tanstack/solid-query" +import type { Session, SessionV2Info } from "@opencode-ai/sdk/v2/client" import { applyHomeSessionEvent, appendHomeSessionEvent, + createHomeSessionIndexCache, HOME_V2_SESSION_PAGE_LIMIT, loadHomeSessionIndex, homeSessionIndexSessions, @@ -151,4 +153,33 @@ describe("Home V2 session index", () => { expect(homeSessionIndexRefresh("global.disposed", true).refetch).toBe(true) expect(homeSessionIndexRefresh("session.next.moved", true).refetch).toBe(true) }) + + test("removes a session from the loaded Home index", () => { + const queryClient = new QueryClient() + const cache = createHomeSessionIndexCache(queryClient, "server") + const sessions = [ + { id: "a", time: { created: 1, updated: 1 } }, + { id: "b", time: { created: 1, updated: 1 } }, + ] as Session[] + queryClient.setQueryData(cache.indexKey, { sessions, eventSequence: 0 }) + + cache.remove("a") + + const index = queryClient.getQueryData<{ sessions: Session[] }>(cache.indexKey) + expect(index?.sessions.map((item) => item.id)).toEqual(["b"]) + }) + + test("keeps the session out of the Home list when the index is not mounted", () => { + const queryClient = new QueryClient() + const cache = createHomeSessionIndexCache(queryClient, "server") + const sessions = [ + { id: "a", time: { created: 1, updated: 1 } }, + { id: "b", time: { created: 1, updated: 1 } }, + ] as Session[] + + cache.remove("a") + + expect(queryClient.getQueryData(cache.indexKey)).toBeUndefined() + expect(cache.sessions({ sessions, eventSequence: 0 }, undefined).map((item) => item.id)).toEqual(["b"]) + }) }) diff --git a/packages/app/src/context/global-sync/home-session-index.ts b/packages/app/src/context/global-sync/home-session-index.ts index 03a085e34..781c39c45 100644 --- a/packages/app/src/context/global-sync/home-session-index.ts +++ b/packages/app/src/context/global-sync/home-session-index.ts @@ -85,6 +85,7 @@ export function createHomeSessionIndexCache(queryClient: QueryClient, server: st const indexKey = homeSessionIndexKey(server) const eventsKey = homeSessionEventsKey(server) let connected = false + const removed = new Set() return { indexKey, @@ -97,7 +98,8 @@ export function createHomeSessionIndexCache(queryClient: QueryClient, server: st queryClient.setQueryData(eventsKey, (current) => trimHomeSessionEvents(current, sequence)) }, sessions(index: HomeSessionIndex | undefined, events: HomeSessionEvents | undefined) { - return homeSessionIndexSessions(index, events) + const sessions = homeSessionIndexSessions(index, events) + return removed.size === 0 ? sessions : sessions.filter((session) => !removed.has(session.id)) }, apply(event: HomeSessionEvent) { if (!queryClient.getQueryState(indexKey)) return @@ -116,6 +118,16 @@ export function createHomeSessionIndexCache(queryClient: QueryClient, server: st } queryClient.setQueryData(eventsKey, { sequence: next.sequence, entries: [] }) }, + remove(sessionID: string) { + removed.add(sessionID) + if (!queryClient.getQueryState(indexKey)) return + queryClient.setQueryData(indexKey, (index) => { + if (!index) return index + const at = index.sessions.findIndex((session) => session.id === sessionID) + if (at === -1) return index + return { ...index, sessions: index.sessions.toSpliced(at, 1) } + }) + }, refresh(event: Event["type"]) { const result = homeSessionIndexRefresh(event, connected) connected = result.connected diff --git a/packages/app/src/pages/home/home-sessions-controller.tsx b/packages/app/src/pages/home/home-sessions-controller.tsx index 25d896393..f306f208c 100644 --- a/packages/app/src/pages/home/home-sessions-controller.tsx +++ b/packages/app/src/pages/home/home-sessions-controller.tsx @@ -219,13 +219,15 @@ export function createHomeSessionsController(home: HomeController) { directory: session.directory, time: { archived: Date.now() }, }), - remove: () => + remove: () => { setStore( produce((draft) => { const match = Binary.search(draft.session, session.id, (item) => item.id) if (match.found) draft.session.splice(match.index, 1) }), - ), + ) + homeSessions().remove(session.id) + }, onError: (cause) => showToast({ title: language.t("common.requestFailed"), diff --git a/packages/app/src/pages/session/session-archive.ts b/packages/app/src/pages/session/session-archive.ts index 5e1314dbd..396886953 100644 --- a/packages/app/src/pages/session/session-archive.ts +++ b/packages/app/src/pages/session/session-archive.ts @@ -3,6 +3,7 @@ import { produce } from "solid-js/store" import { notifySessionTabsRemoved } from "@/components/titlebar-session-events" import { useLanguage } from "@/context/language" import { useSDK } from "@/context/sdk" +import { useServerSync } from "@/context/server-sync" import { useSync } from "@/context/sync" import { useTabs } from "@/context/tabs" import { errorMessage } from "@/pages/layout/helpers" @@ -15,6 +16,7 @@ export function useSessionArchive() { const navigate = useNavigate() const sdk = useSDK() const sync = useSync() + const serverSync = useServerSync() const tabs = useTabs() const { params } = useSessionKey() @@ -56,6 +58,7 @@ export function useSessionArchive() { }), ) sync().session.evict(sessionID) + serverSync().homeSessions.remove(sessionID) navigateAfterRemoval(sessionID, session.parentID, nextSession?.id) notifySessionTabsRemoved({ directory: sdk().directory, sessionIDs: [sessionID] }) }) From 1e86be2bc568d4ed30311ce431e6de207c591272 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 25 Aug 2026 04:22:16 -0400 Subject: [PATCH 152/271] update inference headers --- packages/console/app/src/routes/zen/util/handler.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index ca6bd0b05..5dbb8bcc3 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -235,7 +235,7 @@ export async function handler( headers.set(k, v) }) if (isNewInference) { - headers.set("x-opencode-model", model) + headers.set("x-zen-model", model) } headers.delete("host") headers.delete("content-length") @@ -244,7 +244,7 @@ export async function handler( headers.delete("x-opencode-project") headers.delete("x-opencode-client") headers.delete("x-opencode-request") - headers.delete("x-opencode-model") + headers.delete("x-zen-model") } return headers })(), From afd6f3b064bbb5d49ecd8e2d1037f5deca711d9e Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 25 Aug 2026 05:06:33 -0400 Subject: [PATCH 153/271] zen: display quota usage breakdown --- packages/console/app/src/i18n/ar.ts | 10 +- packages/console/app/src/i18n/br.ts | 10 +- packages/console/app/src/i18n/da.ts | 10 +- packages/console/app/src/i18n/de.ts | 10 +- packages/console/app/src/i18n/en.ts | 10 +- packages/console/app/src/i18n/es.ts | 10 +- packages/console/app/src/i18n/fr.ts | 10 +- packages/console/app/src/i18n/it.ts | 10 +- packages/console/app/src/i18n/ja.ts | 10 +- packages/console/app/src/i18n/ko.ts | 10 +- packages/console/app/src/i18n/no.ts | 10 +- packages/console/app/src/i18n/pl.ts | 10 +- packages/console/app/src/i18n/ru.ts | 10 +- packages/console/app/src/i18n/th.ts | 10 +- packages/console/app/src/i18n/tr.ts | 10 +- packages/console/app/src/i18n/uk.ts | 10 +- packages/console/app/src/i18n/zh.ts | 10 +- packages/console/app/src/i18n/zht.ts | 10 +- packages/console/app/src/lib/lite-usage.ts | 64 ++++ .../workspace/[id]/go/lite-section.module.css | 114 ++++++ .../routes/workspace/[id]/go/lite-section.tsx | 355 ++++++++++++++++-- .../app/src/routes/zen/util/handler.ts | 2 +- packages/console/app/test/liteUsage.test.ts | 75 ++++ .../console/core/src/schema/billing.sql.ts | 1 + 24 files changed, 743 insertions(+), 48 deletions(-) create mode 100644 packages/console/app/src/lib/lite-usage.ts create mode 100644 packages/console/app/test/liteUsage.test.ts diff --git a/packages/console/app/src/i18n/ar.ts b/packages/console/app/src/i18n/ar.ts index e82395918..e71b57acc 100644 --- a/packages/console/app/src/i18n/ar.ts +++ b/packages/console/app/src/i18n/ar.ts @@ -661,10 +661,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "بضع ثوان", "workspace.lite.subscription.message": "أنت مشترك في OpenCode Go.", "workspace.lite.subscription.manage": "إدارة الاشتراك", - "workspace.lite.subscription.rollingUsage": "الاستخدام المتجدد", + "workspace.lite.subscription.rollingUsage": "الاستخدام خلال 5 ساعات", + "workspace.lite.subscription.rollingQuota": "الحصة خلال 5 ساعات", "workspace.lite.subscription.weeklyUsage": "الاستخدام الأسبوعي", + "workspace.lite.subscription.weeklyQuota": "الحصة الأسبوعية", "workspace.lite.subscription.monthlyUsage": "الاستخدام الشهري", + "workspace.lite.subscription.monthlyQuota": "الحصة الشهرية", "workspace.lite.subscription.resetsIn": "إعادة تعيين في", + "workspace.lite.subscription.showDetails": "إظهار التفاصيل", + "workspace.lite.subscription.hideDetails": "إخفاء التفاصيل", + "workspace.lite.subscription.model": "النموذج", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "الإجمالي", "workspace.lite.subscription.useBalance": "استخدم رصيدك المتوفر بعد الوصول إلى حدود الاستخدام", "workspace.lite.subscription.selectProvider": 'اختر "OpenCode Go" كمزود في إعدادات opencode الخاصة بك لاستخدام نماذج Go.', diff --git a/packages/console/app/src/i18n/br.ts b/packages/console/app/src/i18n/br.ts index 49c0f2aa3..e710fba0f 100644 --- a/packages/console/app/src/i18n/br.ts +++ b/packages/console/app/src/i18n/br.ts @@ -673,10 +673,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "alguns segundos", "workspace.lite.subscription.message": "Você assina o OpenCode Go.", "workspace.lite.subscription.manage": "Gerenciar Assinatura", - "workspace.lite.subscription.rollingUsage": "Uso Contínuo", + "workspace.lite.subscription.rollingUsage": "Uso de 5 horas", + "workspace.lite.subscription.rollingQuota": "Cota de 5 horas", "workspace.lite.subscription.weeklyUsage": "Uso Semanal", + "workspace.lite.subscription.weeklyQuota": "Cota Semanal", "workspace.lite.subscription.monthlyUsage": "Uso Mensal", + "workspace.lite.subscription.monthlyQuota": "Cota Mensal", "workspace.lite.subscription.resetsIn": "Reinicia em", + "workspace.lite.subscription.showDetails": "Mostrar detalhes", + "workspace.lite.subscription.hideDetails": "Ocultar detalhes", + "workspace.lite.subscription.model": "Modelo", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "Total", "workspace.lite.subscription.useBalance": "Use seu saldo disponível após atingir os limites de uso", "workspace.lite.subscription.selectProvider": 'Selecione "OpenCode Go" como provedor na sua configuração do opencode para usar os modelos Go.', diff --git a/packages/console/app/src/i18n/da.ts b/packages/console/app/src/i18n/da.ts index 6e2652ef1..b3db8954c 100644 --- a/packages/console/app/src/i18n/da.ts +++ b/packages/console/app/src/i18n/da.ts @@ -669,10 +669,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "et par sekunder", "workspace.lite.subscription.message": "Du abonnerer på OpenCode Go.", "workspace.lite.subscription.manage": "Administrer abonnement", - "workspace.lite.subscription.rollingUsage": "Løbende forbrug", + "workspace.lite.subscription.rollingUsage": "5-timers forbrug", + "workspace.lite.subscription.rollingQuota": "5-timers kvote", "workspace.lite.subscription.weeklyUsage": "Ugentligt forbrug", + "workspace.lite.subscription.weeklyQuota": "Ugentlig kvote", "workspace.lite.subscription.monthlyUsage": "Månedligt forbrug", + "workspace.lite.subscription.monthlyQuota": "Månedlig kvote", "workspace.lite.subscription.resetsIn": "Nulstiller i", + "workspace.lite.subscription.showDetails": "Vis detaljer", + "workspace.lite.subscription.hideDetails": "Skjul detaljer", + "workspace.lite.subscription.model": "Model", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "I alt", "workspace.lite.subscription.useBalance": "Brug din tilgængelige saldo, når du har nået forbrugsgrænserne", "workspace.lite.subscription.selectProvider": 'Vælg "OpenCode Go" som udbyder i din opencode-konfiguration for at bruge Go-modeller.', diff --git a/packages/console/app/src/i18n/de.ts b/packages/console/app/src/i18n/de.ts index 20ae27439..13625e7bd 100644 --- a/packages/console/app/src/i18n/de.ts +++ b/packages/console/app/src/i18n/de.ts @@ -671,10 +671,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "einige Sekunden", "workspace.lite.subscription.message": "Du hast OpenCode Go abonniert.", "workspace.lite.subscription.manage": "Abo verwalten", - "workspace.lite.subscription.rollingUsage": "Fortlaufende Nutzung", + "workspace.lite.subscription.rollingUsage": "5-Stunden-Nutzung", + "workspace.lite.subscription.rollingQuota": "5-Stunden-Kontingent", "workspace.lite.subscription.weeklyUsage": "Wöchentliche Nutzung", + "workspace.lite.subscription.weeklyQuota": "Wöchentliches Kontingent", "workspace.lite.subscription.monthlyUsage": "Monatliche Nutzung", + "workspace.lite.subscription.monthlyQuota": "Monatliches Kontingent", "workspace.lite.subscription.resetsIn": "Setzt zurück in", + "workspace.lite.subscription.showDetails": "Details anzeigen", + "workspace.lite.subscription.hideDetails": "Details ausblenden", + "workspace.lite.subscription.model": "Modell", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "Gesamt", "workspace.lite.subscription.useBalance": "Nutze dein verfügbares Guthaben, nachdem die Nutzungslimits erreicht sind", "workspace.lite.subscription.selectProvider": 'Wähle "OpenCode Go" als Anbieter in deiner opencode-Konfiguration, um Go-Modelle zu verwenden.', diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index b31f79a63..45f2eed8f 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -669,10 +669,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "a few seconds", "workspace.lite.subscription.message": "You are subscribed to OpenCode Go.", "workspace.lite.subscription.manage": "Manage Subscription", - "workspace.lite.subscription.rollingUsage": "Rolling Usage", + "workspace.lite.subscription.rollingUsage": "5-hour Usage", + "workspace.lite.subscription.rollingQuota": "5-hour Quota", "workspace.lite.subscription.weeklyUsage": "Weekly Usage", + "workspace.lite.subscription.weeklyQuota": "Weekly Quota", "workspace.lite.subscription.monthlyUsage": "Monthly Usage", + "workspace.lite.subscription.monthlyQuota": "Monthly Quota", "workspace.lite.subscription.resetsIn": "Resets in", + "workspace.lite.subscription.showDetails": "Show details", + "workspace.lite.subscription.hideDetails": "Hide details", + "workspace.lite.subscription.model": "Model", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "Total", "workspace.lite.subscription.useBalance": "Use your available balance after reaching the usage limits", "workspace.lite.subscription.selectProvider": 'Select "OpenCode Go" as the provider in your opencode configuration to use Go models.', diff --git a/packages/console/app/src/i18n/es.ts b/packages/console/app/src/i18n/es.ts index b76e0a5c6..e5f2bde97 100644 --- a/packages/console/app/src/i18n/es.ts +++ b/packages/console/app/src/i18n/es.ts @@ -674,10 +674,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "unos pocos segundos", "workspace.lite.subscription.message": "Estás suscrito a OpenCode Go.", "workspace.lite.subscription.manage": "Gestionar Suscripción", - "workspace.lite.subscription.rollingUsage": "Uso Continuo", + "workspace.lite.subscription.rollingUsage": "Uso de 5 horas", + "workspace.lite.subscription.rollingQuota": "Cuota de 5 horas", "workspace.lite.subscription.weeklyUsage": "Uso Semanal", + "workspace.lite.subscription.weeklyQuota": "Cuota Semanal", "workspace.lite.subscription.monthlyUsage": "Uso Mensual", + "workspace.lite.subscription.monthlyQuota": "Cuota Mensual", "workspace.lite.subscription.resetsIn": "Se reinicia en", + "workspace.lite.subscription.showDetails": "Mostrar detalles", + "workspace.lite.subscription.hideDetails": "Ocultar detalles", + "workspace.lite.subscription.model": "Modelo", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "Total", "workspace.lite.subscription.useBalance": "Usa tu saldo disponible después de alcanzar los límites de uso", "workspace.lite.subscription.selectProvider": 'Selecciona "OpenCode Go" como proveedor en tu configuración de opencode para usar los modelos Go.', diff --git a/packages/console/app/src/i18n/fr.ts b/packages/console/app/src/i18n/fr.ts index 171c481d7..410c4e2da 100644 --- a/packages/console/app/src/i18n/fr.ts +++ b/packages/console/app/src/i18n/fr.ts @@ -679,10 +679,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "quelques secondes", "workspace.lite.subscription.message": "Vous êtes abonné à OpenCode Go.", "workspace.lite.subscription.manage": "Gérer l'abonnement", - "workspace.lite.subscription.rollingUsage": "Utilisation glissante", + "workspace.lite.subscription.rollingUsage": "Utilisation sur 5 heures", + "workspace.lite.subscription.rollingQuota": "Quota sur 5 heures", "workspace.lite.subscription.weeklyUsage": "Utilisation hebdomadaire", + "workspace.lite.subscription.weeklyQuota": "Quota hebdomadaire", "workspace.lite.subscription.monthlyUsage": "Utilisation mensuelle", + "workspace.lite.subscription.monthlyQuota": "Quota mensuel", "workspace.lite.subscription.resetsIn": "Réinitialisation dans", + "workspace.lite.subscription.showDetails": "Afficher les détails", + "workspace.lite.subscription.hideDetails": "Masquer les détails", + "workspace.lite.subscription.model": "Modèle", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "Total", "workspace.lite.subscription.useBalance": "Utilisez votre solde disponible après avoir atteint les limites d'utilisation", "workspace.lite.subscription.selectProvider": diff --git a/packages/console/app/src/i18n/it.ts b/packages/console/app/src/i18n/it.ts index 7906a70dc..a272d621f 100644 --- a/packages/console/app/src/i18n/it.ts +++ b/packages/console/app/src/i18n/it.ts @@ -672,10 +672,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "pochi secondi", "workspace.lite.subscription.message": "Sei abbonato a OpenCode Go.", "workspace.lite.subscription.manage": "Gestisci Abbonamento", - "workspace.lite.subscription.rollingUsage": "Utilizzo Continuativo", + "workspace.lite.subscription.rollingUsage": "Utilizzo su 5 ore", + "workspace.lite.subscription.rollingQuota": "Quota su 5 ore", "workspace.lite.subscription.weeklyUsage": "Utilizzo Settimanale", + "workspace.lite.subscription.weeklyQuota": "Quota Settimanale", "workspace.lite.subscription.monthlyUsage": "Utilizzo Mensile", + "workspace.lite.subscription.monthlyQuota": "Quota Mensile", "workspace.lite.subscription.resetsIn": "Si resetta tra", + "workspace.lite.subscription.showDetails": "Mostra dettagli", + "workspace.lite.subscription.hideDetails": "Nascondi dettagli", + "workspace.lite.subscription.model": "Modello", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "Totale", "workspace.lite.subscription.useBalance": "Usa il tuo saldo disponibile dopo aver raggiunto i limiti di utilizzo", "workspace.lite.subscription.selectProvider": 'Seleziona "OpenCode Go" come provider nella tua configurazione opencode per utilizzare i modelli Go.', diff --git a/packages/console/app/src/i18n/ja.ts b/packages/console/app/src/i18n/ja.ts index ffc97c616..c2a46a06b 100644 --- a/packages/console/app/src/i18n/ja.ts +++ b/packages/console/app/src/i18n/ja.ts @@ -670,10 +670,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "数秒", "workspace.lite.subscription.message": "あなたは OpenCode Go を購読しています。", "workspace.lite.subscription.manage": "サブスクリプションの管理", - "workspace.lite.subscription.rollingUsage": "ローリング利用量", + "workspace.lite.subscription.rollingUsage": "5時間利用量", + "workspace.lite.subscription.rollingQuota": "5時間上限", "workspace.lite.subscription.weeklyUsage": "週間利用量", + "workspace.lite.subscription.weeklyQuota": "週間上限", "workspace.lite.subscription.monthlyUsage": "月間利用量", + "workspace.lite.subscription.monthlyQuota": "月間上限", "workspace.lite.subscription.resetsIn": "リセットまで", + "workspace.lite.subscription.showDetails": "詳細を表示", + "workspace.lite.subscription.hideDetails": "詳細を非表示", + "workspace.lite.subscription.model": "モデル", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "合計", "workspace.lite.subscription.useBalance": "利用限度額に達したら利用可能な残高を使用する", "workspace.lite.subscription.selectProvider": "Go モデルを使用するには、opencode の設定で「OpenCode Go」をプロバイダーとして選択してください。", diff --git a/packages/console/app/src/i18n/ko.ts b/packages/console/app/src/i18n/ko.ts index 63468b24a..156a82c6c 100644 --- a/packages/console/app/src/i18n/ko.ts +++ b/packages/console/app/src/i18n/ko.ts @@ -661,10 +661,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "몇 초", "workspace.lite.subscription.message": "현재 OpenCode Go를 구독 중입니다.", "workspace.lite.subscription.manage": "구독 관리", - "workspace.lite.subscription.rollingUsage": "롤링 사용량", + "workspace.lite.subscription.rollingUsage": "5시간 사용량", + "workspace.lite.subscription.rollingQuota": "5시간 할당량", "workspace.lite.subscription.weeklyUsage": "주간 사용량", + "workspace.lite.subscription.weeklyQuota": "주간 할당량", "workspace.lite.subscription.monthlyUsage": "월간 사용량", + "workspace.lite.subscription.monthlyQuota": "월간 할당량", "workspace.lite.subscription.resetsIn": "초기화까지 남은 시간:", + "workspace.lite.subscription.showDetails": "상세 정보 보기", + "workspace.lite.subscription.hideDetails": "상세 정보 숨기기", + "workspace.lite.subscription.model": "모델", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "합계", "workspace.lite.subscription.useBalance": "사용 한도 도달 후에는 보유 잔액 사용", "workspace.lite.subscription.selectProvider": 'Go 모델을 사용하려면 opencode 설정에서 "OpenCode Go"를 공급자로 선택하세요.', diff --git a/packages/console/app/src/i18n/no.ts b/packages/console/app/src/i18n/no.ts index 48573864a..93d1a92b1 100644 --- a/packages/console/app/src/i18n/no.ts +++ b/packages/console/app/src/i18n/no.ts @@ -670,10 +670,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "noen få sekunder", "workspace.lite.subscription.message": "Du abonnerer på OpenCode Go.", "workspace.lite.subscription.manage": "Administrer abonnement", - "workspace.lite.subscription.rollingUsage": "Løpende bruk", + "workspace.lite.subscription.rollingUsage": "5-timers bruk", + "workspace.lite.subscription.rollingQuota": "5-timers kvote", "workspace.lite.subscription.weeklyUsage": "Ukentlig bruk", + "workspace.lite.subscription.weeklyQuota": "Ukentlig kvote", "workspace.lite.subscription.monthlyUsage": "Månedlig bruk", + "workspace.lite.subscription.monthlyQuota": "Månedlig kvote", "workspace.lite.subscription.resetsIn": "Nullstilles om", + "workspace.lite.subscription.showDetails": "Vis detaljer", + "workspace.lite.subscription.hideDetails": "Skjul detaljer", + "workspace.lite.subscription.model": "Modell", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "Totalt", "workspace.lite.subscription.useBalance": "Bruk din tilgjengelige saldo etter å ha nådd bruksgrensene", "workspace.lite.subscription.selectProvider": 'Velg "OpenCode Go" som leverandør i opencode-konfigurasjonen din for å bruke Go-modeller.', diff --git a/packages/console/app/src/i18n/pl.ts b/packages/console/app/src/i18n/pl.ts index 0e27dad30..cc4626ef5 100644 --- a/packages/console/app/src/i18n/pl.ts +++ b/packages/console/app/src/i18n/pl.ts @@ -671,10 +671,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "kilka sekund", "workspace.lite.subscription.message": "Subskrybujesz OpenCode Go.", "workspace.lite.subscription.manage": "Zarządzaj subskrypcją", - "workspace.lite.subscription.rollingUsage": "Użycie kroczące", + "workspace.lite.subscription.rollingUsage": "Użycie w ciągu 5 godzin", + "workspace.lite.subscription.rollingQuota": "Limit 5-godzinny", "workspace.lite.subscription.weeklyUsage": "Użycie tygodniowe", + "workspace.lite.subscription.weeklyQuota": "Limit tygodniowy", "workspace.lite.subscription.monthlyUsage": "Użycie miesięczne", + "workspace.lite.subscription.monthlyQuota": "Limit miesięczny", "workspace.lite.subscription.resetsIn": "Resetuje się za", + "workspace.lite.subscription.showDetails": "Pokaż szczegóły", + "workspace.lite.subscription.hideDetails": "Ukryj szczegóły", + "workspace.lite.subscription.model": "Model", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "Łącznie", "workspace.lite.subscription.useBalance": "Użyj dostępnego salda po osiągnięciu limitów użycia", "workspace.lite.subscription.selectProvider": 'Wybierz "OpenCode Go" jako dostawcę w konfiguracji opencode, aby używać modeli Go.', diff --git a/packages/console/app/src/i18n/ru.ts b/packages/console/app/src/i18n/ru.ts index e3ff8c3ff..b92730405 100644 --- a/packages/console/app/src/i18n/ru.ts +++ b/packages/console/app/src/i18n/ru.ts @@ -678,10 +678,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "несколько секунд", "workspace.lite.subscription.message": "Вы подписаны на OpenCode Go.", "workspace.lite.subscription.manage": "Управление подпиской", - "workspace.lite.subscription.rollingUsage": "Скользящее использование", + "workspace.lite.subscription.rollingUsage": "Использование за 5 часов", + "workspace.lite.subscription.rollingQuota": "Квота на 5 часов", "workspace.lite.subscription.weeklyUsage": "Недельное использование", + "workspace.lite.subscription.weeklyQuota": "Недельная квота", "workspace.lite.subscription.monthlyUsage": "Ежемесячное использование", + "workspace.lite.subscription.monthlyQuota": "Ежемесячная квота", "workspace.lite.subscription.resetsIn": "Сброс через", + "workspace.lite.subscription.showDetails": "Показать подробности", + "workspace.lite.subscription.hideDetails": "Скрыть подробности", + "workspace.lite.subscription.model": "Модель", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "Итого", "workspace.lite.subscription.useBalance": "Использовать доступный баланс после достижения лимитов", "workspace.lite.subscription.selectProvider": 'Выберите "OpenCode Go" в качестве провайдера в настройках opencode для использования моделей Go.', diff --git a/packages/console/app/src/i18n/th.ts b/packages/console/app/src/i18n/th.ts index f1767d540..10e715e60 100644 --- a/packages/console/app/src/i18n/th.ts +++ b/packages/console/app/src/i18n/th.ts @@ -667,10 +667,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "ไม่กี่วินาที", "workspace.lite.subscription.message": "คุณได้สมัครสมาชิก OpenCode Go แล้ว", "workspace.lite.subscription.manage": "จัดการการสมัครสมาชิก", - "workspace.lite.subscription.rollingUsage": "การใช้งานแบบหมุนเวียน", + "workspace.lite.subscription.rollingUsage": "การใช้งานใน 5 ชั่วโมง", + "workspace.lite.subscription.rollingQuota": "โควตา 5 ชั่วโมง", "workspace.lite.subscription.weeklyUsage": "การใช้งานรายสัปดาห์", + "workspace.lite.subscription.weeklyQuota": "โควตารายสัปดาห์", "workspace.lite.subscription.monthlyUsage": "การใช้งานรายเดือน", + "workspace.lite.subscription.monthlyQuota": "โควตารายเดือน", "workspace.lite.subscription.resetsIn": "รีเซ็ตใน", + "workspace.lite.subscription.showDetails": "แสดงรายละเอียด", + "workspace.lite.subscription.hideDetails": "ซ่อนรายละเอียด", + "workspace.lite.subscription.model": "โมเดล", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "รวม", "workspace.lite.subscription.useBalance": "ใช้ยอดคงเหลือของคุณหลังจากถึงขีดจำกัดการใช้งาน", "workspace.lite.subscription.selectProvider": 'เลือก "OpenCode Go" เป็นผู้ให้บริการในการตั้งค่า opencode ของคุณเพื่อใช้โมเดล Go', diff --git a/packages/console/app/src/i18n/tr.ts b/packages/console/app/src/i18n/tr.ts index cd1aaebb9..2a058e5d8 100644 --- a/packages/console/app/src/i18n/tr.ts +++ b/packages/console/app/src/i18n/tr.ts @@ -673,10 +673,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "birkaç saniye", "workspace.lite.subscription.message": "OpenCode Go abonesisiniz.", "workspace.lite.subscription.manage": "Aboneliği Yönet", - "workspace.lite.subscription.rollingUsage": "Devam Eden Kullanım", + "workspace.lite.subscription.rollingUsage": "5 Saatlik Kullanım", + "workspace.lite.subscription.rollingQuota": "5 Saatlik Kota", "workspace.lite.subscription.weeklyUsage": "Haftalık Kullanım", + "workspace.lite.subscription.weeklyQuota": "Haftalık Kota", "workspace.lite.subscription.monthlyUsage": "Aylık Kullanım", + "workspace.lite.subscription.monthlyQuota": "Aylık Kota", "workspace.lite.subscription.resetsIn": "Sıfırlama süresi", + "workspace.lite.subscription.showDetails": "Ayrıntıları göster", + "workspace.lite.subscription.hideDetails": "Ayrıntıları gizle", + "workspace.lite.subscription.model": "Model", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "Toplam", "workspace.lite.subscription.useBalance": "Kullanım limitlerine ulaştıktan sonra mevcut bakiyenizi kullanın", "workspace.lite.subscription.selectProvider": 'Go modellerini kullanmak için opencode yapılandırmanızda "OpenCode Go"\'yu sağlayıcı olarak seçin.', diff --git a/packages/console/app/src/i18n/uk.ts b/packages/console/app/src/i18n/uk.ts index c99510456..93aea4702 100644 --- a/packages/console/app/src/i18n/uk.ts +++ b/packages/console/app/src/i18n/uk.ts @@ -669,10 +669,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "кілька секунд", "workspace.lite.subscription.message": "Ви підписані на OpenCode Go.", "workspace.lite.subscription.manage": "Керувати підпискою", - "workspace.lite.subscription.rollingUsage": "Ковзне використання", + "workspace.lite.subscription.rollingUsage": "Використання за 5 годин", + "workspace.lite.subscription.rollingQuota": "Квота на 5 годин", "workspace.lite.subscription.weeklyUsage": "Тижневе використання", + "workspace.lite.subscription.weeklyQuota": "Тижнева квота", "workspace.lite.subscription.monthlyUsage": "Місячне використання", + "workspace.lite.subscription.monthlyQuota": "Місячна квота", "workspace.lite.subscription.resetsIn": "Скидається через", + "workspace.lite.subscription.showDetails": "Показати подробиці", + "workspace.lite.subscription.hideDetails": "Приховати подробиці", + "workspace.lite.subscription.model": "Модель", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "Усього", "workspace.lite.subscription.useBalance": "Використовуйте доступний баланс після досягнення лімітів", "workspace.lite.subscription.selectProvider": 'Виберіть "OpenCode Go" як провайдера в конфігурації opencode.', "workspace.lite.providers.title": "Провайдери", diff --git a/packages/console/app/src/i18n/zh.ts b/packages/console/app/src/i18n/zh.ts index 8fae9a9c0..03c278a71 100644 --- a/packages/console/app/src/i18n/zh.ts +++ b/packages/console/app/src/i18n/zh.ts @@ -642,10 +642,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "几秒钟", "workspace.lite.subscription.message": "您已订阅 OpenCode Go。", "workspace.lite.subscription.manage": "管理订阅", - "workspace.lite.subscription.rollingUsage": "滚动用量", + "workspace.lite.subscription.rollingUsage": "5 小时用量", + "workspace.lite.subscription.rollingQuota": "5 小时配额", "workspace.lite.subscription.weeklyUsage": "每周用量", + "workspace.lite.subscription.weeklyQuota": "每周配额", "workspace.lite.subscription.monthlyUsage": "每月用量", + "workspace.lite.subscription.monthlyQuota": "每月配额", "workspace.lite.subscription.resetsIn": "重置于", + "workspace.lite.subscription.showDetails": "显示详情", + "workspace.lite.subscription.hideDetails": "隐藏详情", + "workspace.lite.subscription.model": "模型", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "总计", "workspace.lite.subscription.useBalance": "达到使用限额后使用您的可用余额", "workspace.lite.subscription.selectProvider": "在你的 opencode 配置中选择「OpenCode Go」作为提供商,即可使用 Go 模型。", diff --git a/packages/console/app/src/i18n/zht.ts b/packages/console/app/src/i18n/zht.ts index d30affd99..3da3c4625 100644 --- a/packages/console/app/src/i18n/zht.ts +++ b/packages/console/app/src/i18n/zht.ts @@ -642,10 +642,18 @@ export const dict = { "workspace.lite.time.fewSeconds": "幾秒", "workspace.lite.subscription.message": "您已訂閱 OpenCode Go。", "workspace.lite.subscription.manage": "管理訂閱", - "workspace.lite.subscription.rollingUsage": "滾動使用量", + "workspace.lite.subscription.rollingUsage": "5 小時使用量", + "workspace.lite.subscription.rollingQuota": "5 小時配額", "workspace.lite.subscription.weeklyUsage": "每週使用量", + "workspace.lite.subscription.weeklyQuota": "每週配額", "workspace.lite.subscription.monthlyUsage": "每月使用量", + "workspace.lite.subscription.monthlyQuota": "每月配額", "workspace.lite.subscription.resetsIn": "重置時間:", + "workspace.lite.subscription.showDetails": "顯示詳情", + "workspace.lite.subscription.hideDetails": "隱藏詳情", + "workspace.lite.subscription.model": "模型", + "workspace.lite.subscription.contribution": "%", + "workspace.lite.subscription.total": "總計", "workspace.lite.subscription.useBalance": "達到使用限制後使用您的可用餘額", "workspace.lite.subscription.selectProvider": "在您的 opencode 設定中選擇「OpenCode Go」作為提供商,即可使用 Go 模型。", diff --git a/packages/console/app/src/lib/lite-usage.ts b/packages/console/app/src/lib/lite-usage.ts new file mode 100644 index 000000000..f253eb988 --- /dev/null +++ b/packages/console/app/src/lib/lite-usage.ts @@ -0,0 +1,64 @@ +export type LiteUsageBreakdownSource = { + model: string + name: string + cost: number + quotaCost: number + multiplier?: number + estimated: boolean +} + +export type LiteUsageBreakdownItem = { + model: string + name: string + cost?: number + multiplier?: number + quotaCost: number + contributionPercent: number + estimated: boolean +} + +export function buildLiteUsageBreakdown(input: { + usage: number + limit: number + sources: LiteUsageBreakdownSource[] +}) { + const rows: LiteUsageBreakdownItem[] = input.sources + .filter((item) => item.cost !== 0 || item.quotaCost !== 0) + .sort((a, b) => b.quotaCost - a.quotaCost) + .map((item) => ({ + ...item, + contributionPercent: 0, + })) + + const usagePercent = getUsagePercent(input.usage, input.limit) + const target = Math.max(0, Math.round(usagePercent * 10)) + const totalQuota = rows.reduce((total, item) => total + Math.max(0, item.quotaCost), 0) + const units = rows.map((item) => { + const exact = totalQuota === 0 ? 0 : (Math.max(0, item.quotaCost) / totalQuota) * target + const value = Math.floor(exact) + return { item, exact, value } + }) + const remaining = target - units.reduce((total, item) => total + item.value, 0) + const ranked = units.toSorted((a, b) => b.exact - b.value - (a.exact - a.value)) + Array.from({ length: ranked.length === 0 ? 0 : remaining }).forEach((_, index) => { + ranked[index % ranked.length].value += 1 + }) + units.forEach((unit) => (unit.item.contributionPercent = unit.value / 10)) + + return { + usage: input.usage, + limit: input.limit, + usagePercent, + rows, + } +} + +export function getModelQuotaLimit(limit: number, multiplier?: number) { + if (multiplier === undefined || multiplier <= 0) return + return limit / multiplier +} + +export function getUsagePercent(amount: number, limit: number) { + if (limit === 0) return 0 + return Math.round((amount / limit) * 1000) / 10 +} diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.module.css b/packages/console/app/src/routes/workspace/[id]/go/lite-section.module.css index f19e0e46c..77556d946 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.module.css +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.module.css @@ -19,6 +19,7 @@ [data-slot="usage-item"] { flex: 1; + min-width: 0; display: flex; flex-direction: column; gap: var(--space-2); @@ -60,6 +61,119 @@ color: var(--color-text-muted); } + [data-slot="usage-details"] { + margin-top: var(--space-1); + } + + [data-slot="usage-details-trigger"] { + display: inline-flex; + align-items: center; + gap: var(--space-2); + width: fit-content; + padding: 0; + border: 0; + background-color: transparent; + color: var(--color-text-secondary); + font-size: var(--font-size-sm); + cursor: pointer; + + &:hover:not(:disabled) { + background-color: transparent; + border-color: transparent; + } + + svg { + transition: transform 0.2s ease; + } + + &[aria-expanded="true"] svg { + transform: rotate(180deg); + } + + [data-slot="hide-details"] { + display: none; + } + + &[aria-expanded="true"] [data-slot="show-details"] { + display: none; + } + + &[aria-expanded="true"] [data-slot="hide-details"] { + display: inline; + } + } + + [data-slot="usage-details-content"] { + width: 100%; + margin-top: var(--space-3); + } + + [data-slot="usage-details-loading"] { + width: 100%; + margin-top: var(--space-3); + color: var(--color-text-muted); + font-size: var(--font-size-sm); + } + + [data-slot="usage-details-empty"] { + margin: 0; + color: var(--color-text-muted); + font-size: var(--font-size-sm); + } + + [data-slot="usage-details-table"] { + overflow-x: auto; + border: 1px solid var(--color-border-muted); + border-radius: var(--border-radius-sm); + + table { + width: 100%; + min-width: 28rem; + table-layout: fixed; + border-collapse: collapse; + font-size: var(--font-size-sm); + white-space: nowrap; + } + + th, + td { + width: 25%; + padding: var(--space-2) var(--space-3); + border-bottom: 1px solid var(--color-border-muted); + text-align: end; + font-variant-numeric: tabular-nums; + } + + th { + color: var(--color-text-muted); + font-size: var(--font-size-xs); + font-weight: 500; + text-transform: uppercase; + } + + th:first-child, + td:first-child { + text-align: start; + } + + td:first-child { + max-width: 13rem; + overflow: hidden; + color: var(--color-text); + text-overflow: ellipsis; + } + + tbody tr:last-child td { + border-bottom: 0; + } + + [data-slot="usage-total"] td { + border-top: 1px solid var(--color-border); + color: var(--color-text); + font-weight: 600; + } + } + [data-slot="setting-row"] { display: flex; align-items: center; diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index 11dfc6ed2..ae36df19a 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -1,15 +1,19 @@ import { action, useParams, useAction, useSubmission, json, query, createAsync } from "@solidjs/router" import { createStore } from "solid-js/store" -import { createMemo, For, Show } from "solid-js" +import { createMemo, createSignal, For, Show } from "solid-js" import { Modal } from "~/component/modal" import { Billing } from "@opencode-ai/console-core/billing.js" -import { Database, eq, and, isNull } from "@opencode-ai/console-core/drizzle/index.js" -import { BillingTable, LiteTable } from "@opencode-ai/console-core/schema/billing.sql.js" +import { Database, eq, and, gte, isNull, sql } from "@opencode-ai/console-core/drizzle/index.js" +import { BillingTable, LiteTable, UsageTable } from "@opencode-ai/console-core/schema/billing.sql.js" +import { KeyTable } from "@opencode-ai/console-core/schema/key.sql.js" import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js" import { Actor } from "@opencode-ai/console-core/actor.js" import { Workspace } from "@opencode-ai/console-core/workspace.js" import { Subscription } from "@opencode-ai/console-core/subscription.js" import { LiteData } from "@opencode-ai/console-core/lite.js" +import { ZenData } from "@opencode-ai/console-core/model.js" +import { getMonthlyBounds, getWeekBounds } from "@opencode-ai/console-core/util/date.js" +import { centsToMicroCents } from "@opencode-ai/console-core/util/price.js" import { withActor } from "~/context/auth.withActor" import { queryBillingInfo } from "../../common" import styles from "./lite-section.module.css" @@ -21,7 +25,10 @@ import { createReferralFromCookie } from "~/lib/referral-invite" import { getRequestEvent } from "solid-js/web" import { countryFromRequest } from "~/lib/request-country" -import { IconAlipay, IconUpi } from "~/component/icon" +import { IconAlipay, IconChevron, IconUpi } from "~/component/icon" +import { buildLiteUsageBreakdown, getModelQuotaLimit, getUsagePercent } from "~/lib/lite-usage" + +type LiteUsageWindow = "rolling" | "weekly" | "monthly" export const queryLiteSubscription = query(async (workspaceID: string) => { "use server" @@ -51,6 +58,33 @@ export const queryLiteSubscription = query(async (workspaceID: string) => { const limits = LiteData.getLimits() const mine = row.userID === Actor.userID() + const now = new Date() + const rollingCutoff = new Date(now.getTime() - limits.rollingWindow * 3600 * 1000) + const week = getWeekBounds(now) + const month = getMonthlyBounds(now, row.timeCreated) + const rollingActive = !!row.timeRollingUpdated && row.timeRollingUpdated >= rollingCutoff + const weeklyActive = !!row.timeWeeklyUpdated && row.timeWeeklyUpdated >= week.start + const monthlyActive = !!row.timeMonthlyUpdated && row.timeMonthlyUpdated >= month.start + const rollingLimit = centsToMicroCents(limits.rollingLimit * 100) + const weeklyLimit = centsToMicroCents(limits.weeklyLimit * 100) + const monthlyLimit = centsToMicroCents(limits.monthlyLimit * 100) + const rollingUsage = Subscription.analyzeRollingUsage({ + limit: limits.rollingLimit, + window: limits.rollingWindow, + usage: row.rollingUsage ?? 0, + timeUpdated: row.timeRollingUpdated ?? now, + }) + const weeklyUsage = Subscription.analyzeWeeklyUsage({ + limit: limits.weeklyLimit, + usage: row.weeklyUsage ?? 0, + timeUpdated: row.timeWeeklyUpdated ?? now, + }) + const monthlyUsage = Subscription.analyzeMonthlyUsage({ + limit: limits.monthlyLimit, + usage: row.monthlyUsage ?? 0, + timeUpdated: row.timeMonthlyUpdated ?? now, + timeSubscribed: row.timeCreated, + }) return { mine, @@ -58,27 +92,124 @@ export const queryLiteSubscription = query(async (workspaceID: string) => { allowTraining: row.allowTraining ?? false, region: row.region ?? (await Workspace.setDefaultRegion({ country: countryFromRequest(getRequestEvent()?.request) })), - rollingUsage: Subscription.analyzeRollingUsage({ - limit: limits.rollingLimit, - window: limits.rollingWindow, - usage: row.rollingUsage ?? 0, - timeUpdated: row.timeRollingUpdated ?? new Date(), - }), - weeklyUsage: Subscription.analyzeWeeklyUsage({ - limit: limits.weeklyLimit, - usage: row.weeklyUsage ?? 0, - timeUpdated: row.timeWeeklyUpdated ?? new Date(), - }), - monthlyUsage: Subscription.analyzeMonthlyUsage({ - limit: limits.monthlyLimit, - usage: row.monthlyUsage ?? 0, - timeUpdated: row.timeMonthlyUpdated ?? new Date(), - timeSubscribed: row.timeCreated, - }), + rollingUsage: { + ...rollingUsage, + usage: rollingActive ? (row.rollingUsage ?? 0) : 0, + limit: rollingLimit, + usagePercent: getUsagePercent(rollingActive ? (row.rollingUsage ?? 0) : 0, rollingLimit), + }, + weeklyUsage: { + ...weeklyUsage, + usage: weeklyActive ? (row.weeklyUsage ?? 0) : 0, + limit: weeklyLimit, + usagePercent: getUsagePercent(weeklyActive ? (row.weeklyUsage ?? 0) : 0, weeklyLimit), + }, + monthlyUsage: { + ...monthlyUsage, + usage: monthlyActive ? (row.monthlyUsage ?? 0) : 0, + limit: monthlyLimit, + usagePercent: getUsagePercent(monthlyActive ? (row.monthlyUsage ?? 0) : 0, monthlyLimit), + }, } }, workspaceID) }, "lite.subscription.get") +export const queryLiteUsageDetails = query(async (workspaceID: string, window: LiteUsageWindow) => { + "use server" + return withActor(async () => { + if (window !== "rolling" && window !== "weekly" && window !== "monthly") return null + const row = await Database.use((tx) => + tx + .select({ + userID: LiteTable.userID, + rollingUsage: LiteTable.rollingUsage, + weeklyUsage: LiteTable.weeklyUsage, + monthlyUsage: LiteTable.monthlyUsage, + timeRollingUpdated: LiteTable.timeRollingUpdated, + timeWeeklyUpdated: LiteTable.timeWeeklyUpdated, + timeMonthlyUpdated: LiteTable.timeMonthlyUpdated, + timeCreated: LiteTable.timeCreated, + }) + .from(LiteTable) + .where(and(eq(LiteTable.workspaceID, Actor.workspace()), isNull(LiteTable.timeDeleted))) + .then((result) => result[0]), + ) + if (!row || row.userID !== Actor.userID()) return null + + const limits = LiteData.getLimits() + const now = new Date() + const detail = (() => { + if (window === "rolling") { + const active = !!row.timeRollingUpdated && row.timeRollingUpdated >= new Date(now.getTime() - limits.rollingWindow * 3600 * 1000) + return { + start: active ? row.timeRollingUpdated! : now, + usage: active ? (row.rollingUsage ?? 0) : 0, + limit: centsToMicroCents(limits.rollingLimit * 100), + } + } + if (window === "weekly") { + const start = getWeekBounds(now).start + return { + start, + usage: row.timeWeeklyUpdated && row.timeWeeklyUpdated >= start ? (row.weeklyUsage ?? 0) : 0, + limit: centsToMicroCents(limits.weeklyLimit * 100), + } + } + const start = getMonthlyBounds(now, row.timeCreated).start + return { + start, + usage: row.timeMonthlyUpdated && row.timeMonthlyUpdated >= start ? (row.monthlyUsage ?? 0) : 0, + limit: centsToMicroCents(limits.monthlyLimit * 100), + } + })() + const modelData = Object.fromEntries( + Object.entries(ZenData.list("lite").models).map(([id, value]) => { + const models = Array.isArray(value) ? value : [value] + const multipliers = new Set(models.map((model) => model.costMultiplier)) + return [id, { name: models[0].name, multiplier: multipliers.size === 1 ? models[0].costMultiplier : undefined }] + }), + ) + const usageRows = await Database.use((tx) => + tx + .select({ + model: UsageTable.model, + multiplier: sql`JSON_UNQUOTE(JSON_EXTRACT(${UsageTable.enrichment}, '$.costMultiplier'))`, + cost: sql`SUM(${UsageTable.cost})`, + quotaCost: sql`SUM(CASE WHEN JSON_EXTRACT(${UsageTable.enrichment}, '$.costMultiplier') IS NOT NULL THEN ROUND(${UsageTable.cost} * CAST(JSON_UNQUOTE(JSON_EXTRACT(${UsageTable.enrichment}, '$.costMultiplier')) AS DECIMAL(20, 8))) ELSE 0 END)`, + }) + .from(UsageTable) + .innerJoin(KeyTable, and(eq(KeyTable.id, UsageTable.keyID), eq(KeyTable.workspaceID, UsageTable.workspaceID))) + .where( + and( + eq(UsageTable.workspaceID, Actor.workspace()), + eq(KeyTable.userID, row.userID), + gte(UsageTable.timeCreated, detail.start), + sql`JSON_UNQUOTE(JSON_EXTRACT(${UsageTable.enrichment}, '$.plan')) = 'lite'`, + ), + ) + .groupBy(UsageTable.model, sql`JSON_UNQUOTE(JSON_EXTRACT(${UsageTable.enrichment}, '$.costMultiplier'))`), + ) + + return buildLiteUsageBreakdown({ + usage: detail.usage, + limit: detail.limit, + sources: usageRows.map((usage) => { + const cost = Number(usage.cost) + const info = modelData[usage.model] + const multiplier = usage.multiplier === null ? info?.multiplier : Number(usage.multiplier) + return { + model: usage.model, + name: info?.name ?? usage.model, + cost, + quotaCost: usage.multiplier === null ? Math.round(cost * (multiplier ?? 1)) : Number(usage.quotaCost), + multiplier, + estimated: usage.multiplier === null, + } + }), + }) + }, workspaceID) +}, "lite.subscription.usage") + type LiteSubscription = Awaited> const createLiteCheckoutUrl = action( @@ -174,7 +305,16 @@ const setGoAllowTraining = action(async (form: FormData) => { ) }, "go.allowTraining.set") -function LiteUsageItem(props: { label: string; usage: { usagePercent: number; resetInSec: number } }) { +type LiteUsage = NonNullable["rollingUsage"] +type LiteUsageDetailsData = NonNullable>> + +function LiteUsageItem(props: { + id: LiteUsageWindow + label: string + usage: LiteUsage + open: boolean + onToggle: () => void +}) { const i18n = useI18n() return ( @@ -183,17 +323,178 @@ function LiteUsageItem(props: { label: string; usage: { usagePercent: number; re {props.label} {props.usage.usagePercent}%
    • -
      -
      +
      +
      {i18n.t("workspace.lite.subscription.resetsIn")}{" "} {formatResetTime(props.usage.resetInSec, i18n, liteResetTimeKeys)} + 0}> +
      + +
      +
      ) } +function LiteUsageDetails(props: { id: LiteUsageWindow; label: string; quotaLabel: string; usage: LiteUsageDetailsData }) { + const i18n = useI18n() + const language = useLanguage() + const money = (amount: number) => + new Intl.NumberFormat(language.tag(language.locale()), { + style: "currency", + currency: "USD", + minimumFractionDigits: 2, + maximumFractionDigits: 4, + }).format(amount / 100_000_000) + const totalPercentage = () => + Number(props.usage.rows.reduce((total, row) => total + row.contributionPercent, 0).toFixed(1)) + + return ( +
      +
      + + + + + + + + + + + + {(row) => { + const quota = getModelQuotaLimit(props.usage.limit, row.multiplier) + return ( + + + + + + + ) + }} + + + + + + +
      {i18n.t("workspace.lite.subscription.model")}{props.label}{props.quotaLabel}{i18n.t("workspace.lite.subscription.contribution")}
      + {row.name} + {row.cost === undefined ? "-" : money(row.cost)}{quota === undefined ? "-" : money(quota)}{row.contributionPercent}%
      {i18n.t("workspace.lite.subscription.total")}{totalPercentage()}%
      +
      +
      + ) +} + +function LiteUsageGroup(props: { lite: NonNullable }) { + const params = useParams() + const i18n = useI18n() + const [open, setOpen] = createSignal() + const [store, setStore] = createStore({ + details: {} as Partial>, + loading: undefined as LiteUsageWindow | undefined, + }) + const items = () => + [ + { + id: "rolling", + label: i18n.t("workspace.lite.subscription.rollingUsage"), + quotaLabel: i18n.t("workspace.lite.subscription.rollingQuota"), + usage: props.lite.rollingUsage, + }, + { + id: "weekly", + label: i18n.t("workspace.lite.subscription.weeklyUsage"), + quotaLabel: i18n.t("workspace.lite.subscription.weeklyQuota"), + usage: props.lite.weeklyUsage, + }, + { + id: "monthly", + label: i18n.t("workspace.lite.subscription.monthlyUsage"), + quotaLabel: i18n.t("workspace.lite.subscription.monthlyQuota"), + usage: props.lite.monthlyUsage, + }, + ] as const + const selected = createMemo(() => items().find((item) => item.id === open())) + + async function toggle(id: LiteUsageWindow) { + if (open() === id) { + setOpen() + return + } + setOpen(id) + if (store.details[id] !== undefined) return + setStore("loading", id) + const details = await queryLiteUsageDetails(params.id!, id).catch(() => null) + setStore("details", id, details) + setStore("loading", (current) => (current === id ? undefined : current)) + } + + return ( + <> +
      + + {(item) => ( + toggle(item.id)} + /> + )} + +
      + + {(item) => { + const details = () => store.details[item().id] + return ( + +
      {i18n.t("workspace.lite.loading")}
      +
      + } + > + {(usage) => ( + + )} +
      + ) + }} + + + ) +} + export function LiteSection(props: { lite: LiteSubscription | undefined }) { const params = useParams() const i18n = useI18n() @@ -261,11 +562,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) { .
      -
      - - - -
      +

      {i18n.t("workspace.lite.subscription.useBalance")}

      diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 5dbb8bcc3..ae129018b 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -1114,7 +1114,7 @@ export async function handler( enrichment: (() => { if (billingSource === "subscription") return { plan: "sub" } if (billingSource === "byok") return { plan: "byok" } - if (billingSource === "lite") return { plan: "lite" } + if (billingSource === "lite") return { plan: "lite", costMultiplier: modelInfo.costMultiplier } return undefined })(), }), diff --git a/packages/console/app/test/liteUsage.test.ts b/packages/console/app/test/liteUsage.test.ts new file mode 100644 index 000000000..00a0d962f --- /dev/null +++ b/packages/console/app/test/liteUsage.test.ts @@ -0,0 +1,75 @@ +import { describe, expect, test } from "bun:test" +import { buildLiteUsageBreakdown, getModelQuotaLimit } from "../src/lib/lite-usage" + +describe("Go usage breakdown", () => { + test("derives the model quota from the window limit and multiplier", () => { + expect(getModelQuotaLimit(30, 1)).toBe(30) + expect(getModelQuotaLimit(30, 2)).toBe(15) + expect(getModelQuotaLimit(30, 4)).toBe(7.5) + }) + + test("groups model quota usage into the percentage of the limit", () => { + const result = buildLiteUsageBreakdown({ + usage: 416, + limit: 1_200, + sources: [ + { model: "glm", name: "GLM", cost: 200, quotaCost: 300, multiplier: 1.5, estimated: false }, + { model: "kimi", name: "Kimi", cost: 116, quotaCost: 116, multiplier: 1, estimated: false }, + ], + }) + + expect(result.usagePercent).toBe(34.7) + expect(result.rows[0]).toMatchObject({ name: "GLM", multiplier: 1.5, contributionPercent: 25 }) + expect(result.rows.reduce((total, row) => total + row.contributionPercent, 0)).toBeCloseTo(result.usagePercent) + }) + + test("distributes credits across the model contributions", () => { + const result = buildLiteUsageBreakdown({ + usage: 366, + limit: 1_200, + sources: [ + { model: "glm", name: "GLM", cost: 200, quotaCost: 300, multiplier: 1.5, estimated: false }, + { model: "kimi", name: "Kimi", cost: 116, quotaCost: 116, multiplier: 1, estimated: true }, + ], + }) + + expect(result.rows).toHaveLength(2) + expect(result.rows.every((row) => row.contributionPercent >= 0)).toBe(true) + expect(result.rows.reduce((total, row) => total + row.contributionPercent, 0)).toBeCloseTo(result.usagePercent) + }) + + test("does not synthesize a row when request history is unavailable", () => { + const result = buildLiteUsageBreakdown({ usage: 120, limit: 1_200, sources: [] }) + + expect(result.rows).toEqual([]) + }) + + test("allocates rounded percentages without making positive rows negative", () => { + const sources = Array.from({ length: 20 }, (_, index) => ({ + model: `model-${index}`, + name: `Model ${index}`, + cost: 4, + quotaCost: 4, + multiplier: 1, + estimated: false, + })) + const result = buildLiteUsageBreakdown({ usage: 80, limit: 10_000, sources }) + + expect(result.rows.every((row) => row.contributionPercent >= 0)).toBe(true) + expect(result.rows.reduce((total, row) => total + row.contributionPercent, 0)).toBeCloseTo(result.usagePercent) + }) + + test("keeps multiplier changes for the same model as separate rows", () => { + const result = buildLiteUsageBreakdown({ + usage: 500, + limit: 1_000, + sources: [ + { model: "glm", name: "GLM", cost: 100, quotaCost: 100, multiplier: 1, estimated: false }, + { model: "glm", name: "GLM", cost: 200, quotaCost: 400, multiplier: 2, estimated: false }, + ], + }) + + expect(result.rows.map((row) => row.multiplier)).toEqual([2, 1]) + expect(result.rows.map((row) => row.contributionPercent)).toEqual([40, 10]) + }) +}) diff --git a/packages/console/core/src/schema/billing.sql.ts b/packages/console/core/src/schema/billing.sql.ts index b177858f3..c788b6a53 100644 --- a/packages/console/core/src/schema/billing.sql.ts +++ b/packages/console/core/src/schema/billing.sql.ts @@ -129,6 +129,7 @@ export const UsageTable = mysqlTable( sessionID: varchar("session_id", { length: 30 }), enrichment: json("enrichment").$type<{ plan: "sub" | "byok" | "lite" + costMultiplier?: number }>(), }, (table) => [...workspaceIndexes(table), index("usage_time_created").on(table.workspaceID, table.timeCreated)], From 322e2b9dd5c339b09909cd0c8a67d9709fb821de Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Tue, 25 Aug 2026 09:07:56 +0000 Subject: [PATCH 154/271] chore: generate --- packages/console/app/src/lib/lite-usage.ts | 6 +----- .../routes/workspace/[id]/go/lite-section.tsx | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/packages/console/app/src/lib/lite-usage.ts b/packages/console/app/src/lib/lite-usage.ts index f253eb988..e82483aa3 100644 --- a/packages/console/app/src/lib/lite-usage.ts +++ b/packages/console/app/src/lib/lite-usage.ts @@ -17,11 +17,7 @@ export type LiteUsageBreakdownItem = { estimated: boolean } -export function buildLiteUsageBreakdown(input: { - usage: number - limit: number - sources: LiteUsageBreakdownSource[] -}) { +export function buildLiteUsageBreakdown(input: { usage: number; limit: number; sources: LiteUsageBreakdownSource[] }) { const rows: LiteUsageBreakdownItem[] = input.sources .filter((item) => item.cost !== 0 || item.quotaCost !== 0) .sort((a, b) => b.quotaCost - a.quotaCost) diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index ae36df19a..6c7d739c0 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -140,7 +140,9 @@ export const queryLiteUsageDetails = query(async (workspaceID: string, window: L const now = new Date() const detail = (() => { if (window === "rolling") { - const active = !!row.timeRollingUpdated && row.timeRollingUpdated >= new Date(now.getTime() - limits.rollingWindow * 3600 * 1000) + const active = + !!row.timeRollingUpdated && + row.timeRollingUpdated >= new Date(now.getTime() - limits.rollingWindow * 3600 * 1000) return { start: active ? row.timeRollingUpdated! : now, usage: active ? (row.rollingUsage ?? 0) : 0, @@ -356,7 +358,12 @@ function LiteUsageItem(props: { ) } -function LiteUsageDetails(props: { id: LiteUsageWindow; label: string; quotaLabel: string; usage: LiteUsageDetailsData }) { +function LiteUsageDetails(props: { + id: LiteUsageWindow + label: string + quotaLabel: string + usage: LiteUsageDetailsData +}) { const i18n = useI18n() const language = useLanguage() const money = (amount: number) => @@ -480,12 +487,7 @@ function LiteUsageGroup(props: { lite: NonNullable }) { } > {(usage) => ( - + )} ) From 69aaa22793bcbe0b016ad9cfad22616906766df0 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 25 Aug 2026 05:26:31 -0400 Subject: [PATCH 155/271] zen: void invoice of cancelled subscription --- packages/console/app/src/routes/stripe/webhook.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/console/app/src/routes/stripe/webhook.ts b/packages/console/app/src/routes/stripe/webhook.ts index e1e4e6cbd..05f40e4fd 100644 --- a/packages/console/app/src/routes/stripe/webhook.ts +++ b/packages/console/app/src/routes/stripe/webhook.ts @@ -205,6 +205,13 @@ export async function POST(input: APIEvent) { } else if (productID === BlackData.productID()) { await Billing.unsubscribeBlack({ subscriptionID }) } + + const latestInvoice = body.data.object.latest_invoice + const invoiceID = typeof latestInvoice === "string" ? latestInvoice : latestInvoice?.id + if (invoiceID) { + const invoice = await Billing.stripe().invoices.retrieve(invoiceID) + if (invoice.status === "open") await Billing.stripe().invoices.voidInvoice(invoiceID) + } } if (body.type === "invoice.payment_succeeded") { if ( From a7444bf944c219b9eaba2f794847b3001237795f Mon Sep 17 00:00:00 2001 From: OpeOginni <107570612+OpeOginni@users.noreply.github.com> Date: Tue, 25 Aug 2026 13:05:49 +0200 Subject: [PATCH 156/271] fix(ui): restore focus in stacked dialogs (#44928) Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com> --- packages/ui/src/context/dialog.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ui/src/context/dialog.tsx b/packages/ui/src/context/dialog.tsx index 39ef8ea1c..c40203079 100644 --- a/packages/ui/src/context/dialog.tsx +++ b/packages/ui/src/context/dialog.tsx @@ -88,10 +88,10 @@ function init() { setClosing = setClosingSignal return ( { - if (open) return + if (open || stack().at(-1)?.id !== id) return close(id) }} > From 8615731d46153dd29b89e205fb55b2cc16205cb0 Mon Sep 17 00:00:00 2001 From: Dax Date: Tue, 25 Aug 2026 11:25:59 -0400 Subject: [PATCH 157/271] fix(console): rate limit checkout session creation (#45007) --- .../console/app/src/routes/black/index.tsx | 3 - .../app/src/routes/black/subscribe/[plan].tsx | 489 ------------------ .../routes/workspace/[id]/go/lite-section.tsx | 2 + .../app/src/routes/workspace/common.tsx | 4 +- .../console/app/src/routes/zen/util/redis.ts | 8 + 5 files changed, 13 insertions(+), 493 deletions(-) delete mode 100644 packages/console/app/src/routes/black/subscribe/[plan].tsx diff --git a/packages/console/app/src/routes/black/index.tsx b/packages/console/app/src/routes/black/index.tsx index 8bce3cd46..b8f01842d 100644 --- a/packages/console/app/src/routes/black/index.tsx +++ b/packages/console/app/src/routes/black/index.tsx @@ -103,9 +103,6 @@ export default function Black() { - - {i18n.t("black.action.continue")} -
      diff --git a/packages/console/app/src/routes/black/subscribe/[plan].tsx b/packages/console/app/src/routes/black/subscribe/[plan].tsx deleted file mode 100644 index c29c5fac8..000000000 --- a/packages/console/app/src/routes/black/subscribe/[plan].tsx +++ /dev/null @@ -1,489 +0,0 @@ -import { A, createAsync, query, redirect, useParams } from "@solidjs/router" -import { Title } from "@solidjs/meta" -import { createEffect, createSignal, For, Match, Show, Switch } from "solid-js" -import { type Stripe, type PaymentMethod, loadStripe } from "@stripe/stripe-js" -import { Elements, PaymentElement, useStripe, useElements, AddressElement } from "solid-stripe" -import { PlanID, plans } from "../common" -import { getActor, useAuthSession } from "~/context/auth" -import { withActor } from "~/context/auth.withActor" -import { Actor } from "@opencode-ai/console-core/actor.js" -import { and, Database, eq, isNull } from "@opencode-ai/console-core/drizzle/index.js" -import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js" -import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js" -import { createList } from "solid-list" -import { Modal } from "~/component/modal" -import { BillingTable } from "@opencode-ai/console-core/schema/billing.sql.js" -import { Billing } from "@opencode-ai/console-core/billing.js" -import { useI18n } from "~/context/i18n" -import { useLanguage } from "~/context/language" -import { formError } from "~/lib/form-error" -import { Resource } from "@opencode-ai/console-resource" - -const getEnabled = query(async () => { - "use server" - return Resource.App.stage !== "production" -}, "black.subscribe.enabled") - -const plansMap = Object.fromEntries(plans.map((p) => [p.id, p])) as Record -const stripePromise = loadStripe(import.meta.env.VITE_STRIPE_PUBLISHABLE_KEY!) - -const getWorkspaces = query(async (plan: string) => { - "use server" - const actor = await getActor() - if (actor.type === "public") throw redirect("/auth/authorize?continue=/black/subscribe/" + plan) - return withActor(async () => { - return Database.use((tx) => - tx - .select({ - id: WorkspaceTable.id, - name: WorkspaceTable.name, - slug: WorkspaceTable.slug, - billing: { - customerID: BillingTable.customerID, - paymentMethodID: BillingTable.paymentMethodID, - paymentMethodType: BillingTable.paymentMethodType, - paymentMethodLast4: BillingTable.paymentMethodLast4, - subscriptionID: BillingTable.subscriptionID, - timeSubscriptionBooked: BillingTable.timeSubscriptionBooked, - }, - }) - .from(UserTable) - .innerJoin(WorkspaceTable, eq(UserTable.workspaceID, WorkspaceTable.id)) - .innerJoin(BillingTable, eq(WorkspaceTable.id, BillingTable.workspaceID)) - .where( - and( - eq(UserTable.accountID, Actor.account()), - isNull(WorkspaceTable.timeDeleted), - isNull(UserTable.timeDeleted), - ), - ), - ) - }) -}, "black.subscribe.workspaces") - -const createSetupIntent = async (input: { plan: string; workspaceID: string }) => { - "use server" - const { plan, workspaceID } = input - - if (!plan || !["20", "100", "200"].includes(plan)) return { error: formError.invalidPlan } - if (!workspaceID) return { error: formError.workspaceRequired } - - return withActor(async () => { - const session = await useAuthSession() - const account = session.data.account?.[session.data.current ?? ""] - const email = account?.email - - const customer = await Database.use((tx) => - tx - .select({ - customerID: BillingTable.customerID, - subscriptionID: BillingTable.subscriptionID, - }) - .from(BillingTable) - .where(eq(BillingTable.workspaceID, workspaceID)) - .then((rows) => rows[0]), - ) - if (customer?.subscriptionID) { - return { error: formError.alreadySubscribed } - } - - let customerID = customer?.customerID - if (!customerID) { - const customer = await Billing.stripe().customers.create({ - email, - metadata: { - workspaceID, - }, - }) - customerID = customer.id - await Database.use((tx) => - tx - .update(BillingTable) - .set({ - customerID, - }) - .where(eq(BillingTable.workspaceID, workspaceID)), - ) - } - - const intent = await Billing.stripe().setupIntents.create({ - customer: customerID, - payment_method_types: ["card"], - metadata: { - workspaceID, - }, - }) - - return { clientSecret: intent.client_secret ?? undefined } - }, workspaceID) -} - -const bookSubscription = async (input: { - workspaceID: string - plan: PlanID - paymentMethodID: string - paymentMethodType: string - paymentMethodLast4?: string -}) => { - "use server" - return withActor( - () => - Database.use((tx) => - tx - .update(BillingTable) - .set({ - paymentMethodID: input.paymentMethodID, - paymentMethodType: input.paymentMethodType, - paymentMethodLast4: input.paymentMethodLast4, - subscriptionPlan: input.plan, - timeSubscriptionBooked: new Date(), - }) - .where(eq(BillingTable.workspaceID, input.workspaceID)), - ), - input.workspaceID, - ) -} - -interface SuccessData { - plan: string - paymentMethodType: string - paymentMethodLast4?: string -} - -function Failure(props: { message: string }) { - const i18n = useI18n() - - return ( -
      -

      - {i18n.t("black.subscribe.failurePrefix")} {props.message} -

      -
      - ) -} - -function Success(props: SuccessData) { - const i18n = useI18n() - - return ( -
      -

      {i18n.t("black.subscribe.success.title")}

      -
      -
      -
      {i18n.t("black.subscribe.success.subscriptionPlan")}
      -
      {i18n.t("black.subscribe.success.planName", { plan: props.plan })}
      -
      -
      -
      {i18n.t("black.subscribe.success.amount")}
      -
      {i18n.t("black.subscribe.success.amountValue", { plan: props.plan })}
      -
      -
      -
      {i18n.t("black.subscribe.success.paymentMethod")}
      -
      - {props.paymentMethodType}}> - - {props.paymentMethodType} - {props.paymentMethodLast4} - - -
      -
      -
      -
      {i18n.t("black.subscribe.success.dateJoined")}
      -
      {new Date().toLocaleDateString(undefined, { month: "short", day: "numeric", year: "numeric" })}
      -
      -
      -

      {i18n.t("black.subscribe.success.chargeNotice")}

      -
      - ) -} - -function IntentForm(props: { plan: PlanID; workspaceID: string; onSuccess: (data: SuccessData) => void }) { - const i18n = useI18n() - const stripe = useStripe() - const elements = useElements() - const [error, setError] = createSignal(undefined) - const [loading, setLoading] = createSignal(false) - - const handleSubmit = async (e: Event) => { - e.preventDefault() - if (!stripe() || !elements()) return - - setLoading(true) - setError(undefined) - - const result = await elements()!.submit() - if (result.error) { - setError(result.error.message ?? i18n.t("black.subscribe.error.generic")) - setLoading(false) - return - } - - const { error: confirmError, setupIntent } = await stripe()!.confirmSetup({ - elements: elements()!, - confirmParams: { - expand: ["payment_method"], - payment_method_data: { - allow_redisplay: "always", - }, - }, - redirect: "if_required", - }) - - if (confirmError) { - setError(confirmError.message ?? i18n.t("black.subscribe.error.generic")) - setLoading(false) - return - } - - if (setupIntent?.status === "succeeded") { - const pm = setupIntent.payment_method as PaymentMethod - - await bookSubscription({ - workspaceID: props.workspaceID, - plan: props.plan, - paymentMethodID: pm.id, - paymentMethodType: pm.type, - paymentMethodLast4: pm.card?.last4, - }) - - props.onSuccess({ - plan: props.plan, - paymentMethodType: pm.type, - paymentMethodLast4: pm.card?.last4, - }) - } - - setLoading(false) - } - - return ( - - - - -

      {error()}

      -
      - -

      {i18n.t("black.subscribe.form.chargeNotice")}

      - - ) -} - -export default function BlackSubscribe() { - const params = useParams() - const i18n = useI18n() - const language = useLanguage() - const enabled = createAsync(() => getEnabled()) - const planData = plansMap[(params.plan as PlanID) ?? "20"] ?? plansMap["20"] - const plan = planData.id - - const workspaces = createAsync(() => getWorkspaces(plan)) - const [selectedWorkspace, setSelectedWorkspace] = createSignal(undefined) - const [success, setSuccess] = createSignal(undefined) - const [failure, setFailure] = createSignal(undefined) - const [clientSecret, setClientSecret] = createSignal(undefined) - const [stripe, setStripe] = createSignal(undefined) - - const formatError = (error: string) => { - if (error === formError.invalidPlan) return i18n.t("black.subscribe.error.invalidPlan") - if (error === formError.workspaceRequired) return i18n.t("black.subscribe.error.workspaceRequired") - if (error === formError.alreadySubscribed) return i18n.t("black.subscribe.error.alreadySubscribed") - if (error === "Invalid plan") return i18n.t("black.subscribe.error.invalidPlan") - if (error === "Workspace ID is required") return i18n.t("black.subscribe.error.workspaceRequired") - if (error === "This workspace already has a subscription") return i18n.t("black.subscribe.error.alreadySubscribed") - return error - } - - // Resolve stripe promise once - createEffect(() => { - void stripePromise.then((s) => { - if (s) setStripe(s) - }) - }) - - // Auto-select if only one workspace - createEffect(() => { - const ws = workspaces() - if (ws?.length === 1 && !selectedWorkspace()) { - setSelectedWorkspace(ws[0].id) - } - }) - - // Fetch setup intent when workspace is selected (unless workspace already has payment method) - createEffect(async () => { - const id = selectedWorkspace() - if (!id) return - - const ws = workspaces()?.find((w) => w.id === id) - if (ws?.billing?.subscriptionID) { - setFailure(i18n.t("black.subscribe.error.alreadySubscribed")) - return - } - if (ws?.billing?.paymentMethodID) { - if (!ws?.billing?.timeSubscriptionBooked) { - await bookSubscription({ - workspaceID: id, - plan: planData.id, - paymentMethodID: ws.billing.paymentMethodID!, - paymentMethodType: ws.billing.paymentMethodType!, - paymentMethodLast4: ws.billing.paymentMethodLast4 ?? undefined, - }) - } - setSuccess({ - plan: planData.id, - paymentMethodType: ws.billing.paymentMethodType!, - paymentMethodLast4: ws.billing.paymentMethodLast4 ?? undefined, - }) - return - } - - const result = await createSetupIntent({ plan, workspaceID: id }) - if (result.error) { - setFailure(formatError(result.error)) - } else if ("clientSecret" in result) { - setClientSecret(result.clientSecret) - } - }) - - // Keyboard navigation for workspace picker - const { active, setActive, onKeyDown } = createList({ - items: () => workspaces()?.map((w) => w.id) ?? [], - initialActive: null, - }) - - const handleSelectWorkspace = (id: string) => { - setSelectedWorkspace(id) - } - - let listRef: HTMLUListElement | undefined - - // Show workspace picker if multiple workspaces and none selected - const showWorkspacePicker = () => { - const ws = workspaces() - return ws && ws.length > 1 && !selectedWorkspace() - } - - return ( - - {i18n.t("black.subscribe.title")} -
      -
      - - {(data) => } - {(data) => } - - <> -
      -

      {i18n.t("black.subscribe.title")}

      -

      - ${planData.id}{" "} - {i18n.t("black.price.perMonth")} - - {(multiplier) => {i18n.t(multiplier())}} - -

      -
      -
      -

      {i18n.t("black.subscribe.paymentMethod")}

      - - -

      - {selectedWorkspace() - ? i18n.t("black.subscribe.loadingPaymentForm") - : i18n.t("black.subscribe.selectWorkspaceToContinue")} -

      -
      - } - > - - - - - -
      -
      -
      - - {/* Workspace picker modal */} - {}} - title={i18n.t("black.workspace.selectPlan")} - variant="black" - > -
      -
        { - if (e.key === "Enter" && active()) { - handleSelectWorkspace(active()!) - } else { - onKeyDown(e) - } - }} - > - - {(workspace) => ( -
      • setActive(workspace.id)} - onClick={() => handleSelectWorkspace(workspace.id)} - > - [*] - {workspace.name || workspace.slug} -
      • - )} -
        -
      -
      -
      -

      - {i18n.t("black.finePrint.beforeTerms")} ·{" "} - {i18n.t("black.finePrint.terms")} -

      -
      -
      - ) -} diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index 6c7d739c0..b52028814 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -24,6 +24,7 @@ import { formatResetTime, liteResetTimeKeys } from "~/lib/format-reset-time" import { createReferralFromCookie } from "~/lib/referral-invite" import { getRequestEvent } from "solid-js/web" import { countryFromRequest } from "~/lib/request-country" +import { checkCheckoutRateLimit } from "~/routes/zen/util/redis" import { IconAlipay, IconChevron, IconUpi } from "~/component/icon" import { buildLiteUsageBreakdown, getModelQuotaLimit, getUsagePercent } from "~/lib/lite-usage" @@ -219,6 +220,7 @@ const createLiteCheckoutUrl = action( "use server" return json( await withActor(async () => { + await checkCheckoutRateLimit(Actor.account()) const data = await Billing.generateLiteCheckoutUrl({ successUrl, cancelUrl, method }) await createReferralFromCookie() return { error: undefined, data } diff --git a/packages/console/app/src/routes/workspace/common.tsx b/packages/console/app/src/routes/workspace/common.tsx index d41793dd9..fb315eefd 100644 --- a/packages/console/app/src/routes/workspace/common.tsx +++ b/packages/console/app/src/routes/workspace/common.tsx @@ -6,6 +6,7 @@ import { Billing } from "@opencode-ai/console-core/billing.js" import { and, Database, desc, eq, isNull } from "@opencode-ai/console-core/drizzle/index.js" import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js" import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js" +import { checkCheckoutRateLimit } from "~/routes/zen/util/redis" export function formatDateForTable(date: Date) { const options: Intl.DateTimeFormatOptions = { @@ -77,7 +78,8 @@ export const createCheckoutUrl = action( return json( await withActor( () => - Billing.generateCheckoutUrl({ amount, successUrl, cancelUrl }) + checkCheckoutRateLimit(Actor.account()) + .then(() => Billing.generateCheckoutUrl({ amount, successUrl, cancelUrl })) .then((data) => ({ error: undefined, data })) .catch((e) => ({ error: e.message as string, diff --git a/packages/console/app/src/routes/zen/util/redis.ts b/packages/console/app/src/routes/zen/util/redis.ts index 512523298..ef4934bd8 100644 --- a/packages/console/app/src/routes/zen/util/redis.ts +++ b/packages/console/app/src/routes/zen/util/redis.ts @@ -16,3 +16,11 @@ export function getRedis() { export function buildRateLimitKey(kind: string, identifier: string, interval?: string) { return `${Resource.App.stage}:ratelimit:${kind}:${identifier}${interval ? `:${interval}` : ""}` } + +export async function checkCheckoutRateLimit(accountID: string) { + const redis = getRedis() + const key = buildRateLimitKey("checkout", accountID) + const count = await redis.incr(key) + if (count === 1) await redis.expire(key, 60 * 60) + if (count > 5) throw new Error("Too many payment attempts. Please try again later.") +} From ac1c048e6420eb4c728fd3e343a1ba7b076cba92 Mon Sep 17 00:00:00 2001 From: Jack Date: Wed, 26 Aug 2026 01:27:48 +0800 Subject: [PATCH 158/271] docs(go): add Grok 4.6 (#45042) --- packages/console/app/src/routes/go/index.tsx | 6 +++--- .../src/routes/workspace/[id]/go/lite-section.tsx | 2 +- packages/web/src/content/docs/ar/go.mdx | 15 ++++++++------- packages/web/src/content/docs/bs/go.mdx | 15 ++++++++------- packages/web/src/content/docs/da/go.mdx | 15 ++++++++------- packages/web/src/content/docs/de/go.mdx | 15 ++++++++------- packages/web/src/content/docs/es/go.mdx | 15 ++++++++------- packages/web/src/content/docs/fr/go.mdx | 15 ++++++++------- packages/web/src/content/docs/go.mdx | 15 ++++++++------- packages/web/src/content/docs/it/go.mdx | 15 ++++++++------- packages/web/src/content/docs/ja/go.mdx | 15 ++++++++------- packages/web/src/content/docs/ko/go.mdx | 15 ++++++++------- packages/web/src/content/docs/nb/go.mdx | 15 ++++++++------- packages/web/src/content/docs/pl/go.mdx | 15 ++++++++------- packages/web/src/content/docs/pt-br/go.mdx | 15 ++++++++------- packages/web/src/content/docs/ru/go.mdx | 15 ++++++++------- packages/web/src/content/docs/th/go.mdx | 15 ++++++++------- packages/web/src/content/docs/tr/go.mdx | 15 ++++++++------- packages/web/src/content/docs/zh-cn/go.mdx | 15 ++++++++------- packages/web/src/content/docs/zh-tw/go.mdx | 15 ++++++++------- 20 files changed, 148 insertions(+), 130 deletions(-) diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index d0676027f..e101012b9 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -23,7 +23,7 @@ const checkLoggedIn = query(async () => { }, "checkLoggedIn.get") const models = [ - { name: "Grok 4.5", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention30" }, + { name: "Grok 4.6", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention30" }, { name: "GPT 5.6 Luna", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention30" }, { name: "GLM-5.3", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "GLM-5.2", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, @@ -70,8 +70,8 @@ function LimitsGraph(props: { href: string }) { const baseline = 100 const graph = [ { id: "kimi-k3", name: "Kimi K3", req: 110, d: "50ms" }, - { id: "grok-4.5", name: "Grok 4.5", req: 120, d: "75ms" }, { id: "qwen3.8-max", name: "Qwen3.8 Max", req: 160, d: "90ms" }, + { id: "grok-4.6", name: "Grok 4.6", req: 169, d: "75ms" }, { id: "glm-5.2", name: "GLM-5.2", req: 880, d: "100ms" }, { id: "gpt-5.6-luna", name: "GPT 5.6 Luna", req: 2050, d: "290ms" }, { id: "minimax-m3", name: "MiniMax M3", req: 3200, d: "210ms" }, @@ -511,7 +511,7 @@ export default function Home() {

      - Grok 4.5: {i18n.t("go.faq.a5.grokRetention")}{" "} + Grok 4.6: {i18n.t("go.faq.a5.grokRetention")}{" "} {i18n.t("go.faq.a5.learnMore")} diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index b52028814..b72d38c4c 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -640,7 +640,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {

      {i18n.t("workspace.lite.promo.modelsTitle")}

        -
      • Grok 4.5
      • +
      • Grok 4.6
      • GPT 5.6 Luna
      • GLM-5.3
      • GLM-5.2
      • diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 7ddb1b7e2..fd47f5bfc 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -49,7 +49,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر تشمل قائمة النماذج الحالية: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -91,7 +91,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Model | الطلبات لكل 5 ساعات | الطلبات في الأسبوع | الطلبات في الشهر | | ---------------------------- | ------------------- | ------------------ | ---------------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -117,7 +117,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر تستند التقديرات إلى أنماط الطلبات المرصودة: -- Grok 4.5 — ‏1,100 input، و71,500 cached، و220 output tokens لكل طلب +- Grok 4.6 — ‏390 input، و32,500 cached، و120 output tokens لكل طلب - GLM-5.3/5.2/5.1 — ‏700 input، و52,000 cached، و150 output tokens لكل طلب - GPT 5.6 Luna — ‏1,000 توكن إدخال، و50,000 توكن مخزّن مؤقتًا، و220 توكن إخراج لكل طلب - Kimi K3 — ‏1,050 input، و76,500 cached، و300 output tokens لكل طلب @@ -141,7 +141,8 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | النموذج | الإدخال | الإخراج | القراءة المخزنة | الكتابة المخزنة | الاستخدام | | --------------------------------------- | ------- | ------- | --------------- | --------------- | --------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -212,7 +213,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Model | Model ID | Endpoint | AI SDK Package | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -255,7 +256,7 @@ https://opencode.ai/zen/go/v1/models | النموذج | تدريب النموذج | الاحتفاظ بالبيانات | | ---------------------------- | ------------- | ------------------ | -| Grok 4.5 | غير مستخدَمة | 30 يومًا | +| Grok 4.6 | غير مستخدَمة | 30 يومًا | | GPT 5.6 Luna | غير مستخدَمة | 30 يومًا | | GLM-5.3 | غير مستخدَمة | 0 أيام | | GLM-5.2 | غير مستخدَمة | 0 أيام | @@ -279,7 +280,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | غير مستخدَمة | 0 أيام | | Ox Alpha Free | غير مستخدَمة | 0 أيام | -- **Grok 4.5:** تعطّل ZDR ميزات API مهمة تعتمد على البيانات المخزنة، بما في ذلك Responses API ذات الحالة، وFiles and Collections، وBatch API. [اعرف المزيد](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** تعطّل ZDR ميزات API مهمة تعتمد على البيانات المخزنة، بما في ذلك Responses API ذات الحالة، وFiles and Collections، وBatch API. [اعرف المزيد](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** تُنشأ سجلات مراقبة إساءة الاستخدام لكل استخدام لميزات API، ويُحتفظ بها لمدة تصل إلى 30 يومًا. [اعرف المزيد](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** أسعار توكنات مخفّضة للغاية مقابل منح الإذن باستخدام مطالباتك وإكمالات النموذج لتدريب نماذج Meta المستقبلية. يقتصر التوفر على المناطق التي تسمح بها [سياسة الاستخدام الجغرافي](https://ai.developer.meta.com/legal/geographic-use-policy) الخاصة بـ Meta. [اعرف المزيد](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** تُجدَّد اتفاقية ZDR شهريًا. الاتفاقية الحالية سارية حتى 31 أغسطس 2026. diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index b8841d99c..ca0a3d1a7 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -59,7 +59,7 @@ Samo jedan član po radnom prostoru (workspace) može se pretplatiti na OpenCode Trenutna lista modela uključuje: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -101,7 +101,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | Model | zahtjeva na 5 sati | zahtjeva sedmično | zahtjeva mjesečno | | ---------------------------- | ------------------ | ----------------- | ----------------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -127,7 +127,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori Procjene se zasnivaju na zapaženim obrascima zahtjeva: -- Grok 4.5 — 1,100 ulaznih, 71,500 keširanih, 220 izlaznih tokena po zahtjevu +- Grok 4.6 — 390 ulaznih, 32,500 keširanih, 120 izlaznih tokena po zahtjevu - GLM-5.3/5.2/5.1 — 700 ulaznih (input), 52,000 keširanih, 150 izlaznih (output) tokena po zahtjevu - GPT 5.6 Luna — 1,000 ulaznih, 50,000 keširanih, 220 izlaznih tokena po zahtjevu - Kimi K3 — 1,050 ulaznih, 76,500 keširanih, 300 izlaznih tokena po zahtjevu @@ -151,7 +151,8 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | Model | Input | Output | Cached Read | Cached Write | Potrošnja | | --------------------------------------- | ------ | ------ | ----------- | ------------ | --------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -224,7 +225,7 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | Model | Model ID | Endpoint | AI SDK Paket | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -269,7 +270,7 @@ https://opencode.ai/zen/go/v1/models | Model | Treniranje modela | Zadržavanje podataka | | ---------------------------- | ----------------- | -------------------- | -| Grok 4.5 | Ne koristi se | 30 dana | +| Grok 4.6 | Ne koristi se | 30 dana | | GPT 5.6 Luna | Ne koristi se | 30 dana | | GLM-5.3 | Ne koristi se | 0 dana | | GLM-5.2 | Ne koristi se | 0 dana | @@ -293,7 +294,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | Ne koristi se | 0 dana | | Ox Alpha Free | Ne koristi se | 0 dana | -- **Grok 4.5:** ZDR onemogućava važne API funkcije koje zavise od pohranjenih podataka, uključujući Responses API s očuvanjem stanja, Files and Collections i Batch API. [Saznajte više](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** ZDR onemogućava važne API funkcije koje zavise od pohranjenih podataka, uključujući Responses API s očuvanjem stanja, Files and Collections i Batch API. [Saznajte više](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Zapisi o nadzoru zloupotrebe generišu se za svako korištenje API funkcija i čuvaju do 30 dana. [Saznajte više](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** Znatno snižene cijene tokena u zamjenu za dopuštenje da se vaši promptovi i odgovori modela koriste za treniranje budućih Meta modela. Dostupnost je ograničena na regije dopuštene [Pravilima geografskog korištenja](https://ai.developer.meta.com/legal/geographic-use-policy) kompanije Meta. [Saznajte više](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** ZDR sporazum obnavlja se mjesečno. Trenutni sporazum važi do 31. augusta 2026. diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 75da1bb34..16a944f68 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -59,7 +59,7 @@ Kun ét medlem per arbejdsområde kan abonnere på OpenCode Go. Den nuværende liste over modeller inkluderer: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -101,7 +101,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | Model | anmodninger pr. 5 timer | anmodninger pr. uge | anmodninger pr. måned | | ---------------------------- | ----------------------- | ------------------- | --------------------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -127,7 +127,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo Estimaterne er baseret på observerede anmodningsmønstre: -- Grok 4.5 — 1.100 input, 71.500 cachelagrede, 220 output-tokens pr. anmodning +- Grok 4.6 — 390 input, 32.500 cachelagrede, 120 output-tokens pr. anmodning - GLM-5.3/5.2/5.1 — 700 input, 52.000 cachelagrede, 150 output-tokens pr. anmodning - GPT 5.6 Luna — 1.000 input, 50.000 cachelagrede, 220 output-tokens pr. anmodning - Kimi K3 — 1.050 input, 76.500 cachelagrede, 300 output-tokens pr. anmodning @@ -151,7 +151,8 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | Model | Input | Output | Cached Read | Cached Write | Forbrug | | --------------------------------------- | ------ | ------ | ----------- | ------------ | ------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -224,7 +225,7 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | Model | Model ID | Endpoint | AI SDK Package | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -269,7 +270,7 @@ https://opencode.ai/zen/go/v1/models | Model | Modeltræning | Dataopbevaring | | ---------------------------- | ------------ | -------------- | -| Grok 4.5 | Ikke brugt | 30 dage | +| Grok 4.6 | Ikke brugt | 30 dage | | GPT 5.6 Luna | Ikke brugt | 30 dage | | GLM-5.3 | Ikke brugt | 0 dage | | GLM-5.2 | Ikke brugt | 0 dage | @@ -293,7 +294,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | Ikke brugt | 0 dage | | Ox Alpha Free | Ikke brugt | 0 dage | -- **Grok 4.5:** ZDR deaktiverer vigtige API-funktioner, der afhænger af lagrede data, herunder den tilstandsbevarende Responses API, Files and Collections og Batch API. [Læs mere](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** ZDR deaktiverer vigtige API-funktioner, der afhænger af lagrede data, herunder den tilstandsbevarende Responses API, Files and Collections og Batch API. [Læs mere](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logfiler til overvågning af misbrug genereres ved al brug af API-funktioner og opbevares i op til 30 dage. [Læs mere](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** Kraftigt nedsatte tokenpriser til gengæld for tilladelse til at bruge dine prompts og modelsvar til at træne fremtidige Meta-modeller. Tilgængeligheden er begrænset til regioner, der er tilladt i henhold til [politikken for geografisk brug](https://ai.developer.meta.com/legal/geographic-use-policy) fra Meta. [Læs mere](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** ZDR-aftalen fornyes månedligt. Den nuværende aftale er gyldig til og med 31. august 2026. diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index 21ba15452..a4d7484c8 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -51,7 +51,7 @@ Nur ein Mitglied pro Workspace kann OpenCode Go abonnieren. Die aktuelle Liste der Modelle umfasst: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -93,7 +93,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | Model | Anfragen pro 5 Stunden | Anfragen pro Woche | Anfragen pro Monat | | ---------------------------- | ---------------------- | ------------------ | ------------------ | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -119,7 +119,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty Die Schätzungen basieren auf beobachteten Anfragemustern: -- Grok 4.5 — 1.100 Input-, 71.500 Cached-, 220 Output-Tokens pro Anfrage +- Grok 4.6 — 390 Input-, 32.500 Cached-, 120 Output-Tokens pro Anfrage - GLM-5.3/5.2/5.1 — 700 Input-, 52.000 Cached-, 150 Output-Tokens pro Anfrage - GPT 5.6 Luna — 1.000 Input-, 50.000 Cached-, 220 Output-Tokens pro Anfrage - Kimi K3 — 1.050 Input-, 76.500 Cached-, 300 Output-Tokens pro Anfrage @@ -143,7 +143,8 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | Model | Input | Output | Cached Read | Cached Write | Nutzung | | --------------------------------------- | ------ | ------ | ----------- | ------------ | ------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -214,7 +215,7 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | Modell | Modell-ID | Endpunkt | AI SDK Package | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -257,7 +258,7 @@ https://opencode.ai/zen/go/v1/models | Modell | Modelltraining | Datenaufbewahrung | | ---------------------------- | --------------- | ----------------- | -| Grok 4.5 | Nicht verwendet | 30 Tage | +| Grok 4.6 | Nicht verwendet | 30 Tage | | GPT 5.6 Luna | Nicht verwendet | 30 Tage | | GLM-5.3 | Nicht verwendet | 0 Tage | | GLM-5.2 | Nicht verwendet | 0 Tage | @@ -281,7 +282,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | Nicht verwendet | 0 Tage | | Ox Alpha Free | Nicht verwendet | 0 Tage | -- **Grok 4.5:** ZDR deaktiviert wichtige API-Funktionen, die von gespeicherten Daten abhängen, einschließlich der zustandsbehafteten Responses API, Files and Collections und der Batch API. [Mehr erfahren](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** ZDR deaktiviert wichtige API-Funktionen, die von gespeicherten Daten abhängen, einschließlich der zustandsbehafteten Responses API, Files and Collections und der Batch API. [Mehr erfahren](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Für die Nutzung aller API-Funktionen werden Protokolle zur Missbrauchsüberwachung erstellt und bis zu 30 Tage lang aufbewahrt. [Mehr erfahren](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** Stark vergünstigte Tokenpreise im Gegenzug für die Erlaubnis, deine Prompts und Vervollständigungen zum Trainieren zukünftiger Meta-Modelle zu verwenden. Die Verfügbarkeit ist auf Regionen beschränkt, die gemäß der [Richtlinie zur geografischen Nutzung](https://ai.developer.meta.com/legal/geographic-use-policy) von Meta zulässig sind. [Mehr erfahren](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** Die ZDR-Vereinbarung wird monatlich erneuert. Die aktuelle Vereinbarung gilt bis einschließlich 31. August 2026. diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 4687c1897..ca1bb08a2 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -59,7 +59,7 @@ Solo un miembro por espacio de trabajo puede suscribirse a OpenCode Go. La lista actual de modelos incluye: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -101,7 +101,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | Model | peticiones por 5 horas | peticiones por semana | peticiones por mes | | ---------------------------- | ---------------------- | --------------------- | ------------------ | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -127,7 +127,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los Las estimaciones se basan en los patrones de peticiones observados: -- Grok 4.5 — 1,100 tokens de entrada, 71,500 en caché, 220 tokens de salida por petición +- Grok 4.6 — 390 tokens de entrada, 32,500 en caché, 120 tokens de salida por petición - GLM-5.3/5.2/5.1 — 700 tokens de entrada, 52,000 en caché, 150 tokens de salida por petición - GPT 5.6 Luna — 1,000 tokens de entrada, 50,000 en caché, 220 tokens de salida por petición - Kimi K3 — 1,050 tokens de entrada, 76,500 en caché, 300 tokens de salida por petición @@ -151,7 +151,8 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | Modelo | Entrada | Salida | Lectura en caché | Escritura en caché | Uso | | --------------------------------------- | ------- | ------ | ---------------- | ------------------ | --- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -224,7 +225,7 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | Modelo | ID del modelo | Endpoint | Paquete de AI SDK | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -269,7 +270,7 @@ https://opencode.ai/zen/go/v1/models | Modelo | Entrenamiento del modelo | Retención de datos | | ---------------------------- | ------------------------ | ------------------ | -| Grok 4.5 | No utilizado | 30 días | +| Grok 4.6 | No utilizado | 30 días | | GPT 5.6 Luna | No utilizado | 30 días | | GLM-5.3 | No utilizado | 0 días | | GLM-5.2 | No utilizado | 0 días | @@ -293,7 +294,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | No utilizado | 0 días | | Ox Alpha Free | No utilizado | 0 días | -- **Grok 4.5:** ZDR deshabilita funciones importantes de la API que dependen de datos almacenados, incluidas la Responses API con estado, Files and Collections y la Batch API. [Más información](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** ZDR deshabilita funciones importantes de la API que dependen de datos almacenados, incluidas la Responses API con estado, Files and Collections y la Batch API. [Más información](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Se generan registros de supervisión de abusos para todo el uso de funciones de la API y se conservan durante un máximo de 30 días. [Más información](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** Precios de tokens muy reducidos a cambio de permitir que tus prompts y las respuestas generadas se utilicen para entrenar futuros modelos de Meta. La disponibilidad está limitada a las regiones permitidas por la [Política de uso geográfico](https://ai.developer.meta.com/legal/geographic-use-policy) de Meta. [Más información](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** El acuerdo de ZDR se renueva mensualmente. El acuerdo actual es válido hasta el 31 de agosto de 2026. diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 695858c56..6e906c648 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -49,7 +49,7 @@ Un seul membre par espace de travail peut s'abonner à OpenCode Go. La liste actuelle des modèles comprend : -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -91,7 +91,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | Model | requêtes par 5 heures | requêtes par semaine | requêtes par mois | | ---------------------------- | --------------------- | -------------------- | ----------------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -117,7 +117,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d Les estimations sont basées sur les schémas de requêtes observés : -- Grok 4.5 — 1,100 tokens en entrée, 71,500 en cache, 220 tokens en sortie par requête +- Grok 4.6 — 390 tokens en entrée, 32,500 en cache, 120 tokens en sortie par requête - GLM-5.3/5.2/5.1 — 700 tokens en entrée, 52,000 en cache, 150 tokens en sortie par requête - GPT 5.6 Luna — 1,000 tokens en entrée, 50,000 en cache, 220 tokens en sortie par requête - Kimi K3 — 1,050 tokens en entrée, 76,500 en cache, 300 tokens en sortie par requête @@ -141,7 +141,8 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | Modèle | Input | Output | Cached Read | Cached Write | Utilisation | | --------------------------------------- | ------ | ------ | ----------- | ------------ | ----------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -212,7 +213,7 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | Modèle | ID de modèle | Point de terminaison | Package AI SDK | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -255,7 +256,7 @@ https://opencode.ai/zen/go/v1/models | Modèle | Entraînement des modèles | Conservation des données | | ---------------------------- | ------------------------ | ------------------------ | -| Grok 4.5 | Non utilisé | 30 jours | +| Grok 4.6 | Non utilisé | 30 jours | | GPT 5.6 Luna | Non utilisé | 30 jours | | GLM-5.3 | Non utilisé | 0 jour | | GLM-5.2 | Non utilisé | 0 jour | @@ -279,7 +280,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | Non utilisé | 0 jour | | Ox Alpha Free | Non utilisé | 0 jour | -- **Grok 4.5:** Le ZDR désactive d’importantes fonctionnalités API qui dépendent des données stockées, notamment Responses API avec état, Files and Collections et Batch API. [En savoir plus](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** Le ZDR désactive d’importantes fonctionnalités API qui dépendent des données stockées, notamment Responses API avec état, Files and Collections et Batch API. [En savoir plus](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Des journaux de surveillance des abus sont générés pour toute utilisation des fonctionnalités API et conservés pendant un maximum de 30 jours. [En savoir plus](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** Des tarifs de tokens fortement réduits en échange de l’autorisation d’utiliser vos prompts et vos complétions pour entraîner de futurs modèles Meta. La disponibilité est limitée aux régions autorisées par la [Politique d’utilisation géographique](https://ai.developer.meta.com/legal/geographic-use-policy) de Meta. [En savoir plus](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** L’accord ZDR est renouvelé chaque mois. L’accord actuel est valable jusqu’au 31 août 2026. diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index d909d215f..b5f6bde71 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -59,7 +59,7 @@ Only one member per workspace can subscribe to OpenCode Go. The current list of models includes: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -101,7 +101,7 @@ The table below provides an estimated request count based on typical Go usage pa | Model | requests per 5 hour | requests per week | requests per month | | ---------------------------- | ------------------- | ----------------- | ------------------ | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -127,7 +127,7 @@ The table below provides an estimated request count based on typical Go usage pa The estimates are based on observed request patterns: -- Grok 4.5 — 1,100 input, 71,500 cached, 220 output tokens per request +- Grok 4.6 — 390 input, 32,500 cached, 120 output tokens per request - GLM-5.3/5.2/5.1 — 700 input, 52,000 cached, 150 output tokens per request - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens per request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens per request @@ -151,7 +151,8 @@ The estimates are also based on the following prices per 1M tokens and the month | Model | Input | Output | Cached Read | Cached Write | Usage | | --------------------------------------- | ------ | ------ | ----------- | ------------ | ----- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -224,7 +225,7 @@ You can also access Go models through the following API endpoints. | Model | Model ID | Endpoint | AI SDK Package | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -269,7 +270,7 @@ https://opencode.ai/zen/go/v1/models | Model | Model training | Data retention | | ---------------------------- | -------------- | -------------- | -| Grok 4.5 | Not used | 30 days | +| Grok 4.6 | Not used | 30 days | | GPT 5.6 Luna | Not used | 30 days | | GLM-5.3 | Not used | 0 days | | GLM-5.2 | Not used | 0 days | @@ -293,7 +294,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | Not used | 0 days | | Ox Alpha Free | Not used | 0 days | -- **Grok 4.5:** ZDR disables important API features that depend on stored data, including the stateful Responses API, Files and Collections, and the Batch API. [Learn more](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** ZDR disables important API features that depend on stored data, including the stateful Responses API, Files and Collections, and the Batch API. [Learn more](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Abuse monitoring logs are generated for all API feature usage and retained for up to 30 days. [Learn more](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** Heavily discounted token pricing in exchange for permission to use your prompts and completions to train future Meta models. Availability is limited to regions permitted by Meta's [Geographic Use Policy](https://ai.developer.meta.com/legal/geographic-use-policy). [Learn more](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek:** ZDR agreement is renewed monthly. The current agreement is valid through August 31, 2026. diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 8efc91907..2c8c09eb9 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -57,7 +57,7 @@ Solo un membro per workspace può abbonarsi a OpenCode Go. L'elenco attuale dei modelli include: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -99,7 +99,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | Model | richieste ogni 5 ore | richieste a settimana | richieste al mese | | ---------------------------- | -------------------- | --------------------- | ----------------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -125,7 +125,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p Le stime si basano sui pattern di richieste osservati: -- Grok 4.5 — 1.100 di input, 71.500 in cache, 220 token di output per richiesta +- Grok 4.6 — 390 di input, 32.500 in cache, 120 token di output per richiesta - GLM-5.3/5.2/5.1 — 700 di input, 52.000 in cache, 150 token di output per richiesta - GPT 5.6 Luna — 1.000 token di input, 50.000 in cache, 220 token di output per richiesta - Kimi K3 — 1.050 di input, 76.500 in cache, 300 token di output per richiesta @@ -149,7 +149,8 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | Modello | Input | Output | Cached Read | Cached Write | Utilizzo | | --------------------------------------- | ------ | ------ | ----------- | ------------ | -------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -222,7 +223,7 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | Modello | ID Modello | Endpoint | Pacchetto AI SDK | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -267,7 +268,7 @@ https://opencode.ai/zen/go/v1/models | Modello | Addestramento del modello | Conservazione dei dati | | ---------------------------- | ------------------------- | ---------------------- | -| Grok 4.5 | Non utilizzato | 30 giorni | +| Grok 4.6 | Non utilizzato | 30 giorni | | GPT 5.6 Luna | Non utilizzato | 30 giorni | | GLM-5.3 | Non utilizzato | 0 giorni | | GLM-5.2 | Non utilizzato | 0 giorni | @@ -291,7 +292,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | Non utilizzato | 0 giorni | | Ox Alpha Free | Non utilizzato | 0 giorni | -- **Grok 4.5:** ZDR disabilita importanti funzionalità API che dipendono dai dati archiviati, tra cui la Responses API con stato, Files and Collections e Batch API. [Scopri di più](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** ZDR disabilita importanti funzionalità API che dipendono dai dati archiviati, tra cui la Responses API con stato, Files and Collections e Batch API. [Scopri di più](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** I log di monitoraggio degli abusi vengono generati per l'utilizzo di tutte le funzionalità API e conservati per un massimo di 30 giorni. [Scopri di più](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** Prezzi dei token fortemente scontati in cambio dell'autorizzazione a utilizzare i tuoi prompt e completamenti per addestrare futuri modelli Meta. La disponibilità è limitata alle regioni consentite dalla [Politica sull'uso geografico](https://ai.developer.meta.com/legal/geographic-use-policy) di Meta. [Scopri di più](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** L'accordo ZDR viene rinnovato mensilmente. L'accordo attuale è valido fino al 31 agosto 2026. diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 0cbaad8b3..2eb757149 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -49,7 +49,7 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー 現在のモデルリストには以下が含まれます: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -91,7 +91,7 @@ OpenCode Goには以下の制限が含まれています: | Model | 5時間あたりのリクエスト数 | 週間リクエスト数 | 月間リクエスト数 | | ---------------------------- | ------------------------- | ---------------- | ---------------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -117,7 +117,7 @@ OpenCode Goには以下の制限が含まれています: 推定値は、観測されたリクエストパターンに基づいています: -- Grok 4.5 — リクエストあたり 入力 1,100トークン、キャッシュ 71,500トークン、出力 220トークン +- Grok 4.6 — リクエストあたり 入力 390トークン、キャッシュ 32,500トークン、出力 120トークン - GLM-5.3/5.2/5.1 — リクエストあたり 入力 700トークン、キャッシュ 52,000トークン、出力 150トークン - GPT 5.6 Luna — リクエストあたり 入力 1,000トークン、キャッシュ 50,000トークン、出力 220トークン - Kimi K3 — リクエストあたり 入力 1,050トークン、キャッシュ 76,500トークン、出力 300トークン @@ -141,7 +141,8 @@ OpenCode Goには以下の制限が含まれています: | Model | Input | Output | Cached Read | Cached Write | Usage | | --------------------------------------- | ------ | ------ | ----------- | ------------ | ----- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -212,7 +213,7 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | Model | Model ID | Endpoint | AI SDK Package | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -255,7 +256,7 @@ https://opencode.ai/zen/go/v1/models | モデル | モデルのトレーニング | データ保持 | | ---------------------------- | -------------------- | ----------- | -| Grok 4.5 | 使用なし | 30日 | +| Grok 4.6 | 使用なし | 30日 | | GPT 5.6 Luna | 使用なし | 30日 | | GLM-5.3 | 使用なし | 0日 | | GLM-5.2 | 使用なし | 0日 | @@ -279,7 +280,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | 使用なし | 0日 | | Ox Alpha Free | 使用なし | 0日 | -- **Grok 4.5:** ZDRでは、保存データに依存する重要なAPI機能(ステートフルなResponses API、Files and Collections、Batch APIなど)が無効になります。[詳しく見る](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 +- **Grok 4.6:** ZDRでは、保存データに依存する重要なAPI機能(ステートフルなResponses API、Files and Collections、Batch APIなど)が無効になります。[詳しく見る](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 不正使用監視ログはすべてのAPI機能の使用時に生成され、最大30日間保持されます。[詳しく見る](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 - **Muse Spark 1.2 Contributor:** 将来のMetaモデルのトレーニングにプロンプトと生成結果を使用する許可と引き換えに、トークン料金が大幅に割引されます。利用できるのは、Metaの[地域別利用ポリシー](https://ai.developer.meta.com/legal/geographic-use-policy)で許可されている地域に限られます。[詳しく見る](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - **DeepSeek V4 Flash:** ZDR契約は毎月更新されます。現在の契約は2026年8月31日まで有効です。 diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index f4d9d3ae3..dfe73049a 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -49,7 +49,7 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. 현재 모델 목록에는 다음이 포함됩니다. -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -91,7 +91,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Model | 5시간당 요청 횟수 | 주간 요청 횟수 | 월간 요청 횟수 | | ---------------------------- | ----------------- | -------------- | -------------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -117,7 +117,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. 이 예상치는 관찰된 요청 패턴을 기준으로 합니다. -- Grok 4.5 — 요청당 입력 1,100, 캐시 71,500, 출력 토큰 220 +- Grok 4.6 — 요청당 입력 390, 캐시 32,500, 출력 토큰 120 - GLM-5.3/5.2/5.1 — 요청당 입력 700, 캐시 52,000, 출력 토큰 150 - GPT 5.6 Luna — 요청당 입력 토큰 1,000개, 캐시 토큰 50,000개, 출력 토큰 220개 - Kimi K3 — 요청당 입력 1,050, 캐시 76,500, 출력 토큰 300 @@ -141,7 +141,8 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Model | Input | Output | Cached Read | Cached Write | Usage | | --------------------------------------- | ------ | ------ | ----------- | ------------ | ----- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -212,7 +213,7 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | 모델 | 모델 ID | 엔드포인트 | AI SDK 패키지 | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -255,7 +256,7 @@ https://opencode.ai/zen/go/v1/models | 모델 | 모델 학습 | 데이터 보존 | | ---------------------------- | ------------- | ----------- | -| Grok 4.5 | 사용되지 않음 | 30일 | +| Grok 4.6 | 사용되지 않음 | 30일 | | GPT 5.6 Luna | 사용되지 않음 | 30일 | | GLM-5.3 | 사용되지 않음 | 0일 | | GLM-5.2 | 사용되지 않음 | 0일 | @@ -279,7 +280,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | 사용되지 않음 | 0일 | | Ox Alpha Free | 사용되지 않음 | 0일 | -- **Grok 4.5:** ZDR은 저장된 데이터에 의존하는 중요한 API 기능(상태 저장형 Responses API, Files and Collections, Batch API 포함)을 비활성화합니다. [자세히 알아보기](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** ZDR은 저장된 데이터에 의존하는 중요한 API 기능(상태 저장형 Responses API, Files and Collections, Batch API 포함)을 비활성화합니다. [자세히 알아보기](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** 모든 API 기능 사용에 대해 악용 모니터링 로그가 생성되며 최대 30일 동안 보존됩니다. [자세히 알아보기](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** 향후 Meta 모델 학습에 사용자의 프롬프트와 생성 결과를 사용할 수 있도록 허용하는 대신 토큰 가격이 대폭 할인됩니다. Meta의 [지역별 사용 정책](https://ai.developer.meta.com/legal/geographic-use-policy)에서 허용하는 지역에서만 이용할 수 있습니다. [자세히 알아보기](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** ZDR 계약은 매월 갱신됩니다. 현재 계약은 2026년 8월 31일까지 유효합니다. diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 460c2e787..93c8dd691 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -59,7 +59,7 @@ Kun ett medlem per arbeidsområde kan abonnere på OpenCode Go. Den nåværende listen over modeller inkluderer: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -101,7 +101,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | Model | forespørsler per 5 timer | forespørsler per uke | forespørsler per måned | | ---------------------------- | ------------------------ | -------------------- | ---------------------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -127,7 +127,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm Estimatene er basert på observerte forespørselsmønstre: -- Grok 4.5 — 1 100 input, 71 500 bufret, 220 output-tokens per forespørsel +- Grok 4.6 — 390 input, 32 500 bufret, 120 output-tokens per forespørsel - GLM-5.3/5.2/5.1 — 700 input, 52 000 bufret, 150 output-tokens per forespørsel - GPT 5.6 Luna — 1 000 input, 50 000 bufret, 220 output-tokens per forespørsel - Kimi K3 — 1 050 input, 76 500 bufret, 300 output-tokens per forespørsel @@ -151,7 +151,8 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | Model | Input | Output | Cached Read | Cached Write | Bruk | | --------------------------------------- | ------ | ------ | ----------- | ------------ | ---- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -224,7 +225,7 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | Modell | Modell-ID | Endepunkt | AI SDK Package | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -269,7 +270,7 @@ https://opencode.ai/zen/go/v1/models | Modell | Modelltrening | Dataoppbevaring | | ---------------------------- | ------------- | --------------- | -| Grok 4.5 | Brukes ikke | 30 dager | +| Grok 4.6 | Brukes ikke | 30 dager | | GPT 5.6 Luna | Brukes ikke | 30 dager | | GLM-5.3 | Brukes ikke | 0 dager | | GLM-5.2 | Brukes ikke | 0 dager | @@ -293,7 +294,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | Brukes ikke | 0 dager | | Ox Alpha Free | Brukes ikke | 0 dager | -- **Grok 4.5:** ZDR deaktiverer viktige API-funksjoner som er avhengige av lagrede data, inkludert den tilstandsbaserte Responses API, Files and Collections og Batch API. [Les mer](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** ZDR deaktiverer viktige API-funksjoner som er avhengige av lagrede data, inkludert den tilstandsbaserte Responses API, Files and Collections og Batch API. [Les mer](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logger for overvåking av misbruk genereres for all bruk av API-funksjoner og oppbevares i opptil 30 dager. [Les mer](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** Kraftig rabatterte tokenpriser i bytte mot tillatelse til å bruke ledetekstene og fullføringene dine til å trene fremtidige Meta-modeller. Tilgjengeligheten er begrenset til regioner som er tillatt i henhold til [retningslinjene for geografisk bruk](https://ai.developer.meta.com/legal/geographic-use-policy) fra Meta. [Les mer](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** ZDR-avtalen fornyes månedlig. Den gjeldende avtalen er gyldig til og med 31. august 2026. diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 6dfaf3795..2c4a89641 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -53,7 +53,7 @@ Tylko jeden członek na obszar roboczy (workspace) może zasubskrybować OpenCod Obecna lista modeli obejmuje: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -95,7 +95,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | Model | żądania na 5 godzin | żądania na tydzień | żądania na miesiąc | | ---------------------------- | ------------------- | ------------------ | ------------------ | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -121,7 +121,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych Szacunki te opierają się na zaobserwowanych wzorcach żądań: -- Grok 4.5 — 1 100 tokenów wejściowych, 71 500 w pamięci podręcznej, 220 tokenów wyjściowych na żądanie +- Grok 4.6 — 390 tokenów wejściowych, 32 500 w pamięci podręcznej, 120 tokenów wyjściowych na żądanie - GLM-5.3/5.2/5.1 — 700 tokenów wejściowych, 52 000 w pamięci podręcznej, 150 tokenów wyjściowych na żądanie - GPT 5.6 Luna — 1 000 tokenów wejściowych, 50 000 w pamięci podręcznej, 220 tokenów wyjściowych na żądanie - Kimi K3 — 1 050 tokenów wejściowych, 76 500 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie @@ -145,7 +145,8 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | Model | Wejście | Wyjście | Odczyt z cache | Zapis do cache | Użycie | | --------------------------------------- | ------- | ------- | -------------- | -------------- | ------ | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -216,7 +217,7 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | Model | ID modelu | Punkt końcowy | Pakiet AI SDK | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -261,7 +262,7 @@ https://opencode.ai/zen/go/v1/models | Model | Trenowanie modelu | Retencja danych | | ---------------------------- | ----------------- | --------------- | -| Grok 4.5 | Niewykorzystywane | 30 dni | +| Grok 4.6 | Niewykorzystywane | 30 dni | | GPT 5.6 Luna | Niewykorzystywane | 30 dni | | GLM-5.3 | Niewykorzystywane | 0 dni | | GLM-5.2 | Niewykorzystywane | 0 dni | @@ -285,7 +286,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | Niewykorzystywane | 0 dni | | Ox Alpha Free | Niewykorzystywane | 0 dni | -- **Grok 4.5:** ZDR wyłącza ważne funkcje API zależne od przechowywanych danych, w tym stanowy Responses API, Files and Collections oraz Batch API. [Dowiedz się więcej](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** ZDR wyłącza ważne funkcje API zależne od przechowywanych danych, w tym stanowy Responses API, Files and Collections oraz Batch API. [Dowiedz się więcej](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Dzienniki monitorowania nadużyć są generowane dla każdego użycia funkcji API i przechowywane przez maksymalnie 30 dni. [Dowiedz się więcej](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** Znacznie obniżone ceny tokenów w zamian za zgodę na wykorzystanie Twoich promptów i odpowiedzi do trenowania przyszłych modeli Meta. Dostępność jest ograniczona do regionów dozwolonych przez [Zasady korzystania w poszczególnych regionach geograficznych](https://ai.developer.meta.com/legal/geographic-use-policy) firmy Meta. [Dowiedz się więcej](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** Umowa ZDR jest odnawiana co miesiąc. Obecna umowa obowiązuje do 31 sierpnia 2026 r. diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 14021d2ff..75487e15f 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -59,7 +59,7 @@ Apenas um membro por workspace pode assinar o OpenCode Go. A lista atual de modelos inclui: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -101,7 +101,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | Model | requisições por 5 horas | requisições por semana | requisições por mês | | ---------------------------- | ----------------------- | ---------------------- | ------------------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -127,7 +127,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr As estimativas se baseiam nos padrões de requisições observados: -- Grok 4.5 — 1.100 tokens de entrada, 71.500 em cache, 220 tokens de saída por requisição +- Grok 4.6 — 390 tokens de entrada, 32.500 em cache, 120 tokens de saída por requisição - GLM-5.3/5.2/5.1 — 700 tokens de entrada, 52.000 em cache, 150 tokens de saída por requisição - GPT 5.6 Luna — 1.000 tokens de entrada, 50.000 em cache, 220 tokens de saída por requisição - Kimi K3 — 1.050 tokens de entrada, 76.500 em cache, 300 tokens de saída por requisição @@ -151,7 +151,8 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | Modelo | Entrada | Saída | Leitura em cache | Escrita em cache | Uso | | --------------------------------------- | ------- | ------ | ---------------- | ---------------- | --- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -224,7 +225,7 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | Modelo | ID do Modelo | Endpoint | Pacote do AI SDK | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -269,7 +270,7 @@ https://opencode.ai/zen/go/v1/models | Modelo | Treinamento de modelos | Retenção de dados | | ---------------------------- | ---------------------- | ----------------- | -| Grok 4.5 | Não usado | 30 dias | +| Grok 4.6 | Não usado | 30 dias | | GPT 5.6 Luna | Não usado | 30 dias | | GLM-5.3 | Não usado | 0 dias | | GLM-5.2 | Não usado | 0 dias | @@ -293,7 +294,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | Não usado | 0 dias | | Ox Alpha Free | Não usado | 0 dias | -- **Grok 4.5:** O ZDR desativa recursos importantes da API que dependem de dados armazenados, incluindo a Responses API com estado, Files and Collections e a Batch API. [Saiba mais](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** O ZDR desativa recursos importantes da API que dependem de dados armazenados, incluindo a Responses API com estado, Files and Collections e a Batch API. [Saiba mais](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logs de monitoramento de abuso são gerados para todo uso de recursos da API e retidos por até 30 dias. [Saiba mais](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** Preços de tokens com grandes descontos em troca da permissão para usar seus prompts e respostas geradas para treinar futuros modelos da Meta. A disponibilidade é limitada às regiões permitidas pela [Política de Uso Geográfico](https://ai.developer.meta.com/legal/geographic-use-policy) da Meta. [Saiba mais](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** O acordo de ZDR é renovado mensalmente. O acordo atual é válido até 31 de agosto de 2026. diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 900ddb985..d96d18ae5 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -59,7 +59,7 @@ OpenCode Go работает так же, как и любой другой пр Текущий список моделей включает: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -101,7 +101,7 @@ OpenCode Go включает следующие лимиты: | Model | запросов за 5 часов | запросов в неделю | запросов в месяц | | ---------------------------- | ------------------- | ----------------- | ---------------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -127,7 +127,7 @@ OpenCode Go включает следующие лимиты: Эти оценки основаны на наблюдаемых показателях запросов: -- Grok 4.5 — 1,100 входных, 71,500 кешированных, 220 выходных токенов на запрос +- Grok 4.6 — 390 входных, 32,500 кешированных, 120 выходных токенов на запрос - GLM-5.3/5.2/5.1 — 700 входных, 52,000 кешированных, 150 выходных токенов на запрос - GPT 5.6 Luna — 1,000 входных, 50,000 кешированных, 220 выходных токенов на запрос - Kimi K3 — 1,050 входных, 76,500 кешированных, 300 выходных токенов на запрос @@ -151,7 +151,8 @@ OpenCode Go включает следующие лимиты: | Model | Input | Output | Cached Read | Cached Write | Использование | | --------------------------------------- | ------ | ------ | ----------- | ------------ | ------------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -224,7 +225,7 @@ OpenCode Go включает следующие лимиты: | Модель | ID модели | Эндпоинт | Пакет AI SDK | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -269,7 +270,7 @@ https://opencode.ai/zen/go/v1/models | Модель | Обучение моделей | Хранение данных | | ---------------------------- | ---------------- | --------------- | -| Grok 4.5 | Не используется | 30 дней | +| Grok 4.6 | Не используется | 30 дней | | GPT 5.6 Luna | Не используется | 30 дней | | GLM-5.3 | Не используется | 0 дней | | GLM-5.2 | Не используется | 0 дней | @@ -293,7 +294,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | Не используется | 0 дней | | Ox Alpha Free | Не используется | 0 дней | -- **Grok 4.5:** ZDR отключает важные функции API, зависящие от сохраненных данных, включая Responses API с сохранением состояния, Files and Collections и Batch API. [Подробнее](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** ZDR отключает важные функции API, зависящие от сохраненных данных, включая Responses API с сохранением состояния, Files and Collections и Batch API. [Подробнее](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Журналы мониторинга злоупотреблений создаются при любом использовании функций API и хранятся до 30 дней. [Подробнее](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** Значительно сниженная стоимость токенов в обмен на разрешение использовать ваши промпты и ответы для обучения будущих моделей Meta. Доступность ограничена регионами, разрешёнными [Политикой географического использования](https://ai.developer.meta.com/legal/geographic-use-policy) компании Meta. [Подробнее](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** Соглашение ZDR продлевается ежемесячно. Текущее соглашение действует до 31 августа 2026 года. diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 3fd544acc..5fb203921 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -49,7 +49,7 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร รายชื่อโมเดลในปัจจุบันประกอบด้วย: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -91,7 +91,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Model | requests ต่อ 5 ชั่วโมง | requests ต่อสัปดาห์ | requests ต่อเดือน | | ---------------------------- | ---------------------- | ------------------- | ----------------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -117,7 +117,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: การประมาณการนี้อ้างอิงจากรูปแบบการใช้งาน request ที่สังเกตพบ: -- Grok 4.5 — 1,100 input, 71,500 cached, 220 output tokens ต่อ request +- Grok 4.6 — 390 input, 32,500 cached, 120 output tokens ต่อ request - GLM-5.3/5.2/5.1 — 700 input, 52,000 cached, 150 output tokens ต่อ request - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens ต่อ request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens ต่อ request @@ -141,7 +141,8 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Model | Input | Output | Cached Read | Cached Write | Usage | | --------------------------------------- | ------ | ------ | ----------- | ------------ | ----- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -212,7 +213,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Model | Model ID | Endpoint | AI SDK Package | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -255,7 +256,7 @@ https://opencode.ai/zen/go/v1/models | โมเดล | การฝึกโมเดล | การเก็บรักษาข้อมูล | | ---------------------------- | ----------- | ------------------ | -| Grok 4.5 | ไม่นำไปใช้ | 30 วัน | +| Grok 4.6 | ไม่นำไปใช้ | 30 วัน | | GPT 5.6 Luna | ไม่นำไปใช้ | 30 วัน | | GLM-5.3 | ไม่นำไปใช้ | 0 วัน | | GLM-5.2 | ไม่นำไปใช้ | 0 วัน | @@ -279,7 +280,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | ไม่นำไปใช้ | 0 วัน | | Ox Alpha Free | ไม่นำไปใช้ | 0 วัน | -- **Grok 4.5:** ZDR ปิดใช้งานฟีเจอร์ API สำคัญที่ต้องอาศัยข้อมูลที่จัดเก็บไว้ ซึ่งรวมถึง Responses API แบบมีสถานะ, Files and Collections และ Batch API [ดูข้อมูลเพิ่มเติม](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr) +- **Grok 4.6:** ZDR ปิดใช้งานฟีเจอร์ API สำคัญที่ต้องอาศัยข้อมูลที่จัดเก็บไว้ ซึ่งรวมถึง Responses API แบบมีสถานะ, Files and Collections และ Batch API [ดูข้อมูลเพิ่มเติม](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr) - **GPT 5.6 Luna:** ระบบจะสร้างบันทึกการตรวจสอบการใช้งานในทางที่ผิดสำหรับการใช้งานฟีเจอร์ API ทั้งหมด และเก็บรักษาไว้นานสูงสุด 30 วัน [ดูข้อมูลเพิ่มเติม](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring) - **Muse Spark 1.2 Contributor:** ราคาของ token ลดลงอย่างมาก โดยแลกกับการอนุญาตให้นำพรอมต์และผลลัพธ์ที่สร้างขึ้นของคุณไปใช้ฝึกโมเดล Meta ในอนาคต การให้บริการจำกัดเฉพาะภูมิภาคที่ได้รับอนุญาตตาม[นโยบายการใช้งานตามพื้นที่ทางภูมิศาสตร์](https://ai.developer.meta.com/legal/geographic-use-policy)ของ Meta [ดูข้อมูลเพิ่มเติม](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier) - **DeepSeek V4 Flash:** ข้อตกลง ZDR จะต่ออายุทุกเดือน ข้อตกลงปัจจุบันมีผลใช้ถึงวันที่ 31 สิงหาคม 2026 diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 764cfc0d4..85f228285 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -49,7 +49,7 @@ Her çalışma alanından yalnızca bir üye OpenCode Go'ya abone olabilir. Mevcut model listesi şunları içerir: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -91,7 +91,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | Model | 5 saatte bir istek | haftalık istek | aylık istek | | ---------------------------- | ------------------ | -------------- | ----------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -117,7 +117,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say Tahminler, gözlemlenen istek modellerine dayanır: -- Grok 4.5 — İstek başına 1.100 girdi, 71.500 önbelleğe alınmış, 220 çıktı token'ı +- Grok 4.6 — İstek başına 390 girdi, 32.500 önbelleğe alınmış, 120 çıktı token'ı - GLM-5.3/5.2/5.1 — İstek başına 700 girdi, 52.000 önbelleğe alınmış, 150 çıktı token'ı - GPT 5.6 Luna — İstek başına 1.000 girdi, 50.000 önbelleğe alınmış, 220 çıktı token'ı - Kimi K3 — İstek başına 1.050 girdi, 76.500 önbelleğe alınmış, 300 çıktı token'ı @@ -141,7 +141,8 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | Model | Input | Output | Cached Read | Cached Write | Kullanım | | --------------------------------------- | ------ | ------ | ----------- | ------------ | -------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -212,7 +213,7 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | Model | Model ID | Uç Nokta | AI SDK Paketi | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -255,7 +256,7 @@ https://opencode.ai/zen/go/v1/models | Model | Model eğitimi | Veri saklama | | ---------------------------- | ------------- | ------------ | -| Grok 4.5 | Kullanılmaz | 30 gün | +| Grok 4.6 | Kullanılmaz | 30 gün | | GPT 5.6 Luna | Kullanılmaz | 30 gün | | GLM-5.3 | Kullanılmaz | 0 gün | | GLM-5.2 | Kullanılmaz | 0 gün | @@ -279,7 +280,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | Kullanılmaz | 0 gün | | Ox Alpha Free | Kullanılmaz | 0 gün | -- **Grok 4.5:** ZDR, durum bilgisi tutan Responses API, Files and Collections ve Batch API dahil olmak üzere saklanan verilere bağlı önemli API özelliklerini devre dışı bırakır. [Daha fazla bilgi](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). +- **Grok 4.6:** ZDR, durum bilgisi tutan Responses API, Files and Collections ve Batch API dahil olmak üzere saklanan verilere bağlı önemli API özelliklerini devre dışı bırakır. [Daha fazla bilgi](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Tüm API özelliklerinin kullanımı için kötüye kullanım izleme günlükleri oluşturulur ve 30 güne kadar saklanır. [Daha fazla bilgi](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). - **Muse Spark 1.2 Contributor:** İstemlerinizi ve tamamlamalarınızı gelecekteki Meta modellerini eğitmek için kullanma izni karşılığında büyük ölçüde indirimli token fiyatları. Kullanılabilirlik, Meta'nın [Coğrafi Kullanım Politikası](https://ai.developer.meta.com/legal/geographic-use-policy) kapsamında izin verilen bölgelerle sınırlıdır. [Daha fazla bilgi](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** ZDR anlaşması aylık olarak yenilenir. Mevcut anlaşma 31 Ağustos 2026 tarihine kadar geçerlidir. diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index c59d28380..4efd9c1c2 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -49,7 +49,7 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 当前支持的模型列表包括: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -91,7 +91,7 @@ OpenCode Go 包含以下限制: | Model | 每 5 小时请求数 | 每周请求数 | 每月请求数 | | ---------------------------- | --------------- | ---------- | ---------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -117,7 +117,7 @@ OpenCode Go 包含以下限制: 预估值基于观察到的请求模式: -- Grok 4.5 — 每次请求 1,100 个输入 token,71,500 个缓存 token,220 个输出 token +- Grok 4.6 — 每次请求 390 个输入 token,32,500 个缓存 token,120 个输出 token - GLM-5.3/5.2/5.1 — 每次请求 700 个输入 token,52,000 个缓存 token,150 个输出 token - GPT 5.6 Luna — 每次请求 1,000 个输入 token,50,000 个缓存 token,220 个输出 token - Kimi K3 — 每次请求 1,050 个输入 token,76,500 个缓存 token,300 个输出 token @@ -141,7 +141,8 @@ OpenCode Go 包含以下限制: | 模型 | 输入 | 输出 | 缓存读取 | 缓存写入 | 使用额度 | | --------------------------------------- | ------ | ------ | --------- | -------- | -------- | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -212,7 +213,7 @@ OpenCode Go 包含以下限制: | 模型 | 模型 ID | 端点 | AI SDK 包 | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -255,7 +256,7 @@ https://opencode.ai/zen/go/v1/models | 模型 | 模型训练 | 数据留存 | | ---------------------------- | -------- | -------- | -| Grok 4.5 | 不使用 | 30 天 | +| Grok 4.6 | 不使用 | 30 天 | | GPT 5.6 Luna | 不使用 | 30 天 | | GLM-5.3 | 不使用 | 0 天 | | GLM-5.2 | 不使用 | 0 天 | @@ -279,7 +280,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | 不使用 | 0 天 | | Ox Alpha Free | 不使用 | 0 天 | -- **Grok 4.5:** ZDR 会禁用依赖所存储数据的重要 API 功能,包括有状态的 Responses API、Files and Collections 和 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 +- **Grok 4.6:** ZDR 会禁用依赖所存储数据的重要 API 功能,包括有状态的 Responses API、Files and Collections 和 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 所有 API 功能的使用都会生成滥用监控日志,并最多保留 30 天。[了解更多](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 - **Muse Spark 1.2 Contributor:** 以允许使用你的提示词和补全结果训练未来的 Meta 模型为交换,token 价格可获得大幅折扣。仅在 Meta 的[地理使用政策](https://ai.developer.meta.com/legal/geographic-use-policy)允许的地区提供。[了解更多](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - **DeepSeek V4 Flash:** ZDR 协议每月续签。当前协议有效期至 2026 年 8 月 31 日。 diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index db3d06c79..630b4e9be 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -49,7 +49,7 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 目前的模型清單包括: -- **Grok 4.5** +- **Grok 4.6** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -91,7 +91,7 @@ OpenCode Go 包含以下限制: | Model | 每 5 小時請求數 | 每週請求數 | 每月請求數 | | ---------------------------- | --------------- | ---------- | ---------- | -| Grok 4.5 | 120 | 300 | 600 | +| Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | @@ -117,7 +117,7 @@ OpenCode Go 包含以下限制: 這些預估值是基於觀察到的請求模式: -- Grok 4.5 — 每次請求 1,100 個輸入 token、71,500 個快取 token、220 個輸出 token +- Grok 4.6 — 每次請求 390 個輸入 token、32,500 個快取 token、120 個輸出 token - GLM-5.3/5.2/5.1 — 每次請求 700 個輸入 token、52,000 個快取 token、150 個輸出 token - GPT 5.6 Luna — 每次請求 1,000 個輸入 token、50,000 個快取 token、220 個輸出 token - Kimi K3 — 每次請求 1,050 個輸入 token、76,500 個快取 token、300 個輸出 token @@ -141,7 +141,8 @@ OpenCode Go 包含以下限制: | 模型 | 輸入 | 輸出 | 快取讀取 | 快取寫入 | 使用量 | | --------------------------------------- | ------ | ------ | --------- | -------- | ------ | -| Grok 4.5 | $2.00 | $6.00 | $0.30 | - | $15 | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | @@ -212,7 +213,7 @@ OpenCode Go 包含以下限制: | 模型 | 模型 ID | 端點 | AI SDK 套件 | | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | -| Grok 4.5 | grok-4.5 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -255,7 +256,7 @@ https://opencode.ai/zen/go/v1/models | 模型 | 模型訓練 | 資料保留 | | ---------------------------- | -------- | -------- | -| Grok 4.5 | 不使用 | 30 天 | +| Grok 4.6 | 不使用 | 30 天 | | GPT 5.6 Luna | 不使用 | 30 天 | | GLM-5.3 | 不使用 | 0 天 | | GLM-5.2 | 不使用 | 0 天 | @@ -279,7 +280,7 @@ https://opencode.ai/zen/go/v1/models | Hy3 | 不使用 | 0 天 | | Ox Alpha Free | 不使用 | 0 天 | -- **Grok 4.5:** ZDR 會停用依賴儲存資料的重要 API 功能,包括具狀態的 Responses API、Files and Collections 與 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 +- **Grok 4.6:** ZDR 會停用依賴儲存資料的重要 API 功能,包括具狀態的 Responses API、Files and Collections 與 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 所有 API 功能的使用都會產生濫用監控日誌,並保留最多 30 天。[了解更多](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 - **Muse Spark 1.2 Contributor:** 以允許使用您的提示詞和生成結果來訓練未來的 Meta 模型為交換,token 價格可享大幅折扣。僅在 Meta 的[地理使用政策](https://ai.developer.meta.com/legal/geographic-use-policy)允許的地區提供。[了解更多](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - **DeepSeek V4 Flash:** ZDR 協議每月續簽。目前的協議有效至 2026 年 8 月 31 日。 From b72b50006b24666da9f2088dbce907d6b24b6901 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Tue, 25 Aug 2026 21:58:35 +0200 Subject: [PATCH 159/271] fix(core): recover legacy database migration history (#45061) Co-authored-by: neriousy <34747899+neriousy@users.noreply.github.com> --- packages/core/src/database/migration.ts | 39 ++++++++++-- .../20260410174513_workspace-name.ts | 5 +- packages/core/test/database-migration.test.ts | 63 +++++++++++++++++++ 3 files changed, 100 insertions(+), 7 deletions(-) diff --git a/packages/core/src/database/migration.ts b/packages/core/src/database/migration.ts index 90dee8acb..644b22ab7 100644 --- a/packages/core/src/database/migration.ts +++ b/packages/core/src/database/migration.ts @@ -54,12 +54,39 @@ export function applyOnly(db: Database, input: Migration[]) { if ( yield* db.get(sql`SELECT name FROM sqlite_master WHERE type = 'table' AND name = ${"__drizzle_migrations"}`) ) { - yield* db.run(sql` - INSERT OR IGNORE INTO ${sql.identifier("migration")} (id, time_completed) - SELECT name, ${Date.now()} - FROM ${sql.identifier("__drizzle_migrations")} - WHERE name IS NOT NULL - `) + const named = (yield* db.all<{ name: string }>( + sql`SELECT name FROM pragma_table_info('__drizzle_migrations')`, + )).some((column) => column.name === "name") + + if (named) { + yield* db.run(sql` + INSERT OR IGNORE INTO ${sql.identifier("migration")} (id, time_completed) + SELECT name, ${Date.now()} + FROM ${sql.identifier("__drizzle_migrations")} + WHERE name IS NOT NULL + `) + } + + if (!named) { + const entries = yield* db.all<{ created_at: number; prefix: string | null }>(sql` + SELECT created_at, strftime('%Y%m%d%H%M%S', created_at / 1000, 'unixepoch') AS prefix + FROM ${sql.identifier("__drizzle_migrations")} + WHERE created_at IS NOT NULL + `) + + for (const entry of entries) { + const migration = input.find((item) => item.id.startsWith(`${entry.prefix}_`)) + if (!migration) { + return yield* Effect.die( + new Error(`Legacy migration timestamp ${entry.created_at} does not match any known migration`), + ) + } + yield* db.run(sql` + INSERT OR IGNORE INTO ${sql.identifier("migration")} (id, time_completed) + VALUES (${migration.id}, ${Date.now()}) + `) + } + } completed = new Set( (yield* db.all<{ id: string }>(sql`SELECT id FROM ${sql.identifier("migration")}`)).map((row) => row.id), ) diff --git a/packages/core/src/database/migration/20260410174513_workspace-name.ts b/packages/core/src/database/migration/20260410174513_workspace-name.ts index 18483e1cf..8a8557ec7 100644 --- a/packages/core/src/database/migration/20260410174513_workspace-name.ts +++ b/packages/core/src/database/migration/20260410174513_workspace-name.ts @@ -5,6 +5,9 @@ export default { id: "20260410174513_workspace-name", up(tx) { return Effect.gen(function* () { + const columns = yield* tx.all<{ name: string }>(`PRAGMA table_info(\`workspace\`)`) + const name = columns.some((column) => column.name === "name") ? "`name`" : "''" + yield* tx.run(`PRAGMA foreign_keys=OFF;`) yield* tx.run(` CREATE TABLE \`__new_workspace\` ( @@ -19,7 +22,7 @@ export default { ); `) yield* tx.run( - `INSERT INTO \`__new_workspace\`(\`id\`, \`type\`, \`branch\`, \`name\`, \`directory\`, \`extra\`, \`project_id\`) SELECT \`id\`, \`type\`, \`branch\`, \`name\`, \`directory\`, \`extra\`, \`project_id\` FROM \`workspace\`;`, + `INSERT INTO \`__new_workspace\`(\`id\`, \`type\`, \`branch\`, \`name\`, \`directory\`, \`extra\`, \`project_id\`) SELECT \`id\`, \`type\`, \`branch\`, ${name}, \`directory\`, \`extra\`, \`project_id\` FROM \`workspace\`;`, ) yield* tx.run(`DROP TABLE \`workspace\`;`) yield* tx.run(`ALTER TABLE \`__new_workspace\` RENAME TO \`workspace\`;`) diff --git a/packages/core/test/database-migration.test.ts b/packages/core/test/database-migration.test.ts index b381cc741..464ce2695 100644 --- a/packages/core/test/database-migration.test.ts +++ b/packages/core/test/database-migration.test.ts @@ -8,6 +8,7 @@ import { Effect, Layer } from "effect" import { eq, inArray, sql } from "drizzle-orm" import { DatabaseMigration } from "@opencode-ai/core/database/migration" import { migrations } from "@opencode-ai/core/database/migration.gen" +import workspaceNameMigration from "@opencode-ai/core/database/migration/20260410174513_workspace-name" import sessionUsageMigration from "@opencode-ai/core/database/migration/20260510033149_session_usage" import normalizeStoragePathsMigration from "@opencode-ai/core/database/migration/20260601010001_normalize_storage_paths" import sessionMessageProjectionOrderMigration from "@opencode-ai/core/database/migration/20260603040000_session_message_projection_order" @@ -38,6 +39,68 @@ const run = (effect: Effect.Effect) => const makeDb = EffectDrizzleSqlite.makeWithDefaults() describe("DatabaseMigration", () => { + test("defaults missing workspace names while preserving legacy workspace data", async () => { + await run( + Effect.gen(function* () { + const db = yield* makeDb + yield* db.run(sql` + CREATE TABLE workspace ( + id text PRIMARY KEY, + type text NOT NULL, + branch text, + directory text, + extra text, + project_id text NOT NULL + ) + `) + yield* db.run(sql` + INSERT INTO workspace (id, type, branch, directory, extra, project_id) + VALUES ('wrk_legacy', 'remote', 'main', '/repo', '{}', 'proj_legacy') + `) + + yield* DatabaseMigration.applyOnly(db, [workspaceNameMigration]) + + expect(yield* db.get(sql`SELECT id, name, branch, directory, extra FROM workspace`)).toEqual({ + id: "wrk_legacy", + name: "", + branch: "main", + directory: "/repo", + extra: "{}", + }) + }), + ) + }) + + test("imports unnamed legacy Drizzle journal entries by their actual migration timestamps", async () => { + await run( + Effect.gen(function* () { + const db = yield* makeDb + yield* db.run(sql`CREATE TABLE __drizzle_migrations (id integer PRIMARY KEY, hash text, created_at integer)`) + yield* db.run(sql` + INSERT INTO __drizzle_migrations (hash, created_at) + VALUES ('', ${Date.UTC(2026, 3, 10, 17, 45, 13)}) + `) + + yield* DatabaseMigration.applyOnly(db, [workspaceNameMigration]) + + expect(yield* db.all(sql`SELECT id FROM migration`)).toEqual([{ id: "20260410174513_workspace-name" }]) + }), + ) + }) + + test("rejects unknown legacy Drizzle journal timestamps instead of guessing completed migrations", async () => { + await expect( + run( + Effect.gen(function* () { + const db = yield* makeDb + yield* db.run(sql`CREATE TABLE __drizzle_migrations (id integer PRIMARY KEY, hash text, created_at integer)`) + yield* db.run(sql`INSERT INTO __drizzle_migrations (hash, created_at) VALUES ('', 1234567890000)`) + yield* DatabaseMigration.applyOnly(db, [workspaceNameMigration]) + }), + ), + ).rejects.toThrow("does not match any known migration") + }) + test("serializes concurrent embedded initialization for one database path", async () => { await using tmp = await tmpdir() const filename = path.join(tmp.path, "embedded.sqlite") From fd9bd448a2e68990e7aed3495e5590cecb934bfb Mon Sep 17 00:00:00 2001 From: Ravitez Dondeti Date: Tue, 25 Aug 2026 19:57:17 -0500 Subject: [PATCH 160/271] docs: mention Exa and Parallel as web search backends (#38395) --- packages/web/src/content/docs/cli.mdx | 1 + packages/web/src/content/docs/tools.mdx | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/web/src/content/docs/cli.mdx b/packages/web/src/content/docs/cli.mdx index 94d9ba3c7..4e4fea2b4 100644 --- a/packages/web/src/content/docs/cli.mdx +++ b/packages/web/src/content/docs/cli.mdx @@ -701,6 +701,7 @@ OpenCode can be configured using environment variables. | `OPENCODE_FAKE_VCS` | string | Fake VCS provider for testing purposes | | `OPENCODE_CLIENT` | string | Client identifier (defaults to `cli`) | | `OPENCODE_ENABLE_EXA` | boolean | Enable Exa web search tools | +| `OPENCODE_ENABLE_PARALLEL` | boolean | Enable Parallel web search tools | | `OPENCODE_SERVER_PASSWORD` | string | Enable basic auth for `serve`/`web` | | `OPENCODE_SERVER_USERNAME` | string | Override basic auth username (default `opencode`) | | `OPENCODE_MODELS_URL` | string | Custom URL for fetching models configuration | diff --git a/packages/web/src/content/docs/tools.mdx b/packages/web/src/content/docs/tools.mdx index 9989b4675..0f1085b05 100644 --- a/packages/web/src/content/docs/tools.mdx +++ b/packages/web/src/content/docs/tools.mdx @@ -257,12 +257,14 @@ Allows the LLM to fetch and read web pages. Useful for looking up documentation Search the web for information. :::note -This tool is only available when using the OpenCode or OpenCode Go provider, or when the `OPENCODE_ENABLE_EXA` environment variable is set to any truthy value (e.g., `true` or `1`). +This tool is only available when using the OpenCode or OpenCode Go provider, or when either the `OPENCODE_ENABLE_EXA` or `OPENCODE_ENABLE_PARALLEL` environment variable is set to any truthy value (e.g., `true` or `1`). To enable when launching OpenCode: ```bash OPENCODE_ENABLE_EXA=1 opencode +# or +OPENCODE_ENABLE_PARALLEL=1 opencode ``` ::: @@ -276,9 +278,9 @@ OPENCODE_ENABLE_EXA=1 opencode } ``` -Performs web searches using Exa AI to find relevant information online. Useful for researching topics, finding current events, or gathering information beyond the training data cutoff. +Performs web searches using Exa or Parallel to find relevant information online. Useful for researching topics, finding current events, or gathering information beyond the training data cutoff. -No API key is required — the tool connects directly to Exa AI's hosted MCP service without authentication. +No API key is required — the tool connects directly to the backend's hosted MCP service without authentication. :::tip Use `websearch` when you need to find information (discovery), and `webfetch` when you need to retrieve content from a specific URL (retrieval). From 2564a4f17251b825f0fe3cd80274f03bd7f0d23a Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 26 Aug 2026 02:31:32 -0400 Subject: [PATCH 161/271] remove map --- packages/stats/app/src/i18n.ts | 3 +- packages/stats/app/src/i18n/ar.ts | 1 - packages/stats/app/src/i18n/br.ts | 1 - packages/stats/app/src/i18n/da.ts | 1 - packages/stats/app/src/i18n/de.ts | 1 - packages/stats/app/src/i18n/es.ts | 1 - packages/stats/app/src/i18n/fr.ts | 1 - packages/stats/app/src/i18n/it.ts | 1 - packages/stats/app/src/i18n/ja.ts | 1 - packages/stats/app/src/i18n/ko.ts | 1 - packages/stats/app/src/i18n/no.ts | 1 - packages/stats/app/src/i18n/pl.ts | 1 - packages/stats/app/src/i18n/ru.ts | 1 - packages/stats/app/src/i18n/th.ts | 1 - packages/stats/app/src/i18n/tr.ts | 1 - packages/stats/app/src/i18n/uk.ts | 1 - packages/stats/app/src/i18n/zh.ts | 1 - packages/stats/app/src/i18n/zht.ts | 1 - packages/stats/app/src/routes/index.tsx | 124 +----------------- .../stats/app/src/routes/section-heading.tsx | 14 +- 20 files changed, 13 insertions(+), 145 deletions(-) diff --git a/packages/stats/app/src/i18n.ts b/packages/stats/app/src/i18n.ts index 1ba4f0298..b8e5d7335 100644 --- a/packages/stats/app/src/i18n.ts +++ b/packages/stats/app/src/i18n.ts @@ -126,8 +126,7 @@ const en = { "home.noMarketDescription": "No model rows matched this range.", "home.marketChart": "Market share by model author", "home.noData": "No data", - "home.geoTitle": "Geo Breakdown", - "home.geoDescription": "Tokens used by country.", + "home.geoTitle": "Geographic Breakdown", "home.noGeoTitle": "No geo data", "home.noGeoDescription": "No geo rows matched this range.", "home.worldMap": "World map of token usage by country", diff --git a/packages/stats/app/src/i18n/ar.ts b/packages/stats/app/src/i18n/ar.ts index de9bd48f3..733a789bf 100644 --- a/packages/stats/app/src/i18n/ar.ts +++ b/packages/stats/app/src/i18n/ar.ts @@ -108,7 +108,6 @@ export const dict = { "home.marketChart": "حصة السوق حسب مؤلف النموذج", "home.noData": "لا توجد بيانات", "home.geoTitle": "التوزيع الجغرافي", - "home.geoDescription": "الرموز المستخدمة حسب البلد.", "home.noGeoTitle": "لا توجد بيانات جغرافية", "home.noGeoDescription": "لم تطابق أي صفوف جغرافية هذا النطاق.", "home.worldMap": "خريطة عالمية لاستخدام الرموز حسب البلد", diff --git a/packages/stats/app/src/i18n/br.ts b/packages/stats/app/src/i18n/br.ts index d129f4557..7c0dec74f 100644 --- a/packages/stats/app/src/i18n/br.ts +++ b/packages/stats/app/src/i18n/br.ts @@ -109,7 +109,6 @@ export const dict = { "home.marketChart": "Participação de mercado por autor do modelo", "home.noData": "Sem dados", "home.geoTitle": "Distribuição geográfica", - "home.geoDescription": "Tokens usados por país.", "home.noGeoTitle": "Sem dados geográficos", "home.noGeoDescription": "Nenhuma linha geográfica correspondeu a este intervalo.", "home.worldMap": "Mapa-múndi do uso de tokens por país", diff --git a/packages/stats/app/src/i18n/da.ts b/packages/stats/app/src/i18n/da.ts index 58298bbb2..c564ae33b 100644 --- a/packages/stats/app/src/i18n/da.ts +++ b/packages/stats/app/src/i18n/da.ts @@ -109,7 +109,6 @@ export const dict = { "home.marketChart": "Markedsandel efter modelforfatter", "home.noData": "Ingen data", "home.geoTitle": "Geografisk opdeling", - "home.geoDescription": "Tokens brugt efter land.", "home.noGeoTitle": "Ingen geodata", "home.noGeoDescription": "Ingen georækker matchede dette interval.", "home.worldMap": "Verdenskort over tokenbrug efter land", diff --git a/packages/stats/app/src/i18n/de.ts b/packages/stats/app/src/i18n/de.ts index 44e83026c..71d79a4c2 100644 --- a/packages/stats/app/src/i18n/de.ts +++ b/packages/stats/app/src/i18n/de.ts @@ -109,7 +109,6 @@ export const dict = { "home.marketChart": "Marktanteil nach Modellautor", "home.noData": "Keine Daten", "home.geoTitle": "Geografische Aufschlüsselung", - "home.geoDescription": "Nach Land verwendete Tokens.", "home.noGeoTitle": "Keine Geodaten", "home.noGeoDescription": "Keine Geozeilen passten zu diesem Zeitraum.", "home.worldMap": "Weltkarte der Tokennutzung nach Land", diff --git a/packages/stats/app/src/i18n/es.ts b/packages/stats/app/src/i18n/es.ts index 09d90d79a..a26d83e23 100644 --- a/packages/stats/app/src/i18n/es.ts +++ b/packages/stats/app/src/i18n/es.ts @@ -108,7 +108,6 @@ export const dict = { "home.marketChart": "Cuota de mercado por autor del modelo", "home.noData": "Sin datos", "home.geoTitle": "Desglose geográfico", - "home.geoDescription": "Tokens usados por país.", "home.noGeoTitle": "Sin datos geográficos", "home.noGeoDescription": "Ninguna fila geográfica coincidió con este rango.", "home.worldMap": "Mapa mundial del uso de tokens por país", diff --git a/packages/stats/app/src/i18n/fr.ts b/packages/stats/app/src/i18n/fr.ts index bb87d0566..64b0d561f 100644 --- a/packages/stats/app/src/i18n/fr.ts +++ b/packages/stats/app/src/i18n/fr.ts @@ -109,7 +109,6 @@ export const dict = { "home.marketChart": "Part de marché par auteur de modèle", "home.noData": "Aucune donnée", "home.geoTitle": "Répartition géographique", - "home.geoDescription": "Tokens utilisés par pays.", "home.noGeoTitle": "Aucune donnée géographique", "home.noGeoDescription": "Aucune ligne géographique ne correspondait à cette période.", "home.worldMap": "Carte mondiale de l'utilisation des tokens par pays", diff --git a/packages/stats/app/src/i18n/it.ts b/packages/stats/app/src/i18n/it.ts index b815f1681..dc9a25c66 100644 --- a/packages/stats/app/src/i18n/it.ts +++ b/packages/stats/app/src/i18n/it.ts @@ -109,7 +109,6 @@ export const dict = { "home.marketChart": "Quota di mercato per autore del modello", "home.noData": "Nessun dato", "home.geoTitle": "Ripartizione geografica", - "home.geoDescription": "Token usati per paese.", "home.noGeoTitle": "Nessun dato geografico", "home.noGeoDescription": "Nessuna riga geografica corrispondeva a questo intervallo.", "home.worldMap": "Mappa mondiale dell'utilizzo dei token per paese", diff --git a/packages/stats/app/src/i18n/ja.ts b/packages/stats/app/src/i18n/ja.ts index 57db5511a..707cdea91 100644 --- a/packages/stats/app/src/i18n/ja.ts +++ b/packages/stats/app/src/i18n/ja.ts @@ -111,7 +111,6 @@ export const dict = { "home.marketChart": "モデル作者別マーケットシェア", "home.noData": "データなし", "home.geoTitle": "地域別内訳", - "home.geoDescription": "国別のトークン使用量。", "home.noGeoTitle": "地域データがありません", "home.noGeoDescription": "この期間に一致する地域行はありません。", "home.worldMap": "国別トークン使用量の世界地図", diff --git a/packages/stats/app/src/i18n/ko.ts b/packages/stats/app/src/i18n/ko.ts index 92003e022..693123fd8 100644 --- a/packages/stats/app/src/i18n/ko.ts +++ b/packages/stats/app/src/i18n/ko.ts @@ -111,7 +111,6 @@ export const dict = { "home.marketChart": "모델 작성자별 시장 점유율", "home.noData": "데이터 없음", "home.geoTitle": "지역별 분포", - "home.geoDescription": "국가별 사용 토큰입니다.", "home.noGeoTitle": "지역 데이터 없음", "home.noGeoDescription": "이 범위에 맞는 지역 행이 없습니다.", "home.worldMap": "국가별 토큰 사용량 세계 지도", diff --git a/packages/stats/app/src/i18n/no.ts b/packages/stats/app/src/i18n/no.ts index bdc3d80e3..54595422f 100644 --- a/packages/stats/app/src/i18n/no.ts +++ b/packages/stats/app/src/i18n/no.ts @@ -109,7 +109,6 @@ export const dict = { "home.marketChart": "Markedsandel etter modellforfatter", "home.noData": "Ingen data", "home.geoTitle": "Geografisk fordeling", - "home.geoDescription": "Tokens brukt etter land.", "home.noGeoTitle": "Ingen geodata", "home.noGeoDescription": "Ingen georader matchet dette intervallet.", "home.worldMap": "Verdenskart over tokenbruk etter land", diff --git a/packages/stats/app/src/i18n/pl.ts b/packages/stats/app/src/i18n/pl.ts index 5bf944bcd..bd1e486b0 100644 --- a/packages/stats/app/src/i18n/pl.ts +++ b/packages/stats/app/src/i18n/pl.ts @@ -108,7 +108,6 @@ export const dict = { "home.marketChart": "Udział w rynku według autora modelu", "home.noData": "Brak danych", "home.geoTitle": "Podział geograficzny", - "home.geoDescription": "Tokeny użyte według kraju.", "home.noGeoTitle": "Brak danych geograficznych", "home.noGeoDescription": "Żadne wiersze geograficzne nie pasowały do tego zakresu.", "home.worldMap": "Mapa świata użycia tokenów według kraju", diff --git a/packages/stats/app/src/i18n/ru.ts b/packages/stats/app/src/i18n/ru.ts index a1422c8f7..984cd36f2 100644 --- a/packages/stats/app/src/i18n/ru.ts +++ b/packages/stats/app/src/i18n/ru.ts @@ -109,7 +109,6 @@ export const dict = { "home.marketChart": "Доля рынка по автору модели", "home.noData": "Нет данных", "home.geoTitle": "Географический разрез", - "home.geoDescription": "Токены, использованные по странам.", "home.noGeoTitle": "Нет геоданных", "home.noGeoDescription": "Нет географических строк для этого диапазона.", "home.worldMap": "Карта мира использования токенов по странам", diff --git a/packages/stats/app/src/i18n/th.ts b/packages/stats/app/src/i18n/th.ts index bfa933384..00efb26c6 100644 --- a/packages/stats/app/src/i18n/th.ts +++ b/packages/stats/app/src/i18n/th.ts @@ -110,7 +110,6 @@ export const dict = { "home.marketChart": "ส่วนแบ่งตลาดตามผู้สร้างโมเดล", "home.noData": "ไม่มีข้อมูล", "home.geoTitle": "แยกตามภูมิศาสตร์", - "home.geoDescription": "token ที่ใช้แยกตามประเทศ", "home.noGeoTitle": "ไม่มีข้อมูลภูมิศาสตร์", "home.noGeoDescription": "ไม่มีแถวภูมิศาสตร์ที่ตรงกับช่วงเวลานี้", "home.worldMap": "แผนที่โลกของการใช้ token แยกตามประเทศ", diff --git a/packages/stats/app/src/i18n/tr.ts b/packages/stats/app/src/i18n/tr.ts index baa992f23..e4f8d34c1 100644 --- a/packages/stats/app/src/i18n/tr.ts +++ b/packages/stats/app/src/i18n/tr.ts @@ -109,7 +109,6 @@ export const dict = { "home.marketChart": "Model yazarına göre pazar payı", "home.noData": "Veri yok", "home.geoTitle": "Coğrafi Dağılım", - "home.geoDescription": "Ülkeye göre kullanılan tokenlar.", "home.noGeoTitle": "Coğrafi veri yok", "home.noGeoDescription": "Bu aralıkla eşleşen coğrafi satır yok.", "home.worldMap": "Ülkeye göre token kullanımının dünya haritası", diff --git a/packages/stats/app/src/i18n/uk.ts b/packages/stats/app/src/i18n/uk.ts index 5a6eb1c67..e35dd34a9 100644 --- a/packages/stats/app/src/i18n/uk.ts +++ b/packages/stats/app/src/i18n/uk.ts @@ -109,7 +109,6 @@ export const dict = { "home.marketChart": "Частка ринку за автором моделі", "home.noData": "Немає даних", "home.geoTitle": "Географічний розріз", - "home.geoDescription": "Токени, використані за країнами.", "home.noGeoTitle": "Немає геоданих", "home.noGeoDescription": "Жодні географічні рядки не відповідали цьому діапазону.", "home.worldMap": "Карта світу використання токенів за країнами", diff --git a/packages/stats/app/src/i18n/zh.ts b/packages/stats/app/src/i18n/zh.ts index 628a4b31b..4d2f3768b 100644 --- a/packages/stats/app/src/i18n/zh.ts +++ b/packages/stats/app/src/i18n/zh.ts @@ -110,7 +110,6 @@ export const dict = { "home.marketChart": "按模型作者显示的市场份额", "home.noData": "无数据", "home.geoTitle": "地理分布", - "home.geoDescription": "按国家/地区统计的 token 使用量。", "home.noGeoTitle": "无地理数据", "home.noGeoDescription": "没有符合该时间范围的地理行。", "home.worldMap": "按国家/地区显示 token 使用量的世界地图", diff --git a/packages/stats/app/src/i18n/zht.ts b/packages/stats/app/src/i18n/zht.ts index b8de598c7..9545748b6 100644 --- a/packages/stats/app/src/i18n/zht.ts +++ b/packages/stats/app/src/i18n/zht.ts @@ -110,7 +110,6 @@ export const dict = { "home.marketChart": "按模型作者顯示的市場佔有率", "home.noData": "無數據", "home.geoTitle": "地理分布", - "home.geoDescription": "按國家/地區統計的 token 使用量。", "home.noGeoTitle": "無地理數據", "home.noGeoDescription": "沒有符合該時間範圍的地理列。", "home.worldMap": "按國家/地區顯示 token 使用量的世界地圖", diff --git a/packages/stats/app/src/routes/index.tsx b/packages/stats/app/src/routes/index.tsx index f984cb739..30491c898 100644 --- a/packages/stats/app/src/routes/index.tsx +++ b/packages/stats/app/src/routes/index.tsx @@ -21,7 +21,6 @@ import { useI18n } from "../context/i18n" import { useLanguage } from "../context/language" import { localizedUrl } from "../lib/language" import { findModelCatalogEntry, loadModelCatalog, type ModelCatalog } from "./model-catalog" -import { geoMapHeight, geoMapWidth, worldBorderPath, worldCountryMarkers, worldCountryPaths } from "./geo-map" import { SectionHeading } from "./section-heading" import { setStatsPageCacheHeaders } from "./stats-cache" import { ComparisonCardsSection, uniqueComparisonPairs, type ComparisonModelRef } from "./compare-cards" @@ -317,7 +316,7 @@ function ChartSection(props: { ) } -function SectionTitle(props: { id: string; title: string; description: string }) { +function SectionTitle(props: { id: string; title: string; description?: string }) { return } @@ -1074,20 +1073,9 @@ function MarketShareList(props: { function GeoBreakdownSection(props: { data: CountryEntry[] }) { const i18n = useI18n() - const language = useLanguage() const [activeCountry, setActiveCountry] = createSignal() - const countryById = createMemo( - () => - new Map( - props.data.flatMap((country) => { - const id = countryNumericId(country.country) - return id ? [[id, country] as const] : [] - }), - ), - ) const maxTokens = createMemo(() => Math.max(0, ...props.data.map((country) => country.tokens)) || 1) const topCountries = createMemo(() => props.data.slice(0, 15)) - const active = createMemo(() => props.data.find((country) => country.country === activeCountry()) ?? props.data[0]) return (
        - + 0} fallback={} >
        -
        - - - {(country) => ( -
        - #{String(country().rank).padStart(2, "0")} - - {formatCountryName(country().country, language.tag(language.locale()), i18n.t("home.unknown"))} - -

        - {formatGeoTokens(country().tokens)} - {formatGeoShare(country().share)} -

        -
        - )} -
        -
        - activeCountry: string | undefined - maxTokens: number - onActiveCountryChange: (country: string | undefined) => void -}) { - const i18n = useI18n() - const opacityScale = createMemo(() => scaleSqrt().domain([0, props.maxTokens]).range([0.26, 0.96]).clamp(true)) - const countryOpacity = (country: CountryEntry | undefined) => { - if (!country || country.tokens <= 0) return 0 - const opacity = opacityScale()(country.tokens) - if (props.activeCountry === country.country) return 1 - if (!props.activeCountry) return opacity - return Math.max(0.18, opacity * 0.36) - } - - return ( - - {i18n.t("home.geoMapTitle")} - - - {(country) => { - const entry = () => props.countryById.get(country.id) - return ( - - - - - {(country) => { - const entry = () => props.countryById.get(country.id) - return ( - - - ) - }} - - - - - ) -} - function GeoCountryList(props: { data: CountryEntry[] activeCountry: string | undefined diff --git a/packages/stats/app/src/routes/section-heading.tsx b/packages/stats/app/src/routes/section-heading.tsx index ea6f80c79..75f4b7aa3 100644 --- a/packages/stats/app/src/routes/section-heading.tsx +++ b/packages/stats/app/src/routes/section-heading.tsx @@ -1,7 +1,7 @@ export function SectionHeading(props: { href: string title: string - description: string + description?: string as?: "h2" | "p" slot?: string }) { @@ -12,10 +12,16 @@ export function SectionHeading(props: { - {props.title}. + {props.title} + {props.description ? "." : ""} - {" "} - {props.description} + + {props.description && ( + <> + {" "} + {props.description} + + )} ) From 3f31551fad2b04391ea2a1cc383c8788382fc2b0 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 26 Aug 2026 03:31:48 -0400 Subject: [PATCH 162/271] fix map inaccuracy --- bun.lock | 23 ---- packages/stats/app/package.json | 9 +- packages/stats/app/src/i18n.ts | 3 - packages/stats/app/src/i18n/ar.ts | 3 - packages/stats/app/src/i18n/br.ts | 3 - packages/stats/app/src/i18n/da.ts | 3 - packages/stats/app/src/i18n/de.ts | 3 - packages/stats/app/src/i18n/es.ts | 3 - packages/stats/app/src/i18n/fr.ts | 3 - packages/stats/app/src/i18n/it.ts | 3 - packages/stats/app/src/i18n/ja.ts | 3 - packages/stats/app/src/i18n/ko.ts | 3 - packages/stats/app/src/i18n/no.ts | 3 - packages/stats/app/src/i18n/pl.ts | 3 - packages/stats/app/src/i18n/ru.ts | 3 - packages/stats/app/src/i18n/th.ts | 3 - packages/stats/app/src/i18n/tr.ts | 3 - packages/stats/app/src/i18n/uk.ts | 3 - packages/stats/app/src/i18n/zh.ts | 3 - packages/stats/app/src/i18n/zht.ts | 3 - .../stats/app/src/routes/[lab]/[model].tsx | 118 ----------------- packages/stats/app/src/routes/geo-map.ts | 120 ----------------- packages/stats/app/src/routes/index.css | 122 ------------------ 23 files changed, 1 insertion(+), 445 deletions(-) delete mode 100644 packages/stats/app/src/routes/geo-map.ts diff --git a/bun.lock b/bun.lock index 7991ff65c..6a066555b 100644 --- a/bun.lock +++ b/bun.lock @@ -858,25 +858,18 @@ "@solidjs/meta": "catalog:", "@solidjs/router": "catalog:", "@solidjs/start": "catalog:", - "d3-geo": "3.1.1", "d3-scale": "4.0.2", "effect": "catalog:", "i18n-iso-countries": "7.14.0", "nitro": "3.0.1-alpha.1", "solid-js": "catalog:", "sst": "catalog:", - "topojson-client": "3.1.0", "vite": "catalog:", - "world-atlas": "2.0.2", }, "devDependencies": { "@cloudflare/workers-types": "catalog:", "@types/bun": "catalog:", - "@types/d3-geo": "3.1.0", "@types/d3-scale": "4.0.9", - "@types/geojson": "7946.0.16", - "@types/topojson-client": "3.1.5", - "@types/topojson-specification": "1.0.5", "@typescript/native-preview": "catalog:", "typescript": "catalog:", }, @@ -2843,8 +2836,6 @@ "@types/cross-spawn": ["@types/cross-spawn@6.0.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA=="], - "@types/d3-geo": ["@types/d3-geo@3.1.0", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ=="], - "@types/d3-scale": ["@types/d3-scale@4.0.9", "", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="], "@types/d3-time": ["@types/d3-time@3.0.4", "", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="], @@ -2865,8 +2856,6 @@ "@types/fs-extra": ["@types/fs-extra@9.0.13", "", { "dependencies": { "@types/node": "*" } }, "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA=="], - "@types/geojson": ["@types/geojson@7946.0.16", "", {}, "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="], - "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], "@types/http-cache-semantics": ["@types/http-cache-semantics@4.2.0", "", {}, "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q=="], @@ -2945,10 +2934,6 @@ "@types/ssri": ["@types/ssri@7.1.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw=="], - "@types/topojson-client": ["@types/topojson-client@3.1.5", "", { "dependencies": { "@types/geojson": "*", "@types/topojson-specification": "*" } }, "sha512-C79rySTyPxnQNNguTZNI1Ct4D7IXgvyAs3p9HPecnl6mNrJ5+UhvGNYcZfpROYV2lMHI48kJPxwR+F9C6c7nmw=="], - - "@types/topojson-specification": ["@types/topojson-specification@1.0.5", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-C7KvcQh+C2nr6Y2Ub4YfgvWvWCgP2nOQMtfhlnwsRL4pYmmwzBS7HclGiS87eQfDOU/DLQpX6GEscviaz4yLIQ=="], - "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], "@types/tsscmp": ["@types/tsscmp@1.0.2", "", {}, "sha512-cy7BRSU8GYYgxjcx0Py+8lo5MthuDhlyu076KUcYzVNXL23luYgRHkMG2fIFEc6neckeh/ntP82mw+U4QjZq+g=="], @@ -3437,8 +3422,6 @@ "d3-format": ["d3-format@3.1.2", "", {}, "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg=="], - "d3-geo": ["d3-geo@3.1.1", "", { "dependencies": { "d3-array": "2.5.0 - 3" } }, "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q=="], - "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], "d3-scale": ["d3-scale@4.0.2", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], @@ -5317,8 +5300,6 @@ "toolbeam-docs-theme": ["toolbeam-docs-theme@0.4.8", "", { "peerDependencies": { "@astrojs/starlight": "^0.34.3", "astro": "^5.7.13" } }, "sha512-b+5ynEFp4Woe5a22hzNQm42lD23t13ZMihVxHbzjA50zdcM9aOSJTIjdJ0PDSd4/50HbBXcpHiQsz6rM4N88ww=="], - "topojson-client": ["topojson-client@3.1.0", "", { "dependencies": { "commander": "2" }, "bin": { "topo2geo": "bin/topo2geo", "topomerge": "bin/topomerge", "topoquantize": "bin/topoquantize" } }, "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw=="], - "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], "traverse": ["traverse@0.3.9", "", {}, "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ=="], @@ -5561,8 +5542,6 @@ "workerd": ["workerd@1.20251118.0", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20251118.0", "@cloudflare/workerd-darwin-arm64": "1.20251118.0", "@cloudflare/workerd-linux-64": "1.20251118.0", "@cloudflare/workerd-linux-arm64": "1.20251118.0", "@cloudflare/workerd-windows-64": "1.20251118.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-Om5ns0Lyx/LKtYI04IV0bjIrkBgoFNg0p6urzr2asekJlfP18RqFzyqMFZKf0i9Gnjtz/JfAS/Ol6tjCe5JJsQ=="], - "world-atlas": ["world-atlas@2.0.2", "", {}, "sha512-IXfV0qwlKXpckz1FhwXVwKRjiIhOnWttOskm5CtxMsjgE/MXAYRHWJqgXOpM8IkcPBoXnyTU5lFHcYa5ChG0LQ=="], - "wrangler": ["wrangler@4.50.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", "@cloudflare/unenv-preset": "2.7.11", "blake3-wasm": "2.1.5", "esbuild": "0.25.4", "miniflare": "4.20251118.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20251118.0" }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20251118.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-+nuZuHZxDdKmAyXOSrHlciGshCoAPiy5dM+t6mEohWm7HpXvTHmWQGUf/na9jjWlWJHCJYOWzkA1P5HBJqrIEA=="], "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], @@ -6515,8 +6494,6 @@ "tiny-async-pool/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], - "topojson-client/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], - "tree-sitter-bash/node-addon-api": ["node-addon-api@8.8.0", "", {}, "sha512-c5Ko1fZJIJmzhFIkhRN76WTq+fC6tWnGy9CXA0fA+XygsWZmEwG8vmbkNqxMyoaa0Tin4djul49NzdVcJJcjeA=="], "tw-to-css/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index 1bf1f6738..472999056 100644 --- a/packages/stats/app/package.json +++ b/packages/stats/app/package.json @@ -19,25 +19,18 @@ "@solidjs/meta": "catalog:", "@solidjs/router": "catalog:", "@solidjs/start": "catalog:", - "d3-geo": "3.1.1", "d3-scale": "4.0.2", "effect": "catalog:", "i18n-iso-countries": "7.14.0", "nitro": "3.0.1-alpha.1", "solid-js": "catalog:", "sst": "catalog:", - "topojson-client": "3.1.0", - "vite": "catalog:", - "world-atlas": "2.0.2" + "vite": "catalog:" }, "devDependencies": { "@cloudflare/workers-types": "catalog:", "@types/bun": "catalog:", - "@types/d3-geo": "3.1.0", "@types/d3-scale": "4.0.9", - "@types/geojson": "7946.0.16", - "@types/topojson-client": "3.1.5", - "@types/topojson-specification": "1.0.5", "@typescript/native-preview": "catalog:", "typescript": "catalog:" }, diff --git a/packages/stats/app/src/i18n.ts b/packages/stats/app/src/i18n.ts index b8e5d7335..e846ce508 100644 --- a/packages/stats/app/src/i18n.ts +++ b/packages/stats/app/src/i18n.ts @@ -129,8 +129,6 @@ const en = { "home.geoTitle": "Geographic Breakdown", "home.noGeoTitle": "No geo data", "home.noGeoDescription": "No geo rows matched this range.", - "home.worldMap": "World map of token usage by country", - "home.geoMapTitle": "Geo Breakdown map", "home.unknown": "Unknown", "home.tokenCostTitle": "Token Cost", "home.tokenCostDescription": "Price per 1M tokens.", @@ -238,7 +236,6 @@ const en = { "model.geoDescription": "OpenCode model tokens used by country.", "model.noGeoTitle": "No geo data", "model.noGeoDescription": "No OpenCode geo rows matched this model.", - "model.worldMap": "World map of model token usage by country", "model.peersDescription": "Nearby models by recent OpenCode token volume.", "model.noPeersTitle": "No peers", "model.noPeersDescription": "Peer rankings appear after usage lands.", diff --git a/packages/stats/app/src/i18n/ar.ts b/packages/stats/app/src/i18n/ar.ts index 733a789bf..1fb489117 100644 --- a/packages/stats/app/src/i18n/ar.ts +++ b/packages/stats/app/src/i18n/ar.ts @@ -110,8 +110,6 @@ export const dict = { "home.geoTitle": "التوزيع الجغرافي", "home.noGeoTitle": "لا توجد بيانات جغرافية", "home.noGeoDescription": "لم تطابق أي صفوف جغرافية هذا النطاق.", - "home.worldMap": "خريطة عالمية لاستخدام الرموز حسب البلد", - "home.geoMapTitle": "خريطة التوزيع الجغرافي", "home.unknown": "غير معروف", "home.tokenCostTitle": "تكلفة الرموز", "home.tokenCostDescription": "السعر لكل مليون رمز.", @@ -218,7 +216,6 @@ export const dict = { "model.geoDescription": "رموز نموذج OpenCode المستخدمة حسب البلد.", "model.noGeoTitle": "لا توجد بيانات جغرافية", "model.noGeoDescription": "لم تطابق أي صفوف جغرافية في OpenCode هذا النموذج.", - "model.worldMap": "خريطة عالمية لاستخدام رموز النموذج حسب البلد", "model.peersDescription": "نماذج قريبة حسب حجم رموز OpenCode الأخير.", "model.noPeersTitle": "لا توجد نماذج مشابهة", "model.noPeersDescription": "تظهر ترتيبات النماذج المشابهة بعد وصول الاستخدام.", diff --git a/packages/stats/app/src/i18n/br.ts b/packages/stats/app/src/i18n/br.ts index 7c0dec74f..4ef584ce6 100644 --- a/packages/stats/app/src/i18n/br.ts +++ b/packages/stats/app/src/i18n/br.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Distribuição geográfica", "home.noGeoTitle": "Sem dados geográficos", "home.noGeoDescription": "Nenhuma linha geográfica correspondeu a este intervalo.", - "home.worldMap": "Mapa-múndi do uso de tokens por país", - "home.geoMapTitle": "Mapa da distribuição geográfica", "home.unknown": "Desconhecido", "home.tokenCostTitle": "Custo de tokens", "home.tokenCostDescription": "Preço por 1 milhão de tokens.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "Tokens do modelo OpenCode usados por país.", "model.noGeoTitle": "Sem dados geográficos", "model.noGeoDescription": "Nenhuma linha geográfica do OpenCode correspondeu a este modelo.", - "model.worldMap": "Mapa-múndi do uso de tokens do modelo por país", "model.peersDescription": "Modelos próximos por volume recente de tokens do OpenCode.", "model.noPeersTitle": "Sem pares", "model.noPeersDescription": "Os rankings de pares aparecem depois que o uso chega.", diff --git a/packages/stats/app/src/i18n/da.ts b/packages/stats/app/src/i18n/da.ts index c564ae33b..1da9eb733 100644 --- a/packages/stats/app/src/i18n/da.ts +++ b/packages/stats/app/src/i18n/da.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Geografisk opdeling", "home.noGeoTitle": "Ingen geodata", "home.noGeoDescription": "Ingen georækker matchede dette interval.", - "home.worldMap": "Verdenskort over tokenbrug efter land", - "home.geoMapTitle": "Kort over geografisk opdeling", "home.unknown": "Ukendt", "home.tokenCostTitle": "Tokenomkostning", "home.tokenCostDescription": "Pris pr. 1 mio. tokens.", @@ -219,7 +217,6 @@ export const dict = { "model.geoDescription": "OpenCode-modeltokens brugt efter land.", "model.noGeoTitle": "Ingen geodata", "model.noGeoDescription": "Ingen OpenCode-georækker matchede denne model.", - "model.worldMap": "Verdenskort over modeltokenbrug efter land", "model.peersDescription": "Nærliggende modeller efter seneste OpenCode-tokenvolumen.", "model.noPeersTitle": "Ingen lignende modeller", "model.noPeersDescription": "Ranglister over lignende modeller vises, når brug lander.", diff --git a/packages/stats/app/src/i18n/de.ts b/packages/stats/app/src/i18n/de.ts index 71d79a4c2..21d131cad 100644 --- a/packages/stats/app/src/i18n/de.ts +++ b/packages/stats/app/src/i18n/de.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Geografische Aufschlüsselung", "home.noGeoTitle": "Keine Geodaten", "home.noGeoDescription": "Keine Geozeilen passten zu diesem Zeitraum.", - "home.worldMap": "Weltkarte der Tokennutzung nach Land", - "home.geoMapTitle": "Karte der geografischen Aufschlüsselung", "home.unknown": "Unbekannt", "home.tokenCostTitle": "Tokenkosten", "home.tokenCostDescription": "Preis pro 1 Mio. Tokens.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "OpenCode-Modelltokens nach Land.", "model.noGeoTitle": "Keine Geodaten", "model.noGeoDescription": "Keine OpenCode-Geozeilen passten zu diesem Modell.", - "model.worldMap": "Weltkarte der Modelltokennutzung nach Land", "model.peersDescription": "Nahe Modelle nach aktuellem OpenCode-Tokenvolumen.", "model.noPeersTitle": "Keine Vergleichsmodelle", "model.noPeersDescription": "Vergleichsrankings erscheinen, nachdem Nutzung eingegangen ist.", diff --git a/packages/stats/app/src/i18n/es.ts b/packages/stats/app/src/i18n/es.ts index a26d83e23..92988954b 100644 --- a/packages/stats/app/src/i18n/es.ts +++ b/packages/stats/app/src/i18n/es.ts @@ -110,8 +110,6 @@ export const dict = { "home.geoTitle": "Desglose geográfico", "home.noGeoTitle": "Sin datos geográficos", "home.noGeoDescription": "Ninguna fila geográfica coincidió con este rango.", - "home.worldMap": "Mapa mundial del uso de tokens por país", - "home.geoMapTitle": "Mapa de desglose geográfico", "home.unknown": "Desconocido", "home.tokenCostTitle": "Coste de tokens", "home.tokenCostDescription": "Precio por 1 M de tokens.", @@ -220,7 +218,6 @@ export const dict = { "model.geoDescription": "Tokens del modelo de OpenCode usados por país.", "model.noGeoTitle": "Sin datos geográficos", "model.noGeoDescription": "Ninguna fila geográfica de OpenCode coincidió con este modelo.", - "model.worldMap": "Mapa mundial del uso de tokens del modelo por país", "model.peersDescription": "Modelos cercanos por volumen reciente de tokens de OpenCode.", "model.noPeersTitle": "Sin modelos similares", "model.noPeersDescription": "Las clasificaciones de modelos similares aparecen después de que llegue uso.", diff --git a/packages/stats/app/src/i18n/fr.ts b/packages/stats/app/src/i18n/fr.ts index 64b0d561f..3bd325680 100644 --- a/packages/stats/app/src/i18n/fr.ts +++ b/packages/stats/app/src/i18n/fr.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Répartition géographique", "home.noGeoTitle": "Aucune donnée géographique", "home.noGeoDescription": "Aucune ligne géographique ne correspondait à cette période.", - "home.worldMap": "Carte mondiale de l'utilisation des tokens par pays", - "home.geoMapTitle": "Carte de répartition géographique", "home.unknown": "Inconnu", "home.tokenCostTitle": "Coût des tokens", "home.tokenCostDescription": "Prix par million de tokens.", @@ -222,7 +220,6 @@ export const dict = { "model.geoDescription": "Tokens du modèle OpenCode utilisés par pays.", "model.noGeoTitle": "Aucune donnée géographique", "model.noGeoDescription": "Aucune ligne géographique OpenCode ne correspondait à ce modèle.", - "model.worldMap": "Carte mondiale de l'utilisation des tokens du modèle par pays", "model.peersDescription": "Modèles proches par volume récent de tokens OpenCode.", "model.noPeersTitle": "Aucun modèle proche", "model.noPeersDescription": "Les classements de modèles proches apparaissent après l'arrivée de l'utilisation.", diff --git a/packages/stats/app/src/i18n/it.ts b/packages/stats/app/src/i18n/it.ts index dc9a25c66..f0ccde501 100644 --- a/packages/stats/app/src/i18n/it.ts +++ b/packages/stats/app/src/i18n/it.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Ripartizione geografica", "home.noGeoTitle": "Nessun dato geografico", "home.noGeoDescription": "Nessuna riga geografica corrispondeva a questo intervallo.", - "home.worldMap": "Mappa mondiale dell'utilizzo dei token per paese", - "home.geoMapTitle": "Mappa della ripartizione geografica", "home.unknown": "Sconosciuto", "home.tokenCostTitle": "Costo token", "home.tokenCostDescription": "Prezzo per 1 M di token.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "Token del modello OpenCode usati per paese.", "model.noGeoTitle": "Nessun dato geografico", "model.noGeoDescription": "Nessuna riga geografica OpenCode corrispondeva a questo modello.", - "model.worldMap": "Mappa mondiale dell'utilizzo dei token del modello per paese", "model.peersDescription": "Modelli vicini per volume recente di token OpenCode.", "model.noPeersTitle": "Nessun modello simile", "model.noPeersDescription": "Le classifiche dei modelli simili appaiono dopo l'arrivo dell'utilizzo.", diff --git a/packages/stats/app/src/i18n/ja.ts b/packages/stats/app/src/i18n/ja.ts index 707cdea91..beac7cabc 100644 --- a/packages/stats/app/src/i18n/ja.ts +++ b/packages/stats/app/src/i18n/ja.ts @@ -113,8 +113,6 @@ export const dict = { "home.geoTitle": "地域別内訳", "home.noGeoTitle": "地域データがありません", "home.noGeoDescription": "この期間に一致する地域行はありません。", - "home.worldMap": "国別トークン使用量の世界地図", - "home.geoMapTitle": "地域別内訳マップ", "home.unknown": "不明", "home.tokenCostTitle": "トークンコスト", "home.tokenCostDescription": "100万トークンあたりの価格。", @@ -222,7 +220,6 @@ export const dict = { "model.geoDescription": "国別のOpenCodeモデルのトークン使用量。", "model.noGeoTitle": "地域データがありません", "model.noGeoDescription": "このモデルに一致するOpenCode地域行はありません。", - "model.worldMap": "国別モデル別トークン使用量の世界地図", "model.peersDescription": "最近のOpenCodeトークン量が近いモデル。", "model.noPeersTitle": "類似モデルがありません", "model.noPeersDescription": "使用量が届くと類似モデルのランキングが表示されます。", diff --git a/packages/stats/app/src/i18n/ko.ts b/packages/stats/app/src/i18n/ko.ts index 693123fd8..ac5293125 100644 --- a/packages/stats/app/src/i18n/ko.ts +++ b/packages/stats/app/src/i18n/ko.ts @@ -113,8 +113,6 @@ export const dict = { "home.geoTitle": "지역별 분포", "home.noGeoTitle": "지역 데이터 없음", "home.noGeoDescription": "이 범위에 맞는 지역 행이 없습니다.", - "home.worldMap": "국가별 토큰 사용량 세계 지도", - "home.geoMapTitle": "지역별 분포 지도", "home.unknown": "알 수 없음", "home.tokenCostTitle": "토큰 비용", "home.tokenCostDescription": "100만 토큰당 가격입니다.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "국가별 OpenCode 모델 토큰 사용량입니다.", "model.noGeoTitle": "지역 데이터 없음", "model.noGeoDescription": "이 모델과 일치하는 OpenCode 지역 행이 없습니다.", - "model.worldMap": "국가별 모델 토큰 사용량 세계 지도", "model.peersDescription": "최근 OpenCode 토큰 볼륨이 가까운 모델입니다.", "model.noPeersTitle": "비슷한 모델 없음", "model.noPeersDescription": "사용량이 들어오면 비슷한 모델 순위가 표시됩니다.", diff --git a/packages/stats/app/src/i18n/no.ts b/packages/stats/app/src/i18n/no.ts index 54595422f..e64617e40 100644 --- a/packages/stats/app/src/i18n/no.ts +++ b/packages/stats/app/src/i18n/no.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Geografisk fordeling", "home.noGeoTitle": "Ingen geodata", "home.noGeoDescription": "Ingen georader matchet dette intervallet.", - "home.worldMap": "Verdenskart over tokenbruk etter land", - "home.geoMapTitle": "Kart over geografisk fordeling", "home.unknown": "Ukjent", "home.tokenCostTitle": "Tokenkostnad", "home.tokenCostDescription": "Pris per 1 mill. tokens.", @@ -220,7 +218,6 @@ export const dict = { "model.geoDescription": "OpenCode-modelltokens brukt etter land.", "model.noGeoTitle": "Ingen geodata", "model.noGeoDescription": "Ingen OpenCode-georader matchet denne modellen.", - "model.worldMap": "Verdenskart over modelltokenbruk etter land", "model.peersDescription": "Nærliggende modeller etter nylig OpenCode-tokenvolum.", "model.noPeersTitle": "Ingen lignende modeller", "model.noPeersDescription": "Rangeringer for lignende modeller vises etter at bruk lander.", diff --git a/packages/stats/app/src/i18n/pl.ts b/packages/stats/app/src/i18n/pl.ts index bd1e486b0..dc1586142 100644 --- a/packages/stats/app/src/i18n/pl.ts +++ b/packages/stats/app/src/i18n/pl.ts @@ -110,8 +110,6 @@ export const dict = { "home.geoTitle": "Podział geograficzny", "home.noGeoTitle": "Brak danych geograficznych", "home.noGeoDescription": "Żadne wiersze geograficzne nie pasowały do tego zakresu.", - "home.worldMap": "Mapa świata użycia tokenów według kraju", - "home.geoMapTitle": "Mapa podziału geograficznego", "home.unknown": "Nieznane", "home.tokenCostTitle": "Koszt tokenów", "home.tokenCostDescription": "Cena za 1 mln tokenów.", @@ -219,7 +217,6 @@ export const dict = { "model.geoDescription": "Tokeny modelu OpenCode użyte według kraju.", "model.noGeoTitle": "Brak danych geograficznych", "model.noGeoDescription": "Żadne wiersze geograficzne OpenCode nie pasowały do tego modelu.", - "model.worldMap": "Mapa świata użycia tokenów modelu według kraju", "model.peersDescription": "Pobliskie modele według ostatniego wolumenu tokenów OpenCode.", "model.noPeersTitle": "Brak podobnych modeli", "model.noPeersDescription": "Rankingi podobnych modeli pojawią się po nadejściu użycia.", diff --git a/packages/stats/app/src/i18n/ru.ts b/packages/stats/app/src/i18n/ru.ts index 984cd36f2..3515b4a09 100644 --- a/packages/stats/app/src/i18n/ru.ts +++ b/packages/stats/app/src/i18n/ru.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Географический разрез", "home.noGeoTitle": "Нет геоданных", "home.noGeoDescription": "Нет географических строк для этого диапазона.", - "home.worldMap": "Карта мира использования токенов по странам", - "home.geoMapTitle": "Карта географического разреза", "home.unknown": "Неизвестно", "home.tokenCostTitle": "Стоимость токенов", "home.tokenCostDescription": "Цена за 1 млн токенов.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "Токены модели OpenCode, использованные по странам.", "model.noGeoTitle": "Нет геоданных", "model.noGeoDescription": "Нет географических строк OpenCode для этой модели.", - "model.worldMap": "Карта мира использования токенов модели по странам", "model.peersDescription": "Близкие модели по недавнему объему токенов OpenCode.", "model.noPeersTitle": "Нет похожих моделей", "model.noPeersDescription": "Рейтинги похожих моделей появятся после использования.", diff --git a/packages/stats/app/src/i18n/th.ts b/packages/stats/app/src/i18n/th.ts index 00efb26c6..e16996635 100644 --- a/packages/stats/app/src/i18n/th.ts +++ b/packages/stats/app/src/i18n/th.ts @@ -112,8 +112,6 @@ export const dict = { "home.geoTitle": "แยกตามภูมิศาสตร์", "home.noGeoTitle": "ไม่มีข้อมูลภูมิศาสตร์", "home.noGeoDescription": "ไม่มีแถวภูมิศาสตร์ที่ตรงกับช่วงเวลานี้", - "home.worldMap": "แผนที่โลกของการใช้ token แยกตามประเทศ", - "home.geoMapTitle": "แผนที่แยกตามภูมิศาสตร์", "home.unknown": "ไม่ทราบ", "home.tokenCostTitle": "ต้นทุน Token", "home.tokenCostDescription": "ราคาต่อ 1 ล้าน token", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "token ของโมเดล OpenCode ที่ใช้แยกตามประเทศ", "model.noGeoTitle": "ไม่มีข้อมูลภูมิศาสตร์", "model.noGeoDescription": "ไม่มีแถวภูมิศาสตร์ของ OpenCode ที่ตรงกับโมเดลนี้", - "model.worldMap": "แผนที่โลกของการใช้ token ของโมเดลแยกตามประเทศ", "model.peersDescription": "โมเดลใกล้เคียงตามปริมาณ token ล่าสุดของ OpenCode", "model.noPeersTitle": "ไม่มีโมเดลใกล้เคียง", "model.noPeersDescription": "อันดับโมเดลใกล้เคียงจะแสดงหลังจากมีการใช้งานเข้ามา", diff --git a/packages/stats/app/src/i18n/tr.ts b/packages/stats/app/src/i18n/tr.ts index e4f8d34c1..1935a0ebc 100644 --- a/packages/stats/app/src/i18n/tr.ts +++ b/packages/stats/app/src/i18n/tr.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Coğrafi Dağılım", "home.noGeoTitle": "Coğrafi veri yok", "home.noGeoDescription": "Bu aralıkla eşleşen coğrafi satır yok.", - "home.worldMap": "Ülkeye göre token kullanımının dünya haritası", - "home.geoMapTitle": "Coğrafi Dağılım haritası", "home.unknown": "Bilinmiyor", "home.tokenCostTitle": "Token Maliyeti", "home.tokenCostDescription": "1 milyon token başına fiyat.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "Ülkeye göre kullanılan OpenCode model tokenları.", "model.noGeoTitle": "Coğrafi veri yok", "model.noGeoDescription": "Bu modelle eşleşen OpenCode coğrafi satırı yok.", - "model.worldMap": "Ülkeye göre model token kullanımının dünya haritası", "model.peersDescription": "Son OpenCode token hacmine göre yakındaki modeller.", "model.noPeersTitle": "Benzer yok", "model.noPeersDescription": "Benzer model sıralamaları kullanım geldikten sonra görünür.", diff --git a/packages/stats/app/src/i18n/uk.ts b/packages/stats/app/src/i18n/uk.ts index e35dd34a9..78d113fa0 100644 --- a/packages/stats/app/src/i18n/uk.ts +++ b/packages/stats/app/src/i18n/uk.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Географічний розріз", "home.noGeoTitle": "Немає геоданих", "home.noGeoDescription": "Жодні географічні рядки не відповідали цьому діапазону.", - "home.worldMap": "Карта світу використання токенів за країнами", - "home.geoMapTitle": "Карта географічного розрізу", "home.unknown": "Невідомо", "home.tokenCostTitle": "Вартість токенів", "home.tokenCostDescription": "Ціна за 1 млн токенів.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "Токени моделі OpenCode, використані за країнами.", "model.noGeoTitle": "Немає геоданих", "model.noGeoDescription": "Жодні географічні рядки OpenCode не відповідали цій моделі.", - "model.worldMap": "Карта світу використання токенів моделі за країнами", "model.peersDescription": "Близькі моделі за нещодавнім обсягом токенів OpenCode.", "model.noPeersTitle": "Немає схожих моделей", "model.noPeersDescription": "Рейтинги схожих моделей з'являться після використання.", diff --git a/packages/stats/app/src/i18n/zh.ts b/packages/stats/app/src/i18n/zh.ts index 4d2f3768b..06081f701 100644 --- a/packages/stats/app/src/i18n/zh.ts +++ b/packages/stats/app/src/i18n/zh.ts @@ -112,8 +112,6 @@ export const dict = { "home.geoTitle": "地理分布", "home.noGeoTitle": "无地理数据", "home.noGeoDescription": "没有符合该时间范围的地理行。", - "home.worldMap": "按国家/地区显示 token 使用量的世界地图", - "home.geoMapTitle": "地理分布地图", "home.unknown": "未知", "home.tokenCostTitle": "Token 成本", "home.tokenCostDescription": "每 100 万 token 的价格。", @@ -220,7 +218,6 @@ export const dict = { "model.geoDescription": "按国家/地区统计的 OpenCode 模型 token 使用量。", "model.noGeoTitle": "无地理数据", "model.noGeoDescription": "没有符合此模型的 OpenCode 地理行。", - "model.worldMap": "按国家/地区显示模型 token 使用量的世界地图", "model.peersDescription": "按近期 OpenCode token 用量排列的相近模型。", "model.noPeersTitle": "无同类模型", "model.noPeersDescription": "使用量到达后会显示同类模型排名。", diff --git a/packages/stats/app/src/i18n/zht.ts b/packages/stats/app/src/i18n/zht.ts index 9545748b6..d6d7ed101 100644 --- a/packages/stats/app/src/i18n/zht.ts +++ b/packages/stats/app/src/i18n/zht.ts @@ -112,8 +112,6 @@ export const dict = { "home.geoTitle": "地理分布", "home.noGeoTitle": "無地理數據", "home.noGeoDescription": "沒有符合該時間範圍的地理列。", - "home.worldMap": "按國家/地區顯示 token 使用量的世界地圖", - "home.geoMapTitle": "地理分布地圖", "home.unknown": "未知", "home.tokenCostTitle": "Token 成本", "home.tokenCostDescription": "每 100 萬 token 的價格。", @@ -220,7 +218,6 @@ export const dict = { "model.geoDescription": "按國家/地區統計的 OpenCode 模型 token 使用量。", "model.noGeoTitle": "無地理數據", "model.noGeoDescription": "沒有符合此模型的 OpenCode 地理列。", - "model.worldMap": "按國家/地區顯示模型 token 使用量的世界地圖", "model.peersDescription": "按近期 OpenCode token 用量排列的相近模型。", "model.noPeersTitle": "無同類模型", "model.noPeersDescription": "使用量到達後會顯示同類模型排名。", diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx index ad931aab1..e5ff838ae 100644 --- a/packages/stats/app/src/routes/[lab]/[model].tsx +++ b/packages/stats/app/src/routes/[lab]/[model].tsx @@ -17,7 +17,6 @@ import { useI18n } from "../../context/i18n" import { useLanguage } from "../../context/language" import { localizedUrl } from "../../lib/language" import { findModelCatalogEntry, formatCatalogLabName, loadModelCatalog, type ModelCatalogEntry } from "../model-catalog" -import { geoMapHeight, geoMapWidth, worldBorderPath, worldCountryMarkers, worldCountryPaths } from "../geo-map" import { SectionHeading } from "../section-heading" import { runStatsEffect } from "../../stats-runtime" import { setStatsPageCacheHeaders } from "../stats-cache" @@ -892,21 +891,10 @@ function ModelEfficiencySection(props: { data: StatsModelPageData | null; catalo function ModelGeoBreakdownSection(props: { data: CountryEntry[] }) { const i18n = useI18n() - const language = useLanguage() const [activeCountry, setActiveCountry] = createSignal() const data = createMemo(() => props.data) - const countryById = createMemo( - () => - new Map( - data().flatMap((country) => { - const id = countryNumericId(country.country) - return id ? [[id, country] as const] : [] - }), - ), - ) const maxTokens = createMemo(() => Math.max(0, ...data().map((country) => country.tokens)) || 1) const topCountries = createMemo(() => data().slice(0, 15)) - const active = createMemo(() => data().find((country) => country.country === activeCountry()) ?? data()[0]) return (
        } >
        -
        - - - {(country) => ( -
        - #{String(country().rank).padStart(2, "0")} - {formatCountryName(country().country, language.tag(language.locale()), i18n)} -

        - {formatGeoTokens(country().tokens)} - {formatGeoShare(country().share)} -

        -
        - )} -
        -
        - activeCountry: string | undefined - maxTokens: number - onActiveCountryChange: (country: string | undefined) => void -}) { - const i18n = useI18n() - const opacityScale = createMemo(() => scaleSqrt().domain([0, props.maxTokens]).range([0.26, 0.96]).clamp(true)) - const countryOpacity = (country: CountryEntry | undefined) => { - if (!country || country.tokens <= 0) return 0 - const opacity = opacityScale()(country.tokens) - if (props.activeCountry === country.country) return 1 - if (!props.activeCountry) return opacity - return Math.max(0.18, opacity * 0.36) - } - - return ( - - {i18n.t("home.geoMapTitle")} - - - {(country) => { - const entry = () => props.countryById.get(country.id) - return ( - - - - - {(country) => { - const entry = () => props.countryById.get(country.id) - return ( - - - ) - }} - - - - - ) -} - function GeoCountryList(props: { data: CountryEntry[] activeCountry: string | undefined diff --git a/packages/stats/app/src/routes/geo-map.ts b/packages/stats/app/src/routes/geo-map.ts deleted file mode 100644 index 53a82eb87..000000000 --- a/packages/stats/app/src/routes/geo-map.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { geoEquirectangular, geoPath } from "d3-geo" -import { feature, mesh } from "topojson-client" -import countriesTopologySource from "world-atlas/countries-110m.json?raw" -import type { FeatureCollection, GeometryObject, GeoJsonProperties } from "geojson" -import type { GeometryCollection, Topology } from "topojson-specification" - -export const geoMapWidth = 960 -export const geoMapHeight = 430 - -type WorldCountryProperties = GeoJsonProperties & { name?: string } -type WorldTopology = Topology<{ countries: GeometryCollection }> - -const worldTopology = JSON.parse(countriesTopologySource) as WorldTopology -const worldCountryGeometries: GeometryCollection = { - ...worldTopology.objects.countries, - geometries: worldTopology.objects.countries.geometries.filter((country) => String(country.id ?? "") !== "010"), -} -const worldCountries = feature(worldTopology, worldCountryGeometries) as FeatureCollection< - GeometryObject, - WorldCountryProperties -> -const worldProjection = geoEquirectangular().fitExtent( - [ - [10, 12], - [geoMapWidth - 10, geoMapHeight - 12], - ], - worldCountries, -) -const worldPath = geoPath(worldProjection) - -export const worldCountryPaths = worldCountries.features.map((country) => ({ - id: String(country.id ?? "").padStart(3, "0"), - path: worldPath(country) ?? "", -})) - -export const worldBorderPath = worldPath(mesh(worldTopology, worldCountryGeometries, (a, b) => a !== b)) ?? "" - -function geoCountryMarker(country: (typeof worldCountries.features)[number]) { - const bounds = worldPath.bounds(country) - const [x, y] = worldPath.centroid(country) - if (!Number.isFinite(x) || !Number.isFinite(y)) return undefined - if (bounds[1][0] - bounds[0][0] >= 3 && bounds[1][1] - bounds[0][1] >= 3) return undefined - return { x, y } -} - -// The 110m topology omits small regions. Geographic centroids keep those countries interactive without shipping 50m paths. -const fallbackCountryMarkerCoordinates = [ - ["016", -170.7179, -14.3046], - ["020", 1.5606, 42.542], - ["028", -61.7945, 17.2762], - ["048", 50.5425, 26.0417], - ["052", -59.5602, 13.1811], - ["060", -64.7558, 32.3131], - ["086", 72.4453, -7.3312], - ["092", -64.4704, 18.5276], - ["132", -23.9576, 15.9551], - ["136", -80.9129, 19.43], - ["174", 43.6844, -11.879], - ["184", -159.7871, -21.2195], - ["212", -61.3576, 15.4394], - ["234", -6.8808, 62.0527], - ["239", -36.4863, -54.4641], - ["248", 19.9528, 60.2153], - ["258", -144.8045, -14.7283], - ["296", -167.9217, 0.893], - ["308", -61.6818, 12.1174], - ["316", 144.767, 13.4406], - ["334", 73.52, -53.0872], - ["336", 12.4343, 41.9021], - ["344", 114.1143, 22.3983], - ["438", 9.5357, 47.1367], - ["446", 113.509, 22.2231], - ["462", 73.4573, 3.7316], - ["470", 14.405, 35.9215], - ["480", 57.5714, -20.2779], - ["492", 7.4073, 43.7526], - ["500", -62.1856, 16.7404], - ["520", 166.9326, -0.5189], - ["531", -68.9721, 12.1957], - ["533", -69.9827, 12.521], - ["534", -63.0572, 18.0509], - ["570", -169.8704, -19.0489], - ["574", 167.9497, -29.0516], - ["580", 145.6193, 15.8288], - ["583", 153.2966, 7.5361], - ["584", 170.3313, 7.015], - ["585", 134.4056, 7.286], - ["612", -128.3167, -24.3649], - ["652", -62.841, 17.8988], - ["654", -9.7009, -12.3548], - ["659", -62.6873, 17.2647], - ["660", -63.066, 18.2243], - ["662", -60.9696, 13.8946], - ["663", -63.0599, 18.0888], - ["666", -56.3037, 46.9187], - ["670", -61.2008, 13.2251], - ["674", 12.4594, 43.9415], - ["678", 6.7235, 0.4434], - ["690", 55.476, -4.6601], - ["702", 103.817, 1.359], - ["776", -174.7998, -20.4161], - ["796", -71.9734, 21.8312], - ["831", -2.5726, 49.4678], - ["832", -2.1272, 49.2181], - ["833", -4.5388, 54.224], - ["850", -64.8028, 17.9555], - ["876", -177.3469, -13.8898], - ["882", -172.1649, -13.7536], -] as const - -export const worldCountryMarkers = [ - ...worldCountries.features.flatMap((country) => { - const marker = geoCountryMarker(country) - return marker ? [{ id: String(country.id ?? "").padStart(3, "0"), marker }] : [] - }), - ...fallbackCountryMarkerCoordinates.flatMap(([id, longitude, latitude]) => { - const marker = worldProjection([longitude, latitude]) - return marker ? [{ id, marker: { x: marker[0], y: marker[1] } }] : [] - }), -] diff --git a/packages/stats/app/src/routes/index.css b/packages/stats/app/src/routes/index.css index edbdd0483..e37fef9b4 100644 --- a/packages/stats/app/src/routes/index.css +++ b/packages/stats/app/src/routes/index.css @@ -2264,121 +2264,6 @@ body { align-items: start; } -[data-page="stats"] [data-slot="geo-map-panel"] { - position: relative; - min-width: 0; - overflow: hidden; - background: var(--stats-layer); - border: 1px solid var(--stats-line); -} - -[data-page="stats"] [data-component="geo-world-map"] { - display: block; - width: 100%; - height: auto; -} - -[data-page="stats"] [data-slot="geo-countries"] path { - fill: var(--stats-layer-2); - stroke: var(--stats-bg); - stroke-width: 0.45px; - transition: - fill 140ms ease, - opacity 140ms ease; -} - -[data-page="stats"] [data-slot="geo-countries"] path[data-has-data="true"] { - fill: var(--stats-accent); - opacity: var(--geo-country-opacity); - cursor: pointer; -} - -[data-page="stats"] [data-slot="geo-countries"] path[data-active="true"] { - fill: color-mix(in srgb, var(--stats-accent) 70%, var(--stats-text)); - opacity: var(--geo-country-opacity); -} - -[data-page="stats"] [data-slot="geo-country-markers"] circle { - fill: var(--stats-accent); - stroke: var(--stats-bg); - stroke-width: 1.1px; - opacity: var(--geo-country-opacity); - cursor: pointer; - transition: - fill 140ms ease, - opacity 140ms ease, - r 140ms ease; -} - -[data-page="stats"] [data-slot="geo-country-markers"] circle[data-active="true"] { - fill: color-mix(in srgb, var(--stats-accent) 70%, var(--stats-text)); - opacity: var(--geo-country-opacity); -} - -[data-page="stats"] [data-slot="geo-borders"] { - fill: none; - stroke: var(--stats-line-strong); - stroke-linejoin: round; - stroke-width: 0.6px; - pointer-events: none; -} - -[data-page="stats"] [data-slot="geo-active-country"] { - position: absolute; - bottom: 16px; - left: 16px; - display: grid; - gap: 8px; - min-width: 168px; - max-width: calc(100% - 32px); - box-sizing: border-box; - padding: 12px; - background: color-mix(in srgb, var(--stats-bg) 92%, transparent); - box-shadow: - 0 0 0 0.5px var(--stats-line-strong), - 0 6px 16px #0000000d, - 0 2px 6px #0000000f; -} - -[data-page="stats"] [data-slot="geo-active-country"] span, -[data-page="stats"] [data-slot="geo-active-country"] em { - color: var(--stats-faint); - font-style: normal; -} - -[data-page="stats"] [data-slot="geo-active-country"] span { - font-size: 10px; - font-weight: 600; - line-height: 1; -} - -[data-page="stats"] [data-slot="geo-active-country"] strong { - min-width: 0; - overflow: hidden; - color: var(--stats-text); - font-size: 16px; - font-weight: 600; - line-height: 1.2; - text-overflow: ellipsis; - white-space: nowrap; -} - -[data-page="stats"] [data-slot="geo-active-country"] p { - display: flex; - align-items: center; - justify-content: space-between; - gap: 16px; - color: var(--stats-muted); - font-size: 11px; - font-weight: 500; - line-height: 1; -} - -[data-page="stats"] [data-slot="geo-active-country"] b { - color: var(--stats-accent-text); - font-weight: 600; -} - [data-page="stats"] [data-component="geo-country-list"] { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 212px), 1fr)); @@ -8386,13 +8271,6 @@ body { height: 400px; } - [data-page="stats"] [data-slot="geo-active-country"] { - position: static; - min-width: 0; - max-width: none; - margin: 0 12px 12px; - } - [data-page="stats"] [data-component="geo-country-list"] button { grid-template-columns: 26px 8px minmax(0, 1fr) auto; } From ae2ea3c7237ef9e21fd4eba253b9e763c7f1475d Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 26 Aug 2026 03:40:35 -0400 Subject: [PATCH 163/271] fix map inaccuracy --- packages/stats/app/src/i18n.ts | 1 - packages/stats/app/src/i18n/ar.ts | 1 - packages/stats/app/src/i18n/br.ts | 1 - packages/stats/app/src/i18n/da.ts | 1 - packages/stats/app/src/i18n/de.ts | 1 - packages/stats/app/src/i18n/es.ts | 1 - packages/stats/app/src/i18n/fr.ts | 1 - packages/stats/app/src/i18n/it.ts | 1 - packages/stats/app/src/i18n/ja.ts | 1 - packages/stats/app/src/i18n/ko.ts | 1 - packages/stats/app/src/i18n/no.ts | 1 - packages/stats/app/src/i18n/pl.ts | 1 - packages/stats/app/src/i18n/ru.ts | 1 - packages/stats/app/src/i18n/th.ts | 1 - packages/stats/app/src/i18n/tr.ts | 1 - packages/stats/app/src/i18n/uk.ts | 1 - packages/stats/app/src/i18n/zh.ts | 1 - packages/stats/app/src/i18n/zht.ts | 1 - packages/stats/app/src/routes/[lab]/[model].tsx | 8 ++------ 19 files changed, 2 insertions(+), 24 deletions(-) diff --git a/packages/stats/app/src/i18n.ts b/packages/stats/app/src/i18n.ts index e846ce508..0b8053694 100644 --- a/packages/stats/app/src/i18n.ts +++ b/packages/stats/app/src/i18n.ts @@ -233,7 +233,6 @@ const en = { "model.averageTokensSession": "Average tokens / session", "model.cacheRatio": "Cache Ratio", "model.inputTokens": "input tokens", - "model.geoDescription": "OpenCode model tokens used by country.", "model.noGeoTitle": "No geo data", "model.noGeoDescription": "No OpenCode geo rows matched this model.", "model.peersDescription": "Nearby models by recent OpenCode token volume.", diff --git a/packages/stats/app/src/i18n/ar.ts b/packages/stats/app/src/i18n/ar.ts index 1fb489117..b24304310 100644 --- a/packages/stats/app/src/i18n/ar.ts +++ b/packages/stats/app/src/i18n/ar.ts @@ -213,7 +213,6 @@ export const dict = { "model.tokensSession": "الرموز / الجلسة", "model.cacheRatio": "نسبة التخزين المؤقت", "model.inputTokens": "رموز الإدخال", - "model.geoDescription": "رموز نموذج OpenCode المستخدمة حسب البلد.", "model.noGeoTitle": "لا توجد بيانات جغرافية", "model.noGeoDescription": "لم تطابق أي صفوف جغرافية في OpenCode هذا النموذج.", "model.peersDescription": "نماذج قريبة حسب حجم رموز OpenCode الأخير.", diff --git a/packages/stats/app/src/i18n/br.ts b/packages/stats/app/src/i18n/br.ts index 4ef584ce6..5bf9e44dc 100644 --- a/packages/stats/app/src/i18n/br.ts +++ b/packages/stats/app/src/i18n/br.ts @@ -216,7 +216,6 @@ export const dict = { "model.tokensSession": "Tokens / sessão", "model.cacheRatio": "Taxa de cache", "model.inputTokens": "tokens de entrada", - "model.geoDescription": "Tokens do modelo OpenCode usados por país.", "model.noGeoTitle": "Sem dados geográficos", "model.noGeoDescription": "Nenhuma linha geográfica do OpenCode correspondeu a este modelo.", "model.peersDescription": "Modelos próximos por volume recente de tokens do OpenCode.", diff --git a/packages/stats/app/src/i18n/da.ts b/packages/stats/app/src/i18n/da.ts index 1da9eb733..5fdf2841e 100644 --- a/packages/stats/app/src/i18n/da.ts +++ b/packages/stats/app/src/i18n/da.ts @@ -214,7 +214,6 @@ export const dict = { "model.tokensSession": "Tokens / session", "model.cacheRatio": "Cacheandel", "model.inputTokens": "inputtokens", - "model.geoDescription": "OpenCode-modeltokens brugt efter land.", "model.noGeoTitle": "Ingen geodata", "model.noGeoDescription": "Ingen OpenCode-georækker matchede denne model.", "model.peersDescription": "Nærliggende modeller efter seneste OpenCode-tokenvolumen.", diff --git a/packages/stats/app/src/i18n/de.ts b/packages/stats/app/src/i18n/de.ts index 21d131cad..95a2f06fa 100644 --- a/packages/stats/app/src/i18n/de.ts +++ b/packages/stats/app/src/i18n/de.ts @@ -216,7 +216,6 @@ export const dict = { "model.tokensSession": "Tokens / Sitzung", "model.cacheRatio": "Cache-Anteil", "model.inputTokens": "Eingabetokens", - "model.geoDescription": "OpenCode-Modelltokens nach Land.", "model.noGeoTitle": "Keine Geodaten", "model.noGeoDescription": "Keine OpenCode-Geozeilen passten zu diesem Modell.", "model.peersDescription": "Nahe Modelle nach aktuellem OpenCode-Tokenvolumen.", diff --git a/packages/stats/app/src/i18n/es.ts b/packages/stats/app/src/i18n/es.ts index 92988954b..78d2e61c2 100644 --- a/packages/stats/app/src/i18n/es.ts +++ b/packages/stats/app/src/i18n/es.ts @@ -215,7 +215,6 @@ export const dict = { "model.tokensSession": "Tokens / sesión", "model.cacheRatio": "Ratio de caché", "model.inputTokens": "tokens de entrada", - "model.geoDescription": "Tokens del modelo de OpenCode usados por país.", "model.noGeoTitle": "Sin datos geográficos", "model.noGeoDescription": "Ninguna fila geográfica de OpenCode coincidió con este modelo.", "model.peersDescription": "Modelos cercanos por volumen reciente de tokens de OpenCode.", diff --git a/packages/stats/app/src/i18n/fr.ts b/packages/stats/app/src/i18n/fr.ts index 3bd325680..bbc1d5cca 100644 --- a/packages/stats/app/src/i18n/fr.ts +++ b/packages/stats/app/src/i18n/fr.ts @@ -217,7 +217,6 @@ export const dict = { "model.tokensSession": "Tokens / session", "model.cacheRatio": "Taux de cache", "model.inputTokens": "tokens d'entrée", - "model.geoDescription": "Tokens du modèle OpenCode utilisés par pays.", "model.noGeoTitle": "Aucune donnée géographique", "model.noGeoDescription": "Aucune ligne géographique OpenCode ne correspondait à ce modèle.", "model.peersDescription": "Modèles proches par volume récent de tokens OpenCode.", diff --git a/packages/stats/app/src/i18n/it.ts b/packages/stats/app/src/i18n/it.ts index f0ccde501..e4a4b1296 100644 --- a/packages/stats/app/src/i18n/it.ts +++ b/packages/stats/app/src/i18n/it.ts @@ -216,7 +216,6 @@ export const dict = { "model.tokensSession": "Token / sessione", "model.cacheRatio": "Rapporto cache", "model.inputTokens": "token di input", - "model.geoDescription": "Token del modello OpenCode usati per paese.", "model.noGeoTitle": "Nessun dato geografico", "model.noGeoDescription": "Nessuna riga geografica OpenCode corrispondeva a questo modello.", "model.peersDescription": "Modelli vicini per volume recente di token OpenCode.", diff --git a/packages/stats/app/src/i18n/ja.ts b/packages/stats/app/src/i18n/ja.ts index beac7cabc..182632952 100644 --- a/packages/stats/app/src/i18n/ja.ts +++ b/packages/stats/app/src/i18n/ja.ts @@ -217,7 +217,6 @@ export const dict = { "model.tokensSession": "トークン / セッション", "model.cacheRatio": "キャッシュ比率", "model.inputTokens": "入力トークン", - "model.geoDescription": "国別のOpenCodeモデルのトークン使用量。", "model.noGeoTitle": "地域データがありません", "model.noGeoDescription": "このモデルに一致するOpenCode地域行はありません。", "model.peersDescription": "最近のOpenCodeトークン量が近いモデル。", diff --git a/packages/stats/app/src/i18n/ko.ts b/packages/stats/app/src/i18n/ko.ts index ac5293125..d55ba5a60 100644 --- a/packages/stats/app/src/i18n/ko.ts +++ b/packages/stats/app/src/i18n/ko.ts @@ -216,7 +216,6 @@ export const dict = { "model.tokensSession": "토큰 / 세션", "model.cacheRatio": "캐시 비율", "model.inputTokens": "입력 토큰", - "model.geoDescription": "국가별 OpenCode 모델 토큰 사용량입니다.", "model.noGeoTitle": "지역 데이터 없음", "model.noGeoDescription": "이 모델과 일치하는 OpenCode 지역 행이 없습니다.", "model.peersDescription": "최근 OpenCode 토큰 볼륨이 가까운 모델입니다.", diff --git a/packages/stats/app/src/i18n/no.ts b/packages/stats/app/src/i18n/no.ts index e64617e40..26ec3e80b 100644 --- a/packages/stats/app/src/i18n/no.ts +++ b/packages/stats/app/src/i18n/no.ts @@ -215,7 +215,6 @@ export const dict = { "model.tokensSession": "Tokens / økt", "model.cacheRatio": "Cacheandel", "model.inputTokens": "inndata-tokens", - "model.geoDescription": "OpenCode-modelltokens brukt etter land.", "model.noGeoTitle": "Ingen geodata", "model.noGeoDescription": "Ingen OpenCode-georader matchet denne modellen.", "model.peersDescription": "Nærliggende modeller etter nylig OpenCode-tokenvolum.", diff --git a/packages/stats/app/src/i18n/pl.ts b/packages/stats/app/src/i18n/pl.ts index dc1586142..e82ddeff0 100644 --- a/packages/stats/app/src/i18n/pl.ts +++ b/packages/stats/app/src/i18n/pl.ts @@ -214,7 +214,6 @@ export const dict = { "model.tokensSession": "Tokeny / sesja", "model.cacheRatio": "Współczynnik cache", "model.inputTokens": "tokeny wejściowe", - "model.geoDescription": "Tokeny modelu OpenCode użyte według kraju.", "model.noGeoTitle": "Brak danych geograficznych", "model.noGeoDescription": "Żadne wiersze geograficzne OpenCode nie pasowały do tego modelu.", "model.peersDescription": "Pobliskie modele według ostatniego wolumenu tokenów OpenCode.", diff --git a/packages/stats/app/src/i18n/ru.ts b/packages/stats/app/src/i18n/ru.ts index 3515b4a09..fe850a309 100644 --- a/packages/stats/app/src/i18n/ru.ts +++ b/packages/stats/app/src/i18n/ru.ts @@ -216,7 +216,6 @@ export const dict = { "model.tokensSession": "Токены / сеанс", "model.cacheRatio": "Доля кэша", "model.inputTokens": "входные токены", - "model.geoDescription": "Токены модели OpenCode, использованные по странам.", "model.noGeoTitle": "Нет геоданных", "model.noGeoDescription": "Нет географических строк OpenCode для этой модели.", "model.peersDescription": "Близкие модели по недавнему объему токенов OpenCode.", diff --git a/packages/stats/app/src/i18n/th.ts b/packages/stats/app/src/i18n/th.ts index e16996635..84f79a21f 100644 --- a/packages/stats/app/src/i18n/th.ts +++ b/packages/stats/app/src/i18n/th.ts @@ -216,7 +216,6 @@ export const dict = { "model.tokensSession": "Token / เซสชัน", "model.cacheRatio": "อัตราแคช", "model.inputTokens": "input token", - "model.geoDescription": "token ของโมเดล OpenCode ที่ใช้แยกตามประเทศ", "model.noGeoTitle": "ไม่มีข้อมูลภูมิศาสตร์", "model.noGeoDescription": "ไม่มีแถวภูมิศาสตร์ของ OpenCode ที่ตรงกับโมเดลนี้", "model.peersDescription": "โมเดลใกล้เคียงตามปริมาณ token ล่าสุดของ OpenCode", diff --git a/packages/stats/app/src/i18n/tr.ts b/packages/stats/app/src/i18n/tr.ts index 1935a0ebc..27926c9d5 100644 --- a/packages/stats/app/src/i18n/tr.ts +++ b/packages/stats/app/src/i18n/tr.ts @@ -216,7 +216,6 @@ export const dict = { "model.tokensSession": "Token / Oturum", "model.cacheRatio": "Önbellek Oranı", "model.inputTokens": "giriş tokenları", - "model.geoDescription": "Ülkeye göre kullanılan OpenCode model tokenları.", "model.noGeoTitle": "Coğrafi veri yok", "model.noGeoDescription": "Bu modelle eşleşen OpenCode coğrafi satırı yok.", "model.peersDescription": "Son OpenCode token hacmine göre yakındaki modeller.", diff --git a/packages/stats/app/src/i18n/uk.ts b/packages/stats/app/src/i18n/uk.ts index 78d113fa0..eb43f81aa 100644 --- a/packages/stats/app/src/i18n/uk.ts +++ b/packages/stats/app/src/i18n/uk.ts @@ -216,7 +216,6 @@ export const dict = { "model.tokensSession": "Токени / сеанс", "model.cacheRatio": "Частка кешу", "model.inputTokens": "вхідні токени", - "model.geoDescription": "Токени моделі OpenCode, використані за країнами.", "model.noGeoTitle": "Немає геоданих", "model.noGeoDescription": "Жодні географічні рядки OpenCode не відповідали цій моделі.", "model.peersDescription": "Близькі моделі за нещодавнім обсягом токенів OpenCode.", diff --git a/packages/stats/app/src/i18n/zh.ts b/packages/stats/app/src/i18n/zh.ts index 06081f701..f41222bf8 100644 --- a/packages/stats/app/src/i18n/zh.ts +++ b/packages/stats/app/src/i18n/zh.ts @@ -215,7 +215,6 @@ export const dict = { "model.tokensSession": "Token / 会话", "model.cacheRatio": "缓存比例", "model.inputTokens": "输入 token", - "model.geoDescription": "按国家/地区统计的 OpenCode 模型 token 使用量。", "model.noGeoTitle": "无地理数据", "model.noGeoDescription": "没有符合此模型的 OpenCode 地理行。", "model.peersDescription": "按近期 OpenCode token 用量排列的相近模型。", diff --git a/packages/stats/app/src/i18n/zht.ts b/packages/stats/app/src/i18n/zht.ts index d6d7ed101..9f6034367 100644 --- a/packages/stats/app/src/i18n/zht.ts +++ b/packages/stats/app/src/i18n/zht.ts @@ -215,7 +215,6 @@ export const dict = { "model.tokensSession": "Token / 工作階段", "model.cacheRatio": "快取比例", "model.inputTokens": "輸入 token", - "model.geoDescription": "按國家/地區統計的 OpenCode 模型 token 使用量。", "model.noGeoTitle": "無地理數據", "model.noGeoDescription": "沒有符合此模型的 OpenCode 地理列。", "model.peersDescription": "按近期 OpenCode token 用量排列的相近模型。", diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx index e5ff838ae..e0560957a 100644 --- a/packages/stats/app/src/routes/[lab]/[model].tsx +++ b/packages/stats/app/src/routes/[lab]/[model].tsx @@ -905,11 +905,7 @@ function ModelGeoBreakdownSection(props: { data: CountryEntry[] }) { setActiveCountry(undefined) }} > - + 0} fallback={} @@ -1019,7 +1015,7 @@ function PeerRow(props: { peer: ModelPeerEntry; active: boolean }) { ) } -function SectionTitle(props: { href: string; title: string; description: string }) { +function SectionTitle(props: { href: string; title: string; description?: string }) { return } From 1cc53890dc0d902e6c85eca5b7e27cbf0a04541a Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Wed, 26 Aug 2026 07:47:41 +0000 Subject: [PATCH 164/271] chore: update nix node_modules hashes --- nix/hashes.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/hashes.json b/nix/hashes.json index acc1a09e0..05c0eecd0 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-Be1I6OG6UitofhcGu2BeNzevmoQXc4Or5r/NPzwtft4=", - "aarch64-linux": "sha256-O+d+26CQIjZ08Rn8Qm3IytdDqIMbPdhzaGOZeUKAvIU=", - "aarch64-darwin": "sha256-ObS50y/oy6fM9wSGUL/wx6O0+fTWHC04mXJNd7w/2Z0=", - "x86_64-darwin": "sha256-eoR7ZSyH62Fq2ZaW2b2QqU2FC97rYxTMeEe+djT0nto=" + "x86_64-linux": "sha256-aYQMkCn/SKUqnFHRDQvdTff+4Amp3IjyRV5gK6V15FY=", + "aarch64-linux": "sha256-/IAyMSXf3MZI8REGEC4Se8dlb6+djyYnOfa01hin1Qc=", + "aarch64-darwin": "sha256-6cvEAL4PxMX0l33at55+wALkdnMcU7V8QsPd8vlXzx8=", + "x86_64-darwin": "sha256-jaWCHPlxqT0m9Lt7rZkrUrb4HVY4/L+sgD9F95z6xqw=" } } From ba4d0ea8bf46e7228766575e62a06506f8c43eee Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 26 Aug 2026 05:41:23 -0500 Subject: [PATCH 165/271] fix(console): validate auth redirects (#45027) --- bun.lock | 1 + packages/console/function/package.json | 1 + .../console/function/src/auth-redirect.test.ts | 18 ++++++++++++++++++ packages/console/function/src/auth-redirect.ts | 18 ++++++++++++++++++ packages/console/function/src/auth.ts | 13 +++++++++++++ packages/console/function/tsconfig.json | 2 +- 6 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 packages/console/function/src/auth-redirect.test.ts create mode 100644 packages/console/function/src/auth-redirect.ts diff --git a/bun.lock b/bun.lock index 6a066555b..740abb799 100644 --- a/bun.lock +++ b/bun.lock @@ -235,6 +235,7 @@ "devDependencies": { "@cloudflare/workers-types": "catalog:", "@tsconfig/node22": "22.0.2", + "@types/bun": "catalog:", "@types/node": "catalog:", "@typescript/native-preview": "catalog:", "openai": "5.11.0", diff --git a/packages/console/function/package.json b/packages/console/function/package.json index 739921402..2848ac685 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -11,6 +11,7 @@ "devDependencies": { "@cloudflare/workers-types": "catalog:", "@tsconfig/node22": "22.0.2", + "@types/bun": "catalog:", "@types/node": "catalog:", "openai": "5.11.0", "typescript": "catalog:", diff --git a/packages/console/function/src/auth-redirect.test.ts b/packages/console/function/src/auth-redirect.test.ts new file mode 100644 index 000000000..b3919dbfa --- /dev/null +++ b/packages/console/function/src/auth-redirect.test.ts @@ -0,0 +1,18 @@ +import { describe, expect, test } from "bun:test" +import { isAllowedAuthorizationRedirect } from "./auth-redirect" + +describe("authorization redirect validation", () => { + test("allows registered OpenCode callbacks", () => { + expect(isAllowedAuthorizationRedirect("app", "https://opencode.ai/auth/callback")).toBe(true) + expect(isAllowedAuthorizationRedirect("app", "https://dev.opencode.ai/auth/callback")).toBe(true) + expect(isAllowedAuthorizationRedirect("app", "http://localhost:3000/auth/callback")).toBe(true) + expect(isAllowedAuthorizationRedirect("app", "http://127.0.0.1:3000/auth/callback")).toBe(true) + }) + + test("rejects unregistered clients and external redirects", () => { + expect(isAllowedAuthorizationRedirect("other", "https://opencode.ai/auth/callback")).toBe(false) + expect(isAllowedAuthorizationRedirect("app", "https://evil.example/callback")).toBe(false) + expect(isAllowedAuthorizationRedirect("app", "https://opencode.ai.evil.example/callback")).toBe(false) + expect(isAllowedAuthorizationRedirect("app", "javascript:alert(1)")).toBe(false) + }) +}) diff --git a/packages/console/function/src/auth-redirect.ts b/packages/console/function/src/auth-redirect.ts new file mode 100644 index 000000000..71203f930 --- /dev/null +++ b/packages/console/function/src/auth-redirect.ts @@ -0,0 +1,18 @@ +export const isAllowedAuthorizationRedirect = (clientID: string, redirectURI: string) => { + if (clientID !== "app") return false + const redirect = (() => { + try { + return new URL(redirectURI) + } catch { + return undefined + } + })() + if (redirect === undefined) return false + if (redirect.hostname === "localhost" || redirect.hostname === "127.0.0.1") { + return redirect.protocol === "http:" || redirect.protocol === "https:" + } + return ( + redirect.protocol === "https:" && + (redirect.hostname === "opencode.ai" || redirect.hostname.endsWith(".opencode.ai")) + ) +} diff --git a/packages/console/function/src/auth.ts b/packages/console/function/src/auth.ts index 6d56b9670..457ccc571 100644 --- a/packages/console/function/src/auth.ts +++ b/packages/console/function/src/auth.ts @@ -17,6 +17,7 @@ import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.j import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js" import { AuthTable } from "@opencode-ai/console-core/schema/auth.sql.js" import { Identifier } from "@opencode-ai/console-core/identifier.js" +import { isAllowedAuthorizationRedirect } from "./auth-redirect.js" type Env = { AuthStorage: KVNamespace @@ -41,6 +42,17 @@ const MY_THEME: Theme = { export default { async fetch(request: Request, env: Env, ctx: ExecutionContext) { + const requestURL = new URL(request.url) + if (requestURL.pathname === "/authorize") { + const redirectURI = requestURL.searchParams.get("redirect_uri") + if ( + redirectURI !== null && + !isAllowedAuthorizationRedirect(requestURL.searchParams.get("client_id") ?? "", redirectURI) + ) { + return new Response("Unauthorized client", { status: 400 }) + } + } + const result = await issuer({ theme: MY_THEME, providers: { @@ -102,6 +114,7 @@ export default { namespace: env.AuthStorage, }), subjects, + allow: ({ clientID, redirectURI }) => Promise.resolve(isAllowedAuthorizationRedirect(clientID, redirectURI)), async success(ctx, response) { console.log(response) diff --git a/packages/console/function/tsconfig.json b/packages/console/function/tsconfig.json index 3218dd7e3..cf99b89bd 100644 --- a/packages/console/function/tsconfig.json +++ b/packages/console/function/tsconfig.json @@ -6,6 +6,6 @@ "moduleResolution": "bundler", "jsx": "preserve", "jsxImportSource": "react", - "types": ["@cloudflare/workers-types", "node"] + "types": ["@cloudflare/workers-types", "bun", "node"] } } From c7134cbb01bcba6c695c504df180cbf9cdcd4d49 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Wed, 26 Aug 2026 10:55:43 +0000 Subject: [PATCH 166/271] chore: update nix node_modules hashes --- nix/hashes.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/hashes.json b/nix/hashes.json index 05c0eecd0..827947042 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-aYQMkCn/SKUqnFHRDQvdTff+4Amp3IjyRV5gK6V15FY=", - "aarch64-linux": "sha256-/IAyMSXf3MZI8REGEC4Se8dlb6+djyYnOfa01hin1Qc=", - "aarch64-darwin": "sha256-6cvEAL4PxMX0l33at55+wALkdnMcU7V8QsPd8vlXzx8=", - "x86_64-darwin": "sha256-jaWCHPlxqT0m9Lt7rZkrUrb4HVY4/L+sgD9F95z6xqw=" + "x86_64-linux": "sha256-fJ72uEK9rSoFL6eJk0Lwkc2TIMLZyQ7Iz83WrZE2duA=", + "aarch64-linux": "sha256-ElEwz5spFa8XFYSBiGjKlTKRFQCju/ZYDlb6h1FaKoI=", + "aarch64-darwin": "sha256-RmbrAlggOqxNFdhW+qj2tjRCpRf2NDLe68TikbGtCeA=", + "x86_64-darwin": "sha256-ZgYE0J+Dkz/kALK3kZ1jdFIZ5/BEkEaw0mXCqPon0iY=" } } From ec25388937666a71fcf8715020fe4be678843a2b Mon Sep 17 00:00:00 2001 From: Jack Date: Wed, 26 Aug 2026 19:19:12 +0800 Subject: [PATCH 167/271] docs: remove Ox Alpha Free (#45221) --- packages/console/app/src/i18n/ar.ts | 1 - packages/console/app/src/i18n/br.ts | 1 - packages/console/app/src/i18n/da.ts | 1 - packages/console/app/src/i18n/de.ts | 1 - packages/console/app/src/i18n/en.ts | 1 - packages/console/app/src/i18n/es.ts | 1 - packages/console/app/src/i18n/fr.ts | 1 - packages/console/app/src/i18n/it.ts | 1 - packages/console/app/src/i18n/ja.ts | 1 - packages/console/app/src/i18n/ko.ts | 1 - packages/console/app/src/i18n/no.ts | 1 - packages/console/app/src/i18n/pl.ts | 1 - packages/console/app/src/i18n/ru.ts | 1 - packages/console/app/src/i18n/th.ts | 1 - packages/console/app/src/i18n/tr.ts | 1 - packages/console/app/src/i18n/uk.ts | 1 - packages/console/app/src/i18n/zh.ts | 1 - packages/console/app/src/i18n/zht.ts | 1 - packages/console/app/src/routes/go/index.css | 31 ------------------- packages/console/app/src/routes/go/index.tsx | 7 ----- .../routes/workspace/[id]/go/lite-section.tsx | 1 - packages/web/src/content/docs/ar/go.mdx | 6 ---- packages/web/src/content/docs/ar/zen.mdx | 3 -- packages/web/src/content/docs/bs/go.mdx | 6 ---- packages/web/src/content/docs/bs/zen.mdx | 3 -- packages/web/src/content/docs/da/go.mdx | 6 ---- packages/web/src/content/docs/da/zen.mdx | 3 -- packages/web/src/content/docs/de/go.mdx | 6 ---- packages/web/src/content/docs/de/zen.mdx | 3 -- packages/web/src/content/docs/es/go.mdx | 6 ---- packages/web/src/content/docs/es/zen.mdx | 3 -- packages/web/src/content/docs/fr/go.mdx | 6 ---- packages/web/src/content/docs/fr/zen.mdx | 3 -- packages/web/src/content/docs/go.mdx | 6 ---- packages/web/src/content/docs/it/go.mdx | 6 ---- packages/web/src/content/docs/it/zen.mdx | 3 -- packages/web/src/content/docs/ja/go.mdx | 6 ---- packages/web/src/content/docs/ja/zen.mdx | 3 -- packages/web/src/content/docs/ko/go.mdx | 6 ---- packages/web/src/content/docs/ko/zen.mdx | 3 -- packages/web/src/content/docs/nb/go.mdx | 6 ---- packages/web/src/content/docs/nb/zen.mdx | 3 -- packages/web/src/content/docs/pl/go.mdx | 6 ---- packages/web/src/content/docs/pl/zen.mdx | 3 -- packages/web/src/content/docs/pt-br/go.mdx | 6 ---- packages/web/src/content/docs/pt-br/zen.mdx | 3 -- packages/web/src/content/docs/ru/go.mdx | 6 ---- packages/web/src/content/docs/ru/zen.mdx | 3 -- packages/web/src/content/docs/th/go.mdx | 6 ---- packages/web/src/content/docs/th/zen.mdx | 3 -- packages/web/src/content/docs/tr/go.mdx | 6 ---- packages/web/src/content/docs/tr/zen.mdx | 3 -- packages/web/src/content/docs/zen.mdx | 3 -- packages/web/src/content/docs/zh-cn/go.mdx | 6 ---- packages/web/src/content/docs/zh-cn/zen.mdx | 3 -- packages/web/src/content/docs/zh-tw/go.mdx | 6 ---- packages/web/src/content/docs/zh-tw/zen.mdx | 3 -- 57 files changed, 219 deletions(-) diff --git a/packages/console/app/src/i18n/ar.ts b/packages/console/app/src/i18n/ar.ts index e71b57acc..e22c9a0a7 100644 --- a/packages/console/app/src/i18n/ar.ts +++ b/packages/console/app/src/i18n/ar.ts @@ -252,7 +252,6 @@ export const dict = { "zen.privacy.exceptionsLink": "الاستثناءات التالية", "go.title": "OpenCode Go | نماذج برمجة منخفضة التكلفة للجميع", - "go.banner.text": "Ox Alpha Free متاح على Go لفترة محدودة", "go.meta.description": "يبلغ سعر Go ‏$10/شهر، مع حدود استخدام سخية ووصول موثوق إلى نماذج البرمجة الرائدة.", "go.hero.title": "نماذج برمجة منخفضة التكلفة للجميع", "go.hero.body": diff --git a/packages/console/app/src/i18n/br.ts b/packages/console/app/src/i18n/br.ts index e710fba0f..0120f36f8 100644 --- a/packages/console/app/src/i18n/br.ts +++ b/packages/console/app/src/i18n/br.ts @@ -256,7 +256,6 @@ export const dict = { "zen.privacy.exceptionsLink": "seguintes exceções", "go.title": "OpenCode Go | Modelos de codificação de baixo custo para todos", - "go.banner.text": "Ox Alpha Free está disponível no Go por tempo limitado", "go.meta.description": "O Go custa $10/mês, com limites generosos de uso e acesso confiável aos principais modelos de codificação.", "go.hero.title": "Modelos de codificação de baixo custo para todos", diff --git a/packages/console/app/src/i18n/da.ts b/packages/console/app/src/i18n/da.ts index b3db8954c..64ab93855 100644 --- a/packages/console/app/src/i18n/da.ts +++ b/packages/console/app/src/i18n/da.ts @@ -254,7 +254,6 @@ export const dict = { "zen.privacy.exceptionsLink": "følgende undtagelser", "go.title": "OpenCode Go | Kodningsmodeller til lav pris for alle", - "go.banner.text": "Ox Alpha Free er tilgængelig på Go i en begrænset periode", "go.meta.description": "Go koster $10/måned, med generøse brugsgrænser og pålidelig adgang til førende kodningsmodeller.", "go.hero.title": "Kodningsmodeller til lav pris for alle", diff --git a/packages/console/app/src/i18n/de.ts b/packages/console/app/src/i18n/de.ts index 13625e7bd..fc5635228 100644 --- a/packages/console/app/src/i18n/de.ts +++ b/packages/console/app/src/i18n/de.ts @@ -256,7 +256,6 @@ export const dict = { "zen.privacy.exceptionsLink": "folgenden Ausnahmen", "go.title": "OpenCode Go | Kostengünstige Coding-Modelle für alle", - "go.banner.text": "Ox Alpha Free ist für begrenzte Zeit auf Go verfügbar", "go.meta.description": "Go kostet $10/Monat, mit großzügigen Nutzungslimits und zuverlässigem Zugang zu führenden Coding-Modellen.", "go.hero.title": "Kostengünstige Coding-Modelle für alle", diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index 45f2eed8f..46a466b1f 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -253,7 +253,6 @@ export const dict = { "zen.privacy.exceptionsLink": "following exceptions", "go.title": "OpenCode Go | Low cost coding models for everyone", - "go.banner.text": "Ox Alpha Free is available on Go for a limited time", "go.meta.description": "Go costs $10/month, with generous usage limits and reliable access to leading coding models.", "go.hero.title": "Low cost coding models for everyone", "go.hero.body": diff --git a/packages/console/app/src/i18n/es.ts b/packages/console/app/src/i18n/es.ts index e5f2bde97..502eae5aa 100644 --- a/packages/console/app/src/i18n/es.ts +++ b/packages/console/app/src/i18n/es.ts @@ -257,7 +257,6 @@ export const dict = { "zen.privacy.exceptionsLink": "siguientes excepciones", "go.title": "OpenCode Go | Modelos de programación de bajo coste para todos", - "go.banner.text": "Ox Alpha Free está disponible en Go por tiempo limitado", "go.meta.description": "Go cuesta 10 $/mes, con límites de uso generosos y acceso fiable a modelos de programación líderes.", "go.hero.title": "Modelos de programación de bajo coste para todos", diff --git a/packages/console/app/src/i18n/fr.ts b/packages/console/app/src/i18n/fr.ts index 410c4e2da..250ac50aa 100644 --- a/packages/console/app/src/i18n/fr.ts +++ b/packages/console/app/src/i18n/fr.ts @@ -258,7 +258,6 @@ export const dict = { "zen.privacy.exceptionsLink": "exceptions suivantes", "go.title": "OpenCode Go | Modèles de code à faible coût pour tous", - "go.banner.text": "Ox Alpha Free est disponible sur Go pour une durée limitée", "go.meta.description": "Go coûte 10 $/mois, avec des limites d'utilisation généreuses et un accès fiable aux principaux modèles de codage.", "go.hero.title": "Modèles de code à faible coût pour tous", diff --git a/packages/console/app/src/i18n/it.ts b/packages/console/app/src/i18n/it.ts index a272d621f..2922105b6 100644 --- a/packages/console/app/src/i18n/it.ts +++ b/packages/console/app/src/i18n/it.ts @@ -254,7 +254,6 @@ export const dict = { "zen.privacy.exceptionsLink": "seguenti eccezioni", "go.title": "OpenCode Go | Modelli di coding a basso costo per tutti", - "go.banner.text": "Ox Alpha Free è disponibile su Go per un periodo limitato", "go.meta.description": "Go costa $10/mese, con limiti di utilizzo generosi e un accesso affidabile ai principali modelli di coding.", "go.hero.title": "Modelli di coding a basso costo per tutti", diff --git a/packages/console/app/src/i18n/ja.ts b/packages/console/app/src/i18n/ja.ts index c2a46a06b..45bff6611 100644 --- a/packages/console/app/src/i18n/ja.ts +++ b/packages/console/app/src/i18n/ja.ts @@ -253,7 +253,6 @@ export const dict = { "zen.privacy.exceptionsLink": "以下の例外", "go.title": "OpenCode Go | すべての人のための低価格なコーディングモデル", - "go.banner.text": "Ox Alpha Freeは期間限定でGoで利用できます", "go.meta.description": "Goは月額$10で、主要なコーディングモデルへのゆとりある利用上限と安定したアクセスを提供します。", "go.hero.title": "すべての人のための低価格なコーディングモデル", diff --git a/packages/console/app/src/i18n/ko.ts b/packages/console/app/src/i18n/ko.ts index 156a82c6c..bf5eb8e6b 100644 --- a/packages/console/app/src/i18n/ko.ts +++ b/packages/console/app/src/i18n/ko.ts @@ -250,7 +250,6 @@ export const dict = { "zen.privacy.exceptionsLink": "다음 예외", "go.title": "OpenCode Go | 모두를 위한 저비용 코딩 모델", - "go.banner.text": "Ox Alpha Free가 한정된 기간 동안 Go에서 제공됩니다", "go.meta.description": "Go는 월 $10이며, 넉넉한 사용 한도와 주요 코딩 모델에 대한 안정적인 액세스를 제공합니다.", "go.hero.title": "모두를 위한 저비용 코딩 모델", "go.hero.body": diff --git a/packages/console/app/src/i18n/no.ts b/packages/console/app/src/i18n/no.ts index 93d1a92b1..d6dd00155 100644 --- a/packages/console/app/src/i18n/no.ts +++ b/packages/console/app/src/i18n/no.ts @@ -254,7 +254,6 @@ export const dict = { "zen.privacy.exceptionsLink": "følgende unntak", "go.title": "OpenCode Go | Rimelige kodemodeller for alle", - "go.banner.text": "Ox Alpha Free er tilgjengelig på Go i en begrenset periode", "go.meta.description": "Go koster $10/måned, med sjenerøse bruksgrenser og pålitelig tilgang til ledende kodemodeller.", "go.hero.title": "Rimelige kodemodeller for alle", diff --git a/packages/console/app/src/i18n/pl.ts b/packages/console/app/src/i18n/pl.ts index cc4626ef5..d423a5cda 100644 --- a/packages/console/app/src/i18n/pl.ts +++ b/packages/console/app/src/i18n/pl.ts @@ -255,7 +255,6 @@ export const dict = { "zen.privacy.exceptionsLink": "następującymi wyjątkami", "go.title": "OpenCode Go | Niskokosztowe modele do kodowania dla każdego", - "go.banner.text": "Ox Alpha Free jest dostępny w Go przez ograniczony czas", "go.meta.description": "Go kosztuje $10/miesiąc, oferując hojne limity użycia i niezawodny dostęp do wiodących modeli do kodowania.", "go.hero.title": "Niskokosztowe modele do kodowania dla każdego", diff --git a/packages/console/app/src/i18n/ru.ts b/packages/console/app/src/i18n/ru.ts index b92730405..92cb22558 100644 --- a/packages/console/app/src/i18n/ru.ts +++ b/packages/console/app/src/i18n/ru.ts @@ -258,7 +258,6 @@ export const dict = { "zen.privacy.exceptionsLink": "следующими исключениями", "go.title": "OpenCode Go | Недорогие модели для кодинга для всех", - "go.banner.text": "Ox Alpha Free доступна в Go в течение ограниченного времени", "go.meta.description": "Go стоит $10/месяц и предлагает щедрые лимиты использования и надежный доступ к ведущим моделям для кодинга.", "go.hero.title": "Недорогие модели для кодинга для всех", diff --git a/packages/console/app/src/i18n/th.ts b/packages/console/app/src/i18n/th.ts index 10e715e60..c3766f5b4 100644 --- a/packages/console/app/src/i18n/th.ts +++ b/packages/console/app/src/i18n/th.ts @@ -253,7 +253,6 @@ export const dict = { "zen.privacy.exceptionsLink": "ข้อยกเว้นดังนี้", "go.title": "OpenCode Go | โมเดลเขียนโค้ดราคาประหยัดสำหรับทุกคน", - "go.banner.text": "Ox Alpha Free พร้อมใช้งานบน Go ในช่วงเวลาจำกัด", "go.meta.description": "Go มีราคา $10/เดือน พร้อมขีดจำกัดการใช้งานที่เอื้อเฟื้อและการเข้าถึงโมเดลเขียนโค้ดชั้นนำอย่างเชื่อถือได้", "go.hero.title": "โมเดลเขียนโค้ดราคาประหยัดสำหรับทุกคน", diff --git a/packages/console/app/src/i18n/tr.ts b/packages/console/app/src/i18n/tr.ts index 2a058e5d8..118d56204 100644 --- a/packages/console/app/src/i18n/tr.ts +++ b/packages/console/app/src/i18n/tr.ts @@ -256,7 +256,6 @@ export const dict = { "zen.privacy.exceptionsLink": "aşağıdaki istisnalar", "go.title": "OpenCode Go | Herkes için düşük maliyetli kodlama modelleri", - "go.banner.text": "Ox Alpha Free sınırlı bir süre için Go'da kullanılabilir", "go.meta.description": "Go ayda 10$'dır; cömert kullanım limitleri ve önde gelen kodlama modellerine güvenilir erişim sunar.", "go.hero.title": "Herkes için düşük maliyetli kodlama modelleri", diff --git a/packages/console/app/src/i18n/uk.ts b/packages/console/app/src/i18n/uk.ts index 93aea4702..688d61236 100644 --- a/packages/console/app/src/i18n/uk.ts +++ b/packages/console/app/src/i18n/uk.ts @@ -255,7 +255,6 @@ export const dict = { "zen.privacy.exceptionsLink": "такими винятками", "go.title": "OpenCode Go | Недорогі моделі кодування для всіх", - "go.banner.text": "Ox Alpha Free доступна в Go протягом обмеженого часу", "go.meta.description": "Go коштує $10/місяць, зі щедрими лімітами використання та надійним доступом до провідних моделей для кодування.", "go.hero.title": "Недорогі моделі кодування для всіх", diff --git a/packages/console/app/src/i18n/zh.ts b/packages/console/app/src/i18n/zh.ts index 03c278a71..f852bc084 100644 --- a/packages/console/app/src/i18n/zh.ts +++ b/packages/console/app/src/i18n/zh.ts @@ -244,7 +244,6 @@ export const dict = { "zen.privacy.exceptionsLink": "以下例外情况除外", "go.title": "OpenCode Go | 人人可用的低成本编程模型", - "go.banner.text": "Ox Alpha Free 限时加入 Go", "go.meta.description": "Go 每月 $10,提供充裕的使用限额,并可可靠访问领先的编程模型。", "go.hero.title": "人人可用的低成本编程模型", "go.hero.body": diff --git a/packages/console/app/src/i18n/zht.ts b/packages/console/app/src/i18n/zht.ts index 3da3c4625..b83e75f77 100644 --- a/packages/console/app/src/i18n/zht.ts +++ b/packages/console/app/src/i18n/zht.ts @@ -244,7 +244,6 @@ export const dict = { "zen.privacy.exceptionsLink": "以下例外情況", "go.title": "OpenCode Go | 低成本全民編碼模型", - "go.banner.text": "Ox Alpha Free 限時加入 Go", "go.meta.description": "Go 每月 $10,提供充裕的使用限額,並可穩定存取領先的編碼模型。", "go.hero.title": "低成本全民編碼模型", "go.hero.body": diff --git a/packages/console/app/src/routes/go/index.css b/packages/console/app/src/routes/go/index.css index a329e2981..8e715e363 100644 --- a/packages/console/app/src/routes/go/index.css +++ b/packages/console/app/src/routes/go/index.css @@ -327,37 +327,6 @@ body { } } - [data-component="desktop-app-banner"] { - display: flex; - align-items: center; - gap: 12px; - margin-bottom: 32px; - - [data-slot="badge"] { - background: var(--color-background-strong); - color: var(--color-text-inverted); - font-weight: 500; - padding: 4px 8px; - line-height: 1; - flex-shrink: 0; - } - - [data-slot="content"] { - display: flex; - align-items: center; - gap: 1ch; - } - - [data-slot="text"] { - color: var(--color-text-strong); - line-height: 1.4; - - @media (max-width: 30.625rem) { - display: none; - } - } - } - [data-slot="hero-copy"] { img { margin-bottom: 24px; diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index e101012b9..e36e10af8 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -81,7 +81,6 @@ function LimitsGraph(props: { href: string }) { { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100, d: "340ms" }, { id: "hy3", name: "Hy3", req: 34400, baseReq: 4300, d: "320ms" }, { id: "muse-spark-1.2-contributor", name: "Muse Spark 1.2 Contributor", req: 45300, edge: true, d: "360ms" }, - { id: "ox-alpha-free", name: "Ox Alpha Free", req: Infinity, infinite: true, edge: true, d: "400ms" }, ] const w = 1040 @@ -270,12 +269,6 @@ export default function Home() {
        -
        - {i18n.t("home.banner.badge")} -
        - {i18n.t("go.banner.text")} -
        -
        diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index b72d38c4c..7e535ae8a 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -662,7 +662,6 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {
      • MiMo-V2.5
      • MiMo-V2.5-Pro
      • Hy3
      • -
      • Ox Alpha Free

      {i18n.t("workspace.lite.promo.footer")}

      diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index fd47f5bfc..5ea9b1453 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -71,7 +71,6 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (لفترة محدودة) قد تتغير قائمة النماذج مع استمرارنا في اختبار نماذج جديدة وإضافتها. @@ -113,7 +112,6 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | تستند التقديرات إلى أنماط الطلبات المرصودة: @@ -171,13 +169,11 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC من الاثنين إلى الجمعة؛ وجميع الساعات الأخرى، بما في ذلك عطلات نهاية الأسبوع، Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** يتم تحويل الصور إلى رموز بناءً على أبعادها، وتُحتسب كرموز إدخال إلى جانب رموز النص. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** مجاني لفترة محدودة. يمكنك تتبّع استخدامك الحالي في **console**. @@ -236,7 +232,6 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | يستخدم [model id](/docs/config/#models) في إعدادات OpenCode لديك التنسيق `opencode-go/`. على سبيل المثال، بالنسبة إلى Kimi K3، ستستخدم `opencode-go/kimi-k3` في إعداداتك. @@ -278,7 +273,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | غير مستخدَمة | 0 أيام | | DeepSeek V4 Flash Vision Exp | غير مستخدَمة | 0 أيام | | Hy3 | غير مستخدَمة | 0 أيام | -| Ox Alpha Free | غير مستخدَمة | 0 أيام | - **Grok 4.6:** تعطّل ZDR ميزات API مهمة تعتمد على البيانات المخزنة، بما في ذلك Responses API ذات الحالة، وFiles and Collections، وBatch API. [اعرف المزيد](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** تُنشأ سجلات مراقبة إساءة الاستخدام لكل استخدام لميزات API، ويُحتفظ بها لمدة تصل إلى 30 يومًا. [اعرف المزيد](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index c4e7e8dd9..7609c0b6f 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -112,7 +112,6 @@ OpenCode Zen هي بوابة AI تتيح لك الوصول إلى هذه الن | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -140,7 +139,6 @@ https://opencode.ai/zen/v1/models | النموذج | الإدخال | الإخراج | القراءة المخزنة | الكتابة المخزنة | | --------------------------------- | ------- | ------- | --------------- | --------------- | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -231,7 +229,6 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Nemotron 3.5 Lightning Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Big Pickle نموذج خفي ومتاح مجانا على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. -- Ox Alpha Free نموذج خفي ومتاح مجانا على OpenCode لفترة محدودة. يتبع مزوده سياسة عدم الاحتفاظ بالبيانات ولا يستخدم بياناتك لتدريب النماذج. - Muse Spark 1.2 Contributor Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. تواصل معنا إذا كانت لديك أي أسئلة. diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index ca0a3d1a7..ea5204858 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -81,7 +81,6 @@ Trenutna lista modela uključuje: - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (ograničeno vrijeme) Lista modela se može mijenjati dok testiramo i dodajemo nove. @@ -123,7 +122,6 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | Procjene se zasnivaju na zapaženim obrascima zahtjeva: @@ -181,13 +179,11 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC od ponedjeljka do petka; svi ostali sati, uključujući vikende, su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Slike se pretvaraju u tokene na osnovu svojih dimenzija i naplaćuju kao ulazni tokeni zajedno s tekstualnim tokenima. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Besplatan ograničeno vrijeme. Svoju trenutnu potrošnju možete pratiti u **konzoli**. @@ -248,7 +244,6 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Model id](/docs/config/#models) u vašoj OpenCode konfiguraciji koristi format `opencode-go/`. Na primjer, za Kimi K3, koristili biste @@ -292,7 +287,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | Ne koristi se | 0 dana | | DeepSeek V4 Flash Vision Exp | Ne koristi se | 0 dana | | Hy3 | Ne koristi se | 0 dana | -| Ox Alpha Free | Ne koristi se | 0 dana | - **Grok 4.6:** ZDR onemogućava važne API funkcije koje zavise od pohranjenih podataka, uključujući Responses API s očuvanjem stanja, Files and Collections i Batch API. [Saznajte više](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Zapisi o nadzoru zloupotrebe generišu se za svako korištenje API funkcija i čuvaju do 30 dana. [Saznajte više](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index 0b99b4a1c..4cb932343 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -117,7 +117,6 @@ Našim modelima možete pristupiti i preko sljedećih API endpointa. | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -147,7 +146,6 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Model | Input | Output | Cached Read | Cached Write | | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -238,7 +236,6 @@ Besplatni modeli: - Nemotron 3 Ultra Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Nemotron 3.5 Lightning Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Big Pickle je stealth model koji je besplatan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. -- Ox Alpha Free je stealth model koji je besplatan na OpenCode ograničeno vrijeme. Pružalac usluge slijedi politiku nultog zadržavanja i ne koristi vaše podatke za treniranje modela. - Muse Spark 1.2 Contributor Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. Kontaktirajte nas ako imate bilo kakvih pitanja. diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 16a944f68..042823363 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -81,7 +81,6 @@ Den nuværende liste over modeller inkluderer: - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (i en begrænset periode) Listen over modeller kan ændre sig, efterhånden som vi tester og tilføjer nye. @@ -123,7 +122,6 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | Estimaterne er baseret på observerede anmodningsmønstre: @@ -181,13 +179,11 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC fra mandag til fredag; alle andre tider, herunder weekender, er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Billeder konverteres til tokens baseret på deres dimensioner og afregnes som inputtokens sammen med teksttokens. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Gratis i en begrænset periode. Du kan spore dit nuværende forbrug i **konsollen**. @@ -248,7 +244,6 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Dit [model id](/docs/config/#models) i din OpenCode config bruger formatet `opencode-go/`. For eksempel for Kimi K3, vil du @@ -292,7 +287,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | Ikke brugt | 0 dage | | DeepSeek V4 Flash Vision Exp | Ikke brugt | 0 dage | | Hy3 | Ikke brugt | 0 dage | -| Ox Alpha Free | Ikke brugt | 0 dage | - **Grok 4.6:** ZDR deaktiverer vigtige API-funktioner, der afhænger af lagrede data, herunder den tilstandsbevarende Responses API, Files and Collections og Batch API. [Læs mere](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logfiler til overvågning af misbrug genereres ved al brug af API-funktioner og opbevares i op til 30 dage. [Læs mere](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index 7ff136aaa..5a8fee3ea 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -117,7 +117,6 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints. | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -147,7 +146,6 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Model | Input | Output | Cached Read | Cached Write | | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -238,7 +236,6 @@ De gratis modeller: - Nemotron 3 Ultra Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Nemotron 3.5 Lightning Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Big Pickle er en stealth-model, som er gratis på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. -- Ox Alpha Free er en stealth-model, som er gratis på OpenCode i en begrænset periode. Udbyderen følger en nul-opbevaringspolitik og bruger ikke dine data til at træne modeller. - Muse Spark 1.2 Contributor Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. Kontakt os, hvis du har spørgsmål. diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index a4d7484c8..39c1800f0 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -73,7 +73,6 @@ Die aktuelle Liste der Modelle umfasst: - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (für begrenzte Zeit) Die Liste der Modelle kann sich ändern, während wir neue testen und hinzufügen. @@ -115,7 +114,6 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | Die Schätzungen basieren auf beobachteten Anfragemustern: @@ -173,13 +171,11 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Die Peak-Zeiten sind montags bis freitags von 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten, einschließlich der Wochenenden, sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Bilder werden anhand ihrer Abmessungen in Tokens umgewandelt und zusammen mit Text-Tokens als Input-Tokens abgerechnet. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Für begrenzte Zeit kostenlos. Du kannst deine aktuelle Nutzung in der **Console** verfolgen. @@ -238,7 +234,6 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Die [Modell-ID](/docs/config/#models) in deiner OpenCode Config verwendet das Format `opencode-go/`. Für Kimi K3 würdest du beispielsweise `opencode-go/kimi-k3` in deiner Config verwenden. @@ -280,7 +275,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | Nicht verwendet | 0 Tage | | DeepSeek V4 Flash Vision Exp | Nicht verwendet | 0 Tage | | Hy3 | Nicht verwendet | 0 Tage | -| Ox Alpha Free | Nicht verwendet | 0 Tage | - **Grok 4.6:** ZDR deaktiviert wichtige API-Funktionen, die von gespeicherten Daten abhängen, einschließlich der zustandsbehafteten Responses API, Files and Collections und der Batch API. [Mehr erfahren](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Für die Nutzung aller API-Funktionen werden Protokolle zur Missbrauchsüberwachung erstellt und bis zu 30 Tage lang aufbewahrt. [Mehr erfahren](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index 4084fa9ce..c1061c2d7 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -108,7 +108,6 @@ Du kannst auch über die folgenden API-Endpunkte auf unsere Modelle zugreifen. | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -136,7 +135,6 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Model | Input | Output | Cached Read | Cached Write | | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -227,7 +225,6 @@ Die kostenlosen Modelle: - Nemotron 3 Ultra Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Nemotron 3.5 Lightning Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Big Pickle ist ein Stealth-Modell, das für begrenzte Zeit kostenlos auf OpenCode verfügbar ist. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. -- Ox Alpha Free ist ein Stealth-Modell, das für begrenzte Zeit kostenlos auf OpenCode verfügbar ist. Der Anbieter befolgt eine Zero-Retention-Richtlinie und verwendet deine Daten nicht zum Trainieren von Modellen. - Muse Spark 1.2 Contributor Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. Kontaktiere uns, wenn du Fragen hast. diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index ca1bb08a2..79416ed45 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -81,7 +81,6 @@ La lista actual de modelos incluye: - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (por tiempo limitado) La lista de modelos puede cambiar a medida que probamos y agregamos otros nuevos. @@ -123,7 +122,6 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | Las estimaciones se basan en los patrones de peticiones observados: @@ -181,13 +179,11 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC, de lunes a viernes; todas las demás horas, incluidos los fines de semana, son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Las imágenes se convierten en tokens según sus dimensiones y se facturan como tokens de entrada junto con los tokens de texto. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Gratis por tiempo limitado. Puedes realizar un seguimiento de tu uso actual en la **consola**. @@ -248,7 +244,6 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | El [ID del modelo](/docs/config/#models) en tu configuración de OpenCode usa el formato `opencode-go/`. Por ejemplo, para Kimi K3, usarías @@ -292,7 +287,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | No utilizado | 0 días | | DeepSeek V4 Flash Vision Exp | No utilizado | 0 días | | Hy3 | No utilizado | 0 días | -| Ox Alpha Free | No utilizado | 0 días | - **Grok 4.6:** ZDR deshabilita funciones importantes de la API que dependen de datos almacenados, incluidas la Responses API con estado, Files and Collections y la Batch API. [Más información](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Se generan registros de supervisión de abusos para todo el uso de funciones de la API y se conservan durante un máximo de 30 días. [Más información](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index 4fbd7048a..eed117a8d 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -117,7 +117,6 @@ También puedes acceder a nuestros modelos a través de los siguientes endpoints | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -147,7 +146,6 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Modelo | Entrada | Salida | Lectura en caché | Escritura en caché | | --------------------------------- | ------- | ------- | ---------------- | ------------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -238,7 +236,6 @@ Los modelos gratuitos: - Nemotron 3 Ultra Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Nemotron 3.5 Lightning Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Big Pickle es un modelo stealth que es gratuito en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. -- Ox Alpha Free es un modelo stealth que es gratuito en OpenCode por tiempo limitado. Su proveedor sigue una política de retención cero y no utiliza tus datos para entrenar modelos. - Muse Spark 1.2 Contributor Free está disponible en OpenCode por tiempo limitado. El equipo está aprovechando este período para recopilar comentarios y mejorar el modelo. Contáctanos si tienes alguna pregunta. diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 6e906c648..17460a949 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -71,7 +71,6 @@ La liste actuelle des modèles comprend : - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (pour une durée limitée) La liste des modèles peut changer au fur et à mesure que nous en testons et en ajoutons de nouveaux. @@ -113,7 +112,6 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | Les estimations sont basées sur les schémas de requêtes observés : @@ -171,13 +169,11 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC, du lundi au vendredi ; toutes les autres heures, y compris le week-end, sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Les images sont converties en tokens selon leurs dimensions et facturées comme tokens d’entrée avec les tokens de texte. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Gratuit pour une durée limitée. Vous pouvez suivre votre utilisation actuelle dans la **console**. @@ -236,7 +232,6 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | L'[ID de modèle](/docs/config/#models) dans votre configuration OpenCode utilise le format `opencode-go/`. Par exemple, pour Kimi K3, vous utiliseriez `opencode-go/kimi-k3` dans votre configuration. @@ -278,7 +273,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | Non utilisé | 0 jour | | DeepSeek V4 Flash Vision Exp | Non utilisé | 0 jour | | Hy3 | Non utilisé | 0 jour | -| Ox Alpha Free | Non utilisé | 0 jour | - **Grok 4.6:** Le ZDR désactive d’importantes fonctionnalités API qui dépendent des données stockées, notamment Responses API avec état, Files and Collections et Batch API. [En savoir plus](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Des journaux de surveillance des abus sont générés pour toute utilisation des fonctionnalités API et conservés pendant un maximum de 30 jours. [En savoir plus](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index f16a748c1..8061a2ced 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -108,7 +108,6 @@ Vous pouvez également accéder à nos modèles via les points de terminaison AP | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -136,7 +135,6 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Modèle | Input | Output | Cached Read | Cached Write | | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -227,7 +225,6 @@ Les modèles gratuits : - Nemotron 3 Ultra Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Nemotron 3.5 Lightning Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Big Pickle est un modèle stealth gratuit sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. -- Ox Alpha Free est un modèle stealth gratuit sur OpenCode pour une durée limitée. Son fournisseur applique une politique de conservation nulle et n'utilise pas vos données pour entraîner des modèles. - Muse Spark 1.2 Contributor Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. Contactez-nous si vous avez des questions. diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index b5f6bde71..8ed9fe567 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -81,7 +81,6 @@ The current list of models includes: - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (limited time) The list of models may change as we test and add new ones. @@ -123,7 +122,6 @@ The table below provides an estimated request count based on typical Go usage pa | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | The estimates are based on observed request patterns: @@ -181,13 +179,11 @@ The estimates are also based on the following prices per 1M tokens and the month | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC, Monday through Friday; all other hours, including weekends, are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Images are converted into tokens based on their dimensions and billed as input tokens alongside text tokens. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Free for a limited time. You can track your current usage in the **console**. @@ -248,7 +244,6 @@ You can also access Go models through the following API endpoints. | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | The [model id](/docs/config/#models) in your OpenCode config uses the format `opencode-go/`. For example, for Kimi K3, you would @@ -292,7 +287,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | Not used | 0 days\* | | DeepSeek V4 Flash Vision Exp | Not used | 0 days\* | | Hy3 | Not used | 0 days | -| Ox Alpha Free | Not used | 0 days | - **Grok 4.6:** ZDR disables important API features that depend on stored data, including the stateful Responses API, Files and Collections, and the Batch API. [Learn more](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Abuse monitoring logs are generated for all API feature usage and retained for up to 30 days. [Learn more](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 2c8c09eb9..e16b42101 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -79,7 +79,6 @@ L'elenco attuale dei modelli include: - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (per un periodo limitato) L'elenco dei modelli potrebbe cambiare man mano che ne testiamo e aggiungiamo di nuovi. @@ -121,7 +120,6 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | Le stime si basano sui pattern di richieste osservati: @@ -179,13 +177,11 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC, dal lunedì al venerdì; tutti gli altri orari, inclusi i fine settimana, sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Le immagini vengono convertite in token in base alle loro dimensioni e fatturate come token di input insieme ai token di testo. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Gratis per un periodo limitato. Puoi monitorare il tuo utilizzo attuale nella **console**. @@ -246,7 +242,6 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Il [model id](/docs/config/#models) nella tua OpenCode config utilizza il formato `opencode-go/`. Ad esempio, per Kimi K3, useresti @@ -290,7 +285,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | Non utilizzato | 0 giorni | | DeepSeek V4 Flash Vision Exp | Non utilizzato | 0 giorni | | Hy3 | Non utilizzato | 0 giorni | -| Ox Alpha Free | Non utilizzato | 0 giorni | - **Grok 4.6:** ZDR disabilita importanti funzionalità API che dipendono dai dati archiviati, tra cui la Responses API con stato, Files and Collections e Batch API. [Scopri di più](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** I log di monitoraggio degli abusi vengono generati per l'utilizzo di tutte le funzionalità API e conservati per un massimo di 30 giorni. [Scopri di più](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index 917bf3a30..ab6c94472 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -117,7 +117,6 @@ Puoi anche accedere ai nostri modelli tramite i seguenti endpoint API. | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -147,7 +146,6 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Modello | Input | Output | Cached Read | Cached Write | | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -238,7 +236,6 @@ I modelli gratuiti: - Nemotron 3 Ultra Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Nemotron 3.5 Lightning Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Big Pickle è un modello stealth che è gratuito su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. -- Ox Alpha Free è un modello stealth gratuito su OpenCode per un periodo limitato. Il suo provider segue una politica di conservazione zero e non usa i tuoi dati per addestrare modelli. - Muse Spark 1.2 Contributor Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. Contattaci se hai domande. diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 2eb757149..3ab3372f8 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -71,7 +71,6 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (期間限定) 新しいモデルをテストして追加するにつれて、モデルのリストは変更される場合があります。 @@ -113,7 +112,6 @@ OpenCode Goには以下の制限が含まれています: | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | 推定値は、観測されたリクエストパターンに基づいています: @@ -171,13 +169,11 @@ OpenCode Goには以下の制限が含まれています: | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak時間は月曜日から金曜日の01:00-04:00と06:00-10:00 UTCで、週末を含むそれ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 **DeepSeek V4 Flash Vision Exp:** 画像はサイズに基づいてトークンに変換され、テキストトークンと合わせて入力トークンとして課金されます。 [詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 -**Ox Alpha Free:** 期間限定で無料です。 現在の利用状況は**コンソール**で追跡できます。 @@ -236,7 +232,6 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode設定の[model id](/docs/config/#models)は、`opencode-go/`という形式を使用します。たとえば、Kimi K3の場合は、設定で`opencode-go/kimi-k3`を使用します。 @@ -278,7 +273,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | 使用なし | 0日 | | DeepSeek V4 Flash Vision Exp | 使用なし | 0日 | | Hy3 | 使用なし | 0日 | -| Ox Alpha Free | 使用なし | 0日 | - **Grok 4.6:** ZDRでは、保存データに依存する重要なAPI機能(ステートフルなResponses API、Files and Collections、Batch APIなど)が無効になります。[詳しく見る](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 不正使用監視ログはすべてのAPI機能の使用時に生成され、最大30日間保持されます。[詳しく見る](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index 601509dcd..acf316674 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -108,7 +108,6 @@ OpenCode Zen は、OpenCode のほかのプロバイダーと同じように動 | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -136,7 +135,6 @@ https://opencode.ai/zen/v1/models | Model | Input | Output | Cached Read | Cached Write | | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -227,7 +225,6 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Nemotron 3.5 Lightning Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Big Pickle はステルスモデルで、期間限定で OpenCode で無料提供されています。チームはこの期間中にフィードバックを集め、モデルを改善しています。 -- Ox Alpha Free はステルスモデルで、期間限定で OpenCode で無料提供されています。プロバイダーはゼロ保持ポリシーに従い、データをモデルのトレーニングに使用しません。 - Muse Spark 1.2 Contributor Free は期間限定で OpenCode で利用できます。チームはこの期間を活用してフィードバックを収集し、モデルを改善しています。 ご不明な点があれば、お問い合わせください。 diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index dfe73049a..8117a76ad 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -71,7 +71,6 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (한정된 기간) 새로운 모델을 테스트하고 추가함에 따라 이 목록은 변경될 수 있습니다. @@ -113,7 +112,6 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | 이 예상치는 관찰된 요청 패턴을 기준으로 합니다. @@ -171,13 +169,11 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 시간은 월요일부터 금요일까지 01:00-04:00 및 06:00-10:00 UTC이며, 주말을 포함한 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** 이미지는 크기에 따라 토큰으로 변환되며 텍스트 토큰과 함께 입력 토큰으로 청구됩니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** 한정된 기간 동안 무료입니다. 현재 사용량은 **console**에서 확인할 수 있습니다. @@ -236,7 +232,6 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode config의 [model id](/docs/config/#models)는 `opencode-go/` 형식을 사용합니다. 예를 들어 Kimi K3의 경우 config에서 `opencode-go/kimi-k3`를 사용하면 됩니다. @@ -278,7 +273,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | 사용되지 않음 | 0일 | | DeepSeek V4 Flash Vision Exp | 사용되지 않음 | 0일 | | Hy3 | 사용되지 않음 | 0일 | -| Ox Alpha Free | 사용되지 않음 | 0일 | - **Grok 4.6:** ZDR은 저장된 데이터에 의존하는 중요한 API 기능(상태 저장형 Responses API, Files and Collections, Batch API 포함)을 비활성화합니다. [자세히 알아보기](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** 모든 API 기능 사용에 대해 악용 모니터링 로그가 생성되며 최대 30일 동안 보존됩니다. [자세히 알아보기](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index 58a646f01..a3965a9eb 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -108,7 +108,6 @@ OpenCode Zen은 OpenCode의 다른 provider와 똑같이 작동합니다. | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -136,7 +135,6 @@ https://opencode.ai/zen/v1/models | 모델 | 입력 | 출력 | Cached Read | Cached Write | | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -227,7 +225,6 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Nemotron 3.5 Lightning Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Big Pickle은 한정된 기간 동안 OpenCode에서 무료로 제공되는 stealth model입니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. -- Ox Alpha Free는 한정된 기간 동안 OpenCode에서 무료로 제공되는 stealth model입니다. 제공업체는 데이터 미보관 정책을 따르며 사용자의 데이터를 모델 학습에 사용하지 않습니다. - Muse Spark 1.2 Contributor Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간을 활용해 피드백을 수집하고 모델을 개선하고 있습니다. 궁금한 점이 있으면 Contact us로 문의해 주세요. diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 93c8dd691..44b6bf573 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -81,7 +81,6 @@ Den nåværende listen over modeller inkluderer: - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (i en begrenset periode) Listen over modeller kan endres etter hvert som vi tester og legger til nye. @@ -123,7 +122,6 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | Estimatene er basert på observerte forespørselsmønstre: @@ -181,13 +179,11 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC fra mandag til fredag; alle andre tider, inkludert helger, er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Bilder konverteres til tokens basert på dimensjonene og faktureres som input-tokens sammen med tekst-tokens. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Gratis i en begrenset periode. Du kan spore din nåværende bruk i **konsollen**. @@ -248,7 +244,6 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Modell-ID-en](/docs/config/#models) i din OpenCode-konfigurasjon bruker formatet `opencode-go/`. For eksempel, for Kimi K3, vil du @@ -292,7 +287,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | Brukes ikke | 0 dager | | DeepSeek V4 Flash Vision Exp | Brukes ikke | 0 dager | | Hy3 | Brukes ikke | 0 dager | -| Ox Alpha Free | Brukes ikke | 0 dager | - **Grok 4.6:** ZDR deaktiverer viktige API-funksjoner som er avhengige av lagrede data, inkludert den tilstandsbaserte Responses API, Files and Collections og Batch API. [Les mer](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logger for overvåking av misbruk genereres for all bruk av API-funksjoner og oppbevares i opptil 30 dager. [Les mer](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index 0c98f3dc5..68b7435be 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -117,7 +117,6 @@ Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter. | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -147,7 +146,6 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Modell | Inndata | Utdata | Bufret lesing | Bufret skriving | | --------------------------------- | ------- | ------- | ------------- | --------------- | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -238,7 +236,6 @@ Gratis-modellene: - Nemotron 3 Ultra Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Nemotron 3.5 Lightning Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Big Pickle er en stealth-modell som er gratis på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. -- Ox Alpha Free er en stealth-modell som er gratis på OpenCode i en begrenset periode. Leverandøren følger en nulloppbevaringspolicy og bruker ikke dataene dine til å trene modeller. - Muse Spark 1.2 Contributor Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. Kontakt oss hvis du har spørsmål. diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 2c4a89641..000530420 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -75,7 +75,6 @@ Obecna lista modeli obejmuje: - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (przez ograniczony czas) Lista modeli może ulec zmianie w miarę testowania i dodawania nowych. @@ -117,7 +116,6 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | Szacunki te opierają się na zaobserwowanych wzorcach żądań: @@ -175,13 +173,11 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC od poniedziałku do piątku; wszystkie pozostałe godziny, w tym weekendy, to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Obrazy są przeliczane na tokeny na podstawie ich wymiarów i rozliczane jako tokeny wejściowe razem z tokenami tekstowymi. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Bezpłatny przez ograniczony czas. Możesz śledzić swoje bieżące zużycie w **konsoli**. @@ -240,7 +236,6 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID modelu](/docs/config/#models) w Twojej konfiguracji OpenCode używa formatu `opencode-go/`. Na przykład dla Kimi K3 należy użyć @@ -284,7 +279,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | Niewykorzystywane | 0 dni | | DeepSeek V4 Flash Vision Exp | Niewykorzystywane | 0 dni | | Hy3 | Niewykorzystywane | 0 dni | -| Ox Alpha Free | Niewykorzystywane | 0 dni | - **Grok 4.6:** ZDR wyłącza ważne funkcje API zależne od przechowywanych danych, w tym stanowy Responses API, Files and Collections oraz Batch API. [Dowiedz się więcej](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Dzienniki monitorowania nadużyć są generowane dla każdego użycia funkcji API i przechowywane przez maksymalnie 30 dni. [Dowiedz się więcej](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index b73fe5bd5..c7db53507 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -117,7 +117,6 @@ Możesz też uzyskać dostęp do naszych modeli przez poniższe endpointy API. | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -147,7 +146,6 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Model | Wejście | Wyjście | Odczyt z cache | Zapis do cache | | --------------------------------- | ------- | ------- | -------------- | -------------- | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -238,7 +236,6 @@ Darmowe modele: - Nemotron 3 Ultra Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Nemotron 3.5 Lightning Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Big Pickle to stealth model, który jest darmowy w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. -- Ox Alpha Free to stealth model, który jest darmowy w OpenCode przez ograniczony czas. Dostawca stosuje zasadę zerowego przechowywania i nie używa twoich danych do trenowania modeli. - Muse Spark 1.2 Contributor Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. Skontaktuj się z nami, jeśli masz pytania. diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 75487e15f..af09191b4 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -81,7 +81,6 @@ A lista atual de modelos inclui: - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (por tempo limitado) A lista de modelos pode mudar conforme testamos e adicionamos novos. @@ -123,7 +122,6 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | As estimativas se baseiam nos padrões de requisições observados: @@ -181,13 +179,11 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC, de segunda a sexta-feira; todos os demais horários, incluindo os fins de semana, são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** As imagens são convertidas em tokens com base em suas dimensões e cobradas como tokens de entrada junto com os tokens de texto. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Gratuito por tempo limitado. Você pode acompanhar o seu uso atual no **console**. @@ -248,7 +244,6 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | O [ID do modelo](/docs/config/#models) na sua configuração do OpenCode usa o formato `opencode-go/`. Por exemplo, para o Kimi K3, você usaria @@ -292,7 +287,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | Não usado | 0 dias | | DeepSeek V4 Flash Vision Exp | Não usado | 0 dias | | Hy3 | Não usado | 0 dias | -| Ox Alpha Free | Não usado | 0 dias | - **Grok 4.6:** O ZDR desativa recursos importantes da API que dependem de dados armazenados, incluindo a Responses API com estado, Files and Collections e a Batch API. [Saiba mais](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logs de monitoramento de abuso são gerados para todo uso de recursos da API e retidos por até 30 dias. [Saiba mais](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index 6fb7331b5..5792ca2db 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -108,7 +108,6 @@ Você também pode acessar nossos modelos pelos seguintes endpoints de API. | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -136,7 +135,6 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Modelo | Entrada | Saída | Leitura em cache | Escrita em cache | | --------------------------------- | ------- | ------- | ---------------- | ---------------- | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -227,7 +225,6 @@ Os modelos gratuitos: - Nemotron 3 Ultra Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Nemotron 3.5 Lightning Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Big Pickle é um modelo stealth que está gratuito no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. -- Ox Alpha Free é um modelo stealth gratuito no OpenCode por tempo limitado. Seu provedor segue uma política de retenção zero e não usa seus dados para treinar modelos. - Muse Spark 1.2 Contributor Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. Entre em contato se você tiver alguma dúvida. diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index d96d18ae5..801883ba6 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -81,7 +81,6 @@ OpenCode Go работает так же, как и любой другой пр - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (ограниченное время) Список моделей может меняться по мере того, как мы тестируем и добавляем новые. @@ -123,7 +122,6 @@ OpenCode Go включает следующие лимиты: | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | Эти оценки основаны на наблюдаемых показателях запросов: @@ -181,13 +179,11 @@ OpenCode Go включает следующие лимиты: | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Часы Peak с понедельника по пятницу: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы, включая выходные, относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Изображения преобразуются в токены с учётом их размеров и оплачиваются как входные токены вместе с текстовыми токенами. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Бесплатно в течение ограниченного времени. Вы можете отслеживать текущее использование в **консоли**. @@ -248,7 +244,6 @@ OpenCode Go включает следующие лимиты: | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID модели](/docs/config/#models) в вашем конфиге OpenCode использует формат `opencode-go/`. Например, для Kimi K3 вам нужно @@ -292,7 +287,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | Не используется | 0 дней | | DeepSeek V4 Flash Vision Exp | Не используется | 0 дней | | Hy3 | Не используется | 0 дней | -| Ox Alpha Free | Не используется | 0 дней | - **Grok 4.6:** ZDR отключает важные функции API, зависящие от сохраненных данных, включая Responses API с сохранением состояния, Files and Collections и Batch API. [Подробнее](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Журналы мониторинга злоупотреблений создаются при любом использовании функций API и хранятся до 30 дней. [Подробнее](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index cd3c646d1..f72238c90 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -117,7 +117,6 @@ OpenCode Zen работает как любой другой провайдер | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -147,7 +146,6 @@ https://opencode.ai/zen/v1/models | Модель | Вход | Выход | Cached Read | Cached Write | | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -238,7 +236,6 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Nemotron 3.5 Lightning Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Big Pickle — это скрытая модель, которая доступна бесплатно в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. -- Ox Alpha Free — это скрытая модель, которая доступна бесплатно в OpenCode ограниченное время. Поставщик соблюдает политику нулевого хранения и не использует ваши данные для обучения моделей. - Muse Spark 1.2 Contributor Free доступна в OpenCode в течение ограниченного времени. Команда использует этот период для сбора отзывов и улучшения модели. Свяжитесь с нами, если у вас есть вопросы. diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 5fb203921..9f10c061b 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -71,7 +71,6 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (ในช่วงเวลาจำกัด) รายชื่อโมเดลอาจมีการเปลี่ยนแปลงเมื่อเราทำการทดสอบและเพิ่มโมเดลใหม่ๆ @@ -113,7 +112,6 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | การประมาณการนี้อ้างอิงจากรูปแบบการใช้งาน request ที่สังเกตพบ: @@ -171,13 +169,11 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ตั้งแต่วันจันทร์ถึงวันศุกร์ ส่วนเวลาอื่นทั้งหมด รวมถึงวันหยุดสุดสัปดาห์ เป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) **DeepSeek V4 Flash Vision Exp:** รูปภาพจะถูกแปลงเป็น token ตามขนาด และคิดค่าบริการเป็น input token รวมกับ text token [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) -**Ox Alpha Free:** ใช้งานฟรีในช่วงเวลาจำกัด คุณสามารถติดตามการใช้งานปัจจุบันของคุณได้ใน **console** @@ -236,7 +232,6 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [model id](/docs/config/#models) ใน OpenCode config ของคุณจะใช้รูปแบบ `opencode-go/` ตัวอย่างเช่น สำหรับ Kimi K3 คุณจะใช้ `opencode-go/kimi-k3` ใน config ของคุณ @@ -278,7 +273,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | ไม่นำไปใช้ | 0 วัน | | DeepSeek V4 Flash Vision Exp | ไม่นำไปใช้ | 0 วัน | | Hy3 | ไม่นำไปใช้ | 0 วัน | -| Ox Alpha Free | ไม่นำไปใช้ | 0 วัน | - **Grok 4.6:** ZDR ปิดใช้งานฟีเจอร์ API สำคัญที่ต้องอาศัยข้อมูลที่จัดเก็บไว้ ซึ่งรวมถึง Responses API แบบมีสถานะ, Files and Collections และ Batch API [ดูข้อมูลเพิ่มเติม](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr) - **GPT 5.6 Luna:** ระบบจะสร้างบันทึกการตรวจสอบการใช้งานในทางที่ผิดสำหรับการใช้งานฟีเจอร์ API ทั้งหมด และเก็บรักษาไว้นานสูงสุด 30 วัน [ดูข้อมูลเพิ่มเติม](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring) diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index 33d19cdd7..157e906a3 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -110,7 +110,6 @@ OpenCode Zen ทำงานเหมือน provider อื่น ๆ ใน | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -138,7 +137,6 @@ https://opencode.ai/zen/v1/models | Model | Input | Output | Cached Read | Cached Write | | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -229,7 +227,6 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Nemotron 3.5 Lightning Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Big Pickle เป็น stealth model ที่ใช้งานฟรีบน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล -- Ox Alpha Free เป็น stealth model ที่ใช้งานฟรีบน OpenCode ในช่วงเวลาจำกัด ผู้ให้บริการใช้นโยบายไม่เก็บรักษาข้อมูลและไม่นำข้อมูลของคุณไปใช้ฝึกโมเดล - Muse Spark 1.2 Contributor Free เปิดให้ใช้งานบน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อรวบรวมความคิดเห็นและปรับปรุงโมเดล ติดต่อเรา หากคุณมีคำถาม diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 85f228285..4f13b1d73 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -71,7 +71,6 @@ Mevcut model listesi şunları içerir: - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (sınırlı bir süre için) Test edip yenilerini ekledikçe model listesi değişebilir. @@ -113,7 +112,6 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | Tahminler, gözlemlenen istek modellerine dayanır: @@ -171,13 +169,11 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak saatleri pazartesiden cumaya 01:00-04:00 ve 06:00-10:00 UTC'dir; hafta sonları dahil diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). **DeepSeek V4 Flash Vision Exp:** Görseller boyutlarına göre token'lara dönüştürülür ve metin token'larıyla birlikte girdi token'ları olarak ücretlendirilir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). -**Ox Alpha Free:** Sınırlı bir süre için ücretsiz. Mevcut kullanımınızı **konsoldan** takip edebilirsiniz. @@ -236,7 +232,6 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode yapılandırmanızdaki [model id](/docs/config/#models) formatı `opencode-go/` şeklindedir. Örneğin, Kimi K3 için yapılandırmanızda `opencode-go/kimi-k3` kullanmalısınız. @@ -278,7 +273,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | Kullanılmaz | 0 gün | | DeepSeek V4 Flash Vision Exp | Kullanılmaz | 0 gün | | Hy3 | Kullanılmaz | 0 gün | -| Ox Alpha Free | Kullanılmaz | 0 gün | - **Grok 4.6:** ZDR, durum bilgisi tutan Responses API, Files and Collections ve Batch API dahil olmak üzere saklanan verilere bağlı önemli API özelliklerini devre dışı bırakır. [Daha fazla bilgi](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Tüm API özelliklerinin kullanımı için kötüye kullanım izleme günlükleri oluşturulur ve 30 güne kadar saklanır. [Daha fazla bilgi](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index 15d592d5c..d96fdce37 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -108,7 +108,6 @@ Modellerimize aşağıdaki API uç noktaları aracılığıyla da erişebilirsin | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -136,7 +135,6 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Model | Input | Output | Cached Read | Cached Write | | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -227,7 +225,6 @@ Kredi kartı ücretleri maliyet üzerinden yansıtılır (%4.4 + işlem başına - Nemotron 3 Ultra Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Nemotron 3.5 Lightning Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Big Pickle, sınırlı bir süre için OpenCode'da ücretsiz olan gizli bir modeldir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. -- Ox Alpha Free, sınırlı bir süre için OpenCode'da ücretsiz olan gizli bir modeldir. Sağlayıcısı sıfır saklama politikası uygular ve verilerinizi model eğitimi için kullanmaz. - Muse Spark 1.2 Contributor Free, sınırlı bir süre için OpenCode'da kullanılabilir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. Sorularınız varsa bizimle iletişime geçin. diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index 83ae91603..a5a80dbf6 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -117,7 +117,6 @@ You can also access our models through the following API endpoints. | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -147,7 +146,6 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Model | Input | Output | Cached Read | Cached Write | | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -238,7 +236,6 @@ The free models: - Nemotron 3 Ultra Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Nemotron 3.5 Lightning Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Big Pickle is a stealth model that's free on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. -- Ox Alpha Free is a stealth model that's free on OpenCode for a limited time. Its provider follows a zero-retention policy and does not use your data for model training. - Muse Spark 1.2 Contributor Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. Contact us if you have any questions. diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 4efd9c1c2..aed7e023d 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -71,7 +71,6 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (限时) 随着我们进行测试和添加新模型,该列表可能会发生变化。 @@ -113,7 +112,6 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | 预估值基于观察到的请求模式: @@ -171,13 +169,11 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 时段为周一至周五的 01:00-04:00 和 06:00-10:00 UTC;其他所有时段(包括周末)均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 **DeepSeek V4 Flash Vision Exp:** 图片会根据尺寸转换为 token,并与文本 token 一起按输入 token 计费。 [了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 -**Ox Alpha Free:** 限时免费。 你可以在 **控制台** 中跟踪你当前的使用情况。 @@ -236,7 +232,6 @@ OpenCode Go 包含以下限制: | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 你的 OpenCode 配置中的 [模型 ID](/docs/config/#models) 使用 `opencode-go/` 格式。例如,对于 Kimi K3,你将在配置中使用 `opencode-go/kimi-k3`。 @@ -278,7 +273,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | 不使用 | 0 天 | | DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | | Hy3 | 不使用 | 0 天 | -| Ox Alpha Free | 不使用 | 0 天 | - **Grok 4.6:** ZDR 会禁用依赖所存储数据的重要 API 功能,包括有状态的 Responses API、Files and Collections 和 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 所有 API 功能的使用都会生成滥用监控日志,并最多保留 30 天。[了解更多](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index 7aa69ff3e..258905c22 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -108,7 +108,6 @@ OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -136,7 +135,6 @@ https://opencode.ai/zen/v1/models | 模型 | 输入 | 输出 | 缓存读取 | 缓存写入 | | --------------------------------- | ------ | ------- | -------- | -------- | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -227,7 +225,6 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Nemotron 3.5 Lightning Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Big Pickle 是一个隐身模型,目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 -- Ox Alpha Free 是一个隐身模型,目前在 OpenCode 上限时免费提供。其提供商遵循零保留策略,不会将你的数据用于模型训练。 - Muse Spark 1.2 Contributor Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 如果你有任何问题,请联系我们。 diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index 630b4e9be..b882b7085 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -71,7 +71,6 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** - **Hy3** -- **Ox Alpha Free** (限時) 隨著我們測試並加入新模型,模型清單可能會有所變動。 @@ -113,7 +112,6 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy3 | 4,300 | 10,750 | 21,500 | -| Ox Alpha Free | - | - | - | 這些預估值是基於觀察到的請求模式: @@ -171,13 +169,11 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | -| Ox Alpha Free | - | - | - | - | - | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 時段為週一至週五的 01:00-04:00 和 06:00-10:00 UTC;其他所有時段(包括週末)均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 **DeepSeek V4 Flash Vision Exp:** 圖片會根據尺寸轉換為 token,並與文字 token 一起按輸入 token 計費。 [了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 -**Ox Alpha Free:** 限時免費。 您可以在 **console** 中追蹤您目前的使用量。 @@ -236,7 +232,6 @@ OpenCode Go 包含以下限制: | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | ox-alpha-free | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 您的 OpenCode 設定中的 [model id](/docs/config/#models) 使用 `opencode-go/` 格式。例如,Kimi K3 在設定中應使用 `opencode-go/kimi-k3`。 @@ -278,7 +273,6 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash | 不使用 | 0 天 | | DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | | Hy3 | 不使用 | 0 天 | -| Ox Alpha Free | 不使用 | 0 天 | - **Grok 4.6:** ZDR 會停用依賴儲存資料的重要 API 功能,包括具狀態的 Responses API、Files and Collections 與 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 所有 API 功能的使用都會產生濫用監控日誌,並保留最多 30 天。[了解更多](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 7e50d05cf..38be595c4 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -112,7 +112,6 @@ OpenCode Zen 的運作方式和 OpenCode 中的其他供應商一樣。 | Kimi K2.7 Code | kimi-k2.7-code | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Ox Alpha Free | x-preview-f-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -141,7 +140,6 @@ https://opencode.ai/zen/v1/models | 模型 | 輸入 | 輸出 | 快取讀取 | 快取寫入 | | --------------------------------- | ------ | ------- | -------- | -------- | | Big Pickle | Free | Free | Free | - | -| Ox Alpha Free | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | @@ -232,7 +230,6 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Nemotron 3.5 Lightning Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Big Pickle 是一個隱身模型,在 OpenCode 上限時免費提供。團隊正在利用這段時間收集回饋並改進模型。 -- Ox Alpha Free 是一個隱身模型,在 OpenCode 上限時免費提供。其供應商遵循零保留政策,不會將你的資料用於模型訓練。 - Muse Spark 1.2 Contributor Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 如果你有任何問題,請聯絡我們。 From 1216c550944de69f73732a907deabcfd5f477cdb Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Wed, 26 Aug 2026 11:20:31 +0000 Subject: [PATCH 168/271] chore: generate --- packages/web/src/content/docs/ar/go.mdx | 1 - packages/web/src/content/docs/bs/go.mdx | 1 - packages/web/src/content/docs/da/go.mdx | 1 - packages/web/src/content/docs/de/go.mdx | 1 - packages/web/src/content/docs/es/go.mdx | 1 - packages/web/src/content/docs/fr/go.mdx | 1 - packages/web/src/content/docs/go.mdx | 1 - packages/web/src/content/docs/it/go.mdx | 1 - packages/web/src/content/docs/ja/go.mdx | 1 - packages/web/src/content/docs/ko/go.mdx | 1 - packages/web/src/content/docs/nb/go.mdx | 1 - packages/web/src/content/docs/pl/go.mdx | 1 - packages/web/src/content/docs/pt-br/go.mdx | 1 - packages/web/src/content/docs/ru/go.mdx | 1 - packages/web/src/content/docs/th/go.mdx | 1 - packages/web/src/content/docs/tr/go.mdx | 1 - packages/web/src/content/docs/zh-cn/go.mdx | 1 - packages/web/src/content/docs/zh-tw/go.mdx | 1 - 18 files changed, 18 deletions(-) diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 5ea9b1453..71ba2e0b8 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -174,7 +174,6 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر **DeepSeek V4 Flash Vision Exp:** يتم تحويل الصور إلى رموز بناءً على أبعادها، وتُحتسب كرموز إدخال إلى جانب رموز النص. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). - يمكنك تتبّع استخدامك الحالي في **console**. :::tip diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index ea5204858..dc7536a8c 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -184,7 +184,6 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj **DeepSeek V4 Flash Vision Exp:** Slike se pretvaraju u tokene na osnovu svojih dimenzija i naplaćuju kao ulazni tokeni zajedno s tekstualnim tokenima. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). - Svoju trenutnu potrošnju možete pratiti u **konzoli**. :::tip diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 042823363..b94272e40 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -184,7 +184,6 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig **DeepSeek V4 Flash Vision Exp:** Billeder konverteres til tokens baseret på deres dimensioner og afregnes som inputtokens sammen med teksttokens. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). - Du kan spore dit nuværende forbrug i **konsollen**. :::tip diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index 39c1800f0..d19a1422c 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -176,7 +176,6 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und **DeepSeek V4 Flash Vision Exp:** Bilder werden anhand ihrer Abmessungen in Tokens umgewandelt und zusammen mit Text-Tokens als Input-Tokens abgerechnet. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). - Du kannst deine aktuelle Nutzung in der **Console** verfolgen. :::tip diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 79416ed45..ada50b0d2 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -184,7 +184,6 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en **DeepSeek V4 Flash Vision Exp:** Las imágenes se convierten en tokens según sus dimensiones y se facturan como tokens de entrada junto con los tokens de texto. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). - Puedes realizar un seguimiento de tu uso actual en la **consola**. :::tip diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 17460a949..b1792e39a 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -174,7 +174,6 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s **DeepSeek V4 Flash Vision Exp:** Les images sont converties en tokens selon leurs dimensions et facturées comme tokens d’entrée avec les tokens de texte. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). - Vous pouvez suivre votre utilisation actuelle dans la **console**. :::tip diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 8ed9fe567..9566c7c54 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -184,7 +184,6 @@ The estimates are also based on the following prices per 1M tokens and the month **DeepSeek V4 Flash Vision Exp:** Images are converted into tokens based on their dimensions and billed as input tokens alongside text tokens. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). - You can track your current usage in the **console**. :::tip diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index e16b42101..fddea0a86 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -182,7 +182,6 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil **DeepSeek V4 Flash Vision Exp:** Le immagini vengono convertite in token in base alle loro dimensioni e fatturate come token di input insieme ai token di testo. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). - Puoi monitorare il tuo utilizzo attuale nella **console**. :::tip diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 3ab3372f8..3a48101c0 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -174,7 +174,6 @@ OpenCode Goには以下の制限が含まれています: **DeepSeek V4 Flash Vision Exp:** 画像はサイズに基づいてトークンに変換され、テキストトークンと合わせて入力トークンとして課金されます。 [詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 - 現在の利用状況は**コンソール**で追跡できます。 :::tip diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 8117a76ad..56fffd759 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -174,7 +174,6 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. **DeepSeek V4 Flash Vision Exp:** 이미지는 크기에 따라 토큰으로 변환되며 텍스트 토큰과 함께 입력 토큰으로 청구됩니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). - 현재 사용량은 **console**에서 확인할 수 있습니다. :::tip diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 44b6bf573..e5b60d65e 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -184,7 +184,6 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige **DeepSeek V4 Flash Vision Exp:** Bilder konverteres til tokens basert på dimensjonene og faktureres som input-tokens sammen med tekst-tokens. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). - Du kan spore din nåværende bruk i **konsollen**. :::tip diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 000530420..dfa609578 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -178,7 +178,6 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz **DeepSeek V4 Flash Vision Exp:** Obrazy są przeliczane na tokeny na podstawie ich wymiarów i rozliczane jako tokeny wejściowe razem z tokenami tekstowymi. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). - Możesz śledzić swoje bieżące zużycie w **konsoli**. :::tip diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index af09191b4..307b9dae8 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -184,7 +184,6 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m **DeepSeek V4 Flash Vision Exp:** As imagens são convertidas em tokens com base em suas dimensões e cobradas como tokens de entrada junto com os tokens de texto. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). - Você pode acompanhar o seu uso atual no **console**. :::tip diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 801883ba6..b6eff3279 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -184,7 +184,6 @@ OpenCode Go включает следующие лимиты: **DeepSeek V4 Flash Vision Exp:** Изображения преобразуются в токены с учётом их размеров и оплачиваются как входные токены вместе с текстовыми токенами. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). - Вы можете отслеживать текущее использование в **консоли**. :::tip diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 9f10c061b..72e81d3ac 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -174,7 +174,6 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: **DeepSeek V4 Flash Vision Exp:** รูปภาพจะถูกแปลงเป็น token ตามขนาด และคิดค่าบริการเป็น input token รวมกับ text token [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) - คุณสามารถติดตามการใช้งานปัจจุบันของคุณได้ใน **console** :::tip diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 4f13b1d73..b6125956c 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -174,7 +174,6 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik **DeepSeek V4 Flash Vision Exp:** Görseller boyutlarına göre token'lara dönüştürülür ve metin token'larıyla birlikte girdi token'ları olarak ücretlendirilir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). - Mevcut kullanımınızı **konsoldan** takip edebilirsiniz. :::tip diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index aed7e023d..ac32c98ed 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -174,7 +174,6 @@ OpenCode Go 包含以下限制: **DeepSeek V4 Flash Vision Exp:** 图片会根据尺寸转换为 token,并与文本 token 一起按输入 token 计费。 [了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 - 你可以在 **控制台** 中跟踪你当前的使用情况。 :::tip diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index b882b7085..c2ee08c3b 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -174,7 +174,6 @@ OpenCode Go 包含以下限制: **DeepSeek V4 Flash Vision Exp:** 圖片會根據尺寸轉換為 token,並與文字 token 一起按輸入 token 計費。 [了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 - 您可以在 **console** 中追蹤您目前的使用量。 :::tip From a0f36c9df7659c2a284724d1d0338442800592c2 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 26 Aug 2026 07:39:38 -0500 Subject: [PATCH 169/271] feat(stats): add retention metrics --- .../stats/app/src/routes/[lab]/[model].tsx | 6 + packages/stats/app/src/routes/index.css | 179 +++++++++++++++++- packages/stats/app/src/routes/index.tsx | 84 ++++++++ .../migration.sql | 18 ++ packages/stats/core/src/database/schema.ts | 26 +++ packages/stats/core/src/domain/home.test.ts | 48 +++++ packages/stats/core/src/domain/home.ts | 98 +++++++++- .../stats/core/src/domain/inference.test.ts | 55 +++++- packages/stats/core/src/domain/inference.ts | 164 ++++++++++++++++ packages/stats/core/src/domain/retention.ts | 110 +++++++++++ packages/stats/core/src/index.ts | 1 + packages/stats/core/src/runtime.ts | 10 +- packages/stats/core/src/stat-sync.ts | 60 +++++- 13 files changed, 841 insertions(+), 18 deletions(-) create mode 100644 packages/stats/core/migrations/20260826000000_model_retention/migration.sql create mode 100644 packages/stats/core/src/domain/home.test.ts create mode 100644 packages/stats/core/src/domain/retention.ts diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx index e0560957a..c9a3e6ef6 100644 --- a/packages/stats/app/src/routes/[lab]/[model].tsx +++ b/packages/stats/app/src/routes/[lab]/[model].tsx @@ -470,6 +470,7 @@ function ModelMomentumSection(props: { data: StatsModelPageData | null }) { value={formatInteger(data().totals.sessions)} /> + span { + color: var(--stats-faint); + font-size: 13px; + font-weight: 400; +} + +[data-page="stats"] [data-component="retention-chart"] a > strong { + min-width: 0; + overflow-wrap: anywhere; + font-size: 13px; + font-weight: 600; + line-height: 18px; +} + +[data-page="stats"] [data-component="retention-chart"] a > b, +[data-page="stats"] [data-component="retention-chart"] a > em { + font-size: 13px; + font-style: normal; + font-weight: 500; + text-align: right; + white-space: nowrap; +} + +[data-page="stats"] [data-component="retention-chart"] a > em { + color: var(--stats-muted); +} + +[data-page="stats"] [data-component="retention-marker"] { + position: relative; + display: grid; + grid-template-columns: repeat(4, 1fr); + align-items: center; + height: 16px; + background: linear-gradient(var(--stats-line-strong), var(--stats-line-strong)) center / 100% 1px no-repeat; +} + +[data-page="stats"] [data-component="retention-marker"] > span { + justify-self: end; + width: 1px; + height: 8px; + background: var(--stats-line-strong); +} + +[data-page="stats"] [data-component="retention-marker"] > em { + position: absolute; + top: 50%; + left: var(--retention-position); + width: 7px; + height: 16px; + background: var(--stats-muted); + transform: translate(-50%, -50%); +} + +[data-page="stats"] [data-component="retention-marker"][data-active="true"] > em { + background: var(--stats-accent); +} + [data-page="stats"] [data-component="section-bridge"]:hover { color: var(--stats-text); text-decoration: none; @@ -3521,7 +3641,7 @@ body { [data-page="stats"] [data-slot="model-momentum-metrics"] { display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); + grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; min-width: 0; } @@ -6671,6 +6791,57 @@ body { } } +@media (max-width: 74rem) { + [data-page="stats"] [data-slot="retention-heading"], + [data-page="stats"] [data-component="retention-chart"] a { + grid-template-columns: 40px minmax(140px, 220px) minmax(140px, 1fr) 60px 76px; + gap: 12px; + } +} + +@media (max-width: 47.999rem) { + [data-page="stats"] [data-component="retention-chart"] { + margin-top: 28px; + } + + [data-page="stats"] [data-slot="retention-heading"] { + display: none; + } + + [data-page="stats"] [data-component="retention-chart"] a { + grid-template-columns: 28px minmax(0, 1fr) 58px 62px; + grid-template-rows: auto 16px; + gap: 8px 10px; + min-height: 68px; + padding: 10px; + } + + [data-page="stats"] [data-component="retention-chart"] a > span { + grid-column: 1; + grid-row: 1; + } + + [data-page="stats"] [data-component="retention-chart"] a > strong { + grid-column: 2; + grid-row: 1; + } + + [data-page="stats"] [data-component="retention-marker"] { + grid-column: 2 / -1; + grid-row: 2; + } + + [data-page="stats"] [data-component="retention-chart"] a > b { + grid-column: 3; + grid-row: 1; + } + + [data-page="stats"] [data-component="retention-chart"] a > em { + grid-column: 4; + grid-row: 1; + } +} + [data-page="stats"] [data-component="compare-model-modal-scrim"] { position: fixed; inset: 0; @@ -7368,6 +7539,7 @@ body { [data-page="stats"] [data-section="top-models"], [data-page="stats"] [data-section="leaderboard"], [data-page="stats"] [data-section="unique-users"], + [data-page="stats"] [data-section="retention"], [data-page="stats"] [data-section="market-share"], [data-page="stats"] [data-section="geo-breakdown"], [data-page="stats"] [data-section="token-cost"], @@ -7529,6 +7701,10 @@ body { grid-template-columns: repeat(2, minmax(0, 1fr)); } + [data-page="stats"] [data-component="model-momentum-metric"]:last-child:nth-child(odd) { + grid-column: 1 / -1; + } + [data-page="stats"] [data-component="model-metric-grid"], [data-page="stats"] [data-component="model-metric-grid"][data-variant="dense"], [data-page="stats"] [data-component="model-efficiency-grid"], @@ -7668,6 +7844,7 @@ body { [data-page="stats"] [data-section="top-models"], [data-page="stats"] [data-section="leaderboard"], [data-page="stats"] [data-section="unique-users"], + [data-page="stats"] [data-section="retention"], [data-page="stats"] [data-section="market-share"], [data-page="stats"] [data-section="geo-breakdown"], [data-page="stats"] [data-section="token-cost"], diff --git a/packages/stats/app/src/routes/index.tsx b/packages/stats/app/src/routes/index.tsx index 30491c898..0e9888d2a 100644 --- a/packages/stats/app/src/routes/index.tsx +++ b/packages/stats/app/src/routes/index.tsx @@ -8,6 +8,7 @@ import { type CountryEntry, type LeaderboardEntry, type MarketDay, + type RetentionEntry, type SessionCostEntry, type TokenCostEntry, type UsagePoint, @@ -69,6 +70,7 @@ type StatsHomePageData = { tokenCost: TokenCostEntry[] cacheRatio: CacheRatioEntry[] sessionCost: SessionCostEntry[] + retention: RetentionEntry[] country: CountryEntry[] } @@ -88,6 +90,7 @@ const getData = query(async () => { tokenCost: priceTokenCostFromCatalog(stats.tokenCost.Go, catalog), cacheRatio: stats.cacheRatio.Go, sessionCost: stats.sessionCost.Go, + retention: stats.retention, country: stats.country["2M"], } satisfies StatsHomePageData }, "getStatsHomeData") @@ -146,6 +149,7 @@ export default function StatsHome() { + @@ -616,6 +620,86 @@ function UniqueUsersSection(props: { data: UsagePoint[] }) { ) } +function RetentionSection(props: { data: RetentionEntry[] }) { + const language = useLanguage() + const [activeIndex, setActiveIndex] = createSignal(0) + + return ( +
      + + 0} + fallback={ + + } + > + + +
      + ) +} + +function RetentionMarker(props: { rate: number; active: boolean }) { + const fill = createMemo(() => Math.min(100, Math.max(0, props.rate))) + return ( + + ) +} + +function formatRetentionRate(value: number) { + return `${value.toFixed(1)}%` +} + function isTopModelsBlankHover(bar: HTMLElement, clientY: number) { const stack = bar.querySelector('[data-slot="top-models-stack"]') if (!stack) return true diff --git a/packages/stats/core/migrations/20260826000000_model_retention/migration.sql b/packages/stats/core/migrations/20260826000000_model_retention/migration.sql new file mode 100644 index 000000000..e69d7f5bf --- /dev/null +++ b/packages/stats/core/migrations/20260826000000_model_retention/migration.sql @@ -0,0 +1,18 @@ +CREATE TABLE `model_retention` ( + `id` bigint AUTO_INCREMENT NOT NULL, + `cohort_date` char(10) NOT NULL, + `dataset` varchar(64) NOT NULL DEFAULT 'all', + `tier` varchar(64) NOT NULL DEFAULT 'all', + `provider` varchar(128) NOT NULL, + `model` varchar(256) NOT NULL, + `eligible_users` bigint NOT NULL DEFAULT 0, + `retained_users` bigint NOT NULL DEFAULT 0, + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT `model_retention_id` PRIMARY KEY(`id`), + CONSTRAINT `uniq_model_retention_cohort` UNIQUE(`cohort_date`,`dataset`,`tier`,`provider`,`model`) +); +--> statement-breakpoint +CREATE INDEX `idx_model_retention_recent` ON `model_retention` (`dataset`,`tier`,`cohort_date`); +--> statement-breakpoint +CREATE INDEX `idx_model_retention_model` ON `model_retention` (`model`,`cohort_date`); diff --git a/packages/stats/core/src/database/schema.ts b/packages/stats/core/src/database/schema.ts index d5bfa314b..dcf8d5233 100644 --- a/packages/stats/core/src/database/schema.ts +++ b/packages/stats/core/src/database/schema.ts @@ -107,6 +107,32 @@ export const geoStat = mysqlTable( ], ) +export const modelRetention = mysqlTable( + "model_retention", + { + id: bigint({ mode: "number" }).autoincrement().primaryKey(), + cohort_date: char({ length: 10 }).notNull(), + dataset: varchar({ length: 64 }).notNull().default("all"), + tier: varchar({ length: 64 }).notNull().default("all"), + provider: varchar({ length: 128 }).notNull(), + model: varchar({ length: 256 }).notNull(), + eligible_users: bigint({ mode: "number" }).notNull().default(0), + retained_users: bigint({ mode: "number" }).notNull().default(0), + ...timestampColumns(), + }, + (table) => [ + uniqueIndex("uniq_model_retention_cohort").on( + table.cohort_date, + table.dataset, + table.tier, + table.provider, + table.model, + ), + index("idx_model_retention_recent").on(table.dataset, table.tier, table.cohort_date), + index("idx_model_retention_model").on(table.model, table.cohort_date), + ], +) + function periodColumns() { return { id: bigint({ mode: "number" }).autoincrement().primaryKey(), diff --git a/packages/stats/core/src/domain/home.test.ts b/packages/stats/core/src/domain/home.test.ts new file mode 100644 index 000000000..c8b665048 --- /dev/null +++ b/packages/stats/core/src/domain/home.test.ts @@ -0,0 +1,48 @@ +import { describe, expect, test } from "bun:test" +import type { RetentionMetricRow } from "./home" + +process.env.SST_RESOURCE_App = JSON.stringify({ name: "opencode", stage: "test" }) +process.env.SST_RESOURCE_StatsDatabase = JSON.stringify({ url: "mysql://localhost/stats" }) + +const { buildRetentionEntries } = await import("./home") + +describe("retention aggregates", () => { + test("pools the latest seven cohorts and ranks models above the sample floor", () => { + const rows = [ + ...cohorts("model-a", "provider-a", 8, 20, 10), + ...cohorts("model-b", "provider-b", 8, 20, 12), + ...cohorts("small-model", "provider-c", 8, 10, 9), + ] + const entries = buildRetentionEntries(rows) + + expect(entries.find((item) => item.model === "model-a")).toMatchObject({ + eligibleUserDays: 140, + retainedUserDays: 70, + rate: 50, + rank: 2, + }) + expect(entries.find((item) => item.model === "model-b")).toMatchObject({ + eligibleUserDays: 140, + retainedUserDays: 84, + rate: 60, + rank: 1, + }) + expect(entries.find((item) => item.model === "small-model")).toMatchObject({ + eligibleUserDays: 70, + retainedUserDays: 63, + rate: 90, + rank: null, + }) + }) +}) + +function cohorts(model: string, provider: string, count: number, eligibleUsers: number, retainedUsers: number) { + return Array.from({ length: count }, (_, index) => ({ + cohortDate: `2026-08-${String(index + 1).padStart(2, "0")}`, + updatedAt: Date.UTC(2026, 7, index + 9), + provider, + model, + eligibleUsers, + retainedUsers, + })) satisfies RetentionMetricRow[] +} diff --git a/packages/stats/core/src/domain/home.ts b/packages/stats/core/src/domain/home.ts index e0fd2be37..c1784ed18 100644 --- a/packages/stats/core/src/domain/home.ts +++ b/packages/stats/core/src/domain/home.ts @@ -5,6 +5,7 @@ import { DatabaseError } from "../database" import type { GeoStatMetric } from "./geo" import { ModelStatRepo, type ModelStatMetric } from "./model" import { statProvider } from "./model-normalization" +import { isMissingRetentionTable } from "./retention" import { DATA_SITE_TIERS, normalizeTier } from "./stat" export type UsageProduct = "All Users" | "Zen" | "Go" | "Enterprise" @@ -23,6 +24,15 @@ export type LeaderboardEntry = { export type TokenCostEntry = { model: string; total: number; input: number; output: number; cached: number } export type CacheRatioEntry = { model: string; ratio: number; cached: number; uncached: number; total: number } export type SessionCostEntry = { model: string; cost: number; tokens: number } +export type RetentionEntry = { + model: string + provider: string + author: string + rate: number + eligibleUserDays: number + retainedUserDays: number + rank: number | null +} export type CountryEntry = { country: string; continent: string; tokens: number; share: number; rank: number } export type ModelUsagePoint = { date: string; tokens: number; users: number; sessions: number; cost: number } export type ModelMixEntry = { label: string; tokens: number; share: number } @@ -54,6 +64,7 @@ export type StatsModelData = { totalModels: number tokenShare: number tokenChange: number + retention7d: RetentionEntry | null totals: { sessions: number uniqueUsers: number @@ -114,6 +125,7 @@ export type StatsHomeData = { tokenCost: Record cacheRatio: Record sessionCost: Record + retention: RetentionEntry[] country: Record } @@ -129,6 +141,9 @@ const DAY_MS = 86_400_000 const TOKEN_SCALE = 1_000_000 const DOLLARS_PER_MICROCENT = 1 / 100_000_000 const METRIC_MODEL_LIMIT = 10 +const RETENTION_MODEL_LIMIT = 15 +const RETENTION_MIN_ELIGIBLE_USER_DAYS = 100 +const RETENTION_COHORT_DAYS = 7 const TOP_MODEL_SEGMENT_LIMIT = 9 // Preserve the response shape while the public site presents Go and Free as one cohort. const SITE_PRODUCT = "Go" @@ -144,6 +159,14 @@ type GeoMetricRow = Omit & { periodStart: number updatedAt: number } +export type RetentionMetricRow = { + cohortDate: string + updatedAt: number + provider: string + model: string + eligibleUsers: number + retainedUsers: number +} type DateWindow = { start: number; end: number; previousStart: number; previousEnd: number } type Bucket = { start: number; end: number; label: string } @@ -167,8 +190,12 @@ type RawRow = Record export function getStatsHomeData(): Effect.Effect { return Effect.tryPromise({ try: async () => { - const [modelRows, geoRows] = await Promise.all([listModelDaily(), listGeoDaily()]) - return buildStatsHomeData(modelRows, geoRows) + const [modelRows, geoRows, retentionRows] = await Promise.all([ + listModelDaily(), + listGeoDaily(), + listRetentionDaily(), + ]) + return buildStatsHomeData(modelRows, geoRows, retentionRows) }, catch: (cause) => new StatsDataError(cause), }) @@ -180,7 +207,7 @@ export function getStatsModelData( ): Effect.Effect { return Effect.tryPromise({ try: async () => { - const modelRows = await listModelDaily() + const [modelRows, retentionRows] = await Promise.all([listModelDaily(), listRetentionDaily()]) const normalized = modelRows.flatMap(normalizeStatRow) const resolvedModel = resolveModelName(model, normalized, provider) if (!resolvedModel) return null @@ -192,6 +219,7 @@ export function getStatsModelData( provider: resolveModelProvider(resolvedModel, normalized, provider), }), provider, + retentionRows, ) }, catch: (cause) => new StatsDataError(cause), @@ -260,6 +288,27 @@ async function listGeoDaily(opts?: { provider?: string; model?: string }): Promi })) } +async function listRetentionDaily(): Promise { + try { + return ( + await queryRows( + `select cohort_date, updated_at, provider, model, eligible_users, retained_users + from model_retention where dataset = 'zen' and tier = 'all' order by cohort_date`, + ) + ).map((row) => ({ + cohortDate: stringValue(row.cohort_date), + updatedAt: dateValue(row.updated_at).getTime(), + provider: stringValue(row.provider), + model: stringValue(row.model), + eligibleUsers: numberValue(row.eligible_users), + retainedUsers: numberValue(row.retained_users), + })) + } catch (cause) { + if (isMissingRetentionTable(cause)) return [] + throw cause + } +} + async function queryRows(query: string, params: string[] = []) { return (await new Client({ url: databaseUrl() }).execute(query, params)).rows as RawRow[] } @@ -309,7 +358,11 @@ export const getStatsModelComparisonData = ( { provider: secondProvider, model: secondModel }, ]) -function buildStatsHomeData(modelRows: ModelStatMetric[], geoRows: GeoStatMetric[]): StatsHomeData { +function buildStatsHomeData( + modelRows: ModelStatMetric[], + geoRows: GeoStatMetric[], + retentionRows: RetentionMetricRow[], +): StatsHomeData { const normalized = modelRows.flatMap(normalizeStatRow) const geo = geoRows.flatMap(normalizeGeoRow) const periods = [...normalized, ...geo] @@ -357,6 +410,9 @@ function buildStatsHomeData(modelRows: ModelStatMetric[], geoRows: GeoStatMetric sessionCost: createTokenProductRecord((product) => buildSessionCost(normalized, product, getWindow("1W", earliest, latest)), ), + retention: buildRetentionEntries(retentionRows) + .filter((item) => item.rank !== null) + .slice(0, RETENTION_MODEL_LIMIT), country: createRangeRecord((range) => buildCountryStats(geo, getWindow(range, earliest, latest))), } } @@ -366,6 +422,7 @@ function buildStatsModelData( modelRows: ModelStatMetric[], geoRows: GeoStatMetric[], providerParam?: string, + retentionRows: RetentionMetricRow[] = [], ): StatsModelData | null { const normalized = modelRows.flatMap(normalizeStatRow) const geo = geoRows.flatMap(normalizeGeoRow) @@ -401,6 +458,7 @@ function buildStatsModelData( const peerRank = rankIndex >= 0 ? rankIndex + 1 : 1 const totalTokens = windowPeers.reduce((sum, item) => sum + item.totalTokens, 0) const peerTokens = rankPeers.reduce((sum, item) => sum + item.totalTokens, 0) + const retention7d = buildRetentionEntries(retentionRows).find((item) => item.model === model) ?? null return { updatedAt: Number.isFinite(latestUpdate) ? new Date(latestUpdate).toISOString() : null, @@ -413,6 +471,7 @@ function buildStatsModelData( totalModels: windowPeers.length, tokenShare: totalTokens > 0 ? round((current.totalTokens / totalTokens) * 100, 2) : 0, tokenChange: percentChange(current.totalTokens, previous.totalTokens), + retention7d, totals: { sessions: current.sessions, uniqueUsers: current.uniqueUsers, @@ -509,10 +568,41 @@ function emptyStatsHomeData(): StatsHomeData { tokenCost: createTokenProductRecord(() => []), cacheRatio: createTokenProductRecord(() => []), sessionCost: createTokenProductRecord(() => []), + retention: [], country: createRangeRecord(() => []), } } +export function buildRetentionEntries(rows: RetentionMetricRow[]): RetentionEntry[] { + const cohortDates = [...new Set(rows.map((row) => row.cohortDate))].toSorted().slice(-RETENTION_COHORT_DAYS) + const aggregate = rows + .filter((row) => cohortDates.includes(row.cohortDate)) + .reduce>>((result, row) => { + const current = result.get(row.model) + result.set(row.model, { + model: row.model, + provider: current?.provider ?? row.provider, + eligibleUserDays: (current?.eligibleUserDays ?? 0) + row.eligibleUsers, + retainedUserDays: (current?.retainedUserDays ?? 0) + row.retainedUsers, + }) + return result + }, new Map()) + const entries = [...aggregate.values()].map((item) => ({ + ...item, + author: formatProvider(item.provider), + rate: item.eligibleUserDays > 0 ? round((item.retainedUserDays / item.eligibleUserDays) * 100, 1) : 0, + })) + const ranks = new Map( + entries + .filter((item) => item.eligibleUserDays >= RETENTION_MIN_ELIGIBLE_USER_DAYS) + .toSorted((a, b) => b.rate - a.rate || b.eligibleUserDays - a.eligibleUserDays || a.model.localeCompare(b.model)) + .map((item, index) => [item.model, index + 1]), + ) + return entries + .map((item) => ({ ...item, rank: ranks.get(item.model) ?? null })) + .toSorted((a, b) => (a.rank ?? Number.MAX_SAFE_INTEGER) - (b.rank ?? Number.MAX_SAFE_INTEGER)) +} + function buildUsagePoints( rows: StatMetricRow[], product: UsageProduct, diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index ad95dad18..c534ac2b7 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -1,5 +1,12 @@ import { describe, expect, test } from "bun:test" -import { buildStatsQueries, toGeoAggregate, toModelAggregate, toProviderAggregate } from "./inference" +import { + buildRetentionQueries, + buildStatsQueries, + toGeoAggregate, + toModelAggregate, + toProviderAggregate, + toRetentionAggregate, +} from "./inference" import { modelAuthor, normalizeInferenceModel, statModel, statProvider } from "./model-normalization" describe("inference stat normalization", () => { @@ -155,6 +162,52 @@ describe("inference stat normalization", () => { expect(query).toContain("(source = 'inference-legacy' AND started_at < '2026-08-11T10:57:48.186Z')") expect(query).toContain("(source = 'inference' AND started_at >= '2026-08-11T10:57:48.186Z')") }) + + test("builds complete seven-day cohort retention queries", () => { + const queries = buildRetentionQueries(new Date("2026-08-10T00:00:00.000Z"), new Date("2026-08-20T00:00:00.000Z"), { + namespace: "inference", + table: "generation", + dataset: "zen", + }) + + expect(queries).toHaveLength(1) + expect(queries[0]?.cohortDates).toEqual(["2026-08-10", "2026-08-11", "2026-08-12"]) + expect(queries[0]?.query).toContain("ROW_NUMBER() OVER") + expect(queries[0]?.query).toContain("PARTITION BY cohort_date, user_key") + expect(queries[0]?.query).toContain("ORDER BY total_tokens DESC, requests DESC, model ASC") + expect(queries[0]?.query).toContain("WHEN '2026-08-17' THEN '2026-08-10'") + expect(queries[0]?.query).toContain("WHEN '2026-08-19' THEN '2026-08-12'") + expect(queries[0]?.query).toContain("started_at >= '2026-08-10T00:00:00.000Z'") + expect(queries[0]?.query).toContain("started_at < '2026-08-20T00:00:00.000Z'") + expect(queries[0]?.query).toContain("LEFT JOIN returned ON primary_models.user_key = returned.user_key") + expect(queries[0]?.query).toContain("primary_models.cohort_date = returned.cohort_date") + expect(queries[0]?.query).toContain("COUNT(*) AS eligible_users") + expect(queries[0]?.query).toContain("LIMIT 10000") + }) + + test("maps retention query results", () => { + expect( + toRetentionAggregate({ + cohort_date: "2026-08-10", + dataset: "zen", + tier: "all", + provider: "deepseek", + model: "deepseek-v4-flash-free", + eligible_users: "125", + retained_users: "74", + }), + ).toEqual([ + { + cohortDate: "2026-08-10", + dataset: "zen", + tier: "all", + provider: "deepseek", + model: "deepseek-v4-flash", + eligibleUsers: 125, + retainedUsers: 74, + }, + ]) + }) }) function aggregate(model: string, provider: string) { diff --git a/packages/stats/core/src/domain/inference.ts b/packages/stats/core/src/domain/inference.ts index ee0468407..cf475d280 100644 --- a/packages/stats/core/src/domain/inference.ts +++ b/packages/stats/core/src/domain/inference.ts @@ -12,6 +12,7 @@ import { statProvider, } from "./model-normalization" import type { ProviderStatAggregate } from "./provider" +import type { RetentionStatAggregate } from "./retention" import { normalizeCountry, normalizeTier, @@ -23,6 +24,7 @@ import { export type StatDimension = "model" | "provider" | "geo" | "geo_model" export type StatsQuerySource = { namespace: string; table: string; dataset: string } +export type RetentionQuery = { cohortDates: string[]; query: string } type StatsQueryFamily = "usage" | "geo" const DAY_MS = 86_400_000 @@ -46,6 +48,141 @@ export function buildStatsQueries(periodStart: Date, periodEnd: Date, input?: St ) } +export function buildRetentionQueries(periodStart: Date, periodEnd: Date, input?: StatsQuerySource): RetentionQuery[] { + const source = input ?? { + namespace: Resource.R2Sql.namespace, + table: Resource.R2Sql.table, + dataset: Resource.StatsSyncConfig.dataset, + } + const periods = retentionPeriods(periodStart, periodEnd) + if (periods.length === 0) return [] + return [ + { + cohortDates: periods.map((period) => period.start.toISOString().slice(0, 10)), + query: buildRetentionQuery(periods, source), + }, + ] +} + +function buildRetentionQuery( + periods: { start: Date; end: Date; returnStart: Date; returnEnd: Date }[], + source: StatsQuerySource, +) { + const first = periods[0] + const last = periods.at(-1)! + const scanStartValue = sqlString(first.start.toISOString()) + const scanEndValue = sqlString(last.returnEnd.toISOString()) + const ingestEndValue = sqlString(new Date(last.returnEnd.getTime() + DAY_MS).toISOString()) + const sourceTable = [source.namespace, source.table].map(sqlIdentifier).join(".") + const activityDates = [ + ...new Map( + periods.flatMap((period) => [period.start, period.returnStart]).map((date) => [date.toISOString(), date]), + ).values(), + ].toSorted((a, b) => a.getTime() - b.getTime()) + const activityDateSql = `CASE +${activityDates + .map( + (date) => + ` WHEN started_at >= ${sqlString(date.toISOString())} AND started_at < ${sqlString(new Date(date.getTime() + DAY_MS).toISOString())} THEN ${sqlString(date.toISOString().slice(0, 10))}`, + ) + .join("\n")} + ELSE null + END` + const cohortDates = periods.map((period) => sqlString(period.start.toISOString().slice(0, 10))).join(", ") + const returnDates = periods.map((period) => sqlString(period.returnStart.toISOString().slice(0, 10))).join(", ") + const returnCohortSql = `CASE activity_date +${periods + .map( + (period) => + ` WHEN ${sqlString(period.returnStart.toISOString().slice(0, 10))} THEN ${sqlString(period.start.toISOString().slice(0, 10))}`, + ) + .join("\n")} + END` + + return ` +WITH normalized AS ( + SELECT + ${activityDateSql} AS activity_date, + ${statModelSql("model_requested", "route_model")} AS model, + COALESCE(NULLIF(route_model, ''), '') AS provider_model, + COALESCE(NULLIF(provider_id, ''), '') AS raw_provider, + COALESCE(NULLIF(user_id, ''), NULLIF(workspace_id, ''), NULLIF(service_api_key_id, '')) AS user_key, + COALESCE(tokens_cache_read, 0) + COALESCE(tokens_cache_write, 0) + COALESCE(tokens_input, 0) + COALESCE(tokens_output, 0) AS tokens_total + FROM ${sourceTable} + WHERE event_type = 'generation.completed' + AND source IN ('inference', 'inference-legacy') + AND ( + (source = 'inference-legacy' AND started_at < ${sqlString(LIVE_SOURCE_START)}) + OR (source = 'inference' AND started_at >= ${sqlString(LIVE_SOURCE_START)}) + ) + AND (product = 'go' OR (${freeTierSql("model_tier", "model_requested")})) + AND model_requested IS NOT NULL + AND model_requested <> '' + AND __ingest_ts >= ${scanStartValue} + AND __ingest_ts < ${ingestEndValue} + AND started_at >= ${scanStartValue} + AND started_at < ${scanEndValue} +), filtered AS ( + SELECT + activity_date, + ${statProviderSql("model", "provider_model", "raw_provider")} AS provider, + model, + user_key, + tokens_total + FROM normalized + WHERE activity_date IS NOT NULL + AND user_key <> '' + AND lower(model) NOT IN (${[...EXCLUDED_MODELS].map(sqlString).join(", ")}) +), model_usage AS ( + SELECT + activity_date AS cohort_date, + user_key, + provider, + model, + SUM(tokens_total) AS total_tokens, + COUNT(*) AS requests + FROM filtered + WHERE activity_date IN (${cohortDates}) + GROUP BY activity_date, user_key, provider, model +), ranked_models AS ( + SELECT + cohort_date, + user_key, + provider, + model, + ROW_NUMBER() OVER ( + PARTITION BY cohort_date, user_key + ORDER BY total_tokens DESC, requests DESC, model ASC + ) AS model_rank + FROM model_usage +), primary_models AS ( + SELECT cohort_date, user_key, provider, model + FROM ranked_models + WHERE model_rank = 1 +), returned AS ( + SELECT + ${returnCohortSql} AS cohort_date, + user_key + FROM filtered + WHERE activity_date IN (${returnDates}) + GROUP BY ${returnCohortSql}, user_key +) +SELECT + primary_models.cohort_date, + ${sqlString(source.dataset)} AS dataset, + 'all' AS tier, + primary_models.provider, + primary_models.model, + COUNT(*) AS eligible_users, + SUM(CASE WHEN returned.user_key IS NULL THEN 0 ELSE 1 END) AS retained_users +FROM primary_models +LEFT JOIN returned ON primary_models.user_key = returned.user_key + AND primary_models.cohort_date = returned.cohort_date +GROUP BY primary_models.cohort_date, primary_models.provider, primary_models.model +LIMIT 10000 +` +} + function buildStatsQuery( period: { grain: "day" | "week"; key: string; start: Date; end: Date }, source: StatsQuerySource, @@ -223,6 +360,21 @@ export function toGeoAggregate(data: R2SqlData): GeoStatAggregate[] { ]) } +export function toRetentionAggregate(data: R2SqlData): RetentionStatAggregate[] { + if (!data.cohort_date || !data.model) return [] + return [ + { + cohortDate: data.cohort_date, + dataset: data.dataset || Resource.StatsSyncConfig.dataset, + tier: data.tier || "all", + provider: statProvider(data.model, "", data.provider) || "unknown", + model: statModel(data.model, undefined), + eligibleUsers: integer(data, "eligible_users"), + retainedUsers: integer(data, "retained_users"), + }, + ] +} + function toStatBaseAggregate(data: R2SqlData): StatBaseAggregate[] { const grain = data.grain === "day" || data.grain === "week" ? data.grain : undefined if (!grain || !data.period_key) return [] @@ -300,6 +452,18 @@ function statPeriods(grain: "day" | "week", periodStart: Date, periodEnd: Date) }) } +function retentionPeriods(periodStart: Date, periodEnd: Date) { + const first = startOfUtcDay(periodStart) + const last = new Date(startOfUtcDay(periodEnd).getTime() - WEEK_MS) + const count = Math.max(0, Math.floor((last.getTime() - first.getTime()) / DAY_MS)) + return Array.from({ length: count }, (_, index) => { + const start = new Date(first.getTime() + index * DAY_MS) + const end = new Date(start.getTime() + DAY_MS) + const returnStart = new Date(start.getTime() + WEEK_MS) + return { start, end, returnStart, returnEnd: new Date(returnStart.getTime() + DAY_MS) } + }) +} + function statModelSql(model: string, providerModel: string) { return `COALESCE(NULLIF(regexp_replace(CASE WHEN lower(${model}) = 'big-pickle' THEN regexp_replace(NULLIF(${providerModel}, ''), '^.*/', '') diff --git a/packages/stats/core/src/domain/retention.ts b/packages/stats/core/src/domain/retention.ts new file mode 100644 index 000000000..14b154aac --- /dev/null +++ b/packages/stats/core/src/domain/retention.ts @@ -0,0 +1,110 @@ +import { and, eq, inArray } from "drizzle-orm" +import { Context, Effect, Layer } from "effect" +import { DatabaseError, DrizzleClient } from "../database" +import { modelRetention } from "../database/schema" +import { chunks, UPSERT_CHUNK_SIZE } from "./stat" + +export type RetentionStatRow = typeof modelRetention.$inferInsert +export type RetentionStatAggregate = { + cohortDate: string + dataset: string + tier: string + provider: string + model: string + eligibleUsers: number + retainedUsers: number +} + +export declare namespace RetentionStatRepo { + export interface Service { + readonly available: () => Effect.Effect + readonly replace: ( + rows: RetentionStatRow[], + scope: { cohortDates: string[]; dataset: string; tier: string }, + ) => Effect.Effect + } +} + +export class RetentionStatRepo extends Context.Service()( + "@opencode/stats/RetentionStatRepo", +) { + static readonly layer: Layer.Layer = Layer.effect( + RetentionStatRepo, + Effect.gen(function* () { + const db = yield* DrizzleClient + + const available = Effect.fn("RetentionStatRepo.available")(function* () { + return yield* Effect.tryPromise({ + try: async () => { + try { + await db.select({ id: modelRetention.id }).from(modelRetention).limit(1) + return true + } catch (cause) { + if (isMissingRetentionTable(cause)) return false + throw cause + } + }, + catch: (cause) => DatabaseError.make({ cause }), + }) + }) + + const replace = Effect.fn("RetentionStatRepo.replace")(function* ( + rows: RetentionStatRow[], + scope: { cohortDates: string[]; dataset: string; tier: string }, + ) { + if (scope.cohortDates.length === 0) return + + yield* Effect.tryPromise({ + try: () => + db + .delete(modelRetention) + .where( + and( + inArray(modelRetention.cohort_date, scope.cohortDates), + eq(modelRetention.dataset, scope.dataset), + eq(modelRetention.tier, scope.tier), + ), + ), + catch: (cause) => DatabaseError.make({ cause }), + }) + yield* Effect.forEach( + chunks(rows, UPSERT_CHUNK_SIZE), + (chunk) => + Effect.tryPromise({ + try: () => db.insert(modelRetention).values(chunk), + catch: (cause) => DatabaseError.make({ cause }), + }), + { discard: true }, + ) + }) + + return RetentionStatRepo.of({ available, replace }) + }), + ) +} + +export function rowsFromAggregates(aggregates: RetentionStatAggregate[]): RetentionStatRow[] { + return aggregates.map((row) => ({ + cohort_date: row.cohortDate, + dataset: row.dataset, + tier: row.tier, + provider: row.provider, + model: row.model, + eligible_users: row.eligibleUsers, + retained_users: row.retainedUsers, + })) +} + +export function isMissingRetentionTable(cause: unknown): boolean { + const text = errorText(cause).toLowerCase() + return text.includes("model_retention") && text.includes("exist") +} + +function errorText(cause: unknown): string { + if (cause instanceof Error) return `${cause.message} ${errorText((cause as { cause?: unknown }).cause)}` + if (typeof cause === "object" && cause) + return Object.values(cause as Record) + .map(errorText) + .join(" ") + return String(cause) +} diff --git a/packages/stats/core/src/index.ts b/packages/stats/core/src/index.ts index 52ff565cb..834625f60 100644 --- a/packages/stats/core/src/index.ts +++ b/packages/stats/core/src/index.ts @@ -6,6 +6,7 @@ export * as StatsHome from "./domain/home" export * as Inference from "./domain/inference" export * as ModelStat from "./domain/model" export * as ProviderStat from "./domain/provider" +export * as RetentionStat from "./domain/retention" export * as Stat from "./domain/stat" export * as Runtime from "./runtime" export * as StatSync from "./stat-sync" diff --git a/packages/stats/core/src/runtime.ts b/packages/stats/core/src/runtime.ts index cc1dccad2..1c0a7b8ac 100644 --- a/packages/stats/core/src/runtime.ts +++ b/packages/stats/core/src/runtime.ts @@ -4,10 +4,14 @@ import { layer as databaseLayer } from "./database" import { GeoStatRepo } from "./domain/geo" import { ModelStatRepo } from "./domain/model" import { ProviderStatRepo } from "./domain/provider" +import { RetentionStatRepo } from "./domain/retention" -const repoLayer = Layer.mergeAll(ModelStatRepo.layer, ProviderStatRepo.layer, GeoStatRepo.layer).pipe( - Layer.provide(databaseLayer), -) +const repoLayer = Layer.mergeAll( + ModelStatRepo.layer, + ProviderStatRepo.layer, + GeoStatRepo.layer, + RetentionStatRepo.layer, +).pipe(Layer.provide(databaseLayer)) export const layer = Layer.mergeAll(AppConfig.layer, databaseLayer, repoLayer) export const runtime = ManagedRuntime.make(layer) diff --git a/packages/stats/core/src/stat-sync.ts b/packages/stats/core/src/stat-sync.ts index ceec6f7e6..cd8cdf35b 100644 --- a/packages/stats/core/src/stat-sync.ts +++ b/packages/stats/core/src/stat-sync.ts @@ -2,16 +2,25 @@ import { DateTime, Effect } from "effect" import { Resource } from "sst/resource" import { DatabaseError } from "./database" import { GeoStatRepo, rowsFromAggregates as geoRowsFromAggregates } from "./domain/geo" -import { buildStatsQueries, toGeoAggregate, toModelAggregate, toProviderAggregate } from "./domain/inference" +import { + buildRetentionQueries, + buildStatsQueries, + toGeoAggregate, + toModelAggregate, + toProviderAggregate, + toRetentionAggregate, +} from "./domain/inference" import { ModelStatRepo, rowsFromAggregates as modelRowsFromAggregates } from "./domain/model" import { ProviderStatRepo, rowsFromAggregates as providerRowsFromAggregates } from "./domain/provider" -import { startOfIsoWeek } from "./domain/stat" +import { RetentionStatRepo, rowsFromAggregates as retentionRowsFromAggregates } from "./domain/retention" +import { startOfIsoWeek, startOfUtcDay } from "./domain/stat" import { R2Sql, R2SqlQueryError } from "./r2-sql" const DATALAKE_INGESTION_LAG_MS = 5 * 60_000 const STATS_DATA_START_MS = new Date("2026-05-28T00:00:00.000Z").getTime() const WEEK_MS = 7 * 86_400_000 const DISPLAY_WINDOW_MS = 56 * 86_400_000 +const RETENTION_INCREMENTAL_LOOKBACK_MS = 9 * 86_400_000 // Anchor incremental passes to the ISO week containing this lookback, so the pass // after a week boundary still recomputes the previous week's final aggregates even // if the boundary pass itself failed. @@ -19,11 +28,12 @@ const INCREMENTAL_LOOKBACK_MS = 2 * 3_600_000 export type SyncStatsResult = { ok: true; rows: number; startedAt: string; periodStart: string; periodEnd: string } export type SyncStatsError = R2SqlQueryError | DatabaseError +type SyncStatsServices = R2Sql | ModelStatRepo | ProviderStatRepo | GeoStatRepo | RetentionStatRepo export const syncStats: (options?: { full?: boolean -}) => Effect.Effect = - Effect.fn("StatSync.sync")(function* (options?: { full?: boolean }) { +}) => Effect.Effect = Effect.fn("StatSync.sync")( + function* (options?: { full?: boolean }) { const startedAt = yield* DateTime.nowAsDate const periodEnd = new Date(Math.floor((startedAt.getTime() - DATALAKE_INGESTION_LAG_MS) / 60_000) * 60_000) const periodStart = options?.full ? fullPeriodStart(periodEnd) : incrementalPeriodStart(periodEnd) @@ -31,6 +41,7 @@ export const syncStats: (options?: { const modelStats = yield* ModelStatRepo const providerStats = yield* ProviderStatRepo const geoStats = yield* GeoStatRepo + const retentionStats = yield* RetentionStatRepo yield* logRuntimeCheck() @@ -44,11 +55,39 @@ export const syncStats: (options?: { const geoRows = geoRowsFromAggregates( rows.filter((row) => row.dimension === "geo" || row.dimension === "geo_model").flatMap(toGeoAggregate), ) + const retentionAvailable = yield* retentionStats.available() + const retentionQueries = retentionAvailable + ? buildRetentionQueries( + options?.full + ? periodStart + : new Date( + Math.max(startOfUtcDay(periodEnd).getTime() - RETENTION_INCREMENTAL_LOOKBACK_MS, STATS_DATA_START_MS), + ), + startOfUtcDay(periodEnd), + ) + : [] + const retentionRows = retentionRowsFromAggregates( + yield* Effect.forEach(retentionQueries, (item) => r2Sql.query(item.query), { concurrency: 4 }).pipe( + Effect.map((batches) => batches.flatMap((batch) => batch.flatMap(toRetentionAggregate))), + ), + ) - yield* Effect.all([modelStats.upsert(modelRows), providerStats.upsert(providerRows), geoStats.upsert(geoRows)], { - concurrency: "unbounded", - discard: true, - }) + yield* Effect.all( + [ + modelStats.upsert(modelRows), + providerStats.upsert(providerRows), + geoStats.upsert(geoRows), + retentionStats.replace(retentionRows, { + cohortDates: retentionQueries.flatMap((item) => item.cohortDates), + dataset: Resource.StatsSyncConfig.dataset, + tier: "all", + }), + ], + { + concurrency: "unbounded", + discard: true, + }, + ) yield* Effect.all( [ modelStats.deleteRetiredDimensions(modelRows), @@ -66,6 +105,8 @@ export const syncStats: (options?: { rows: modelRows.length, providerRows: providerRows.length, geoRows: geoRows.length, + retentionRows: retentionRows.length, + retentionAvailable, stage: Resource.App.stage, })}`, ) @@ -77,7 +118,8 @@ export const syncStats: (options?: { periodStart: periodStart.toISOString(), periodEnd: periodEnd.toISOString(), } - }) + }, +) // May 27 was partial, so keep stats anchored at the first complete day. function fullPeriodStart(periodEnd: Date) { From 830aaf2059e87eab3105dda4c19556206d60c443 Mon Sep 17 00:00:00 2001 From: Jack Date: Wed, 26 Aug 2026 21:49:06 +0800 Subject: [PATCH 170/271] docs(go): add GLM-5.3-Flash (#45269) --- packages/console/app/src/i18n/ar.ts | 1 + packages/console/app/src/i18n/br.ts | 1 + packages/console/app/src/i18n/da.ts | 1 + packages/console/app/src/i18n/de.ts | 1 + packages/console/app/src/i18n/en.ts | 1 + packages/console/app/src/i18n/es.ts | 1 + packages/console/app/src/i18n/fr.ts | 1 + packages/console/app/src/i18n/it.ts | 1 + packages/console/app/src/i18n/ja.ts | 1 + packages/console/app/src/i18n/ko.ts | 1 + packages/console/app/src/i18n/no.ts | 1 + packages/console/app/src/i18n/pl.ts | 1 + packages/console/app/src/i18n/ru.ts | 1 + packages/console/app/src/i18n/th.ts | 1 + packages/console/app/src/i18n/tr.ts | 1 + packages/console/app/src/i18n/uk.ts | 1 + packages/console/app/src/i18n/zh.ts | 1 + packages/console/app/src/i18n/zht.ts | 1 + packages/console/app/src/routes/go/index.css | 31 +++++++++++++++++++ packages/console/app/src/routes/go/index.tsx | 13 ++++++-- .../routes/workspace/[id]/go/lite-section.tsx | 1 + packages/web/src/content/docs/ar/go.mdx | 6 ++++ packages/web/src/content/docs/bs/go.mdx | 6 ++++ packages/web/src/content/docs/da/go.mdx | 6 ++++ packages/web/src/content/docs/de/go.mdx | 6 ++++ packages/web/src/content/docs/es/go.mdx | 6 ++++ packages/web/src/content/docs/fr/go.mdx | 6 ++++ packages/web/src/content/docs/go.mdx | 6 ++++ packages/web/src/content/docs/it/go.mdx | 6 ++++ packages/web/src/content/docs/ja/go.mdx | 6 ++++ packages/web/src/content/docs/ko/go.mdx | 6 ++++ packages/web/src/content/docs/nb/go.mdx | 6 ++++ packages/web/src/content/docs/pl/go.mdx | 6 ++++ packages/web/src/content/docs/pt-br/go.mdx | 6 ++++ packages/web/src/content/docs/ru/go.mdx | 6 ++++ packages/web/src/content/docs/th/go.mdx | 6 ++++ packages/web/src/content/docs/tr/go.mdx | 6 ++++ packages/web/src/content/docs/zh-cn/go.mdx | 6 ++++ packages/web/src/content/docs/zh-tw/go.mdx | 6 ++++ 39 files changed, 168 insertions(+), 3 deletions(-) diff --git a/packages/console/app/src/i18n/ar.ts b/packages/console/app/src/i18n/ar.ts index e22c9a0a7..b1dfd4833 100644 --- a/packages/console/app/src/i18n/ar.ts +++ b/packages/console/app/src/i18n/ar.ts @@ -252,6 +252,7 @@ export const dict = { "zen.privacy.exceptionsLink": "الاستثناءات التالية", "go.title": "OpenCode Go | نماذج برمجة منخفضة التكلفة للجميع", + "go.banner.text": "يحصل GLM-5.3-Flash على حدود استخدام مضاعفة لفترة محدودة", "go.meta.description": "يبلغ سعر Go ‏$10/شهر، مع حدود استخدام سخية ووصول موثوق إلى نماذج البرمجة الرائدة.", "go.hero.title": "نماذج برمجة منخفضة التكلفة للجميع", "go.hero.body": diff --git a/packages/console/app/src/i18n/br.ts b/packages/console/app/src/i18n/br.ts index 0120f36f8..12d1b87a5 100644 --- a/packages/console/app/src/i18n/br.ts +++ b/packages/console/app/src/i18n/br.ts @@ -256,6 +256,7 @@ export const dict = { "zen.privacy.exceptionsLink": "seguintes exceções", "go.title": "OpenCode Go | Modelos de codificação de baixo custo para todos", + "go.banner.text": "GLM-5.3-Flash tem limites de uso 2x maiores por tempo limitado", "go.meta.description": "O Go custa $10/mês, com limites generosos de uso e acesso confiável aos principais modelos de codificação.", "go.hero.title": "Modelos de codificação de baixo custo para todos", diff --git a/packages/console/app/src/i18n/da.ts b/packages/console/app/src/i18n/da.ts index 64ab93855..8ed2a8f7c 100644 --- a/packages/console/app/src/i18n/da.ts +++ b/packages/console/app/src/i18n/da.ts @@ -254,6 +254,7 @@ export const dict = { "zen.privacy.exceptionsLink": "følgende undtagelser", "go.title": "OpenCode Go | Kodningsmodeller til lav pris for alle", + "go.banner.text": "GLM-5.3-Flash får fordoblet brugsgrænse i en begrænset periode", "go.meta.description": "Go koster $10/måned, med generøse brugsgrænser og pålidelig adgang til førende kodningsmodeller.", "go.hero.title": "Kodningsmodeller til lav pris for alle", diff --git a/packages/console/app/src/i18n/de.ts b/packages/console/app/src/i18n/de.ts index fc5635228..dea829a39 100644 --- a/packages/console/app/src/i18n/de.ts +++ b/packages/console/app/src/i18n/de.ts @@ -256,6 +256,7 @@ export const dict = { "zen.privacy.exceptionsLink": "folgenden Ausnahmen", "go.title": "OpenCode Go | Kostengünstige Coding-Modelle für alle", + "go.banner.text": "GLM-5.3-Flash erhält für begrenzte Zeit 2x Nutzungslimits", "go.meta.description": "Go kostet $10/Monat, mit großzügigen Nutzungslimits und zuverlässigem Zugang zu führenden Coding-Modellen.", "go.hero.title": "Kostengünstige Coding-Modelle für alle", diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index 46a466b1f..a557d4fb0 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -253,6 +253,7 @@ export const dict = { "zen.privacy.exceptionsLink": "following exceptions", "go.title": "OpenCode Go | Low cost coding models for everyone", + "go.banner.text": "GLM-5.3-Flash gets 2× usage limits for a limited time", "go.meta.description": "Go costs $10/month, with generous usage limits and reliable access to leading coding models.", "go.hero.title": "Low cost coding models for everyone", "go.hero.body": diff --git a/packages/console/app/src/i18n/es.ts b/packages/console/app/src/i18n/es.ts index 502eae5aa..534ac2eab 100644 --- a/packages/console/app/src/i18n/es.ts +++ b/packages/console/app/src/i18n/es.ts @@ -257,6 +257,7 @@ export const dict = { "zen.privacy.exceptionsLink": "siguientes excepciones", "go.title": "OpenCode Go | Modelos de programación de bajo coste para todos", + "go.banner.text": "GLM-5.3-Flash tiene límites de uso 2x mayores por tiempo limitado", "go.meta.description": "Go cuesta 10 $/mes, con límites de uso generosos y acceso fiable a modelos de programación líderes.", "go.hero.title": "Modelos de programación de bajo coste para todos", diff --git a/packages/console/app/src/i18n/fr.ts b/packages/console/app/src/i18n/fr.ts index 250ac50aa..2b4ad95d0 100644 --- a/packages/console/app/src/i18n/fr.ts +++ b/packages/console/app/src/i18n/fr.ts @@ -258,6 +258,7 @@ export const dict = { "zen.privacy.exceptionsLink": "exceptions suivantes", "go.title": "OpenCode Go | Modèles de code à faible coût pour tous", + "go.banner.text": "GLM-5.3-Flash bénéficie de limites d’utilisation 2x supérieures pour une durée limitée", "go.meta.description": "Go coûte 10 $/mois, avec des limites d'utilisation généreuses et un accès fiable aux principaux modèles de codage.", "go.hero.title": "Modèles de code à faible coût pour tous", diff --git a/packages/console/app/src/i18n/it.ts b/packages/console/app/src/i18n/it.ts index 2922105b6..3abbaf7db 100644 --- a/packages/console/app/src/i18n/it.ts +++ b/packages/console/app/src/i18n/it.ts @@ -254,6 +254,7 @@ export const dict = { "zen.privacy.exceptionsLink": "seguenti eccezioni", "go.title": "OpenCode Go | Modelli di coding a basso costo per tutti", + "go.banner.text": "GLM-5.3-Flash offre limiti di utilizzo 2x superiori per un periodo limitato", "go.meta.description": "Go costa $10/mese, con limiti di utilizzo generosi e un accesso affidabile ai principali modelli di coding.", "go.hero.title": "Modelli di coding a basso costo per tutti", diff --git a/packages/console/app/src/i18n/ja.ts b/packages/console/app/src/i18n/ja.ts index 45bff6611..5bb36e46f 100644 --- a/packages/console/app/src/i18n/ja.ts +++ b/packages/console/app/src/i18n/ja.ts @@ -253,6 +253,7 @@ export const dict = { "zen.privacy.exceptionsLink": "以下の例外", "go.title": "OpenCode Go | すべての人のための低価格なコーディングモデル", + "go.banner.text": "GLM-5.3-Flashの利用上限が期間限定で2倍に", "go.meta.description": "Goは月額$10で、主要なコーディングモデルへのゆとりある利用上限と安定したアクセスを提供します。", "go.hero.title": "すべての人のための低価格なコーディングモデル", diff --git a/packages/console/app/src/i18n/ko.ts b/packages/console/app/src/i18n/ko.ts index bf5eb8e6b..b57ab820b 100644 --- a/packages/console/app/src/i18n/ko.ts +++ b/packages/console/app/src/i18n/ko.ts @@ -250,6 +250,7 @@ export const dict = { "zen.privacy.exceptionsLink": "다음 예외", "go.title": "OpenCode Go | 모두를 위한 저비용 코딩 모델", + "go.banner.text": "GLM-5.3-Flash 사용 한도가 한시적으로 2배 확대됩니다", "go.meta.description": "Go는 월 $10이며, 넉넉한 사용 한도와 주요 코딩 모델에 대한 안정적인 액세스를 제공합니다.", "go.hero.title": "모두를 위한 저비용 코딩 모델", "go.hero.body": diff --git a/packages/console/app/src/i18n/no.ts b/packages/console/app/src/i18n/no.ts index d6dd00155..343e81e29 100644 --- a/packages/console/app/src/i18n/no.ts +++ b/packages/console/app/src/i18n/no.ts @@ -254,6 +254,7 @@ export const dict = { "zen.privacy.exceptionsLink": "følgende unntak", "go.title": "OpenCode Go | Rimelige kodemodeller for alle", + "go.banner.text": "GLM-5.3-Flash får 2x bruksgrense i en begrenset periode", "go.meta.description": "Go koster $10/måned, med sjenerøse bruksgrenser og pålitelig tilgang til ledende kodemodeller.", "go.hero.title": "Rimelige kodemodeller for alle", diff --git a/packages/console/app/src/i18n/pl.ts b/packages/console/app/src/i18n/pl.ts index d423a5cda..f33ddf70f 100644 --- a/packages/console/app/src/i18n/pl.ts +++ b/packages/console/app/src/i18n/pl.ts @@ -255,6 +255,7 @@ export const dict = { "zen.privacy.exceptionsLink": "następującymi wyjątkami", "go.title": "OpenCode Go | Niskokosztowe modele do kodowania dla każdego", + "go.banner.text": "GLM-5.3-Flash oferuje 2x wyższe limity użycia przez ograniczony czas", "go.meta.description": "Go kosztuje $10/miesiąc, oferując hojne limity użycia i niezawodny dostęp do wiodących modeli do kodowania.", "go.hero.title": "Niskokosztowe modele do kodowania dla każdego", diff --git a/packages/console/app/src/i18n/ru.ts b/packages/console/app/src/i18n/ru.ts index 92cb22558..b285c9e85 100644 --- a/packages/console/app/src/i18n/ru.ts +++ b/packages/console/app/src/i18n/ru.ts @@ -258,6 +258,7 @@ export const dict = { "zen.privacy.exceptionsLink": "следующими исключениями", "go.title": "OpenCode Go | Недорогие модели для кодинга для всех", + "go.banner.text": "GLM-5.3-Flash получает 2x лимиты использования на ограниченное время", "go.meta.description": "Go стоит $10/месяц и предлагает щедрые лимиты использования и надежный доступ к ведущим моделям для кодинга.", "go.hero.title": "Недорогие модели для кодинга для всех", diff --git a/packages/console/app/src/i18n/th.ts b/packages/console/app/src/i18n/th.ts index c3766f5b4..1302a3943 100644 --- a/packages/console/app/src/i18n/th.ts +++ b/packages/console/app/src/i18n/th.ts @@ -253,6 +253,7 @@ export const dict = { "zen.privacy.exceptionsLink": "ข้อยกเว้นดังนี้", "go.title": "OpenCode Go | โมเดลเขียนโค้ดราคาประหยัดสำหรับทุกคน", + "go.banner.text": "GLM-5.3-Flash เพิ่มโควตาการใช้งานเป็น 2 เท่าในช่วงเวลาจำกัด", "go.meta.description": "Go มีราคา $10/เดือน พร้อมขีดจำกัดการใช้งานที่เอื้อเฟื้อและการเข้าถึงโมเดลเขียนโค้ดชั้นนำอย่างเชื่อถือได้", "go.hero.title": "โมเดลเขียนโค้ดราคาประหยัดสำหรับทุกคน", diff --git a/packages/console/app/src/i18n/tr.ts b/packages/console/app/src/i18n/tr.ts index 118d56204..a78376c8b 100644 --- a/packages/console/app/src/i18n/tr.ts +++ b/packages/console/app/src/i18n/tr.ts @@ -256,6 +256,7 @@ export const dict = { "zen.privacy.exceptionsLink": "aşağıdaki istisnalar", "go.title": "OpenCode Go | Herkes için düşük maliyetli kodlama modelleri", + "go.banner.text": "GLM-5.3-Flash sınırlı bir süre için 2x kullanım limiti sunuyor", "go.meta.description": "Go ayda 10$'dır; cömert kullanım limitleri ve önde gelen kodlama modellerine güvenilir erişim sunar.", "go.hero.title": "Herkes için düşük maliyetli kodlama modelleri", diff --git a/packages/console/app/src/i18n/uk.ts b/packages/console/app/src/i18n/uk.ts index 688d61236..eaa3c6311 100644 --- a/packages/console/app/src/i18n/uk.ts +++ b/packages/console/app/src/i18n/uk.ts @@ -255,6 +255,7 @@ export const dict = { "zen.privacy.exceptionsLink": "такими винятками", "go.title": "OpenCode Go | Недорогі моделі кодування для всіх", + "go.banner.text": "GLM-5.3-Flash отримує 2x ліміти використання протягом обмеженого часу", "go.meta.description": "Go коштує $10/місяць, зі щедрими лімітами використання та надійним доступом до провідних моделей для кодування.", "go.hero.title": "Недорогі моделі кодування для всіх", diff --git a/packages/console/app/src/i18n/zh.ts b/packages/console/app/src/i18n/zh.ts index f852bc084..12f161238 100644 --- a/packages/console/app/src/i18n/zh.ts +++ b/packages/console/app/src/i18n/zh.ts @@ -244,6 +244,7 @@ export const dict = { "zen.privacy.exceptionsLink": "以下例外情况除外", "go.title": "OpenCode Go | 人人可用的低成本编程模型", + "go.banner.text": "GLM-5.3-Flash 限时享受 2 倍使用额度", "go.meta.description": "Go 每月 $10,提供充裕的使用限额,并可可靠访问领先的编程模型。", "go.hero.title": "人人可用的低成本编程模型", "go.hero.body": diff --git a/packages/console/app/src/i18n/zht.ts b/packages/console/app/src/i18n/zht.ts index b83e75f77..149fbf7c2 100644 --- a/packages/console/app/src/i18n/zht.ts +++ b/packages/console/app/src/i18n/zht.ts @@ -244,6 +244,7 @@ export const dict = { "zen.privacy.exceptionsLink": "以下例外情況", "go.title": "OpenCode Go | 低成本全民編碼模型", + "go.banner.text": "GLM-5.3-Flash 限時享有 2 倍使用額度", "go.meta.description": "Go 每月 $10,提供充裕的使用限額,並可穩定存取領先的編碼模型。", "go.hero.title": "低成本全民編碼模型", "go.hero.body": diff --git a/packages/console/app/src/routes/go/index.css b/packages/console/app/src/routes/go/index.css index 8e715e363..a329e2981 100644 --- a/packages/console/app/src/routes/go/index.css +++ b/packages/console/app/src/routes/go/index.css @@ -327,6 +327,37 @@ body { } } + [data-component="desktop-app-banner"] { + display: flex; + align-items: center; + gap: 12px; + margin-bottom: 32px; + + [data-slot="badge"] { + background: var(--color-background-strong); + color: var(--color-text-inverted); + font-weight: 500; + padding: 4px 8px; + line-height: 1; + flex-shrink: 0; + } + + [data-slot="content"] { + display: flex; + align-items: center; + gap: 1ch; + } + + [data-slot="text"] { + color: var(--color-text-strong); + line-height: 1.4; + + @media (max-width: 30.625rem) { + display: none; + } + } + } + [data-slot="hero-copy"] { img { margin-bottom: 24px; diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index e36e10af8..77747e677 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -25,6 +25,7 @@ const checkLoggedIn = query(async () => { const models = [ { name: "Grok 4.6", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention30" }, { name: "GPT 5.6 Luna", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention30" }, + { name: "GLM-5.3-Flash", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "GLM-5.3", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "GLM-5.2", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "GLM-5.1", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, @@ -72,14 +73,14 @@ function LimitsGraph(props: { href: string }) { { id: "kimi-k3", name: "Kimi K3", req: 110, d: "50ms" }, { id: "qwen3.8-max", name: "Qwen3.8 Max", req: 160, d: "90ms" }, { id: "grok-4.6", name: "Grok 4.6", req: 169, d: "75ms" }, - { id: "glm-5.2", name: "GLM-5.2", req: 880, d: "100ms" }, { id: "gpt-5.6-luna", name: "GPT 5.6 Luna", req: 2050, d: "290ms" }, + { id: "glm-5.3-flash", name: "GLM-5.3-Flash", req: 3160, baseReq: 1580, bonus: "2x usage", d: "100ms" }, { id: "minimax-m3", name: "MiniMax M3", req: 3200, d: "210ms" }, { id: "qwen3.7-plus", name: "Qwen3.7 Plus", req: 4300, d: "300ms" }, { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", req: 7600, d: "330ms" }, { id: "longcat-2.0", name: "LongCat-2.0", req: 11400, d: "335ms" }, { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100, d: "340ms" }, - { id: "hy3", name: "Hy3", req: 34400, baseReq: 4300, d: "320ms" }, + { id: "hy3", name: "Hy3", req: 34400, baseReq: 4300, bonus: "8x usage", d: "320ms" }, { id: "muse-spark-1.2-contributor", name: "Muse Spark 1.2 Contributor", req: 45300, edge: true, d: "360ms" }, ] @@ -219,7 +220,7 @@ function LimitsGraph(props: { href: string }) { )} {"infinite" in m && ({i18n.t("go.graph.limitedTime")})} - {m.baseReq && 8x usage} + {"bonus" in m && {m.bonus}} )} @@ -269,6 +270,12 @@ export default function Home() {
      +
      + {i18n.t("home.banner.badge")} +
      + {i18n.t("go.banner.text")} +
      +
      diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index 7e535ae8a..1770ee307 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -642,6 +642,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {
      • Grok 4.6
      • GPT 5.6 Luna
      • +
      • GLM-5.3-Flash
      • GLM-5.3
      • GLM-5.2
      • GLM-5.1
      • diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 71ba2e0b8..6d74e4b66 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -50,6 +50,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر تشمل قائمة النماذج الحالية: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -92,6 +93,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | ---------------------------- | ------------------- | ------------------ | ---------------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -116,6 +118,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر تستند التقديرات إلى أنماط الطلبات المرصودة: - Grok 4.6 — ‏390 input، و32,500 cached، و120 output tokens لكل طلب +- GLM-5.3-Flash — ‏1,000 input، و55,000 cached، و200 output tokens لكل طلب - GLM-5.3/5.2/5.1 — ‏700 input، و52,000 cached، و150 output tokens لكل طلب - GPT 5.6 Luna — ‏1,000 توكن إدخال، و50,000 توكن مخزّن مؤقتًا، و220 توكن إخراج لكل طلب - Kimi K3 — ‏1,050 input، و76,500 cached، و300 output tokens لكل طلب @@ -143,6 +146,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -210,6 +214,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -252,6 +257,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ------------- | ------------------ | | Grok 4.6 | غير مستخدَمة | 30 يومًا | | GPT 5.6 Luna | غير مستخدَمة | 30 يومًا | +| GLM-5.3-Flash | غير مستخدَمة | 0 أيام | | GLM-5.3 | غير مستخدَمة | 0 أيام | | GLM-5.2 | غير مستخدَمة | 0 أيام | | GLM-5.1 | غير مستخدَمة | 0 أيام | diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index dc7536a8c..67c398dcd 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -60,6 +60,7 @@ Samo jedan član po radnom prostoru (workspace) može se pretplatiti na OpenCode Trenutna lista modela uključuje: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -102,6 +103,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | ---------------------------- | ------------------ | ----------------- | ----------------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -126,6 +128,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori Procjene se zasnivaju na zapaženim obrascima zahtjeva: - Grok 4.6 — 390 ulaznih, 32,500 keširanih, 120 izlaznih tokena po zahtjevu +- GLM-5.3-Flash — 1,000 ulaznih (input), 55,000 keširanih, 200 izlaznih (output) tokena po zahtjevu - GLM-5.3/5.2/5.1 — 700 ulaznih (input), 52,000 keširanih, 150 izlaznih (output) tokena po zahtjevu - GPT 5.6 Luna — 1,000 ulaznih, 50,000 keširanih, 220 izlaznih tokena po zahtjevu - Kimi K3 — 1,050 ulaznih, 76,500 keširanih, 300 izlaznih tokena po zahtjevu @@ -153,6 +156,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -222,6 +226,7 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -266,6 +271,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ----------------- | -------------------- | | Grok 4.6 | Ne koristi se | 30 dana | | GPT 5.6 Luna | Ne koristi se | 30 dana | +| GLM-5.3-Flash | Ne koristi se | 0 dana | | GLM-5.3 | Ne koristi se | 0 dana | | GLM-5.2 | Ne koristi se | 0 dana | | GLM-5.1 | Ne koristi se | 0 dana | diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index b94272e40..b926902d1 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -60,6 +60,7 @@ Kun ét medlem per arbejdsområde kan abonnere på OpenCode Go. Den nuværende liste over modeller inkluderer: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -102,6 +103,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | ---------------------------- | ----------------------- | ------------------- | --------------------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -126,6 +128,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo Estimaterne er baseret på observerede anmodningsmønstre: - Grok 4.6 — 390 input, 32.500 cachelagrede, 120 output-tokens pr. anmodning +- GLM-5.3-Flash — 1.000 input, 55.000 cachelagrede, 200 output-tokens pr. anmodning - GLM-5.3/5.2/5.1 — 700 input, 52.000 cachelagrede, 150 output-tokens pr. anmodning - GPT 5.6 Luna — 1.000 input, 50.000 cachelagrede, 220 output-tokens pr. anmodning - Kimi K3 — 1.050 input, 76.500 cachelagrede, 300 output-tokens pr. anmodning @@ -153,6 +156,7 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -222,6 +226,7 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -266,6 +271,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ------------ | -------------- | | Grok 4.6 | Ikke brugt | 30 dage | | GPT 5.6 Luna | Ikke brugt | 30 dage | +| GLM-5.3-Flash | Ikke brugt | 0 dage | | GLM-5.3 | Ikke brugt | 0 dage | | GLM-5.2 | Ikke brugt | 0 dage | | GLM-5.1 | Ikke brugt | 0 dage | diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index d19a1422c..c26b2cd01 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -52,6 +52,7 @@ Nur ein Mitglied pro Workspace kann OpenCode Go abonnieren. Die aktuelle Liste der Modelle umfasst: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -94,6 +95,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | ---------------------------- | ---------------------- | ------------------ | ------------------ | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -118,6 +120,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty Die Schätzungen basieren auf beobachteten Anfragemustern: - Grok 4.6 — 390 Input-, 32.500 Cached-, 120 Output-Tokens pro Anfrage +- GLM-5.3-Flash — 1.000 Input-, 55.000 Cached-, 200 Output-Tokens pro Anfrage - GLM-5.3/5.2/5.1 — 700 Input-, 52.000 Cached-, 150 Output-Tokens pro Anfrage - GPT 5.6 Luna — 1.000 Input-, 50.000 Cached-, 220 Output-Tokens pro Anfrage - Kimi K3 — 1.050 Input-, 76.500 Cached-, 300 Output-Tokens pro Anfrage @@ -145,6 +148,7 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -212,6 +216,7 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -254,6 +259,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | --------------- | ----------------- | | Grok 4.6 | Nicht verwendet | 30 Tage | | GPT 5.6 Luna | Nicht verwendet | 30 Tage | +| GLM-5.3-Flash | Nicht verwendet | 0 Tage | | GLM-5.3 | Nicht verwendet | 0 Tage | | GLM-5.2 | Nicht verwendet | 0 Tage | | GLM-5.1 | Nicht verwendet | 0 Tage | diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index ada50b0d2..5bab364e4 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -60,6 +60,7 @@ Solo un miembro por espacio de trabajo puede suscribirse a OpenCode Go. La lista actual de modelos incluye: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -102,6 +103,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | ---------------------------- | ---------------------- | --------------------- | ------------------ | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -126,6 +128,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los Las estimaciones se basan en los patrones de peticiones observados: - Grok 4.6 — 390 tokens de entrada, 32,500 en caché, 120 tokens de salida por petición +- GLM-5.3-Flash — 1,000 tokens de entrada, 55,000 en caché, 200 tokens de salida por petición - GLM-5.3/5.2/5.1 — 700 tokens de entrada, 52,000 en caché, 150 tokens de salida por petición - GPT 5.6 Luna — 1,000 tokens de entrada, 50,000 en caché, 220 tokens de salida por petición - Kimi K3 — 1,050 tokens de entrada, 76,500 en caché, 300 tokens de salida por petición @@ -153,6 +156,7 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -222,6 +226,7 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -266,6 +271,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ------------------------ | ------------------ | | Grok 4.6 | No utilizado | 30 días | | GPT 5.6 Luna | No utilizado | 30 días | +| GLM-5.3-Flash | No utilizado | 0 días | | GLM-5.3 | No utilizado | 0 días | | GLM-5.2 | No utilizado | 0 días | | GLM-5.1 | No utilizado | 0 días | diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index b1792e39a..6c70197dc 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -50,6 +50,7 @@ Un seul membre par espace de travail peut s'abonner à OpenCode Go. La liste actuelle des modèles comprend : - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -92,6 +93,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | ---------------------------- | --------------------- | -------------------- | ----------------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -116,6 +118,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d Les estimations sont basées sur les schémas de requêtes observés : - Grok 4.6 — 390 tokens en entrée, 32,500 en cache, 120 tokens en sortie par requête +- GLM-5.3-Flash — 1,000 tokens en entrée, 55,000 en cache, 200 tokens en sortie par requête - GLM-5.3/5.2/5.1 — 700 tokens en entrée, 52,000 en cache, 150 tokens en sortie par requête - GPT 5.6 Luna — 1,000 tokens en entrée, 50,000 en cache, 220 tokens en sortie par requête - Kimi K3 — 1,050 tokens en entrée, 76,500 en cache, 300 tokens en sortie par requête @@ -143,6 +146,7 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -210,6 +214,7 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -252,6 +257,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ------------------------ | ------------------------ | | Grok 4.6 | Non utilisé | 30 jours | | GPT 5.6 Luna | Non utilisé | 30 jours | +| GLM-5.3-Flash | Non utilisé | 0 jour | | GLM-5.3 | Non utilisé | 0 jour | | GLM-5.2 | Non utilisé | 0 jour | | GLM-5.1 | Non utilisé | 0 jour | diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 9566c7c54..f0b5af658 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -60,6 +60,7 @@ Only one member per workspace can subscribe to OpenCode Go. The current list of models includes: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -102,6 +103,7 @@ The table below provides an estimated request count based on typical Go usage pa | ---------------------------- | ------------------- | ----------------- | ------------------ | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -126,6 +128,7 @@ The table below provides an estimated request count based on typical Go usage pa The estimates are based on observed request patterns: - Grok 4.6 — 390 input, 32,500 cached, 120 output tokens per request +- GLM-5.3-Flash — 1,000 input, 55,000 cached, 200 output tokens per request - GLM-5.3/5.2/5.1 — 700 input, 52,000 cached, 150 output tokens per request - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens per request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens per request @@ -153,6 +156,7 @@ The estimates are also based on the following prices per 1M tokens and the month | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -222,6 +226,7 @@ You can also access Go models through the following API endpoints. | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -266,6 +271,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | -------------- | -------------- | | Grok 4.6 | Not used | 30 days | | GPT 5.6 Luna | Not used | 30 days | +| GLM-5.3-Flash | Not used | 0 days | | GLM-5.3 | Not used | 0 days | | GLM-5.2 | Not used | 0 days | | GLM-5.1 | Not used | 0 days | diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index fddea0a86..018c63550 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -58,6 +58,7 @@ Solo un membro per workspace può abbonarsi a OpenCode Go. L'elenco attuale dei modelli include: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -100,6 +101,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | ---------------------------- | -------------------- | --------------------- | ----------------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -124,6 +126,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p Le stime si basano sui pattern di richieste osservati: - Grok 4.6 — 390 di input, 32.500 in cache, 120 token di output per richiesta +- GLM-5.3-Flash — 1.000 di input, 55.000 in cache, 200 token di output per richiesta - GLM-5.3/5.2/5.1 — 700 di input, 52.000 in cache, 150 token di output per richiesta - GPT 5.6 Luna — 1.000 token di input, 50.000 in cache, 220 token di output per richiesta - Kimi K3 — 1.050 di input, 76.500 in cache, 300 token di output per richiesta @@ -151,6 +154,7 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -220,6 +224,7 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -264,6 +269,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ------------------------- | ---------------------- | | Grok 4.6 | Non utilizzato | 30 giorni | | GPT 5.6 Luna | Non utilizzato | 30 giorni | +| GLM-5.3-Flash | Non utilizzato | 0 giorni | | GLM-5.3 | Non utilizzato | 0 giorni | | GLM-5.2 | Non utilizzato | 0 giorni | | GLM-5.1 | Non utilizzato | 0 giorni | diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index 3a48101c0..c1ad6d018 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -50,6 +50,7 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー 現在のモデルリストには以下が含まれます: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -92,6 +93,7 @@ OpenCode Goには以下の制限が含まれています: | ---------------------------- | ------------------------- | ---------------- | ---------------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -116,6 +118,7 @@ OpenCode Goには以下の制限が含まれています: 推定値は、観測されたリクエストパターンに基づいています: - Grok 4.6 — リクエストあたり 入力 390トークン、キャッシュ 32,500トークン、出力 120トークン +- GLM-5.3-Flash — リクエストあたり 入力 1,000トークン、キャッシュ 55,000トークン、出力 200トークン - GLM-5.3/5.2/5.1 — リクエストあたり 入力 700トークン、キャッシュ 52,000トークン、出力 150トークン - GPT 5.6 Luna — リクエストあたり 入力 1,000トークン、キャッシュ 50,000トークン、出力 220トークン - Kimi K3 — リクエストあたり 入力 1,050トークン、キャッシュ 76,500トークン、出力 300トークン @@ -143,6 +146,7 @@ OpenCode Goには以下の制限が含まれています: | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -210,6 +214,7 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -252,6 +257,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | -------------------- | ----------- | | Grok 4.6 | 使用なし | 30日 | | GPT 5.6 Luna | 使用なし | 30日 | +| GLM-5.3-Flash | 使用なし | 0日 | | GLM-5.3 | 使用なし | 0日 | | GLM-5.2 | 使用なし | 0日 | | GLM-5.1 | 使用なし | 0日 | diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 56fffd759..b0aecf2e4 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -50,6 +50,7 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. 현재 모델 목록에는 다음이 포함됩니다. - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -92,6 +93,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | ---------------------------- | ----------------- | -------------- | -------------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -116,6 +118,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. 이 예상치는 관찰된 요청 패턴을 기준으로 합니다. - Grok 4.6 — 요청당 입력 390, 캐시 32,500, 출력 토큰 120 +- GLM-5.3-Flash — 요청당 입력 1,000, 캐시 55,000, 출력 토큰 200 - GLM-5.3/5.2/5.1 — 요청당 입력 700, 캐시 52,000, 출력 토큰 150 - GPT 5.6 Luna — 요청당 입력 토큰 1,000개, 캐시 토큰 50,000개, 출력 토큰 220개 - Kimi K3 — 요청당 입력 1,050, 캐시 76,500, 출력 토큰 300 @@ -143,6 +146,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -210,6 +214,7 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -252,6 +257,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ------------- | ----------- | | Grok 4.6 | 사용되지 않음 | 30일 | | GPT 5.6 Luna | 사용되지 않음 | 30일 | +| GLM-5.3-Flash | 사용되지 않음 | 0일 | | GLM-5.3 | 사용되지 않음 | 0일 | | GLM-5.2 | 사용되지 않음 | 0일 | | GLM-5.1 | 사용되지 않음 | 0일 | diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index e5b60d65e..f8016c461 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -60,6 +60,7 @@ Kun ett medlem per arbeidsområde kan abonnere på OpenCode Go. Den nåværende listen over modeller inkluderer: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -102,6 +103,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | ---------------------------- | ------------------------ | -------------------- | ---------------------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -126,6 +128,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm Estimatene er basert på observerte forespørselsmønstre: - Grok 4.6 — 390 input, 32 500 bufret, 120 output-tokens per forespørsel +- GLM-5.3-Flash — 1 000 input, 55 000 bufret, 200 output-tokens per forespørsel - GLM-5.3/5.2/5.1 — 700 input, 52 000 bufret, 150 output-tokens per forespørsel - GPT 5.6 Luna — 1 000 input, 50 000 bufret, 220 output-tokens per forespørsel - Kimi K3 — 1 050 input, 76 500 bufret, 300 output-tokens per forespørsel @@ -153,6 +156,7 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -222,6 +226,7 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -266,6 +271,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ------------- | --------------- | | Grok 4.6 | Brukes ikke | 30 dager | | GPT 5.6 Luna | Brukes ikke | 30 dager | +| GLM-5.3-Flash | Brukes ikke | 0 dager | | GLM-5.3 | Brukes ikke | 0 dager | | GLM-5.2 | Brukes ikke | 0 dager | | GLM-5.1 | Brukes ikke | 0 dager | diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index dfa609578..4d04f30c0 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -54,6 +54,7 @@ Tylko jeden członek na obszar roboczy (workspace) może zasubskrybować OpenCod Obecna lista modeli obejmuje: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -96,6 +97,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | ---------------------------- | ------------------- | ------------------ | ------------------ | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -120,6 +122,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych Szacunki te opierają się na zaobserwowanych wzorcach żądań: - Grok 4.6 — 390 tokenów wejściowych, 32 500 w pamięci podręcznej, 120 tokenów wyjściowych na żądanie +- GLM-5.3-Flash — 1 000 tokenów wejściowych, 55 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie - GLM-5.3/5.2/5.1 — 700 tokenów wejściowych, 52 000 w pamięci podręcznej, 150 tokenów wyjściowych na żądanie - GPT 5.6 Luna — 1 000 tokenów wejściowych, 50 000 w pamięci podręcznej, 220 tokenów wyjściowych na żądanie - Kimi K3 — 1 050 tokenów wejściowych, 76 500 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie @@ -147,6 +150,7 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -214,6 +218,7 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -258,6 +263,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ----------------- | --------------- | | Grok 4.6 | Niewykorzystywane | 30 dni | | GPT 5.6 Luna | Niewykorzystywane | 30 dni | +| GLM-5.3-Flash | Niewykorzystywane | 0 dni | | GLM-5.3 | Niewykorzystywane | 0 dni | | GLM-5.2 | Niewykorzystywane | 0 dni | | GLM-5.1 | Niewykorzystywane | 0 dni | diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 307b9dae8..a0ec0c5b5 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -60,6 +60,7 @@ Apenas um membro por workspace pode assinar o OpenCode Go. A lista atual de modelos inclui: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -102,6 +103,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | ---------------------------- | ----------------------- | ---------------------- | ------------------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -126,6 +128,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr As estimativas se baseiam nos padrões de requisições observados: - Grok 4.6 — 390 tokens de entrada, 32.500 em cache, 120 tokens de saída por requisição +- GLM-5.3-Flash — 1.000 tokens de entrada, 55.000 em cache, 200 tokens de saída por requisição - GLM-5.3/5.2/5.1 — 700 tokens de entrada, 52.000 em cache, 150 tokens de saída por requisição - GPT 5.6 Luna — 1.000 tokens de entrada, 50.000 em cache, 220 tokens de saída por requisição - Kimi K3 — 1.050 tokens de entrada, 76.500 em cache, 300 tokens de saída por requisição @@ -153,6 +156,7 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -222,6 +226,7 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -266,6 +271,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ---------------------- | ----------------- | | Grok 4.6 | Não usado | 30 dias | | GPT 5.6 Luna | Não usado | 30 dias | +| GLM-5.3-Flash | Não usado | 0 dias | | GLM-5.3 | Não usado | 0 dias | | GLM-5.2 | Não usado | 0 dias | | GLM-5.1 | Não usado | 0 dias | diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index b6eff3279..c6a05c844 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -60,6 +60,7 @@ OpenCode Go работает так же, как и любой другой пр Текущий список моделей включает: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -102,6 +103,7 @@ OpenCode Go включает следующие лимиты: | ---------------------------- | ------------------- | ----------------- | ---------------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -126,6 +128,7 @@ OpenCode Go включает следующие лимиты: Эти оценки основаны на наблюдаемых показателях запросов: - Grok 4.6 — 390 входных, 32,500 кешированных, 120 выходных токенов на запрос +- GLM-5.3-Flash — 1,000 входных, 55,000 кешированных, 200 выходных токенов на запрос - GLM-5.3/5.2/5.1 — 700 входных, 52,000 кешированных, 150 выходных токенов на запрос - GPT 5.6 Luna — 1,000 входных, 50,000 кешированных, 220 выходных токенов на запрос - Kimi K3 — 1,050 входных, 76,500 кешированных, 300 выходных токенов на запрос @@ -153,6 +156,7 @@ OpenCode Go включает следующие лимиты: | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -222,6 +226,7 @@ OpenCode Go включает следующие лимиты: | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -266,6 +271,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ---------------- | --------------- | | Grok 4.6 | Не используется | 30 дней | | GPT 5.6 Luna | Не используется | 30 дней | +| GLM-5.3-Flash | Не используется | 0 дней | | GLM-5.3 | Не используется | 0 дней | | GLM-5.2 | Не используется | 0 дней | | GLM-5.1 | Не используется | 0 дней | diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 72e81d3ac..26ae73a36 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -50,6 +50,7 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร รายชื่อโมเดลในปัจจุบันประกอบด้วย: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -92,6 +93,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | ---------------------------- | ---------------------- | ------------------- | ----------------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -116,6 +118,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: การประมาณการนี้อ้างอิงจากรูปแบบการใช้งาน request ที่สังเกตพบ: - Grok 4.6 — 390 input, 32,500 cached, 120 output tokens ต่อ request +- GLM-5.3-Flash — 1,000 input, 55,000 cached, 200 output tokens ต่อ request - GLM-5.3/5.2/5.1 — 700 input, 52,000 cached, 150 output tokens ต่อ request - GPT 5.6 Luna — 1,000 input, 50,000 cached, 220 output tokens ต่อ request - Kimi K3 — 1,050 input, 76,500 cached, 300 output tokens ต่อ request @@ -143,6 +146,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -210,6 +214,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -252,6 +257,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ----------- | ------------------ | | Grok 4.6 | ไม่นำไปใช้ | 30 วัน | | GPT 5.6 Luna | ไม่นำไปใช้ | 30 วัน | +| GLM-5.3-Flash | ไม่นำไปใช้ | 0 วัน | | GLM-5.3 | ไม่นำไปใช้ | 0 วัน | | GLM-5.2 | ไม่นำไปใช้ | 0 วัน | | GLM-5.1 | ไม่นำไปใช้ | 0 วัน | diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index b6125956c..7200d2e13 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -50,6 +50,7 @@ Her çalışma alanından yalnızca bir üye OpenCode Go'ya abone olabilir. Mevcut model listesi şunları içerir: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -92,6 +93,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | ---------------------------- | ------------------ | -------------- | ----------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -116,6 +118,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say Tahminler, gözlemlenen istek modellerine dayanır: - Grok 4.6 — İstek başına 390 girdi, 32.500 önbelleğe alınmış, 120 çıktı token'ı +- GLM-5.3-Flash — İstek başına 1.000 girdi, 55.000 önbelleğe alınmış, 200 çıktı token'ı - GLM-5.3/5.2/5.1 — İstek başına 700 girdi, 52.000 önbelleğe alınmış, 150 çıktı token'ı - GPT 5.6 Luna — İstek başına 1.000 girdi, 50.000 önbelleğe alınmış, 220 çıktı token'ı - Kimi K3 — İstek başına 1.050 girdi, 76.500 önbelleğe alınmış, 300 çıktı token'ı @@ -143,6 +146,7 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -210,6 +214,7 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -252,6 +257,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | ------------- | ------------ | | Grok 4.6 | Kullanılmaz | 30 gün | | GPT 5.6 Luna | Kullanılmaz | 30 gün | +| GLM-5.3-Flash | Kullanılmaz | 0 gün | | GLM-5.3 | Kullanılmaz | 0 gün | | GLM-5.2 | Kullanılmaz | 0 gün | | GLM-5.1 | Kullanılmaz | 0 gün | diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index ac32c98ed..81f9274b4 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -50,6 +50,7 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 当前支持的模型列表包括: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -92,6 +93,7 @@ OpenCode Go 包含以下限制: | ---------------------------- | --------------- | ---------- | ---------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -116,6 +118,7 @@ OpenCode Go 包含以下限制: 预估值基于观察到的请求模式: - Grok 4.6 — 每次请求 390 个输入 token,32,500 个缓存 token,120 个输出 token +- GLM-5.3-Flash — 每次请求 1,000 个输入 token,55,000 个缓存 token,200 个输出 token - GLM-5.3/5.2/5.1 — 每次请求 700 个输入 token,52,000 个缓存 token,150 个输出 token - GPT 5.6 Luna — 每次请求 1,000 个输入 token,50,000 个缓存 token,220 个输出 token - Kimi K3 — 每次请求 1,050 个输入 token,76,500 个缓存 token,300 个输出 token @@ -143,6 +146,7 @@ OpenCode Go 包含以下限制: | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -210,6 +214,7 @@ OpenCode Go 包含以下限制: | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -252,6 +257,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | -------- | -------- | | Grok 4.6 | 不使用 | 30 天 | | GPT 5.6 Luna | 不使用 | 30 天 | +| GLM-5.3-Flash | 不使用 | 0 天 | | GLM-5.3 | 不使用 | 0 天 | | GLM-5.2 | 不使用 | 0 天 | | GLM-5.1 | 不使用 | 0 天 | diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index c2ee08c3b..bf9076663 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -50,6 +50,7 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 目前的模型清單包括: - **Grok 4.6** +- **GLM-5.3-Flash** - **GLM-5.3** - **GLM-5.2** - **GLM-5.1** @@ -92,6 +93,7 @@ OpenCode Go 包含以下限制: | ---------------------------- | --------------- | ---------- | ---------- | | Grok 4.6 | 169 | 423 | 845 | | GPT 5.6 Luna | 2,050 | 5,100 | 10,250 | +| GLM-5.3-Flash | 1,580 | 3,950 | 7,900 | | GLM-5.3 | 220 | 540 | 1,080 | | GLM-5.2 | 880 | 2,150 | 4,300 | | GLM-5.1 | 880 | 2,150 | 4,300 | @@ -116,6 +118,7 @@ OpenCode Go 包含以下限制: 這些預估值是基於觀察到的請求模式: - Grok 4.6 — 每次請求 390 個輸入 token、32,500 個快取 token、120 個輸出 token +- GLM-5.3-Flash — 每次請求 1,000 個輸入 token、55,000 個快取 token、200 個輸出 token - GLM-5.3/5.2/5.1 — 每次請求 700 個輸入 token、52,000 個快取 token、150 個輸出 token - GPT 5.6 Luna — 每次請求 1,000 個輸入 token、50,000 個快取 token、220 個輸出 token - Kimi K3 — 每次請求 1,050 個輸入 token、76,500 個快取 token、300 個輸出 token @@ -143,6 +146,7 @@ OpenCode Go 包含以下限制: | Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | | GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | | GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | | GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | | GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | | GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | @@ -210,6 +214,7 @@ OpenCode Go 包含以下限制: | ---------------------------- | ---------------------------- | ------------------------------------------------ | --------------------------- | | Grok 4.6 | grok-4.6 | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | GPT 5.6 Luna | gpt-5.6-luna | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | +| GLM-5.3-Flash | glm-5.3-flash | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.3 | glm-5.3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.2 | glm-5.2 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM-5.1 | glm-5.1 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -252,6 +257,7 @@ https://opencode.ai/zen/go/v1/models | ---------------------------- | -------- | -------- | | Grok 4.6 | 不使用 | 30 天 | | GPT 5.6 Luna | 不使用 | 30 天 | +| GLM-5.3-Flash | 不使用 | 0 天 | | GLM-5.3 | 不使用 | 0 天 | | GLM-5.2 | 不使用 | 0 天 | | GLM-5.1 | 不使用 | 0 天 | From 902e67eba9ae0ea8ddb10c64c4b4705a360a4efd Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 26 Aug 2026 09:02:17 -0500 Subject: [PATCH 171/271] feat(stats): add weekly retention --- .../src/component/model-compare-detail.tsx | 21 +++++++ .../stats/app/src/routes/[lab]/[model].tsx | 6 +- packages/stats/app/src/routes/index.tsx | 12 ++-- packages/stats/core/src/domain/home.test.ts | 14 ++--- packages/stats/core/src/domain/home.ts | 50 ++++++++++------- .../stats/core/src/domain/inference.test.ts | 20 +++++-- packages/stats/core/src/domain/inference.ts | 56 +++++++++---------- packages/stats/core/src/stat-sync.ts | 6 +- 8 files changed, 112 insertions(+), 73 deletions(-) diff --git a/packages/stats/app/src/component/model-compare-detail.tsx b/packages/stats/app/src/component/model-compare-detail.tsx index 3790789b5..8fc61d1e9 100644 --- a/packages/stats/app/src/component/model-compare-detail.tsx +++ b/packages/stats/app/src/component/model-compare-detail.tsx @@ -3,6 +3,7 @@ import { ProviderIcon } from "@opencode-ai/ui/provider-icon" import { getStatsModelsComparisonData, type ModelUsagePoint, + type RetentionEntry, type StatsModelComparisonInput, type StatsModelComparisonEntry, } from "@opencode-ai/stats-core/domain/home" @@ -949,6 +950,17 @@ function buildComparisonDetailSections(models: readonly ComparisonModel[]): Comp ], usage: models.map((model) => model.stats?.usage ?? []), }, + { + title: "Retention", + badge: "Week 1", + rows: [ + comparisonDetailRow( + "Returning users", + models.map((model) => retentionCell(model.stats?.weeklyRetention)), + "higher", + ), + ], + }, ] } @@ -1031,6 +1043,15 @@ function percentCell(value: number | undefined): ComparisonDetailCell { return value === undefined ? { value: "No usage" } : { value: formatPercent(value), score: value } } +function retentionCell(value: RetentionEntry | null | undefined): ComparisonDetailCell { + if (!value || value.rank === null) return { value: "Pending" } + return { + value: formatPercent(value.rate), + unit: `${formatTokens(value.eligibleUserWeeks)} user-weeks`, + score: value.rate, + } +} + function tokenCell(value: number | undefined, trend: number | undefined): ComparisonDetailCell { if (value === undefined) return { value: "No usage" } return { value: formatTokens(value), score: value, trend } diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx index c9a3e6ef6..d2fbfdf7c 100644 --- a/packages/stats/app/src/routes/[lab]/[model].tsx +++ b/packages/stats/app/src/routes/[lab]/[model].tsx @@ -470,7 +470,7 @@ function ModelMomentumSection(props: { data: StatsModelPageData | null }) { value={formatInteger(data().totals.sessions)} /> - + - + 0} fallback={ } > @@ -660,13 +656,13 @@ function RetentionSection(props: { data: RetentionEntry[] }) { onPointerEnter={() => setActiveIndex(index())} onFocus={() => setActiveIndex(index())} onClick={() => setActiveIndex(index())} - aria-label={`${item.model}, ${formatRetentionRate(item.rate)} seven-day retention, ${formatUsers(item.eligibleUserDays)} eligible user-days`} + aria-label={`${item.model}, ${formatRetentionRate(item.rate)} weekly retention, ${formatUsers(item.eligibleUserWeeks)} eligible user-weeks`} > {item.rank === null ? "–" : String(item.rank).padStart(2, "0")} {item.model} {formatRetentionRate(item.rate)} - {formatUsers(item.eligibleUserDays)} + {formatUsers(item.eligibleUserWeeks)} )} diff --git a/packages/stats/core/src/domain/home.test.ts b/packages/stats/core/src/domain/home.test.ts index c8b665048..3608d56d6 100644 --- a/packages/stats/core/src/domain/home.test.ts +++ b/packages/stats/core/src/domain/home.test.ts @@ -7,7 +7,7 @@ process.env.SST_RESOURCE_StatsDatabase = JSON.stringify({ url: "mysql://localhos const { buildRetentionEntries } = await import("./home") describe("retention aggregates", () => { - test("pools the latest seven cohorts and ranks models above the sample floor", () => { + test("pools the latest seven weekly cohorts and ranks models above the sample floor", () => { const rows = [ ...cohorts("model-a", "provider-a", 8, 20, 10), ...cohorts("model-b", "provider-b", 8, 20, 12), @@ -16,20 +16,20 @@ describe("retention aggregates", () => { const entries = buildRetentionEntries(rows) expect(entries.find((item) => item.model === "model-a")).toMatchObject({ - eligibleUserDays: 140, - retainedUserDays: 70, + eligibleUserWeeks: 140, + retainedUserWeeks: 70, rate: 50, rank: 2, }) expect(entries.find((item) => item.model === "model-b")).toMatchObject({ - eligibleUserDays: 140, - retainedUserDays: 84, + eligibleUserWeeks: 140, + retainedUserWeeks: 84, rate: 60, rank: 1, }) expect(entries.find((item) => item.model === "small-model")).toMatchObject({ - eligibleUserDays: 70, - retainedUserDays: 63, + eligibleUserWeeks: 70, + retainedUserWeeks: 63, rate: 90, rank: null, }) diff --git a/packages/stats/core/src/domain/home.ts b/packages/stats/core/src/domain/home.ts index c1784ed18..d5ce1b9c8 100644 --- a/packages/stats/core/src/domain/home.ts +++ b/packages/stats/core/src/domain/home.ts @@ -29,8 +29,8 @@ export type RetentionEntry = { provider: string author: string rate: number - eligibleUserDays: number - retainedUserDays: number + eligibleUserWeeks: number + retainedUserWeeks: number rank: number | null } export type CountryEntry = { country: string; continent: string; tokens: number; share: number; rank: number } @@ -64,7 +64,7 @@ export type StatsModelData = { totalModels: number tokenShare: number tokenChange: number - retention7d: RetentionEntry | null + weeklyRetention: RetentionEntry | null totals: { sessions: number uniqueUsers: number @@ -105,6 +105,7 @@ export type StatsModelComparisonEntry = { totalModels: number tokenShare: number tokenChange: number + weeklyRetention: RetentionEntry | null totals: StatsModelData["totals"] usage: ModelUsagePoint[] } @@ -142,8 +143,8 @@ const TOKEN_SCALE = 1_000_000 const DOLLARS_PER_MICROCENT = 1 / 100_000_000 const METRIC_MODEL_LIMIT = 10 const RETENTION_MODEL_LIMIT = 15 -const RETENTION_MIN_ELIGIBLE_USER_DAYS = 100 -const RETENTION_COHORT_DAYS = 7 +const RETENTION_MIN_ELIGIBLE_USER_WEEKS = 100 +const RETENTION_COHORT_WEEKS = 7 const TOP_MODEL_SEGMENT_LIMIT = 9 // Preserve the response shape while the public site presents Go and Free as one cohort. const SITE_PRODUCT = "Go" @@ -193,7 +194,7 @@ export function getStatsHomeData(): Effect.Effect const [modelRows, geoRows, retentionRows] = await Promise.all([ listModelDaily(), listGeoDaily(), - listRetentionDaily(), + listRetentionWeekly(), ]) return buildStatsHomeData(modelRows, geoRows, retentionRows) }, @@ -207,7 +208,7 @@ export function getStatsModelData( ): Effect.Effect { return Effect.tryPromise({ try: async () => { - const [modelRows, retentionRows] = await Promise.all([listModelDaily(), listRetentionDaily()]) + const [modelRows, retentionRows] = await Promise.all([listModelDaily(), listRetentionWeekly()]) const normalized = modelRows.flatMap(normalizeStatRow) const resolvedModel = resolveModelName(model, normalized, provider) if (!resolvedModel) return null @@ -288,12 +289,12 @@ async function listGeoDaily(opts?: { provider?: string; model?: string }): Promi })) } -async function listRetentionDaily(): Promise { +async function listRetentionWeekly(): Promise { try { return ( await queryRows( `select cohort_date, updated_at, provider, model, eligible_users, retained_users - from model_retention where dataset = 'zen' and tier = 'all' order by cohort_date`, + from model_retention where dataset = 'zen' and tier = 'Go' order by cohort_date`, ) ).map((row) => ({ cohortDate: stringValue(row.cohort_date), @@ -334,8 +335,16 @@ export const getStatsModelsComparisonData: ( ) => Effect.Effect = Effect.fn("StatsModelsComparison.getData")( function* (models) { const modelStats = yield* ModelStatRepo - const rows = yield* modelStats.listDaily() - const entries = models.map((model) => toComparisonEntry(buildStatsModelData(model.model, rows, [], model.provider))) + const [rows, retentionRows] = yield* Effect.all([ + modelStats.listDaily(), + Effect.tryPromise({ + try: listRetentionWeekly, + catch: (cause) => DatabaseError.make({ cause }), + }), + ]) + const entries = models.map((model) => + toComparisonEntry(buildStatsModelData(model.model, rows, [], model.provider, retentionRows)), + ) const latest = entries .map((model) => model?.updatedAt) .flatMap((value) => (value ? [dateTime(value)] : [])) @@ -458,7 +467,7 @@ function buildStatsModelData( const peerRank = rankIndex >= 0 ? rankIndex + 1 : 1 const totalTokens = windowPeers.reduce((sum, item) => sum + item.totalTokens, 0) const peerTokens = rankPeers.reduce((sum, item) => sum + item.totalTokens, 0) - const retention7d = buildRetentionEntries(retentionRows).find((item) => item.model === model) ?? null + const weeklyRetention = buildRetentionEntries(retentionRows).find((item) => item.model === model) ?? null return { updatedAt: Number.isFinite(latestUpdate) ? new Date(latestUpdate).toISOString() : null, @@ -471,7 +480,7 @@ function buildStatsModelData( totalModels: windowPeers.length, tokenShare: totalTokens > 0 ? round((current.totalTokens / totalTokens) * 100, 2) : 0, tokenChange: percentChange(current.totalTokens, previous.totalTokens), - retention7d, + weeklyRetention, totals: { sessions: current.sessions, uniqueUsers: current.uniqueUsers, @@ -553,6 +562,7 @@ function toComparisonEntry(data: StatsModelData | null): StatsModelComparisonEnt totalModels: data.totalModels, tokenShare: data.tokenShare, tokenChange: data.tokenChange, + weeklyRetention: data.weeklyRetention, totals: data.totals, usage: data.usage, } @@ -574,7 +584,7 @@ function emptyStatsHomeData(): StatsHomeData { } export function buildRetentionEntries(rows: RetentionMetricRow[]): RetentionEntry[] { - const cohortDates = [...new Set(rows.map((row) => row.cohortDate))].toSorted().slice(-RETENTION_COHORT_DAYS) + const cohortDates = [...new Set(rows.map((row) => row.cohortDate))].toSorted().slice(-RETENTION_COHORT_WEEKS) const aggregate = rows .filter((row) => cohortDates.includes(row.cohortDate)) .reduce>>((result, row) => { @@ -582,20 +592,22 @@ export function buildRetentionEntries(rows: RetentionMetricRow[]): RetentionEntr result.set(row.model, { model: row.model, provider: current?.provider ?? row.provider, - eligibleUserDays: (current?.eligibleUserDays ?? 0) + row.eligibleUsers, - retainedUserDays: (current?.retainedUserDays ?? 0) + row.retainedUsers, + eligibleUserWeeks: (current?.eligibleUserWeeks ?? 0) + row.eligibleUsers, + retainedUserWeeks: (current?.retainedUserWeeks ?? 0) + row.retainedUsers, }) return result }, new Map()) const entries = [...aggregate.values()].map((item) => ({ ...item, author: formatProvider(item.provider), - rate: item.eligibleUserDays > 0 ? round((item.retainedUserDays / item.eligibleUserDays) * 100, 1) : 0, + rate: item.eligibleUserWeeks > 0 ? round((item.retainedUserWeeks / item.eligibleUserWeeks) * 100, 1) : 0, })) const ranks = new Map( entries - .filter((item) => item.eligibleUserDays >= RETENTION_MIN_ELIGIBLE_USER_DAYS) - .toSorted((a, b) => b.rate - a.rate || b.eligibleUserDays - a.eligibleUserDays || a.model.localeCompare(b.model)) + .filter((item) => item.eligibleUserWeeks >= RETENTION_MIN_ELIGIBLE_USER_WEEKS) + .toSorted( + (a, b) => b.rate - a.rate || b.eligibleUserWeeks - a.eligibleUserWeeks || a.model.localeCompare(b.model), + ) .map((item, index) => [item.model, index + 1]), ) return entries diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index c534ac2b7..8eaf1f918 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -163,24 +163,32 @@ describe("inference stat normalization", () => { expect(query).toContain("(source = 'inference' AND started_at >= '2026-08-11T10:57:48.186Z')") }) - test("builds complete seven-day cohort retention queries", () => { - const queries = buildRetentionQueries(new Date("2026-08-10T00:00:00.000Z"), new Date("2026-08-20T00:00:00.000Z"), { + test("builds complete week-over-week retention queries", () => { + const queries = buildRetentionQueries(new Date("2026-08-10T00:00:00.000Z"), new Date("2026-08-31T00:00:00.000Z"), { namespace: "inference", table: "generation", dataset: "zen", }) expect(queries).toHaveLength(1) - expect(queries[0]?.cohortDates).toEqual(["2026-08-10", "2026-08-11", "2026-08-12"]) + expect(queries[0]?.cohortDates).toEqual(["2026-08-10", "2026-08-17"]) + expect(queries[0]?.query).toContain("AND product = 'go'") + expect(queries[0]?.query).toContain("COUNT(*) AS model_requests") + expect(queries[0]?.query).toContain( + "SUM(model_requests) OVER (PARTITION BY cohort_date, user_key) AS total_requests", + ) expect(queries[0]?.query).toContain("ROW_NUMBER() OVER") expect(queries[0]?.query).toContain("PARTITION BY cohort_date, user_key") - expect(queries[0]?.query).toContain("ORDER BY total_tokens DESC, requests DESC, model ASC") + expect(queries[0]?.query).toContain("ORDER BY model_requests DESC, model ASC") + expect(queries[0]?.query).toContain("total_requests >= 10") + expect(queries[0]?.query).toContain("CAST(model_requests AS double) / NULLIF(total_requests, 0) >= 0.8") expect(queries[0]?.query).toContain("WHEN '2026-08-17' THEN '2026-08-10'") - expect(queries[0]?.query).toContain("WHEN '2026-08-19' THEN '2026-08-12'") + expect(queries[0]?.query).toContain("WHEN '2026-08-24' THEN '2026-08-17'") expect(queries[0]?.query).toContain("started_at >= '2026-08-10T00:00:00.000Z'") - expect(queries[0]?.query).toContain("started_at < '2026-08-20T00:00:00.000Z'") + expect(queries[0]?.query).toContain("started_at < '2026-08-31T00:00:00.000Z'") expect(queries[0]?.query).toContain("LEFT JOIN returned ON primary_models.user_key = returned.user_key") expect(queries[0]?.query).toContain("primary_models.cohort_date = returned.cohort_date") + expect(queries[0]?.query).toContain("'Go' AS tier") expect(queries[0]?.query).toContain("COUNT(*) AS eligible_users") expect(queries[0]?.query).toContain("LIMIT 10000") }) diff --git a/packages/stats/core/src/domain/inference.ts b/packages/stats/core/src/domain/inference.ts index cf475d280..bf7708444 100644 --- a/packages/stats/core/src/domain/inference.ts +++ b/packages/stats/core/src/domain/inference.ts @@ -74,23 +74,23 @@ function buildRetentionQuery( const scanEndValue = sqlString(last.returnEnd.toISOString()) const ingestEndValue = sqlString(new Date(last.returnEnd.getTime() + DAY_MS).toISOString()) const sourceTable = [source.namespace, source.table].map(sqlIdentifier).join(".") - const activityDates = [ + const activityWeeks = [ ...new Map( periods.flatMap((period) => [period.start, period.returnStart]).map((date) => [date.toISOString(), date]), ).values(), ].toSorted((a, b) => a.getTime() - b.getTime()) - const activityDateSql = `CASE -${activityDates + const activityWeekSql = `CASE +${activityWeeks .map( (date) => - ` WHEN started_at >= ${sqlString(date.toISOString())} AND started_at < ${sqlString(new Date(date.getTime() + DAY_MS).toISOString())} THEN ${sqlString(date.toISOString().slice(0, 10))}`, + ` WHEN started_at >= ${sqlString(date.toISOString())} AND started_at < ${sqlString(new Date(date.getTime() + WEEK_MS).toISOString())} THEN ${sqlString(date.toISOString().slice(0, 10))}`, ) .join("\n")} ELSE null END` const cohortDates = periods.map((period) => sqlString(period.start.toISOString().slice(0, 10))).join(", ") const returnDates = periods.map((period) => sqlString(period.returnStart.toISOString().slice(0, 10))).join(", ") - const returnCohortSql = `CASE activity_date + const returnCohortSql = `CASE activity_week ${periods .map( (period) => @@ -102,12 +102,11 @@ ${periods return ` WITH normalized AS ( SELECT - ${activityDateSql} AS activity_date, + ${activityWeekSql} AS activity_week, ${statModelSql("model_requested", "route_model")} AS model, COALESCE(NULLIF(route_model, ''), '') AS provider_model, COALESCE(NULLIF(provider_id, ''), '') AS raw_provider, - COALESCE(NULLIF(user_id, ''), NULLIF(workspace_id, ''), NULLIF(service_api_key_id, '')) AS user_key, - COALESCE(tokens_cache_read, 0) + COALESCE(tokens_cache_write, 0) + COALESCE(tokens_input, 0) + COALESCE(tokens_output, 0) AS tokens_total + COALESCE(NULLIF(user_id, ''), NULLIF(workspace_id, ''), NULLIF(service_api_key_id, '')) AS user_key FROM ${sourceTable} WHERE event_type = 'generation.completed' AND source IN ('inference', 'inference-legacy') @@ -115,7 +114,7 @@ WITH normalized AS ( (source = 'inference-legacy' AND started_at < ${sqlString(LIVE_SOURCE_START)}) OR (source = 'inference' AND started_at >= ${sqlString(LIVE_SOURCE_START)}) ) - AND (product = 'go' OR (${freeTierSql("model_tier", "model_requested")})) + AND product = 'go' AND model_requested IS NOT NULL AND model_requested <> '' AND __ingest_ts >= ${scanStartValue} @@ -124,53 +123,55 @@ WITH normalized AS ( AND started_at < ${scanEndValue} ), filtered AS ( SELECT - activity_date, + activity_week, ${statProviderSql("model", "provider_model", "raw_provider")} AS provider, model, - user_key, - tokens_total + user_key FROM normalized - WHERE activity_date IS NOT NULL + WHERE activity_week IS NOT NULL AND user_key <> '' AND lower(model) NOT IN (${[...EXCLUDED_MODELS].map(sqlString).join(", ")}) ), model_usage AS ( SELECT - activity_date AS cohort_date, + activity_week AS cohort_date, user_key, provider, model, - SUM(tokens_total) AS total_tokens, - COUNT(*) AS requests + COUNT(*) AS model_requests FROM filtered - WHERE activity_date IN (${cohortDates}) - GROUP BY activity_date, user_key, provider, model + WHERE activity_week IN (${cohortDates}) + GROUP BY activity_week, user_key, provider, model ), ranked_models AS ( SELECT cohort_date, user_key, provider, model, + model_requests, + SUM(model_requests) OVER (PARTITION BY cohort_date, user_key) AS total_requests, ROW_NUMBER() OVER ( PARTITION BY cohort_date, user_key - ORDER BY total_tokens DESC, requests DESC, model ASC + ORDER BY model_requests DESC, model ASC ) AS model_rank FROM model_usage ), primary_models AS ( SELECT cohort_date, user_key, provider, model FROM ranked_models WHERE model_rank = 1 + AND total_requests >= 10 + AND CAST(model_requests AS double) / NULLIF(total_requests, 0) >= 0.8 ), returned AS ( SELECT ${returnCohortSql} AS cohort_date, user_key FROM filtered - WHERE activity_date IN (${returnDates}) + WHERE activity_week IN (${returnDates}) GROUP BY ${returnCohortSql}, user_key ) SELECT primary_models.cohort_date, ${sqlString(source.dataset)} AS dataset, - 'all' AS tier, + 'Go' AS tier, primary_models.provider, primary_models.model, COUNT(*) AS eligible_users, @@ -453,14 +454,13 @@ function statPeriods(grain: "day" | "week", periodStart: Date, periodEnd: Date) } function retentionPeriods(periodStart: Date, periodEnd: Date) { - const first = startOfUtcDay(periodStart) - const last = new Date(startOfUtcDay(periodEnd).getTime() - WEEK_MS) - const count = Math.max(0, Math.floor((last.getTime() - first.getTime()) / DAY_MS)) + const first = startOfIsoWeek(periodStart) + const completeEnd = startOfIsoWeek(periodEnd) + const count = Math.max(0, Math.floor((completeEnd.getTime() - first.getTime()) / WEEK_MS) - 1) return Array.from({ length: count }, (_, index) => { - const start = new Date(first.getTime() + index * DAY_MS) - const end = new Date(start.getTime() + DAY_MS) - const returnStart = new Date(start.getTime() + WEEK_MS) - return { start, end, returnStart, returnEnd: new Date(returnStart.getTime() + DAY_MS) } + const start = new Date(first.getTime() + index * WEEK_MS) + const end = new Date(start.getTime() + WEEK_MS) + return { start, end, returnStart: end, returnEnd: new Date(end.getTime() + WEEK_MS) } }) } diff --git a/packages/stats/core/src/stat-sync.ts b/packages/stats/core/src/stat-sync.ts index cd8cdf35b..aca7fbc6a 100644 --- a/packages/stats/core/src/stat-sync.ts +++ b/packages/stats/core/src/stat-sync.ts @@ -20,7 +20,9 @@ const DATALAKE_INGESTION_LAG_MS = 5 * 60_000 const STATS_DATA_START_MS = new Date("2026-05-28T00:00:00.000Z").getTime() const WEEK_MS = 7 * 86_400_000 const DISPLAY_WINDOW_MS = 56 * 86_400_000 -const RETENTION_INCREMENTAL_LOOKBACK_MS = 9 * 86_400_000 +// A retention result needs one complete activity week plus its complete return +// week. Keep another partial week of slack around the ISO-week boundary. +const RETENTION_INCREMENTAL_LOOKBACK_MS = 16 * 86_400_000 // Anchor incremental passes to the ISO week containing this lookback, so the pass // after a week boundary still recomputes the previous week's final aggregates even // if the boundary pass itself failed. @@ -80,7 +82,7 @@ export const syncStats: (options?: { retentionStats.replace(retentionRows, { cohortDates: retentionQueries.flatMap((item) => item.cohortDates), dataset: Resource.StatsSyncConfig.dataset, - tier: "all", + tier: "Go", }), ], { From 023620b57ec799ca1ef7d64d0f3ec404d4c51a16 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 26 Aug 2026 09:39:34 -0500 Subject: [PATCH 172/271] chore: add sst unlock workflow --- .github/workflows/unlock.yml | 52 ++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/workflows/unlock.yml diff --git a/.github/workflows/unlock.yml b/.github/workflows/unlock.yml new file mode 100644 index 000000000..8df1af0e3 --- /dev/null +++ b/.github/workflows/unlock.yml @@ -0,0 +1,52 @@ +name: unlock + +on: + workflow_dispatch: + inputs: + stage: + description: SST stage to unlock + required: true + type: choice + options: + - dev + - production + +concurrency: deploy-${{ inputs.stage }} + +permissions: + contents: read + id-token: write + +jobs: + unlock: + runs-on: ubuntu-latest + environment: ${{ inputs.stage }} + steps: + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + + - uses: ./.github/actions/setup-bun + + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: "24" + + - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1 + with: + role-to-assume: ${{ vars.AWS_DEPLOY_ROLE_ARN }} + role-session-name: opencode-${{ github.run_id }} + aws-region: us-east-1 + + - run: bun sst unlock --stage=${{ inputs.stage }} + env: + GITHUB_TOKEN: ${{ github.token }} + CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} + PLANETSCALE_SERVICE_TOKEN_NAME: ${{ secrets.PLANETSCALE_SERVICE_TOKEN_NAME }} + PLANETSCALE_SERVICE_TOKEN: ${{ secrets.PLANETSCALE_SERVICE_TOKEN }} + STRIPE_SECRET_KEY: ${{ inputs.stage == 'production' && secrets.STRIPE_SECRET_KEY_PROD || secrets.STRIPE_SECRET_KEY_DEV }} + HONEYCOMB_API_KEY: ${{ secrets.HONEYCOMB_API_KEY }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_ORG: ${{ vars.SENTRY_ORG }} + SENTRY_PROJECT: ${{ vars.WEB_SENTRY_PROJECT }} + SENTRY_RELEASE: unlock@${{ github.sha }} + VITE_SENTRY_DSN: ${{ vars.WEB_SENTRY_DSN }} + VITE_SENTRY_RELEASE: unlock@${{ github.sha }} From 530535c6ea8f5ee99e2c135afd74fedda05c53b4 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 26 Aug 2026 10:38:12 -0500 Subject: [PATCH 173/271] fix(stats): reduce retention query scan --- .../stats/core/src/domain/inference.test.ts | 14 ++++++----- packages/stats/core/src/domain/inference.ts | 25 ++++++++----------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index 8eaf1f918..c2889ff4c 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -174,14 +174,16 @@ describe("inference stat normalization", () => { expect(queries[0]?.cohortDates).toEqual(["2026-08-10", "2026-08-17"]) expect(queries[0]?.query).toContain("AND product = 'go'") expect(queries[0]?.query).toContain("COUNT(*) AS model_requests") + expect(queries[0]?.query).toContain("SUM(model_requests) AS total_requests") + expect(queries[0]?.query).toContain("MAX(model_requests) AS max_model_requests") + expect(queries[0]?.query).toContain("GROUP BY cohort_date, user_key") + expect(queries[0]?.query).toContain("INNER JOIN user_totals") + expect(queries[0]?.query).toContain("model_usage.model_requests = user_totals.max_model_requests") + expect(queries[0]?.query).toContain("user_totals.total_requests >= 10") expect(queries[0]?.query).toContain( - "SUM(model_requests) OVER (PARTITION BY cohort_date, user_key) AS total_requests", + "CAST(model_usage.model_requests AS double) / NULLIF(user_totals.total_requests, 0) >= 0.8", ) - expect(queries[0]?.query).toContain("ROW_NUMBER() OVER") - expect(queries[0]?.query).toContain("PARTITION BY cohort_date, user_key") - expect(queries[0]?.query).toContain("ORDER BY model_requests DESC, model ASC") - expect(queries[0]?.query).toContain("total_requests >= 10") - expect(queries[0]?.query).toContain("CAST(model_requests AS double) / NULLIF(total_requests, 0) >= 0.8") + expect(queries[0]?.query).not.toContain(" OVER (") expect(queries[0]?.query).toContain("WHEN '2026-08-17' THEN '2026-08-10'") expect(queries[0]?.query).toContain("WHEN '2026-08-24' THEN '2026-08-17'") expect(queries[0]?.query).toContain("started_at >= '2026-08-10T00:00:00.000Z'") diff --git a/packages/stats/core/src/domain/inference.ts b/packages/stats/core/src/domain/inference.ts index bf7708444..a1d1a0162 100644 --- a/packages/stats/core/src/domain/inference.ts +++ b/packages/stats/core/src/domain/inference.ts @@ -141,25 +141,22 @@ WITH normalized AS ( FROM filtered WHERE activity_week IN (${cohortDates}) GROUP BY activity_week, user_key, provider, model -), ranked_models AS ( +), user_totals AS ( SELECT cohort_date, user_key, - provider, - model, - model_requests, - SUM(model_requests) OVER (PARTITION BY cohort_date, user_key) AS total_requests, - ROW_NUMBER() OVER ( - PARTITION BY cohort_date, user_key - ORDER BY model_requests DESC, model ASC - ) AS model_rank + SUM(model_requests) AS total_requests, + MAX(model_requests) AS max_model_requests FROM model_usage + GROUP BY cohort_date, user_key ), primary_models AS ( - SELECT cohort_date, user_key, provider, model - FROM ranked_models - WHERE model_rank = 1 - AND total_requests >= 10 - AND CAST(model_requests AS double) / NULLIF(total_requests, 0) >= 0.8 + SELECT model_usage.cohort_date, model_usage.user_key, model_usage.provider, model_usage.model + FROM model_usage + INNER JOIN user_totals ON model_usage.cohort_date = user_totals.cohort_date + AND model_usage.user_key = user_totals.user_key + AND model_usage.model_requests = user_totals.max_model_requests + WHERE user_totals.total_requests >= 10 + AND CAST(model_usage.model_requests AS double) / NULLIF(user_totals.total_requests, 0) >= 0.8 ), returned AS ( SELECT ${returnCohortSql} AS cohort_date, From c5ef753d2869982183f64bf1ec6c92b7c4149c59 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 26 Aug 2026 11:14:49 -0500 Subject: [PATCH 174/271] fix(stats): align retention columns --- packages/stats/app/src/routes/index.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/stats/app/src/routes/index.css b/packages/stats/app/src/routes/index.css index b59cf6163..3b6fa273f 100644 --- a/packages/stats/app/src/routes/index.css +++ b/packages/stats/app/src/routes/index.css @@ -1792,7 +1792,9 @@ body { } [data-page="stats"] [data-slot="retention-heading"] { + box-sizing: border-box; min-height: 28px; + padding: 0 12px; color: var(--stats-faint); font-size: 11px; font-style: normal; From c2eacd72afc4a4984564c393e15ab30011057269 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 26 Aug 2026 15:03:16 -0500 Subject: [PATCH 175/271] fix(console): secure server action redirects (#45374) --- packages/console/app/src/lib/server-action.ts | 11 ++++++ packages/console/app/src/middleware.ts | 3 ++ .../console/app/test/serverAction.test.ts | 34 +++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 packages/console/app/src/lib/server-action.ts create mode 100644 packages/console/app/test/serverAction.test.ts diff --git a/packages/console/app/src/lib/server-action.ts b/packages/console/app/src/lib/server-action.ts new file mode 100644 index 000000000..1d82b5697 --- /dev/null +++ b/packages/console/app/src/lib/server-action.ts @@ -0,0 +1,11 @@ +export function sanitizeServerActionRequest(request: Request) { + const requestUrl = new URL(request.url) + if (requestUrl.pathname !== "/_server") return request + + const referer = request.headers.get("referer") + if (referer && URL.canParse(referer) && new URL(referer).origin === requestUrl.origin) return request + + const sanitized = new Request(request) + sanitized.headers.set("referer", requestUrl.origin) + return sanitized +} diff --git a/packages/console/app/src/middleware.ts b/packages/console/app/src/middleware.ts index ad5aa09e2..d7b4f066c 100644 --- a/packages/console/app/src/middleware.ts +++ b/packages/console/app/src/middleware.ts @@ -1,9 +1,12 @@ import { createMiddleware } from "@solidjs/start/middleware" import { LOCALE_HEADER, cookie, fromPathname, strip } from "~/lib/language" import { normalizeReferralCode, referralCookie } from "~/lib/referral-invite" +import { sanitizeServerActionRequest } from "~/lib/server-action" export default createMiddleware({ onRequest(event) { + event.request = sanitizeServerActionRequest(event.request) + const url = new URL(event.request.url) const locale = fromPathname(url.pathname) if (locale) { diff --git a/packages/console/app/test/serverAction.test.ts b/packages/console/app/test/serverAction.test.ts new file mode 100644 index 000000000..6c9d96812 --- /dev/null +++ b/packages/console/app/test/serverAction.test.ts @@ -0,0 +1,34 @@ +import { describe, expect, test } from "bun:test" +import { sanitizeServerActionRequest } from "../src/lib/server-action" + +describe("server action referer", () => { + test("preserves same-origin return locations", () => { + const request = new Request("https://dev.opencode.ai/_server?id=action", { + headers: { referer: "https://dev.opencode.ai/auth?next=%2Fconsole" }, + }) + + expect(sanitizeServerActionRequest(request)).toBe(request) + }) + + test("replaces unsafe return locations with the request origin", () => { + const referers = ["https://evil.example/phishing-login", "not a url", undefined] + + expect( + referers.map((referer) => + sanitizeServerActionRequest( + new Request("https://dev.opencode.ai/_server?id=action", { + headers: referer === undefined ? undefined : { referer }, + }), + ).headers.get("referer"), + ), + ).toEqual(["https://dev.opencode.ai", "https://dev.opencode.ai", "https://dev.opencode.ai"]) + }) + + test("does not change other routes", () => { + const request = new Request("https://dev.opencode.ai/auth", { + headers: { referer: "https://evil.example/phishing-login" }, + }) + + expect(sanitizeServerActionRequest(request)).toBe(request) + }) +}) From 6568a824553200254e30e5a49c2831d1fb5f62e2 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 03:11:56 -0400 Subject: [PATCH 176/271] fix(console): merge duplicate Go usage rows (#45503) Co-authored-by: MrMushrooooom <19261047+MrMushrooooom@users.noreply.github.com> --- packages/console/app/src/lib/lite-usage.ts | 15 +++++- packages/console/app/test/liteUsage.test.ts | 58 +++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/packages/console/app/src/lib/lite-usage.ts b/packages/console/app/src/lib/lite-usage.ts index e82483aa3..618c89e92 100644 --- a/packages/console/app/src/lib/lite-usage.ts +++ b/packages/console/app/src/lib/lite-usage.ts @@ -18,7 +18,20 @@ export type LiteUsageBreakdownItem = { } export function buildLiteUsageBreakdown(input: { usage: number; limit: number; sources: LiteUsageBreakdownSource[] }) { - const rows: LiteUsageBreakdownItem[] = input.sources + // Legacy usage can resolve to the same rate as a separately grouped recorded multiplier. + const groups = new Map() + input.sources.forEach((item) => { + const key = JSON.stringify([item.model, item.multiplier]) + const row = groups.get(key) + if (!row) { + groups.set(key, { ...item }) + return + } + row.cost += item.cost + row.quotaCost += item.quotaCost + row.estimated ||= item.estimated + }) + const rows: LiteUsageBreakdownItem[] = Array.from(groups.values()) .filter((item) => item.cost !== 0 || item.quotaCost !== 0) .sort((a, b) => b.quotaCost - a.quotaCost) .map((item) => ({ diff --git a/packages/console/app/test/liteUsage.test.ts b/packages/console/app/test/liteUsage.test.ts index 00a0d962f..1d04a04e9 100644 --- a/packages/console/app/test/liteUsage.test.ts +++ b/packages/console/app/test/liteUsage.test.ts @@ -72,4 +72,62 @@ describe("Go usage breakdown", () => { expect(result.rows.map((row) => row.multiplier)).toEqual([2, 1]) expect(result.rows.map((row) => row.contributionPercent)).toEqual([40, 10]) }) + + test.each([false, true])("merges same-rate usage (estimated first: %s)", (estimated) => { + const sources = [ + { model: "deepseek-v4-flash", name: "DeepSeek V4 Flash", cost: 200, quotaCost: 400, multiplier: 2, estimated }, + { model: "other", name: "Other", cost: 500, quotaCost: 500, multiplier: 1, estimated: false }, + { + model: "deepseek-v4-flash", + name: "DeepSeek V4 Flash", + cost: 100, + quotaCost: 199, + multiplier: 2, + estimated: !estimated, + }, + ] + const original = structuredClone(sources) + const result = buildLiteUsageBreakdown({ usage: 1_050, limit: 6_000, sources }) + + expect(result.rows).toHaveLength(2) + expect(result.rows[0]).toMatchObject({ + model: "deepseek-v4-flash", + cost: 300, + quotaCost: 599, + multiplier: 2, + estimated: true, + }) + expect(getModelQuotaLimit(result.limit, result.rows[0].multiplier)).toBe(3_000) + expect(result.usage).toBe(1_050) + expect(result.usagePercent).toBe(17.5) + expect(result.rows.reduce((total, row) => total + row.contributionPercent, 0)).toBeCloseTo(result.usagePercent) + expect(sources).toEqual(original) + }) + + test("keeps distinct model IDs with the same display name separate", () => { + const result = buildLiteUsageBreakdown({ + usage: 300, + limit: 1_000, + sources: [ + { model: "first", name: "Model", cost: 100, quotaCost: 100, multiplier: 1, estimated: false }, + { model: "second", name: "Model", cost: 200, quotaCost: 200, multiplier: 1, estimated: false }, + ], + }) + + expect(result.rows.map((row) => row.model)).toEqual(["second", "first"]) + }) + + test("does not merge unknown rates with recorded rates", () => { + const result = buildLiteUsageBreakdown({ + usage: 300, + limit: 1_000, + sources: [ + { model: "glm", name: "GLM", cost: 100, quotaCost: 100, estimated: true }, + { model: "glm", name: "GLM", cost: 200, quotaCost: 200, multiplier: 1, estimated: false }, + ], + }) + + expect(result.rows.map((row) => row.multiplier)).toEqual([1, undefined]) + expect(getModelQuotaLimit(result.limit, result.rows[1].multiplier)).toBeUndefined() + }) }) From 1120d0704e7b84cdda07b7dd291958caf95fa53a Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 27 Aug 2026 06:12:21 -0500 Subject: [PATCH 177/271] fix(stats): map ox alpha to glm 5.3 flash (#45542) --- .../stats/app/src/routes/[lab]/[model].tsx | 42 ++++++++++++++++--- .../stats/app/src/routes/model-catalog.ts | 6 ++- .../stats/core/src/domain/inference.test.ts | 14 +++++-- packages/stats/core/src/domain/inference.ts | 11 +++-- .../core/src/domain/model-normalization.ts | 11 +++-- 5 files changed, 62 insertions(+), 22 deletions(-) diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx index d2fbfdf7c..498b7f701 100644 --- a/packages/stats/app/src/routes/[lab]/[model].tsx +++ b/packages/stats/app/src/routes/[lab]/[model].tsx @@ -9,6 +9,7 @@ import { type ModelUsagePoint, type StatsModelData, } from "@opencode-ai/stats-core/domain/home" +import { statModel } from "@opencode-ai/stats-core/domain/model-normalization" import { createAsync, query, useParams } from "@solidjs/router" import { createMemo, createSignal, createUniqueId, For, onMount, Show, type JSX } from "solid-js" import { getRequestEvent } from "solid-js/web" @@ -40,6 +41,8 @@ import { } from "../stats-shell" const statsUnfurlPath = "banner.png" +const glmFlashCatalogId = "zhipuai/glm-5.3-flash" +const glmFlashModel = "glm-5.3-flash" const shortMonths = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"] as const type IsoCountryCode = readonly [string, string, string] @@ -89,14 +92,23 @@ export default function StatsModel() { const stats = createMemo(() => page()?.stats) const githubStars = createAsync(() => getGitHubStars()) const [themePreference, setThemePreference] = createSignal("system") - const modelName = createMemo(() => catalogEntry()?.name ?? stats()?.model ?? modelParam() ?? i18n.t("model.fallback")) + const canonicalModel = createMemo(() => statModel(stats()?.model ?? modelParam(), undefined)) + const modelName = createMemo( + () => catalogEntry()?.name ?? publicModelName(canonicalModel()) ?? i18n.t("model.fallback"), + ) const labName = createMemo(() => formatCatalogLabName(catalogEntry()?.lab ?? stats()?.provider ?? labParam())) - const modelTitle = createMemo(() => i18n.t("model.title", { model: modelName() })) - const modelDescription = createMemo(() => i18n.t("model.description", { model: modelName() })) - const modelPath = createMemo( - () => - `/data/${catalogEntry()?.id ?? [labParam(), stats()?.slug ?? modelParam()].filter((part) => part.length > 0).join("/")}`, + const formerName = createMemo(() => formerModelName(canonicalModel())) + const searchModelName = createMemo(() => + formerName() ? `${modelName()} (formerly ${formerName()})` : modelName(), ) + const modelTitle = createMemo(() => i18n.t("model.title", { model: searchModelName() })) + const modelDescription = createMemo(() => i18n.t("model.description", { model: searchModelName() })) + const modelPath = createMemo(() => { + const fallback = formerName() + ? glmFlashCatalogId + : [labParam(), stats()?.slug ?? canonicalModel()].filter((part) => part.length > 0).join("/") + return `/data/${catalogEntry()?.id ?? fallback}` + }) const modelUrl = createMemo(() => localizedUrl(language.locale(), modelPath())) const statsUnfurlUrl = new URL(statsUnfurlPath, localizedUrl("en", "/data/")).toString() const modelHeaderLinks = createMemo(() => [ @@ -167,6 +179,7 @@ export default function StatsModel() { catalog={catalogEntry() ?? null} catalogData={page()?.catalog ?? null} labName={labName()} + formerName={formerName()} /> @@ -255,6 +268,7 @@ function ModelHero(props: { catalog: ModelCatalogEntry | null catalogData: ModelPageCatalog | null labName: string + formerName?: string }) { const i18n = useI18n() const language = useLanguage() @@ -336,6 +350,9 @@ function ModelHero(props: { when={props.data} fallback={

        + + {(name) => {`Formerly ${name()}.`}} + Listed across the shared model catalog.

        @@ -343,6 +360,9 @@ function ModelHero(props: { > {(data) => (

        + + {(name) => {`Formerly ${name()}.`}} + Ranked {formatHeroRank(data().rank)} @@ -1438,3 +1458,13 @@ function providerSlug(provider: string) { .replace(/^-+|-+$/g, "") .replace(/-{2,}/g, "-") } + +function formerModelName(model: string) { + return statModel(model, undefined) === glmFlashModel ? "ox-alpha" : undefined +} + +function publicModelName(model: string) { + if (model === "unknown") return undefined + if (model === glmFlashModel) return "GLM-5.3-Flash" + return model +} diff --git a/packages/stats/app/src/routes/model-catalog.ts b/packages/stats/app/src/routes/model-catalog.ts index 47fa1cf34..87ae460ae 100644 --- a/packages/stats/app/src/routes/model-catalog.ts +++ b/packages/stats/app/src/routes/model-catalog.ts @@ -1,3 +1,4 @@ +import { statModel } from "@opencode-ai/stats-core/domain/model-normalization" import { query } from "@solidjs/router" export const modelCatalogSourceUrl = "https://models.opencode.ai/catalog.json" @@ -71,8 +72,9 @@ export const getModelCatalog = query(async () => { }, "getModelCatalog") export function findModelCatalogEntry(catalog: ModelCatalog, model: string, lab?: string) { - const normalizedId = lab ? `${catalogLabSlug(lab)}/${catalogSlug(model)}` : model.trim().toLowerCase() - const leaf = catalogSlug(model) + const canonicalModel = statModel(model, undefined) + const normalizedId = lab ? `${catalogLabSlug(lab)}/${catalogSlug(canonicalModel)}` : canonicalModel.trim().toLowerCase() + const leaf = catalogSlug(canonicalModel) return ( catalog.models.find((entry) => entry.id.toLowerCase() === normalizedId) ?? catalog.models.find((entry) => (lab ? entry.lab === catalogLabSlug(lab) : true) && entry.slug === leaf) ?? diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index c2889ff4c..5f7e0266b 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -50,14 +50,18 @@ describe("inference stat normalization", () => { }) test("merges renamed models under their current name", () => { - expect(statModel("x-preview-f", "")).toBe("ox-alpha") + expect(statModel("x-preview-f", "")).toBe("glm-5.3-flash") + expect(statModel("ox-alpha", "")).toBe("glm-5.3-flash") + expect(statModel("ox-alpha-free", "")).toBe("glm-5.3-flash") + expect(statModel("big-pickle", "zhipuai/ox-alpha-free")).toBe("glm-5.3-flash") expect(statModel("xiaomi/mimo-v2.5", "")).toBe("mimo-v2.5") - expect(toModelAggregate(aggregate("x-preview-f", "openai"))).toMatchObject([ + expect(toModelAggregate(aggregate("x-preview-f", "unknown"))).toMatchObject([ { - provider: "openai", - model: "ox-alpha", + provider: "zhipu", + model: "glm-5.3-flash", }, ]) + expect(toProviderAggregate(aggregate("ox-alpha", "unknown"))).toMatchObject([{ provider: "zhipu" }]) }) test("model aggregates prefer provider.model and use normalized model", () => { @@ -126,6 +130,8 @@ describe("inference stat normalization", () => { expect(queries[0]).toContain("COALESCE(NULLIF(lower(model_tier), ''), '') AS raw_tier") expect(queries[0]).toContain("WHEN lower(COALESCE(raw_tier, '')) = 'free'") expect(queries[0]).toContain("regexp_replace(NULLIF(route_model, ''), '^.*/', '')") + expect(queries[0]).toContain("= 'ox-alpha' THEN 'glm-5.3-flash'") + expect(queries[0]).toContain("= 'x-preview-f' THEN 'glm-5.3-flash'") expect(queries[0]).toContain("OR lower(raw_model) IN ('gpt-5-nano', 'grok-code', 'big-pickle')") expect(queries[0]).toContain("OR lower(raw_model) LIKE '%-free'") expect(queries[0]).toContain("THEN 'Free'") diff --git a/packages/stats/core/src/domain/inference.ts b/packages/stats/core/src/domain/inference.ts index a1d1a0162..3767b7ba4 100644 --- a/packages/stats/core/src/domain/inference.ts +++ b/packages/stats/core/src/domain/inference.ts @@ -462,13 +462,16 @@ function retentionPeriods(periodStart: Date, periodEnd: Date) { } function statModelSql(model: string, providerModel: string) { - return `COALESCE(NULLIF(regexp_replace(CASE + const normalized = `regexp_replace(CASE WHEN lower(${model}) = 'big-pickle' THEN regexp_replace(NULLIF(${providerModel}, ''), '^.*/', '') + ELSE ${model} + END, '(-free|:free|:global)+$', '')` + return `COALESCE(NULLIF(CASE ${Object.entries(MODEL_NAME_ALIASES) - .map(([from, to]) => ` WHEN lower(${model}) = ${sqlString(from)} THEN ${sqlString(to)}`) + .map(([from, to]) => ` WHEN lower(${normalized}) = ${sqlString(from)} THEN ${sqlString(to)}`) .join("\n")} - ELSE ${model} - END, '(-free|:free|:global)+$', ''), ''), 'unknown')` + ELSE ${normalized} + END, ''), 'unknown')` } function freeTierSql(tier: string, model: string) { diff --git a/packages/stats/core/src/domain/model-normalization.ts b/packages/stats/core/src/domain/model-normalization.ts index c950fda93..52c7c1890 100644 --- a/packages/stats/core/src/domain/model-normalization.ts +++ b/packages/stats/core/src/domain/model-normalization.ts @@ -16,7 +16,8 @@ export const MODEL_AUTHOR_RULES = [ export const EXCLUDED_MODELS = new Set(["alpha-gpt-next"]) export const FREE_MODELS = new Set(["gpt-5-nano", "grok-code", "big-pickle"]) export const MODEL_NAME_ALIASES: Record = { - "x-preview-f": "ox-alpha", + "ox-alpha": "glm-5.3-flash", + "x-preview-f": "glm-5.3-flash", "xiaomi/mimo-v2.5": "mimo-v2.5", } export const RETIRED_STAT_MODELS = ["big-pickle", ...Object.keys(MODEL_NAME_ALIASES)] @@ -35,11 +36,9 @@ export function modelAuthor(value: string | undefined) { export function statModel(model: string | undefined, providerModel: string | undefined) { const normalized = normalizeInferenceModel(model) - const alias = MODEL_NAME_ALIASES[normalized.toLowerCase()] - if (alias) return alias - if (RETIRED_STAT_MODELS.includes(normalized.toLowerCase())) - return normalizeInferenceModel(providerModel?.split("/").at(-1)) - return normalized + const resolved = + normalized === "big-pickle" ? normalizeInferenceModel(providerModel?.split("/").at(-1)) : normalized + return MODEL_NAME_ALIASES[resolved.toLowerCase()] ?? resolved } export function statProvider( From 5f5ea53afb2630227ead917f1a0ddf784c33150c Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Thu, 27 Aug 2026 11:13:37 +0000 Subject: [PATCH 178/271] chore: generate --- packages/stats/app/src/routes/[lab]/[model].tsx | 12 +++--------- packages/stats/app/src/routes/model-catalog.ts | 4 +++- .../stats/core/src/domain/model-normalization.ts | 3 +-- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx index 498b7f701..e1719807c 100644 --- a/packages/stats/app/src/routes/[lab]/[model].tsx +++ b/packages/stats/app/src/routes/[lab]/[model].tsx @@ -98,9 +98,7 @@ export default function StatsModel() { ) const labName = createMemo(() => formatCatalogLabName(catalogEntry()?.lab ?? stats()?.provider ?? labParam())) const formerName = createMemo(() => formerModelName(canonicalModel())) - const searchModelName = createMemo(() => - formerName() ? `${modelName()} (formerly ${formerName()})` : modelName(), - ) + const searchModelName = createMemo(() => (formerName() ? `${modelName()} (formerly ${formerName()})` : modelName())) const modelTitle = createMemo(() => i18n.t("model.title", { model: searchModelName() })) const modelDescription = createMemo(() => i18n.t("model.description", { model: searchModelName() })) const modelPath = createMemo(() => { @@ -350,9 +348,7 @@ function ModelHero(props: { when={props.data} fallback={

        - - {(name) => {`Formerly ${name()}.`}} - + {(name) => {`Formerly ${name()}.`}} Listed across the shared model catalog.

        @@ -360,9 +356,7 @@ function ModelHero(props: { > {(data) => (

        - - {(name) => {`Formerly ${name()}.`}} - + {(name) => {`Formerly ${name()}.`}} Ranked {formatHeroRank(data().rank)} diff --git a/packages/stats/app/src/routes/model-catalog.ts b/packages/stats/app/src/routes/model-catalog.ts index 87ae460ae..44102ba3b 100644 --- a/packages/stats/app/src/routes/model-catalog.ts +++ b/packages/stats/app/src/routes/model-catalog.ts @@ -73,7 +73,9 @@ export const getModelCatalog = query(async () => { export function findModelCatalogEntry(catalog: ModelCatalog, model: string, lab?: string) { const canonicalModel = statModel(model, undefined) - const normalizedId = lab ? `${catalogLabSlug(lab)}/${catalogSlug(canonicalModel)}` : canonicalModel.trim().toLowerCase() + const normalizedId = lab + ? `${catalogLabSlug(lab)}/${catalogSlug(canonicalModel)}` + : canonicalModel.trim().toLowerCase() const leaf = catalogSlug(canonicalModel) return ( catalog.models.find((entry) => entry.id.toLowerCase() === normalizedId) ?? diff --git a/packages/stats/core/src/domain/model-normalization.ts b/packages/stats/core/src/domain/model-normalization.ts index 52c7c1890..744d761d9 100644 --- a/packages/stats/core/src/domain/model-normalization.ts +++ b/packages/stats/core/src/domain/model-normalization.ts @@ -36,8 +36,7 @@ export function modelAuthor(value: string | undefined) { export function statModel(model: string | undefined, providerModel: string | undefined) { const normalized = normalizeInferenceModel(model) - const resolved = - normalized === "big-pickle" ? normalizeInferenceModel(providerModel?.split("/").at(-1)) : normalized + const resolved = normalized === "big-pickle" ? normalizeInferenceModel(providerModel?.split("/").at(-1)) : normalized return MODEL_NAME_ALIASES[resolved.toLowerCase()] ?? resolved } From 05ea5073be967c779d326929b2de6228dda4159d Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 13:21:00 -0400 Subject: [PATCH 179/271] fix(console): improve Go comparison chart on mobile (#45044) Co-authored-by: jayair <53023+jayair@users.noreply.github.com> --- packages/console/app/src/routes/go/index.css | 66 ++++++++++++++++++++ packages/console/app/src/routes/go/index.tsx | 2 +- 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/packages/console/app/src/routes/go/index.css b/packages/console/app/src/routes/go/index.css index a329e2981..b72b01395 100644 --- a/packages/console/app/src/routes/go/index.css +++ b/packages/console/app/src/routes/go/index.css @@ -855,6 +855,72 @@ body { gap: 14px; } } + + @media (max-width: 32rem) { + svg { + overflow: visible; + } + + [data-slot="xlabels"] { + transform: translateY(62px); + + [data-tick="10"] { + display: none; + } + } + + [data-slot="bars"] > [data-model="ox-alpha-free"] { + transform: translateY(39px); + } + + [data-slot="pills"] [data-item][data-edge] { + left: 3.846153846%; + right: auto; + width: calc(100% - 3.846153846%); + max-width: 100%; + height: auto; + padding: 0; + background: none; + line-height: 16px; + gap: 3px 8px; + flex-wrap: wrap; + justify-content: flex-start; + + &[data-model="muse-spark-1.2-contributor"] { + transform: translateY(11px); + + [data-regions] { + flex-basis: 100%; + } + } + + &[data-model="ox-alpha-free"] { + transform: translateY(51px); + } + } + + figcaption { + margin-top: 90px; + } + } + + @media (max-width: 21.25rem) { + [data-slot="xlabels"] { + transform: translateY(100px); + } + + [data-slot="bars"] > [data-model="ox-alpha-free"] { + transform: translateY(58px); + } + + [data-slot="pills"] [data-item][data-edge][data-model="ox-alpha-free"] { + transform: translateY(70px); + } + + figcaption { + margin-top: 128px; + } + } } } diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index 77747e677..7d3170331 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -152,7 +152,7 @@ function LimitsGraph(props: { href: string }) { {(m, i) => ( - + Date: Thu, 27 Aug 2026 16:03:36 -0400 Subject: [PATCH 180/271] feat(opencode): load supported v2 config in v1 (#45421) --- packages/opencode/src/config/config.ts | 32 +- packages/opencode/src/config/v2-compat.ts | 449 ++++++++++++++++++ packages/opencode/test/config/config.test.ts | 189 +++++++- .../test/config/fixtures/v2-compat/README.md | 40 ++ .../agents-commands-precedence-input.jsonc | 17 + .../agents-commands-precedence-output.json | 29 ++ .../v2-compat/read/agents-input.jsonc | 15 + .../v2-compat/read/agents-output.json | 24 + .../v2-compat/read/commands-input.jsonc | 12 + .../v2-compat/read/commands-output.json | 17 + .../v2-compat/read/ignored-fields-input.jsonc | 8 + .../v2-compat/read/ignored-fields-output.json | 3 + .../fixtures/v2-compat/read/lsp-input.jsonc | 8 + .../fixtures/v2-compat/read/lsp-output.json | 21 + .../v2-compat/read/mcp-enablement-input.jsonc | 15 + .../v2-compat/read/mcp-enablement-output.json | 57 +++ .../v2-compat/read/mcp-merge-input.jsonc | 11 + .../v2-compat/read/mcp-merge-output.json | 22 + .../v2-compat/read/mcp-oauth-input.jsonc | 19 + .../v2-compat/read/mcp-oauth-output.json | 25 + .../read/mcp-partial-timeout-input.jsonc | 3 + .../read/mcp-partial-timeout-output.json | 3 + .../read/mcp-reserved-enabled-input.jsonc | 7 + .../read/mcp-reserved-enabled-output.json | 10 + .../v2-compat/read/mcp-reserved-input.jsonc | 6 + .../v2-compat/read/mcp-reserved-output.json | 14 + .../v2-compat/read/mcp-timeouts-input.jsonc | 15 + .../v2-compat/read/mcp-timeouts-output.json | 36 ++ .../v2-compat/read/model-object-input.jsonc | 4 + .../v2-compat/read/model-object-output.json | 4 + .../v2-compat/read/model-string-input.jsonc | 4 + .../v2-compat/read/model-string-output.json | 6 + .../v2-compat/read/model-variant-input.jsonc | 3 + .../v2-compat/read/model-variant-output.json | 3 + .../v2-compat/read/settings-input.jsonc | 12 + .../v2-compat/read/settings-output.json | 27 ++ .../read/settings-precedence-input.jsonc | 15 + .../read/settings-precedence-output.json | 17 + .../v2-compat/read/skills-input.jsonc | 3 + .../v2-compat/read/skills-output.json | 12 + .../update-global/clear-shell-input.jsonc | 7 + .../update-global/clear-shell-normalized.json | 5 + .../update-global/clear-shell-output.jsonc | 5 + .../update-global/clear-shell-patch.json | 3 + .../update-global/preserve-v2-json-input.json | 18 + .../preserve-v2-json-normalized.json | 13 + .../preserve-v2-json-output.json | 22 + .../update-global/preserve-v2-json-patch.json | 3 + .../preserve-v2-jsonc-input.jsonc | 19 + .../preserve-v2-jsonc-normalized.json | 13 + .../preserve-v2-jsonc-output.jsonc | 19 + .../preserve-v2-jsonc-patch.json | 3 + .../update-global/v1-overrides-input.json | 16 + .../v1-overrides-normalized.json | 19 + .../update-global/v1-overrides-output.json | 34 ++ .../update-global/v1-overrides-patch.json | 6 + .../update-project/preserve-v2-input.json | 18 + .../preserve-v2-normalized.json | 13 + .../update-project/preserve-v2-output.json | 22 + .../update-project/preserve-v2-patch.json | 3 + .../update-project/v1-overrides-input.json | 16 + .../v1-overrides-normalized.json | 17 + .../update-project/v1-overrides-output.json | 32 ++ .../update-project/v1-overrides-patch.json | 6 + packages/opencode/test/config/snapshot.ts | 6 + .../opencode/test/config/v2-compat.test.ts | 400 ++++++++++++++++ 66 files changed, 1948 insertions(+), 7 deletions(-) create mode 100644 packages/opencode/src/config/v2-compat.ts create mode 100644 packages/opencode/test/config/fixtures/v2-compat/README.md create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/agents-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/agents-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/commands-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/commands-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/lsp-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/lsp-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/model-object-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/model-object-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/model-string-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/model-string-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/model-variant-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/model-variant-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/settings-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/settings-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/skills-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/read/skills-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-normalized.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-output.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-patch.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-input.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-normalized.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-patch.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-input.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-normalized.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-output.jsonc create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-patch.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-input.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-normalized.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-patch.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-input.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-normalized.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-patch.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-input.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-normalized.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-output.json create mode 100644 packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-patch.json create mode 100644 packages/opencode/test/config/snapshot.ts create mode 100644 packages/opencode/test/config/v2-compat.test.ts diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 86238f1a8..9e10b67fe 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -33,6 +33,7 @@ import { ConfigParse } from "./parse" import { ConfigPaths } from "./paths" import { ConfigPlugin } from "./plugin" import { ConfigVariable } from "./variable" +import { ConfigV2Compat } from "./v2-compat" import { Npm } from "@opencode-ai/core/npm" import { withTransientReadRetry } from "@/util/effect-http-client" @@ -184,6 +185,19 @@ const layer = Layer.effect( const readConfigFile = (filepath: string) => fs.readFileStringSafe(filepath).pipe(Effect.orDie) + const decodeConfig = Effect.fnUntraced(function* (input: unknown, source: string) { + const result = ConfigV2Compat.lower(normalizeLoadedConfig(input), source) + yield* Effect.forEach(result.diagnostics, (diagnostic) => + Effect.logWarning("configuration compatibility diagnostic", { + source, + path: diagnostic.path, + kind: diagnostic.kind, + action: diagnostic.message, + }), + ) + return ConfigParse.schema(ConfigV1.Info, result.value, source) + }) + const fetchRemoteJson = Effect.fnUntraced(function* ( url: string, headers: Record | undefined, @@ -224,7 +238,7 @@ const layer = Layer.effect( ), ) const parsed = ConfigParse.jsonc(expanded, source) - const data = ConfigParse.schema(ConfigV1.Info, normalizeLoadedConfig(parsed), source) + const data = yield* decodeConfig(parsed, source) if (!("path" in options)) return data yield* Effect.promise(() => resolveLoadedPlugins(data, options.path)) @@ -625,8 +639,13 @@ const layer = Layer.effect( const dir = yield* InstanceState.directory const file = path.join(dir, "config.json") const existing = yield* loadFile(file) + const text = yield* readConfigFile(file) + const original = text ? ConfigParse.jsonc(text, file) : writable(existing) yield* fs - .writeFileString(file, JSON.stringify(mergeDeep(writable(existing), writable(config)), null, 2)) + .writeFileString( + file, + JSON.stringify(mergeDeep(isRecord(original) ? original : writable(existing), writable(config)), null, 2), + ) .pipe(Effect.orDie) }) @@ -642,15 +661,16 @@ const layer = Layer.effect( let next: Info let changed: boolean if (!file.endsWith(".jsonc")) { - const existing = ConfigParse.schema(ConfigV1.Info, ConfigParse.jsonc(before, file), file) - const merged = mergeDeep(writable(existing), patch) + const existing = ConfigParse.jsonc(before, file) + ConfigParse.schema(ConfigV1.Info, ConfigV2Compat.lower(normalizeLoadedConfig(existing), file).value, file) + const merged = mergeDeep(isRecord(existing) ? existing : {}, patch) const serialized = JSON.stringify(merged, null, 2) + next = yield* decodeConfig(merged, file) changed = serialized !== before if (changed) yield* fs.writeFileString(file, serialized).pipe(Effect.orDie) - next = merged } else { const updated = patchJsonc(before, patch) - next = ConfigParse.schema(ConfigV1.Info, ConfigParse.jsonc(updated, file), file) + next = yield* decodeConfig(ConfigParse.jsonc(updated, file), file) changed = updated !== before if (changed) yield* fs.writeFileString(file, updated).pipe(Effect.orDie) } diff --git a/packages/opencode/src/config/v2-compat.ts b/packages/opencode/src/config/v2-compat.ts new file mode 100644 index 000000000..9e4e0bf54 --- /dev/null +++ b/packages/opencode/src/config/v2-compat.ts @@ -0,0 +1,449 @@ +export * as ConfigV2Compat from "./v2-compat" + +import { isDeepStrictEqual } from "node:util" +import { Option, Schema } from "effect" +import { NonNegativeInt, PositiveInt } from "@opencode-ai/core/schema" +import { ConfigAttachmentV1 } from "@opencode-ai/core/v1/config/attachment" +import { ConfigLSPV1 } from "@opencode-ai/core/v1/config/lsp" +import { InvalidError } from "@opencode-ai/core/v1/config/error" + +export interface Diagnostic { + readonly kind: "invalid" | "unsupported" | "conflict" + readonly path: readonly string[] + readonly message: string +} + +export interface Result { + readonly value: unknown + readonly diagnostics: readonly Diagnostic[] +} + +const decodeOptions = { errors: "all", onExcessProperty: "ignore", propertyOrder: "original" } as const +const Record = Schema.Record(Schema.String, Schema.Unknown) +const Timeout = Schema.Struct({ + startup: Schema.optional(PositiveInt), + catalog: Schema.optional(PositiveInt), + execution: Schema.optional(PositiveInt), +}) +const OAuth = Schema.Struct({ + client_id: Schema.optional(Schema.String), + client_secret: Schema.optional(Schema.String), + scope: Schema.optional(Schema.String), + callback_port: Schema.optional(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65535 }))), + redirect_uri: Schema.optional(Schema.String), +}) +const Server = Schema.Union([ + Schema.Struct({ + type: Schema.Literal("local"), + command: Schema.Array(Schema.String), + cwd: Schema.optional(Schema.String), + environment: Schema.optional(Schema.Record(Schema.String, Schema.String)), + disabled: Schema.optional(Schema.Boolean), + codemode: Schema.optional(Schema.Boolean), + timeout: Schema.optional(Timeout), + }), + Schema.Struct({ + type: Schema.Literal("remote"), + url: Schema.String, + headers: Schema.optional(Schema.Record(Schema.String, Schema.String)), + oauth: Schema.optional(Schema.Union([OAuth, Schema.Literal(false)])), + disabled: Schema.optional(Schema.Boolean), + codemode: Schema.optional(Schema.Boolean), + timeout: Schema.optional(Timeout), + }), +]) +const Selection = Schema.Union([ + Schema.String.check(Schema.isPattern(/^[^/#]+\/[^#]+(?:#[^#]+)?$/)), + Schema.Struct({ + providerID: Schema.String.check(Schema.isPattern(/^[^/#]+$/)), + model: Schema.String.check(Schema.isPattern(/^[^#]+$/)), + variant: Schema.optional(Schema.String.check(Schema.isPattern(/^[^#]+$/))), + }), +]) +const Agent = Schema.Struct({ + model: Schema.optional(Selection), + request: Schema.optional( + Schema.Struct({ + headers: Schema.optional(Schema.Record(Schema.String, Schema.String)), + body: Schema.optional(Schema.Record(Schema.String, Schema.Json)), + }), + ), + system: Schema.optional(Schema.String), + description: Schema.optional(Schema.String), + mode: Schema.optional(Schema.Literals(["subagent", "primary", "all"])), + hidden: Schema.optional(Schema.Boolean), + color: Schema.optional(Schema.String.check(Schema.isPattern(/^#[0-9a-fA-F]{6}$/))), + steps: Schema.optional(PositiveInt), + disabled: Schema.optional(Schema.Boolean), +}) +const Command = Schema.Struct({ + template: Schema.String, + description: Schema.optional(Schema.String), + agent: Schema.optional(Schema.String), + model: Schema.optional(Selection), + subtask: Schema.optional(Schema.Boolean), +}) + +const decodeRecord = Schema.decodeUnknownOption(Record, decodeOptions) +const decodeLspEntry = Schema.decodeUnknownOption(ConfigLSPV1.Entry, decodeOptions) +const builtinServers = new Set(ConfigLSPV1.builtinServerIds) + +export function lower(input: unknown, source = "configuration"): Result { + const parsed = decodeRecord(input) + if (Option.isNone(parsed)) return { value: input, diagnostics: [] } + + const permissions = [ + ...(Object.hasOwn(parsed.value, "permissions") ? [["permissions"]] : []), + ...["agents", "agent", "mode"].flatMap((key) => { + const agents = decodeRecord(parsed.value[key]) + if (Option.isNone(agents)) return [] + return Object.entries(agents.value).flatMap(([name, value]) => { + const agent = decodeRecord(value) + return Option.isSome(agent) && Object.hasOwn(agent.value, "permissions") ? [[key, name, "permissions"]] : [] + }) + }), + ] + if (permissions.length) + throw new InvalidError({ + path: source, + issues: permissions.map((path) => ({ + path, + message: 'V2 permissions are not supported by OpenCode V1. Use V1 "permission" rules or run opencode2.', + })), + }) + + const result: Record = { ...parsed.value } + const diagnostics: Diagnostic[] = [] + for (const key of ["plugins", "providers", "websearch", "warming"]) + if (Object.hasOwn(parsed.value, key)) unsupported([key], diagnostics) + + normalizeSettings(parsed.value, result, diagnostics) + normalizeModel(parsed.value, result, diagnostics) + normalizeSkills(parsed.value, result, diagnostics) + normalizeCompaction(parsed.value, result, diagnostics) + normalizeExperimental(parsed.value, result, diagnostics) + + normalizeAgents(parsed.value, result, diagnostics) + normalizeCommands(parsed.value, result, diagnostics) + normalizeMcp(parsed.value, result, diagnostics) + normalizeLsp(parsed.value, result, diagnostics) + + return { value: result, diagnostics } +} + +function normalizeSettings(input: Record, result: Record, diagnostics: Diagnostic[]) { + if (Object.hasOwn(input, "snapshots")) { + const value = decodeValue(Schema.Boolean, input.snapshots, ["snapshots"], diagnostics) + if (value !== undefined) preferLegacy(result, "snapshot", value, ["snapshots"], diagnostics) + } + if (Object.hasOwn(input, "media")) { + const value = decodeValue(ConfigAttachmentV1.Info, input.media, ["media"], diagnostics) + if (value !== undefined) preferLegacy(result, "attachment", value, ["media"], diagnostics) + } +} + +function normalizeModel(input: Record, result: Record, diagnostics: Diagnostic[]) { + if (!Object.hasOwn(input, "model")) return + const selection = Schema.decodeUnknownOption(Selection, decodeOptions)(input.model) + if (Option.isNone(selection)) return + const value = lowerSelection(selection.value) + result.model = value.model + if (value.variant !== undefined) unsupported(["model", "variant"], diagnostics) +} + +function normalizeSkills(input: Record, result: Record, diagnostics: Diagnostic[]) { + if (!Array.isArray(input.skills)) return + const skills = decodeValue(Schema.Array(Schema.String), input.skills, ["skills"], diagnostics) + if (skills === undefined) return + result.skills = { + paths: skills.filter((value) => !/^https?:\/\//i.test(value)), + urls: skills.filter((value) => /^https?:\/\//i.test(value)), + } +} + +function normalizeCompaction( + input: Record, + result: Record, + diagnostics: Diagnostic[], +) { + const compaction = decodeRecord(input.compaction) + if (Option.isNone(compaction)) return + const value = { ...compaction.value } + if (Object.hasOwn(value, "keep")) { + const keep = decodeValue(Record, value.keep, ["compaction", "keep"], diagnostics) + if (keep !== undefined && Object.hasOwn(keep, "tokens")) { + const tokens = decodeValue(NonNegativeInt, keep.tokens, ["compaction", "keep", "tokens"], diagnostics) + if (tokens !== undefined) + preferLegacy(value, "preserve_recent_tokens", tokens, ["compaction", "keep", "tokens"], diagnostics) + } + } + if (Object.hasOwn(value, "buffer")) { + const buffer = decodeValue(NonNegativeInt, value.buffer, ["compaction", "buffer"], diagnostics) + if (buffer !== undefined) preferLegacy(value, "reserved", buffer, ["compaction", "buffer"], diagnostics) + } + result.compaction = value +} + +function normalizeExperimental( + input: Record, + result: Record, + diagnostics: Diagnostic[], +) { + const experimental = decodeRecord(input.experimental) + if (Option.isNone(experimental)) return + if (Object.hasOwn(experimental.value, "portable_shell_scanner")) + unsupported(["experimental", "portable_shell_scanner"], diagnostics) + if (!Object.hasOwn(experimental.value, "subagent_depth")) return + const depth = decodeValue( + NonNegativeInt, + experimental.value.subagent_depth, + ["experimental", "subagent_depth"], + diagnostics, + ) + if (depth !== undefined) + preferLegacy(result, "subagent_depth", depth, ["experimental", "subagent_depth"], diagnostics) +} + +function normalizeAgents(input: Record, result: Record, diagnostics: Diagnostic[]) { + if (!Object.hasOwn(input, "agents")) return + const agents = decodeValue(Record, input.agents, ["agents"], diagnostics) + if (agents === undefined) return + const legacy = decodeRecord(result.agent) + const merged: Record = Option.isSome(legacy) ? { ...legacy.value } : {} + for (const [name, value] of Object.entries(agents)) { + const path = ["agents", name] + if (Object.hasOwn(merged, name)) { + if (!isDeepStrictEqual(merged[name], value)) conflict(path, diagnostics) + continue + } + const parsed = decodeValue(Agent, value, path, diagnostics) + if (parsed === undefined) continue + if (parsed.request?.headers !== undefined) unsupported([...path, "request", "headers"], diagnostics) + setOwn(merged, name, lowerAgent(parsed)) + } + if (Object.hasOwn(result, "agent") && Option.isNone(legacy)) return + if (Object.keys(merged).length > 0 || Option.isSome(legacy)) result.agent = merged +} + +function normalizeCommands(input: Record, result: Record, diagnostics: Diagnostic[]) { + if (!Object.hasOwn(input, "commands")) return + const commands = decodeValue(Record, input.commands, ["commands"], diagnostics) + if (commands === undefined) return + const legacy = decodeRecord(result.command) + if (Object.hasOwn(result, "command") && Option.isNone(legacy)) return + const merged: Record = Option.isSome(legacy) ? { ...legacy.value } : {} + for (const [name, value] of Object.entries(commands)) { + const path = ["commands", name] + const parsed = decodeValue(Command, value, path, diagnostics) + if (parsed === undefined) continue + preferLegacy(merged, name, lowerCommand(parsed), path, diagnostics) + } + if (Object.keys(merged).length > 0 || Option.isSome(legacy)) result.command = merged +} + +function normalizeMcp(input: Record, result: Record, diagnostics: Diagnostic[]) { + const mcp = decodeRecord(input.mcp) + if (Option.isNone(mcp)) return + const servers: Record = {} + const nested = decodeRecord(mcp.value.servers) + const envelope = Option.isSome(nested) && !isDirectServer(nested.value) + const timeoutRecord = decodeRecord(mcp.value.timeout) + const timeout = Schema.decodeUnknownOption(Timeout, decodeOptions)(mcp.value.timeout) + const globalTimeout = + Option.isSome(timeout) && + Option.isSome(timeoutRecord) && + !isDirectServer(timeoutRecord.value) && + (Object.keys(timeoutRecord.value).length === 0 || + ["startup", "catalog", "execution"].some((key) => Object.hasOwn(timeoutRecord.value, key))) + + for (const [name, value] of Object.entries(mcp.value)) { + if (name === "servers" && envelope) continue + if (name === "timeout" && globalTimeout) continue + const path = ["mcp", name] + const record = decodeRecord(value) + const oauth = Option.isSome(record) ? decodeRecord(record.value.oauth) : Option.none() + const native = + Option.isSome(record) && + (Object.hasOwn(record.value, "disabled") || + Object.hasOwn(record.value, "codemode") || + typeof record.value.timeout === "object" || + (Option.isSome(oauth) && + ["client_id", "client_secret", "callback_port", "redirect_uri"].some((key) => + Object.hasOwn(oauth.value, key), + ))) + // Keep invalid flat entries for the final V1 decoder rather than sanitizing them. + setOwn(servers, name, native ? (normalizeServer(value, path, diagnostics) ?? value) : value) + } + + if (envelope && Option.isSome(nested)) { + for (const [name, value] of Object.entries(nested.value)) { + const path = ["mcp", "servers", name] + if (Object.hasOwn(servers, name)) { + if (!isDeepStrictEqual(servers[name], value)) conflict(path, diagnostics) + continue + } + const record = decodeRecord(value) + if ( + Option.isSome(record) && + typeof record.value.enabled === "boolean" && + !Object.hasOwn(record.value, "disabled") + ) { + setOwn(servers, name, value) + continue + } + const server = normalizeServer(value, path, diagnostics) + if (server !== undefined) setOwn(servers, name, server) + } + } + result.mcp = servers + + if (!globalTimeout || Option.isNone(timeout)) return + const value = lowerTimeout(timeout.value) + if (value === undefined) { + if (Object.keys(timeout.value).length) unsupported(["mcp", "timeout"], diagnostics) + return + } + const existing = decodeRecord(result.experimental) + if (Object.hasOwn(result, "experimental") && Option.isNone(existing)) return + const experimental = Option.isSome(existing) ? { ...existing.value } : {} + preferLegacy(experimental, "mcp_timeout", value, ["mcp", "timeout"], diagnostics) + result.experimental = experimental +} + +function isDirectServer(value: Record) { + // Object-valued entries can be servers literally named "type" or "enabled". + return ["type", "enabled"].some( + (key) => + Object.hasOwn(value, key) && (value[key] === null || typeof value[key] !== "object" || Array.isArray(value[key])), + ) +} + +function normalizeServer(input: unknown, path: string[], diagnostics: Diagnostic[]) { + const server = decodeValue(Server, input, path, diagnostics) + if (server === undefined) return + if (server.codemode !== undefined) unsupported([...path, "codemode"], diagnostics) + if (server.timeout && lowerTimeout(server.timeout) === undefined && Object.keys(server.timeout).length) + unsupported([...path, "timeout"], diagnostics) + const raw = decodeRecord(input) + if (Option.isNone(raw) || !Object.hasOwn(raw.value, "enabled")) return lowerServer(server) + if (server.disabled !== undefined && raw.value.enabled === server.disabled) + conflict([...path, "disabled"], diagnostics) + return { ...lowerServer(server), enabled: raw.value.enabled } +} + +function normalizeLsp(input: Record, result: Record, diagnostics: Diagnostic[]) { + const lsp = decodeRecord(input.lsp) + if (Option.isNone(lsp)) return + result.lsp = Object.fromEntries( + Object.entries(lsp.value).filter(([name, value]) => { + if (builtinServers.has(name)) return true + const entry = decodeLspEntry(value) + if (Option.isNone(entry)) return true + if (entry.value.disabled === true) return true + if ("extensions" in entry.value && entry.value.extensions !== undefined) return true + unsupported(["lsp", name], diagnostics) + return false + }), + ) +} + +function lowerSelection(input: Schema.Schema.Type) { + if (typeof input !== "string") { + return { + model: `${input.providerID}/${input.model}`, + ...(input.variant !== undefined ? { variant: input.variant } : {}), + } + } + const index = input.indexOf("#") + if (index === -1) return { model: input } + return { model: input.slice(0, index), variant: input.slice(index + 1) } +} + +function lowerTimeout(input: Schema.Schema.Type) { + if (input.startup !== undefined) return undefined + if (input.catalog === undefined || input.execution === undefined) return undefined + if (input.catalog !== input.execution) return undefined + return input.catalog +} + +function lowerServer(input: Schema.Schema.Type) { + const result: Record = { + ...input, + enabled: input.disabled !== true, + } + delete result.disabled + delete result.codemode + delete result.timeout + + if (input.timeout) { + const timeout = lowerTimeout(input.timeout) + if (timeout !== undefined) result.timeout = timeout + } + + if (input.type === "remote" && input.oauth && typeof input.oauth === "object") { + const oauth: Record = {} + if (input.oauth.client_id !== undefined) oauth.clientId = input.oauth.client_id + if (input.oauth.client_secret !== undefined) oauth.clientSecret = input.oauth.client_secret + if (input.oauth.scope !== undefined) oauth.scope = input.oauth.scope + if (input.oauth.callback_port !== undefined) oauth.callbackPort = input.oauth.callback_port + if (input.oauth.redirect_uri !== undefined) oauth.redirectUri = input.oauth.redirect_uri + result.oauth = oauth + } + + return result +} + +function lowerAgent(input: Schema.Schema.Type) { + const result: Record = {} + for (const key of ["description", "mode", "hidden", "color", "steps"] as const) { + if (input[key] !== undefined) result[key] = input[key] + } + if (input.system !== undefined) result.prompt = input.system + if (input.disabled !== undefined) result.disable = input.disabled + if (input.model !== undefined) Object.assign(result, lowerSelection(input.model)) + if (input.request?.body !== undefined) result.options = input.request.body + + return result +} + +function lowerCommand(input: Schema.Schema.Type) { + return { ...input, ...(input.model !== undefined ? lowerSelection(input.model) : {}) } +} + +function decodeValue>( + schema: S, + value: unknown, + path: string[], + diagnostics: Diagnostic[], +) { + const decoded = Schema.decodeUnknownOption(schema, decodeOptions)(value) + if (Option.isSome(decoded)) return decoded.value + diagnostics.push({ kind: "invalid", path, message: "Native setting could not be lowered because it is malformed" }) + return undefined +} + +function preferLegacy( + target: Record, + key: string, + value: unknown, + path: string[], + diagnostics: Diagnostic[], +) { + if (Object.hasOwn(target, key)) { + if (!isDeepStrictEqual(target[key], value)) conflict(path, diagnostics) + return + } + setOwn(target, key, value) +} + +function setOwn(target: Record, key: string, value: unknown) { + Object.defineProperty(target, key, { value, enumerable: true, configurable: true, writable: true }) +} + +function unsupported(path: string[], diagnostics: Diagnostic[]) { + diagnostics.push({ kind: "unsupported", path, message: "Omitted native setting that cannot be represented in V1" }) +} + +function conflict(path: string[], diagnostics: Diagnostic[]) { + diagnostics.push({ kind: "conflict", path, message: "Retained legacy value over native value" }) +} diff --git a/packages/opencode/test/config/config.test.ts b/packages/opencode/test/config/config.test.ts index 8f72c0cb7..4eb46ae1e 100644 --- a/packages/opencode/test/config/config.test.ts +++ b/packages/opencode/test/config/config.test.ts @@ -2,12 +2,14 @@ import { test, expect, describe, afterEach, beforeEach, spyOn } from "bun:test" import { ConfigV1 } from "@opencode-ai/core/v1/config/config" import { LayerNode } from "@opencode-ai/core/effect/layer-node" import { httpClient } from "@opencode-ai/core/effect/app-node-platform" -import { Cause, Effect, Exit, Layer, Option } from "effect" +import { Cause, Effect, Exit, Layer, Logger, Option } from "effect" import { NamedError } from "@opencode-ai/core/util/error" import { FetchHttpClient, HttpClient, HttpClientResponse } from "effect/unstable/http" import { Config } from "@/config/config" import { ConfigManaged } from "@/config/managed" import { ConfigParse } from "../../src/config/parse" +import { ConfigV2Compat } from "../../src/config/v2-compat" +import { snapshot } from "./snapshot" import { Npm } from "@opencode-ai/core/npm" import { InstanceRef } from "../../src/effect/instance-ref" @@ -397,6 +399,191 @@ it.effect("updates global config and omits empty shell key in jsonc", () => ), ) +it.effect("logs global update diagnostics once without exposing values", () => + withGlobalConfig( + { + config: { + providers: { example: { settings: { apiKey: "keep-me" } } }, + }, + }, + ({ dir }) => + Effect.gen(function* () { + const messages: unknown[] = [] + yield* Config.use.updateGlobal({ username: "updated" }).pipe( + Effect.provide( + Logger.layer([ + Logger.make((options) => { + messages.push(options.message) + }), + ]), + ), + ) + expect(JSON.stringify(messages)).not.toContain("keep-me") + expect( + messages.filter((item) => Array.isArray(item) && item[0] === "configuration compatibility diagnostic"), + ).toEqual([ + [ + "configuration compatibility diagnostic", + expect.objectContaining({ + source: path.join(dir, "opencode.json"), + kind: "unsupported", + path: ["providers"], + }), + ], + ]) + }), + ), +) + +const updateFixtures = path.join(import.meta.dir, "fixtures/v2-compat") +const globalInputs = [...new Bun.Glob("update-global/*-input.{json,jsonc}").scanSync({ cwd: updateFixtures })].sort() +const projectInputs = [...new Bun.Glob("update-project/*-input.json").scanSync({ cwd: updateFixtures })].sort() +if (!globalInputs.length || !projectInputs.length) throw new Error("Missing config update fixtures") + +for (const input of globalInputs) { + const extension = path.extname(input) + const name = input.slice(0, -`-input${extension}`.length) + const prefix = path.join(updateFixtures, name) + it.live(`fixture ${name}`, () => + withGlobalConfig({}, ({ dir }) => + Effect.gen(function* () { + const fs = yield* FSUtil.Service + const file = path.join(dir, `opencode${extension}`) + yield* fs.writeFileString(file, yield* fs.readFileString(path.join(updateFixtures, input))) + const patch = ConfigParse.schema(ConfigV1.Info, yield* fs.readJson(`${prefix}-patch.json`), input) + const updated = yield* Config.use.updateGlobal(patch) + const written = yield* fs.readFileString(file) + + yield* Effect.promise(() => snapshot(`${prefix}-output${extension}`, written)) + yield* Effect.promise(() => snapshot(`${prefix}-normalized.json`, JSON.stringify(updated.info, null, 2) + "\n")) + }), + ), + ) +} + +for (const input of projectInputs) { + const name = input.slice(0, -"-input.json".length) + const prefix = path.join(updateFixtures, name) + it.instance(`fixture ${name}`, () => + Effect.gen(function* () { + const instance = yield* TestInstance + const fs = yield* FSUtil.Service + const file = path.join(instance.directory, "config.json") + yield* fs.writeFileString(file, yield* fs.readFileString(path.join(updateFixtures, input))) + const patch = ConfigParse.schema(ConfigV1.Info, yield* fs.readJson(`${prefix}-patch.json`), input) + yield* Config.use.update(patch) + const written = yield* fs.readFileString(file) + const normalized = ConfigParse.schema( + ConfigV1.Info, + ConfigV2Compat.lower(ConfigParse.jsonc(written, file)).value, + file, + ) + + yield* Effect.promise(() => snapshot(`${prefix}-output.json`, written)) + yield* Effect.promise(() => snapshot(`${prefix}-normalized.json`, JSON.stringify(normalized, null, 2) + "\n")) + }), + ) +} + +for (const name of ["opencode.json", "opencode.jsonc"]) { + it.live(`rejects updating ${name} with native permissions without writing it`, () => + withGlobalConfig( + { name, config: { permissions: [{ action: "read", resource: "secret-resource", effect: "deny" }] } }, + ({ dir }) => + Effect.gen(function* () { + const fs = yield* FSUtil.Service + const file = path.join(dir, name) + const before = yield* fs.readFileString(file) + const exit = yield* Effect.exit(Config.use.updateGlobal({ username: "changed" })) + expect(Exit.isFailure(exit)).toBe(true) + if (Exit.isFailure(exit)) { + const error = Cause.squash(exit.cause) + expect(error).toMatchObject({ data: { path: file, issues: [{ path: ["permissions"] }] } }) + expect(JSON.stringify(error)).not.toContain("secret-resource") + } + expect(yield* fs.readFileString(file)).toBe(before) + }), + ), + ) +} + +it.instance("rejects a project update with native agent permissions without writing it", () => + Effect.gen(function* () { + const instance = yield* TestInstance + const fs = yield* FSUtil.Service + const file = path.join(instance.directory, "config.json") + const before = JSON.stringify({ agents: { reviewer: { permissions: [] } } }) + yield* fs.writeFileString(file, before) + const exit = yield* Effect.exit(Config.use.update({ username: "changed" })) + expect(Exit.isFailure(exit)).toBe(true) + if (Exit.isFailure(exit)) + expect(Cause.squash(exit.cause)).toMatchObject({ + data: { path: file, issues: [{ path: ["agents", "reviewer", "permissions"] }] }, + }) + expect(yield* fs.readFileString(file)).toBe(before) + }), +) + +it.effect("native project MCP servers override inherited V1 disabled state", () => + withConfigTree( + { + global: { + mcp: { + shared: { type: "local", command: ["global-mcp"], enabled: false }, + }, + }, + project: { + mcp: { + servers: { + shared: { type: "local", command: ["project-mcp"] }, + }, + }, + }, + }, + Effect.gen(function* () { + expect((yield* Config.use.get()).mcp?.shared).toMatchObject({ + type: "local", + command: ["project-mcp"], + enabled: true, + }) + }), + ), +) + +it.effect("rejects native project permissions even with inherited V1 rules", () => + withConfigTree( + { + global: { + permission: { read: "deny", bash: "ask" }, + agent: { reviewer: { permission: { edit: "deny" } } }, + }, + project: { + permissions: [{ action: "read", resource: "*", effect: "allow" }], + agents: { + reviewer: { + system: "Review carefully", + permissions: [{ action: "edit", resource: "*", effect: "allow" }], + }, + }, + }, + }, + Effect.gen(function* () { + const exit = yield* Effect.exit(Config.use.get()) + expect(Exit.isFailure(exit)).toBe(true) + if (Exit.isFailure(exit)) + expect(Cause.squash(exit.cause)).toMatchObject({ + data: { + path: expect.stringContaining("project/opencode.json"), + issues: [ + { path: ["permissions"], message: expect.stringContaining('Use V1 "permission" rules or run opencode2') }, + { path: ["agents", "reviewer", "permissions"], message: expect.stringContaining("not supported") }, + ], + }, + }) + }), + ), +) + it.instance( "loads formatter boolean config", Effect.gen(function* () { diff --git a/packages/opencode/test/config/fixtures/v2-compat/README.md b/packages/opencode/test/config/fixtures/v2-compat/README.md new file mode 100644 index 000000000..787564763 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/README.md @@ -0,0 +1,40 @@ +# Config Transformation Fixtures + +Each directory is an operation, with a flat list of files grouped by case-name prefixes. Add a case without adding another +test body; the runners discover `*-input.*` files in sorted order. + +## Operations + +| Directory | Inputs | Expected outputs | Operation | +| ----------------- | ---------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------ | +| `read/` | `-input.jsonc` | `-output.json` | Parse JSONC, lower supported V2 fields, and decode the V1 schema. | +| `update-global/` | `-input.json` or `.jsonc`, `-patch.json` | `-output.json` or `.jsonc`, `-normalized.json` | Write an isolated global file and invoke the real `Config.updateGlobal` service. | +| `update-project/` | `-input.json`, `-patch.json` | `-output.json`, `-normalized.json` | Write an isolated project `config.json` and invoke the real `Config.update` service. | + +Read outputs capture the complete decoded document, including V1 schema defaults, but not environment-dependent runtime +defaults such as the OS username. The read runner also checks that lowering did not mutate its input. + +For updates, `-output.*` is the exact text written by the service, including comments, formatting, and the presence or +absence of a final newline. `-normalized.json` records the V1 config returned by `updateGlobal`, or the decoded saved file +for project updates (which return no config). Native V2 data can remain in the saved file even when it is absent or has a +different shape in the in-memory V1 output. + +These are checked-in expectations, not output generated during ordinary test runs. Missing expectations fail the test. +Focused tests separately cover invalid inputs, diagnostics, secret redaction, logging, and cross-source behavior. + +## Run + +From `packages/opencode`: + +```sh +bun test test/config/v2-compat.test.ts test/config/config.test.ts --timeout 30000 +``` + +To intentionally regenerate expected outputs: + +```sh +UPDATE_CONFIG_FIXTURES=1 bun test test/config/v2-compat.test.ts test/config/config.test.ts --timeout 30000 +``` + +Review every changed `*-output.*` and `*-normalized.json` before accepting it. Do not run a formatter on update outputs; their +exact formatting is part of the snapshot. Inputs are authored by hand and are never rewritten by the fixture runner. diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-input.jsonc new file mode 100644 index 000000000..bdef25da8 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-input.jsonc @@ -0,0 +1,17 @@ +{ + "permission": { "bash": "deny", "*": "ask", "edit": "deny" }, + "agent": { + "reviewer": { "prompt": "Legacy prompt", "permission": { "bash": "deny", "edit": "deny" } } + }, + "agents": { + "reviewer": { + "system": "Native prompt" + }, + "native": {} + }, + "command": { "review": { "template": "Legacy review" } }, + "commands": { + "review": { "template": "Native review" }, + "modern": { "template": "Native command" } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-output.json new file mode 100644 index 000000000..55815600b --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-output.json @@ -0,0 +1,29 @@ +{ + "permission": { + "bash": "deny", + "*": "ask", + "edit": "deny" + }, + "agent": { + "reviewer": { + "prompt": "Legacy prompt", + "permission": { + "bash": "deny", + "edit": "deny" + }, + "options": {} + }, + "native": { + "options": {}, + "permission": {} + } + }, + "command": { + "review": { + "template": "Legacy review" + }, + "modern": { + "template": "Native command" + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/agents-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/agents-input.jsonc new file mode 100644 index 000000000..e6d51830e --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/agents-input.jsonc @@ -0,0 +1,15 @@ +{ + "agents": { + "reviewer": { + "model": { "providerID": "anthropic", "model": "claude-sonnet", "variant": "thinking" }, + "system": "Review carefully.", + "description": "Reviews changes", + "mode": "subagent", + "hidden": true, + "color": "#123abc", + "steps": 4, + "disabled": true + }, + "quick": { "model": "openai/gpt-4.1#fast", "disabled": false } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/agents-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/agents-output.json new file mode 100644 index 000000000..b94b1f429 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/agents-output.json @@ -0,0 +1,24 @@ +{ + "agent": { + "reviewer": { + "description": "Reviews changes", + "mode": "subagent", + "hidden": true, + "color": "#123abc", + "steps": 4, + "prompt": "Review carefully.", + "disable": true, + "model": "anthropic/claude-sonnet", + "variant": "thinking", + "options": {}, + "permission": {} + }, + "quick": { + "disable": false, + "model": "openai/gpt-4.1", + "variant": "fast", + "options": {}, + "permission": {} + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/commands-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/commands-input.jsonc new file mode 100644 index 000000000..e8502d5b2 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/commands-input.jsonc @@ -0,0 +1,12 @@ +{ + "commands": { + "review": { + "template": "Review $ARGUMENTS", + "description": "Review code", + "agent": "reviewer", + "model": { "providerID": "anthropic", "model": "claude-sonnet", "variant": "thinking" }, + "subtask": true + }, + "quick": { "template": "Quick review", "model": "openai/gpt-4.1#fast" } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/commands-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/commands-output.json new file mode 100644 index 000000000..9365d5999 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/commands-output.json @@ -0,0 +1,17 @@ +{ + "command": { + "review": { + "template": "Review $ARGUMENTS", + "description": "Review code", + "agent": "reviewer", + "model": "anthropic/claude-sonnet", + "subtask": true, + "variant": "thinking" + }, + "quick": { + "template": "Quick review", + "model": "openai/gpt-4.1", + "variant": "fast" + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-input.jsonc new file mode 100644 index 000000000..5981ee463 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-input.jsonc @@ -0,0 +1,8 @@ +{ + "plugins": [{ "package": "@example/native-plugin" }], + "providers": { "native": { "models": { "example": { "name": "Native model" } } } }, + "policies": [{ "action": "provider.use", "effect": "deny", "resource": "openai" }], + "websearch": "native-only", + "warming": true, + "experimental": { "portable_shell_scanner": true } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-output.json new file mode 100644 index 000000000..f1d962881 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-output.json @@ -0,0 +1,3 @@ +{ + "experimental": {} +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/lsp-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/lsp-input.jsonc new file mode 100644 index 000000000..cc8689b8f --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/lsp-input.jsonc @@ -0,0 +1,8 @@ +{ + "lsp": { + "typescript": { "command": ["typescript-language-server", "--stdio"] }, + "compatible": { "command": ["custom-lsp"], "extensions": [".custom"] }, + "incompatible": { "command": ["incompatible-lsp"] }, + "disabled": { "disabled": true } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/lsp-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/lsp-output.json new file mode 100644 index 000000000..8e0de3f78 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/lsp-output.json @@ -0,0 +1,21 @@ +{ + "lsp": { + "typescript": { + "command": [ + "typescript-language-server", + "--stdio" + ] + }, + "compatible": { + "command": [ + "custom-lsp" + ], + "extensions": [ + ".custom" + ] + }, + "disabled": { + "disabled": true + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-input.jsonc new file mode 100644 index 000000000..d8970e3e2 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-input.jsonc @@ -0,0 +1,15 @@ +{ + "mcp": { + "legacy-disabled": { "enabled": false }, + "legacy-enabled": { "enabled": true }, + "existing": { "type": "local", "command": ["existing-mcp"], "enabled": true }, + "flat-disabled": { "type": "local", "command": ["legacy"], "enabled": false, "codemode": false }, + "flat-enabled": { "type": "local", "command": ["legacy"], "enabled": true, "disabled": true }, + "servers": { + "type": { "type": "local", "command": ["type-mcp"] }, + "enabled": { "type": "remote", "url": "https://example.com/mcp" }, + "explicit-enabled": { "type": "local", "command": ["enabled-mcp"], "disabled": false }, + "explicit-disabled": { "type": "local", "command": ["disabled-mcp"], "disabled": true } + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-output.json new file mode 100644 index 000000000..9f5d400ae --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-output.json @@ -0,0 +1,57 @@ +{ + "mcp": { + "legacy-disabled": { + "enabled": false + }, + "legacy-enabled": { + "enabled": true + }, + "existing": { + "type": "local", + "command": [ + "existing-mcp" + ], + "enabled": true + }, + "flat-disabled": { + "type": "local", + "command": [ + "legacy" + ], + "enabled": false + }, + "flat-enabled": { + "type": "local", + "command": [ + "legacy" + ], + "enabled": true + }, + "type": { + "type": "local", + "command": [ + "type-mcp" + ], + "enabled": true + }, + "enabled": { + "type": "remote", + "url": "https://example.com/mcp", + "enabled": true + }, + "explicit-enabled": { + "type": "local", + "command": [ + "enabled-mcp" + ], + "enabled": true + }, + "explicit-disabled": { + "type": "local", + "command": [ + "disabled-mcp" + ], + "enabled": false + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-input.jsonc new file mode 100644 index 000000000..a97d2aedc --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-input.jsonc @@ -0,0 +1,11 @@ +{ + // Flat V1 entries win when an enveloped V2 server has the same name. + "mcp": { + "legacy": { "type": "local", "command": ["legacy-mcp"], "enabled": false }, + "shared": { "type": "remote", "url": "https://legacy.example.com/mcp" }, + "servers": { + "shared": { "type": "remote", "url": "https://native.example.com/mcp", "disabled": false }, + "native": { "type": "local", "command": ["native-mcp"], "disabled": true }, + }, + }, +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-output.json new file mode 100644 index 000000000..d425be1f4 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-output.json @@ -0,0 +1,22 @@ +{ + "mcp": { + "legacy": { + "type": "local", + "command": [ + "legacy-mcp" + ], + "enabled": false + }, + "shared": { + "type": "remote", + "url": "https://legacy.example.com/mcp" + }, + "native": { + "type": "local", + "command": [ + "native-mcp" + ], + "enabled": false + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-input.jsonc new file mode 100644 index 000000000..4bb5e1605 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-input.jsonc @@ -0,0 +1,19 @@ +{ + "mcp": { + "servers": { + "authenticated": { + "type": "remote", + "url": "https://oauth.example.com/mcp", + "headers": { "Authorization": "Bearer token" }, + "oauth": { + "client_id": "client", + "client_secret": "secret", + "scope": "read write", + "callback_port": 19877, + "redirect_uri": "http://127.0.0.1:19877/callback" + } + }, + "anonymous": { "type": "remote", "url": "https://anonymous.example.com/mcp", "oauth": false } + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-output.json new file mode 100644 index 000000000..91ed4f1d6 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-output.json @@ -0,0 +1,25 @@ +{ + "mcp": { + "authenticated": { + "type": "remote", + "url": "https://oauth.example.com/mcp", + "headers": { + "Authorization": "Bearer token" + }, + "oauth": { + "clientId": "client", + "clientSecret": "secret", + "scope": "read write", + "callbackPort": 19877, + "redirectUri": "http://127.0.0.1:19877/callback" + }, + "enabled": true + }, + "anonymous": { + "type": "remote", + "url": "https://anonymous.example.com/mcp", + "oauth": false, + "enabled": true + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-input.jsonc new file mode 100644 index 000000000..8257cca21 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-input.jsonc @@ -0,0 +1,3 @@ +{ + "mcp": { "timeout": { "startup": 1000, "catalog": 2000 } } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-output.json new file mode 100644 index 000000000..b50b419d0 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-output.json @@ -0,0 +1,3 @@ +{ + "mcp": {} +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-input.jsonc new file mode 100644 index 000000000..e4e0a7303 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-input.jsonc @@ -0,0 +1,7 @@ +{ + // An object-valued type must not hide a flat enabled-only server. + "mcp": { + "servers": { "type": {}, "enabled": false }, + "timeout": { "enabled": true } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-output.json new file mode 100644 index 000000000..004e72494 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-output.json @@ -0,0 +1,10 @@ +{ + "mcp": { + "servers": { + "enabled": false + }, + "timeout": { + "enabled": true + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-input.jsonc new file mode 100644 index 000000000..b825f07c3 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-input.jsonc @@ -0,0 +1,6 @@ +{ + "mcp": { + "servers": { "type": "local", "command": ["server-named-servers"] }, + "timeout": { "type": "remote", "url": "https://timeout.example.com/mcp" } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-output.json new file mode 100644 index 000000000..0f5a30b38 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-output.json @@ -0,0 +1,14 @@ +{ + "mcp": { + "servers": { + "type": "local", + "command": [ + "server-named-servers" + ] + }, + "timeout": { + "type": "remote", + "url": "https://timeout.example.com/mcp" + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-input.jsonc new file mode 100644 index 000000000..1a18254da --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-input.jsonc @@ -0,0 +1,15 @@ +{ + "mcp": { + "timeout": { "catalog": 8000, "execution": 8000 }, + "servers": { + "safe": { "type": "local", "command": ["safe-mcp"], "timeout": { "catalog": 3000, "execution": 3000 } }, + "unsafe": { "type": "local", "command": ["unsafe-mcp"], "timeout": { "catalog": 2000, "execution": 4000 } }, + "partial": { "type": "local", "command": ["partial-mcp"], "timeout": { "execution": 5000 } }, + "startup": { + "type": "local", + "command": ["startup-mcp"], + "timeout": { "startup": 1000, "catalog": 3000, "execution": 3000 } + } + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-output.json new file mode 100644 index 000000000..41b9b7cd9 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-output.json @@ -0,0 +1,36 @@ +{ + "mcp": { + "safe": { + "type": "local", + "command": [ + "safe-mcp" + ], + "enabled": true, + "timeout": 3000 + }, + "unsafe": { + "type": "local", + "command": [ + "unsafe-mcp" + ], + "enabled": true + }, + "partial": { + "type": "local", + "command": [ + "partial-mcp" + ], + "enabled": true + }, + "startup": { + "type": "local", + "command": [ + "startup-mcp" + ], + "enabled": true + } + }, + "experimental": { + "mcp_timeout": 8000 + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/model-object-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/model-object-input.jsonc new file mode 100644 index 000000000..f526f0cb0 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/model-object-input.jsonc @@ -0,0 +1,4 @@ +{ + "$schema": "https://opencode.ai/config.json", + "model": { "providerID": "anthropic", "model": "claude-sonnet", "variant": "fast" } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/model-object-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/model-object-output.json new file mode 100644 index 000000000..05db43112 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/model-object-output.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://opencode.ai/config.json", + "model": "anthropic/claude-sonnet" +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/model-string-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/model-string-input.jsonc new file mode 100644 index 000000000..1ef2530d9 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/model-string-input.jsonc @@ -0,0 +1,4 @@ +{ + "model": "anthropic/claude-sonnet", + "permission": "deny" +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/model-string-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/model-string-output.json new file mode 100644 index 000000000..f8cc9263c --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/model-string-output.json @@ -0,0 +1,6 @@ +{ + "model": "anthropic/claude-sonnet", + "permission": { + "*": "deny" + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/model-variant-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/model-variant-input.jsonc new file mode 100644 index 000000000..ac0b39dfe --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/model-variant-input.jsonc @@ -0,0 +1,3 @@ +{ + "model": "anthropic/claude-sonnet#fast" +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/model-variant-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/model-variant-output.json new file mode 100644 index 000000000..6f472abc0 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/model-variant-output.json @@ -0,0 +1,3 @@ +{ + "model": "anthropic/claude-sonnet" +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/settings-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/settings-input.jsonc new file mode 100644 index 000000000..94bdbdee1 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/settings-input.jsonc @@ -0,0 +1,12 @@ +{ + "snapshots": false, + "media": { + "image": { "auto_resize": false, "max_width": 1920, "max_height": 1080, "max_base64_bytes": 4096 } + }, + "compaction": { "auto": false, "keep": { "tokens": 12000 }, "buffer": 2048 }, + "experimental": { + "subagent_depth": 3, + "policies": [{ "effect": "deny", "action": "provider.use", "resource": "openai" }], + "batch_tool": true + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/settings-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/settings-output.json new file mode 100644 index 000000000..273ec79f3 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/settings-output.json @@ -0,0 +1,27 @@ +{ + "compaction": { + "auto": false, + "preserve_recent_tokens": 12000, + "reserved": 2048 + }, + "experimental": { + "policies": [ + { + "effect": "deny", + "action": "provider.use", + "resource": "openai" + } + ], + "batch_tool": true + }, + "snapshot": false, + "attachment": { + "image": { + "auto_resize": false, + "max_width": 1920, + "max_height": 1080, + "max_base64_bytes": 4096 + } + }, + "subagent_depth": 3 +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-input.jsonc new file mode 100644 index 000000000..d43042091 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-input.jsonc @@ -0,0 +1,15 @@ +{ + "snapshot": false, + "snapshots": true, + "attachment": { "image": { "max_width": 640 } }, + "media": { "image": { "max_width": 1920 } }, + "subagent_depth": 1, + "experimental": { "subagent_depth": 3, "mcp_timeout": 4000 }, + "compaction": { + "preserve_recent_tokens": 100, + "keep": { "tokens": 200 }, + "reserved": 300, + "buffer": 400 + }, + "mcp": { "timeout": { "catalog": 8000, "execution": 8000 } } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-output.json new file mode 100644 index 000000000..32c1efada --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-output.json @@ -0,0 +1,17 @@ +{ + "snapshot": false, + "attachment": { + "image": { + "max_width": 640 + } + }, + "subagent_depth": 1, + "experimental": { + "mcp_timeout": 4000 + }, + "compaction": { + "preserve_recent_tokens": 100, + "reserved": 300 + }, + "mcp": {} +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/skills-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/skills-input.jsonc new file mode 100644 index 000000000..ab005d622 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/skills-input.jsonc @@ -0,0 +1,3 @@ +{ + "skills": ["./skills", "https://example.com/skills", "/opt/skills", "http://localhost:8080/skills"] +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/skills-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/skills-output.json new file mode 100644 index 000000000..1486ecd7c --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/read/skills-output.json @@ -0,0 +1,12 @@ +{ + "skills": { + "paths": [ + "./skills", + "/opt/skills" + ], + "urls": [ + "https://example.com/skills", + "http://localhost:8080/skills" + ] + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-input.jsonc new file mode 100644 index 000000000..fa3ea0b6c --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-input.jsonc @@ -0,0 +1,7 @@ +{ + "$schema": "https://opencode.ai/config.json", + // Empty shell in a global update removes the setting. + "shell": "bash", + "model": { "providerID": "example", "model": "demo" }, + "snapshots": false +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-normalized.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-normalized.json new file mode 100644 index 000000000..133badb77 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-normalized.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://opencode.ai/config.json", + "model": "example/demo", + "snapshot": false +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-output.jsonc b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-output.jsonc new file mode 100644 index 000000000..d665f8127 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-output.jsonc @@ -0,0 +1,5 @@ +{ + "$schema": "https://opencode.ai/config.json", + "model": { "providerID": "example", "model": "demo" }, + "snapshots": false +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-patch.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-patch.json new file mode 100644 index 000000000..f448f4532 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-patch.json @@ -0,0 +1,3 @@ +{ + "shell": "" +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-input.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-input.json new file mode 100644 index 000000000..85438599c --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-input.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://opencode.ai/config.json", + "username": "before", + "mcp": { + "servers": { + "modern": { + "type": "local", + "command": ["modern-mcp"], + "disabled": true + } + } + }, + "providers": { + "example": { + "settings": { "apiKey": "fixture-secret" } + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-normalized.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-normalized.json new file mode 100644 index 000000000..57bd3589d --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-normalized.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://opencode.ai/config.json", + "username": "after", + "mcp": { + "modern": { + "type": "local", + "command": [ + "modern-mcp" + ], + "enabled": false + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-output.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-output.json new file mode 100644 index 000000000..9a2ce8d38 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-output.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://opencode.ai/config.json", + "username": "after", + "mcp": { + "servers": { + "modern": { + "type": "local", + "command": [ + "modern-mcp" + ], + "disabled": true + } + } + }, + "providers": { + "example": { + "settings": { + "apiKey": "fixture-secret" + } + } + } +} \ No newline at end of file diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-patch.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-patch.json new file mode 100644 index 000000000..1af8720f4 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-patch.json @@ -0,0 +1,3 @@ +{ + "username": "after" +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-input.jsonc new file mode 100644 index 000000000..db714876d --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-input.jsonc @@ -0,0 +1,19 @@ +{ + "$schema": "https://opencode.ai/config.json", + // The V1 update must keep comments and native settings. + "username": "before", + "mcp": { + "servers": { + "modern": { + "type": "local", + "command": ["modern-mcp"], + "disabled": true, + }, + }, + }, + "providers": { + "example": { + "settings": { "apiKey": "fixture-secret" }, + }, + }, +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-normalized.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-normalized.json new file mode 100644 index 000000000..57bd3589d --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-normalized.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://opencode.ai/config.json", + "username": "after", + "mcp": { + "modern": { + "type": "local", + "command": [ + "modern-mcp" + ], + "enabled": false + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-output.jsonc b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-output.jsonc new file mode 100644 index 000000000..abd8b673e --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-output.jsonc @@ -0,0 +1,19 @@ +{ + "$schema": "https://opencode.ai/config.json", + // The V1 update must keep comments and native settings. + "username": "after", + "mcp": { + "servers": { + "modern": { + "type": "local", + "command": ["modern-mcp"], + "disabled": true, + }, + }, + }, + "providers": { + "example": { + "settings": { "apiKey": "fixture-secret" }, + }, + }, +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-patch.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-patch.json new file mode 100644 index 000000000..1af8720f4 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-patch.json @@ -0,0 +1,3 @@ +{ + "username": "after" +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-input.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-input.json new file mode 100644 index 000000000..35ec5a1cd --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-input.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://opencode.ai/config.json", + "snapshots": true, + "agents": { + "reviewer": { "disabled": false } + }, + "mcp": { + "servers": { + "modern": { + "type": "local", + "command": ["modern-mcp"], + "disabled": false + } + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-normalized.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-normalized.json new file mode 100644 index 000000000..07596a743 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-normalized.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://opencode.ai/config.json", + "mcp": { + "modern": { + "enabled": false + } + }, + "snapshot": false, + "permission": { + "read": "deny" + }, + "agent": { + "reviewer": { + "disable": true, + "options": {}, + "permission": {} + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-output.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-output.json new file mode 100644 index 000000000..13a7ef229 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-output.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://opencode.ai/config.json", + "snapshots": true, + "agents": { + "reviewer": { + "disabled": false + } + }, + "mcp": { + "servers": { + "modern": { + "type": "local", + "command": [ + "modern-mcp" + ], + "disabled": false + } + }, + "modern": { + "enabled": false + } + }, + "snapshot": false, + "permission": { + "read": "deny" + }, + "agent": { + "reviewer": { + "disable": true, + "options": {}, + "permission": {} + } + } +} \ No newline at end of file diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-patch.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-patch.json new file mode 100644 index 000000000..ad732d661 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-patch.json @@ -0,0 +1,6 @@ +{ + "snapshot": false, + "permission": { "read": "deny" }, + "agent": { "reviewer": { "disable": true } }, + "mcp": { "modern": { "enabled": false } } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-input.json b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-input.json new file mode 100644 index 000000000..85438599c --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-input.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://opencode.ai/config.json", + "username": "before", + "mcp": { + "servers": { + "modern": { + "type": "local", + "command": ["modern-mcp"], + "disabled": true + } + } + }, + "providers": { + "example": { + "settings": { "apiKey": "fixture-secret" } + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-normalized.json b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-normalized.json new file mode 100644 index 000000000..57bd3589d --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-normalized.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://opencode.ai/config.json", + "username": "after", + "mcp": { + "modern": { + "type": "local", + "command": [ + "modern-mcp" + ], + "enabled": false + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-output.json b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-output.json new file mode 100644 index 000000000..9a2ce8d38 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-output.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://opencode.ai/config.json", + "username": "after", + "mcp": { + "servers": { + "modern": { + "type": "local", + "command": [ + "modern-mcp" + ], + "disabled": true + } + } + }, + "providers": { + "example": { + "settings": { + "apiKey": "fixture-secret" + } + } + } +} \ No newline at end of file diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-patch.json b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-patch.json new file mode 100644 index 000000000..1af8720f4 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-patch.json @@ -0,0 +1,3 @@ +{ + "username": "after" +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-input.json b/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-input.json new file mode 100644 index 000000000..35ec5a1cd --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-input.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://opencode.ai/config.json", + "snapshots": true, + "agents": { + "reviewer": { "disabled": false } + }, + "mcp": { + "servers": { + "modern": { + "type": "local", + "command": ["modern-mcp"], + "disabled": false + } + } + } +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-normalized.json b/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-normalized.json new file mode 100644 index 000000000..b51b190f0 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-normalized.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://opencode.ai/config.json", + "mcp": { + "modern": { + "enabled": false + } + }, + "snapshot": false, + "agent": { + "reviewer": { + "disable": true, + "options": {}, + "permission": {} + } + }, + "shell": "" +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-output.json b/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-output.json new file mode 100644 index 000000000..ce2eb0dad --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-output.json @@ -0,0 +1,32 @@ +{ + "$schema": "https://opencode.ai/config.json", + "snapshots": true, + "agents": { + "reviewer": { + "disabled": false + } + }, + "mcp": { + "servers": { + "modern": { + "type": "local", + "command": [ + "modern-mcp" + ], + "disabled": false + } + }, + "modern": { + "enabled": false + } + }, + "snapshot": false, + "agent": { + "reviewer": { + "disable": true, + "options": {}, + "permission": {} + } + }, + "shell": "" +} \ No newline at end of file diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-patch.json b/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-patch.json new file mode 100644 index 000000000..5c25e7eb1 --- /dev/null +++ b/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-patch.json @@ -0,0 +1,6 @@ +{ + "snapshot": false, + "agent": { "reviewer": { "disable": true } }, + "mcp": { "modern": { "enabled": false } }, + "shell": "" +} diff --git a/packages/opencode/test/config/snapshot.ts b/packages/opencode/test/config/snapshot.ts new file mode 100644 index 000000000..d184432fb --- /dev/null +++ b/packages/opencode/test/config/snapshot.ts @@ -0,0 +1,6 @@ +import { expect } from "bun:test" + +export async function snapshot(file: string, actual: string) { + if (process.env.UPDATE_CONFIG_FIXTURES === "1") await Bun.write(file, actual) + expect(actual).toBe(await Bun.file(file).text()) +} diff --git a/packages/opencode/test/config/v2-compat.test.ts b/packages/opencode/test/config/v2-compat.test.ts new file mode 100644 index 000000000..51873f0c4 --- /dev/null +++ b/packages/opencode/test/config/v2-compat.test.ts @@ -0,0 +1,400 @@ +import { describe, expect, test } from "bun:test" +import { ConfigV1 } from "@opencode-ai/core/v1/config/config" +import { LayerNode } from "@opencode-ai/core/effect/layer-node" +import { httpClient } from "@opencode-ai/core/effect/app-node-platform" +import { FSUtil } from "@opencode-ai/core/fs-util" +import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner" +import { Npm } from "@opencode-ai/core/npm" +import { Effect, Layer, Logger } from "effect" +import { HttpClient } from "effect/unstable/http" +import path from "path" +import { Account } from "../../src/account/account" +import { Auth } from "../../src/auth" +import { Config } from "../../src/config/config" +import { ConfigParse } from "../../src/config/parse" +import { ConfigV2Compat } from "../../src/config/v2-compat" +import { Env } from "../../src/env" +import { AccountTest } from "../fake/account" +import { AuthTest } from "../fake/auth" +import { NpmTest } from "../fake/npm" +import { TestInstance } from "../fixture/fixture" +import { testEffect } from "../lib/effect" +import { snapshot } from "./snapshot" + +const source = "test:v2-compat" +const lower = (input: unknown) => ConfigParse.schema(ConfigV1.Info, ConfigV2Compat.lower(input, source).value, source) + +const it = testEffect( + LayerNode.compile(LayerNode.group([Config.node, FSUtil.node, Env.node, CrossSpawnSpawner.node]), [ + [Auth.node, AuthTest.empty], + [Account.node, AccountTest.empty], + [Npm.node, NpmTest.noop], + [ + httpClient, + Layer.succeed( + HttpClient.HttpClient, + HttpClient.make((request) => Effect.die(`unexpected http request: ${request.method} ${request.url}`)), + ), + ], + ]), +) + +describe("V2 compatibility read fixtures", () => { + const directory = path.join(import.meta.dir, "fixtures/v2-compat/read") + const cases = Array.from(new Bun.Glob("*-input.jsonc").scanSync(directory)) + .map((file) => file.slice(0, -"-input.jsonc".length)) + .sort() + if (!cases.length) throw new Error("No V2 compatibility read fixtures found") + + cases.forEach((name) => { + test(name, async () => { + const source = path.join(directory, `${name}-input.jsonc`) + const input = ConfigParse.jsonc(await Bun.file(source).text(), source) + const original = structuredClone(input) + const result = ConfigV2Compat.lower(input, source) + expect(input).toEqual(original) + const config = ConfigParse.schema(ConfigV1.Info, result.value, source) + await snapshot(path.join(directory, `${name}-output.json`), JSON.stringify(config, null, 2) + "\n") + }) + }) +}) + +describe("ConfigV2Compat.lower", () => { + test("returns structured invalid diagnostics while retaining supported siblings", () => { + const result = ConfigV2Compat.lower({ + mcp: { + servers: { + broken: { type: "local", command: "not-an-array" }, + working: { type: "local", command: ["working-mcp"] }, + }, + }, + agents: { broken: { steps: "many" } }, + commands: { broken: { template: 42 } }, + }) + + expect(result.diagnostics).toEqual( + expect.arrayContaining([ + expect.objectContaining({ kind: "invalid", path: ["mcp", "servers", "broken"] }), + expect.objectContaining({ kind: "invalid", path: ["agents", "broken"] }), + expect.objectContaining({ kind: "invalid", path: ["commands", "broken"] }), + ]), + ) + expect(ConfigParse.schema(ConfigV1.Info, result.value, source).mcp).toEqual({ + working: { type: "local", command: ["working-mcp"], enabled: true }, + }) + }) + + test("reports unsupported settings and lossy conversions without their values", () => { + const secret = "do-not-log-credentials" + const result = ConfigV2Compat.lower({ + model: { providerID: "example", model: "model", variant: "high" }, + plugins: [{ package: "native-plugin", options: { token: secret } }], + providers: { example: { settings: { apiKey: secret } } }, + websearch: secret, + warming: true, + experimental: { portable_shell_scanner: true }, + agents: { reviewer: { request: { headers: { Authorization: secret } } } }, + mcp: { + servers: { + remote: { + type: "remote", + url: `https://example.com/?token=${secret}`, + oauth: { client_secret: secret }, + codemode: false, + timeout: { execution: 60000 }, + }, + }, + }, + lsp: { custom: { command: ["custom-lsp"] } }, + }) + + expect(result.diagnostics).toEqual( + expect.arrayContaining([ + expect.objectContaining({ kind: "unsupported", path: ["model", "variant"] }), + expect.objectContaining({ kind: "unsupported", path: ["plugins"] }), + expect.objectContaining({ kind: "unsupported", path: ["providers"] }), + expect.objectContaining({ kind: "unsupported", path: ["websearch"] }), + expect.objectContaining({ kind: "unsupported", path: ["warming"] }), + expect.objectContaining({ kind: "unsupported", path: ["experimental", "portable_shell_scanner"] }), + expect.objectContaining({ kind: "unsupported", path: ["agents", "reviewer", "request", "headers"] }), + expect.objectContaining({ kind: "unsupported", path: ["mcp", "servers", "remote", "codemode"] }), + expect.objectContaining({ kind: "unsupported", path: ["mcp", "servers", "remote", "timeout"] }), + expect.objectContaining({ kind: "unsupported", path: ["lsp", "custom"] }), + ]), + ) + expect(JSON.stringify(result.diagnostics)).not.toContain(secret) + }) + + test("reports conflicting forms while retaining the V1 value", () => { + const result = ConfigV2Compat.lower({ + snapshot: false, + snapshots: true, + command: { review: { template: "Legacy review" } }, + commands: { review: { template: "Native review" } }, + mcp: { + shared: { type: "local", command: ["legacy"] }, + servers: { shared: { type: "local", command: ["native"] } }, + }, + }) + const config = ConfigParse.schema(ConfigV1.Info, result.value, source) + + expect(config.snapshot).toBe(false) + expect(config.command?.review.template).toBe("Legacy review") + expect(config.mcp?.shared).toEqual({ type: "local", command: ["legacy"] }) + expect(result.diagnostics.filter((item) => item.kind === "conflict")).toHaveLength(3) + }) + + test("does not diagnose ordinary V1 configuration or reject invalid V1 roots early", () => { + expect(ConfigV2Compat.lower({ snapshot: false, mcp: { existing: { enabled: false } } }).diagnostics).toEqual([]) + expect(ConfigV2Compat.lower({ snapshot: false, snapshots: false }).diagnostics).toEqual([]) + const result = ConfigV2Compat.lower(null) + expect(result.value).toBeNull() + expect(() => ConfigParse.schema(ConfigV1.Info, result.value, source)).toThrow() + expect(() => lower({ snapshot: "invalid", snapshots: true })).toThrow() + }) + + test("keeps malformed MCP servers named servers and timeout for V1 validation", () => { + expect(() => lower({ mcp: { servers: { type: "local", command: "invalid" } } })).toThrow() + expect(() => lower({ mcp: { timeout: { type: "remote", url: 42 } } })).toThrow() + expect(() => lower({ mcp: { servers: { type: "bogus" } } })).toThrow() + expect(() => lower({ mcp: { servers: { type: 42 } } })).toThrow() + expect(() => lower({ mcp: { servers: { enabled: "false" } } })).toThrow() + }) + + test("rejects invalid V1 enablement when flat MCP entries include V2 fields", () => { + expect(() => + lower({ mcp: { invalid: { type: "local", command: ["legacy"], enabled: "false", codemode: false } } }), + ).toThrow("ConfigInvalidError") + }) + + test("does not repair malformed V1 containers or shadowed entries with V2 values", () => { + const cases = [ + { agent: null, agents: { reviewer: { system: "Native prompt" } } }, + { command: [], commands: { review: { template: "Native command" } } }, + { attachment: false, media: { image: { auto_resize: true } } }, + { experimental: null, mcp: { timeout: { catalog: 3000, execution: 3000 } } }, + { agent: { reviewer: 42 }, agents: { reviewer: { system: "Native prompt" } } }, + { command: { review: 42 }, commands: { review: { template: "Native command" } } }, + { mcp: { shared: 42, servers: { shared: { type: "local", command: ["native"] } } } }, + ] + cases.forEach((input) => expect(() => lower(input)).toThrow("ConfigInvalidError")) + }) + + test("keeps secrets out of invalid and conflict diagnostics", () => { + const secret = "secret-never-in-diagnostics" + const result = ConfigV2Compat.lower({ + commands: { malformed: { template: { token: secret } } }, + mcp: { + shared: { type: "remote", url: "https://example.com", headers: { Authorization: secret } }, + servers: { + shared: { type: "remote", url: "https://example.com", headers: { Authorization: `${secret}-changed` } }, + malformed: { type: "remote", url: `https://example.com?token=${secret}`, disabled: secret }, + }, + }, + }) + + expect(result.diagnostics).toEqual( + expect.arrayContaining([ + expect.objectContaining({ kind: "conflict", path: ["mcp", "servers", "shared"] }), + expect.objectContaining({ kind: "invalid", path: ["commands", "malformed"] }), + expect.objectContaining({ kind: "invalid", path: ["mcp", "servers", "malformed"] }), + ]), + ) + expect(JSON.stringify(result.diagnostics)).not.toContain(secret) + }) + + test("rejects any native permission field, including empty and malformed values", () => { + const cases = [ + [{ action: "shell", resource: "*", effect: "deny" }], + [ + { action: "read", resource: "*", effect: "allow" }, + { action: "*", resource: "*", effect: "deny" }, + { action: "read", resource: "public", effect: "allow" }, + ], + [], + null, + "secret-permission-value", + [{ action: "read", resource: "secret-permission-value", effect: "invalid" }], + ] + cases.forEach((permissions) => { + expect(() => lower({ username: "keep-me", permissions })).toThrow("ConfigInvalidError") + expect(() => lower({ permission: "deny", permissions })).toThrow("ConfigInvalidError") + }) + }) + + test("does not repair invalid legacy permissions with native rules", () => { + expect(() => lower({ permission: { read: "invalid" }, permissions: [] })).toThrow("ConfigInvalidError") + }) + + test("rejects native agent permissions before decoding or applying V1 precedence", () => { + const cases = [ + { agents: { reviewer: { system: "Review carefully", permissions: [{ action: "read" }] } } }, + { agents: { reviewer: { disabled: true, permissions: [] } } }, + { agent: { reviewer: { permission: "deny" } }, agents: { reviewer: { permissions: [] } } }, + { agents: { reviewer: { steps: "invalid", permissions: [] } } }, + { agent: { reviewer: { permissions: [] } } }, + { mode: { reviewer: { permissions: [] } } }, + ] + cases.forEach((input) => expect(() => lower(input)).toThrow("ConfigInvalidError")) + }) + + test("continues to support V1 permission rules", () => { + const config = lower({ + permission: { bash: "deny", "*": "ask", edit: "allow" }, + agent: { reviewer: { permission: { edit: "deny" } } }, + }) + expect(config.permission).toEqual({ bash: "deny", "*": "ask", edit: "allow" }) + expect(Object.keys(config.permission ?? {})).toEqual(["bash", "*", "edit"]) + expect(config.agent?.reviewer?.permission).toEqual({ edit: "deny" }) + }) + + test("does not sanitize malformed V1 fields before schema validation", () => { + expect(() => lower({ model: 42 })).toThrow() + expect(() => lower({ snapshot: "enabled" })).toThrow() + expect(() => lower({ mcp: { broken: { type: "local", command: "not-an-array" } } })).toThrow() + expect(() => lower({ experimental: { mcp_timeout: -1 } })).toThrow() + }) + + test("does not mutate the input or nested configuration objects", () => { + const input = { + model: { providerID: "anthropic", model: "claude-sonnet", variant: "fast" }, + snapshots: true, + skills: ["./skills", "https://example.com/skills"], + mcp: { + existing: { type: "local", command: ["existing-mcp"], enabled: false }, + servers: { + native: { + type: "remote", + url: "https://example.com/mcp", + disabled: true, + oauth: { client_id: "client" }, + timeout: { execution: 3000 }, + }, + }, + }, + agents: { reviewer: { model: "anthropic/claude-sonnet#thinking", disabled: true } }, + experimental: { subagent_depth: 2 }, + } + const original = structuredClone(input) + + lower(input) + + expect(input).toEqual(original) + }) +}) + +describe("V2 configuration loading", () => { + it.instance("logs compatibility diagnostics without writing the lowered projection", () => + Effect.gen(function* () { + const instance = yield* TestInstance + const fs = yield* FSUtil.Service + const file = path.join(instance.directory, "opencode.jsonc") + const text = + '{\n // Retain this comment\n "$schema": "https://opencode.ai/config.json",\n "plugins": ["native-only"]\n}\n' + yield* fs.writeWithDirs(file, text) + const messages: unknown[] = [] + const config = yield* Config.use.get().pipe( + Effect.provide( + Logger.layer([ + Logger.make((options) => { + messages.push(options.message) + }), + ]), + ), + ) + + expect(config.plugin).toEqual([]) + expect(messages).toContainEqual([ + "configuration compatibility diagnostic", + expect.objectContaining({ source: file, kind: "unsupported", path: ["plugins"] }), + ]) + expect(yield* fs.readFileString(file)).toBe(text) + }), + ) + + it.instance("loads native V2 configuration through the V1 Config service", () => + Effect.gen(function* () { + const instance = yield* TestInstance + const fs = yield* FSUtil.Service + yield* fs.writeWithDirs( + path.join(instance.directory, "opencode.json"), + JSON.stringify({ + $schema: "https://opencode.ai/config.json", + model: { providerID: "anthropic", model: "claude-sonnet", variant: "fast" }, + snapshots: false, + skills: ["./skills", "https://example.com/skills"], + mcp: { + timeout: { catalog: 9000, execution: 9000 }, + servers: { + native: { type: "remote", url: "https://native.example.com/mcp", disabled: false }, + }, + }, + agents: { + reviewer: { + model: "anthropic/claude-sonnet#thinking", + system: "Review carefully.", + }, + }, + commands: { + review: { + template: "Review $ARGUMENTS", + model: { providerID: "anthropic", model: "claude-sonnet", variant: "thinking" }, + }, + }, + experimental: { subagent_depth: 2 }, + }), + ) + + const config = yield* Config.use.get() + + expect(config.model).toBe("anthropic/claude-sonnet") + expect(config.snapshot).toBe(false) + expect(config.skills).toEqual({ paths: ["./skills"], urls: ["https://example.com/skills"] }) + expect(config.mcp?.native).toEqual({ type: "remote", url: "https://native.example.com/mcp", enabled: true }) + expect(config.experimental?.mcp_timeout).toBe(9000) + expect(config.permission).toBeUndefined() + expect(config.agent?.reviewer).toMatchObject({ + model: "anthropic/claude-sonnet", + variant: "thinking", + prompt: "Review carefully.", + permission: {}, + }) + expect(config.command?.review).toMatchObject({ + template: "Review $ARGUMENTS", + model: "anthropic/claude-sonnet", + variant: "thinking", + }) + expect(config.subagent_depth).toBe(2) + }), + ) + + it.instance("keeps legacy TUI normalization when loading a mixed V1 and V2 document", () => + Effect.gen(function* () { + const instance = yield* TestInstance + const fs = yield* FSUtil.Service + yield* fs.writeWithDirs( + path.join(instance.directory, "opencode.json"), + JSON.stringify({ + $schema: "https://opencode.ai/config.json", + model: { providerID: "openai", model: "gpt-4.1" }, + theme: "legacy", + keybinds: { leader: "ctrl+x" }, + tui: { scroll_speed: 4 }, + mcp: { + legacy: { enabled: false }, + servers: { native: { type: "local", command: ["native-mcp"] } }, + }, + }), + ) + + const config = yield* Config.use.get() + + expect(config.model).toBe("openai/gpt-4.1") + expect(config.mcp?.legacy).toEqual({ enabled: false }) + expect(config.mcp?.native).toEqual({ type: "local", command: ["native-mcp"], enabled: true }) + expect(config).not.toHaveProperty("theme") + expect(config).not.toHaveProperty("keybinds") + expect(config).not.toHaveProperty("tui") + }), + ) +}) From c77100a40c16a1c7c39115023ccd6f284b476c77 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Thu, 27 Aug 2026 20:05:43 +0000 Subject: [PATCH 181/271] chore: generate --- .../agents-commands-precedence-input.jsonc | 10 ++++---- .../v2-compat/read/agents-input.jsonc | 6 ++--- .../v2-compat/read/commands-input.jsonc | 6 ++--- .../v2-compat/read/ignored-fields-input.jsonc | 2 +- .../fixtures/v2-compat/read/lsp-input.jsonc | 4 ++-- .../fixtures/v2-compat/read/lsp-output.json | 13 +++------- .../v2-compat/read/mcp-enablement-input.jsonc | 6 ++--- .../v2-compat/read/mcp-enablement-output.json | 24 +++++-------------- .../v2-compat/read/mcp-merge-output.json | 8 ++----- .../v2-compat/read/mcp-oauth-input.jsonc | 10 ++++---- .../read/mcp-partial-timeout-input.jsonc | 2 +- .../read/mcp-reserved-enabled-input.jsonc | 4 ++-- .../v2-compat/read/mcp-reserved-input.jsonc | 4 ++-- .../v2-compat/read/mcp-reserved-output.json | 4 +--- .../v2-compat/read/mcp-timeouts-input.jsonc | 8 +++---- .../v2-compat/read/mcp-timeouts-output.json | 16 ++++--------- .../v2-compat/read/model-object-input.jsonc | 2 +- .../v2-compat/read/model-string-input.jsonc | 2 +- .../v2-compat/read/model-variant-input.jsonc | 2 +- .../v2-compat/read/settings-input.jsonc | 6 ++--- .../read/settings-precedence-input.jsonc | 4 ++-- .../v2-compat/read/skills-input.jsonc | 2 +- .../v2-compat/read/skills-output.json | 10 ++------ .../update-global/clear-shell-input.jsonc | 2 +- .../update-global/clear-shell-output.jsonc | 2 +- .../preserve-v2-json-normalized.json | 4 +--- .../preserve-v2-json-output.json | 6 ++--- .../preserve-v2-jsonc-normalized.json | 4 +--- .../update-global/v1-overrides-output.json | 6 ++--- .../preserve-v2-normalized.json | 4 +--- .../update-project/preserve-v2-output.json | 6 ++--- .../update-project/v1-overrides-output.json | 6 ++--- 32 files changed, 71 insertions(+), 124 deletions(-) diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-input.jsonc index bdef25da8..7315106cd 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/agents-commands-precedence-input.jsonc @@ -1,17 +1,17 @@ { "permission": { "bash": "deny", "*": "ask", "edit": "deny" }, "agent": { - "reviewer": { "prompt": "Legacy prompt", "permission": { "bash": "deny", "edit": "deny" } } + "reviewer": { "prompt": "Legacy prompt", "permission": { "bash": "deny", "edit": "deny" } }, }, "agents": { "reviewer": { - "system": "Native prompt" + "system": "Native prompt", }, - "native": {} + "native": {}, }, "command": { "review": { "template": "Legacy review" } }, "commands": { "review": { "template": "Native review" }, - "modern": { "template": "Native command" } - } + "modern": { "template": "Native command" }, + }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/agents-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/agents-input.jsonc index e6d51830e..abd03aba2 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/agents-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/agents-input.jsonc @@ -8,8 +8,8 @@ "hidden": true, "color": "#123abc", "steps": 4, - "disabled": true + "disabled": true, }, - "quick": { "model": "openai/gpt-4.1#fast", "disabled": false } - } + "quick": { "model": "openai/gpt-4.1#fast", "disabled": false }, + }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/commands-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/commands-input.jsonc index e8502d5b2..88e433e6d 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/commands-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/commands-input.jsonc @@ -5,8 +5,8 @@ "description": "Review code", "agent": "reviewer", "model": { "providerID": "anthropic", "model": "claude-sonnet", "variant": "thinking" }, - "subtask": true + "subtask": true, }, - "quick": { "template": "Quick review", "model": "openai/gpt-4.1#fast" } - } + "quick": { "template": "Quick review", "model": "openai/gpt-4.1#fast" }, + }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-input.jsonc index 5981ee463..1f054f1cf 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/ignored-fields-input.jsonc @@ -4,5 +4,5 @@ "policies": [{ "action": "provider.use", "effect": "deny", "resource": "openai" }], "websearch": "native-only", "warming": true, - "experimental": { "portable_shell_scanner": true } + "experimental": { "portable_shell_scanner": true }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/lsp-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/lsp-input.jsonc index cc8689b8f..33f94f2be 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/lsp-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/lsp-input.jsonc @@ -3,6 +3,6 @@ "typescript": { "command": ["typescript-language-server", "--stdio"] }, "compatible": { "command": ["custom-lsp"], "extensions": [".custom"] }, "incompatible": { "command": ["incompatible-lsp"] }, - "disabled": { "disabled": true } - } + "disabled": { "disabled": true }, + }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/lsp-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/lsp-output.json index 8e0de3f78..0f2139331 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/lsp-output.json +++ b/packages/opencode/test/config/fixtures/v2-compat/read/lsp-output.json @@ -1,18 +1,11 @@ { "lsp": { "typescript": { - "command": [ - "typescript-language-server", - "--stdio" - ] + "command": ["typescript-language-server", "--stdio"] }, "compatible": { - "command": [ - "custom-lsp" - ], - "extensions": [ - ".custom" - ] + "command": ["custom-lsp"], + "extensions": [".custom"] }, "disabled": { "disabled": true diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-input.jsonc index d8970e3e2..c0f2b0da3 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-input.jsonc @@ -9,7 +9,7 @@ "type": { "type": "local", "command": ["type-mcp"] }, "enabled": { "type": "remote", "url": "https://example.com/mcp" }, "explicit-enabled": { "type": "local", "command": ["enabled-mcp"], "disabled": false }, - "explicit-disabled": { "type": "local", "command": ["disabled-mcp"], "disabled": true } - } - } + "explicit-disabled": { "type": "local", "command": ["disabled-mcp"], "disabled": true }, + }, + }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-output.json index 9f5d400ae..4ae15ca1f 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-output.json +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-enablement-output.json @@ -8,30 +8,22 @@ }, "existing": { "type": "local", - "command": [ - "existing-mcp" - ], + "command": ["existing-mcp"], "enabled": true }, "flat-disabled": { "type": "local", - "command": [ - "legacy" - ], + "command": ["legacy"], "enabled": false }, "flat-enabled": { "type": "local", - "command": [ - "legacy" - ], + "command": ["legacy"], "enabled": true }, "type": { "type": "local", - "command": [ - "type-mcp" - ], + "command": ["type-mcp"], "enabled": true }, "enabled": { @@ -41,16 +33,12 @@ }, "explicit-enabled": { "type": "local", - "command": [ - "enabled-mcp" - ], + "command": ["enabled-mcp"], "enabled": true }, "explicit-disabled": { "type": "local", - "command": [ - "disabled-mcp" - ], + "command": ["disabled-mcp"], "enabled": false } } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-output.json index d425be1f4..8ddce438b 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-output.json +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-merge-output.json @@ -2,9 +2,7 @@ "mcp": { "legacy": { "type": "local", - "command": [ - "legacy-mcp" - ], + "command": ["legacy-mcp"], "enabled": false }, "shared": { @@ -13,9 +11,7 @@ }, "native": { "type": "local", - "command": [ - "native-mcp" - ], + "command": ["native-mcp"], "enabled": false } } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-input.jsonc index 4bb5e1605..bed851abb 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-oauth-input.jsonc @@ -10,10 +10,10 @@ "client_secret": "secret", "scope": "read write", "callback_port": 19877, - "redirect_uri": "http://127.0.0.1:19877/callback" - } + "redirect_uri": "http://127.0.0.1:19877/callback", + }, }, - "anonymous": { "type": "remote", "url": "https://anonymous.example.com/mcp", "oauth": false } - } - } + "anonymous": { "type": "remote", "url": "https://anonymous.example.com/mcp", "oauth": false }, + }, + }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-input.jsonc index 8257cca21..001199938 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-partial-timeout-input.jsonc @@ -1,3 +1,3 @@ { - "mcp": { "timeout": { "startup": 1000, "catalog": 2000 } } + "mcp": { "timeout": { "startup": 1000, "catalog": 2000 } }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-input.jsonc index e4e0a7303..02285ad6d 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-enabled-input.jsonc @@ -2,6 +2,6 @@ // An object-valued type must not hide a flat enabled-only server. "mcp": { "servers": { "type": {}, "enabled": false }, - "timeout": { "enabled": true } - } + "timeout": { "enabled": true }, + }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-input.jsonc index b825f07c3..df1af73c0 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-input.jsonc @@ -1,6 +1,6 @@ { "mcp": { "servers": { "type": "local", "command": ["server-named-servers"] }, - "timeout": { "type": "remote", "url": "https://timeout.example.com/mcp" } - } + "timeout": { "type": "remote", "url": "https://timeout.example.com/mcp" }, + }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-output.json index 0f5a30b38..6e69bb676 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-output.json +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-reserved-output.json @@ -2,9 +2,7 @@ "mcp": { "servers": { "type": "local", - "command": [ - "server-named-servers" - ] + "command": ["server-named-servers"] }, "timeout": { "type": "remote", diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-input.jsonc index 1a18254da..44541bbe2 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-input.jsonc @@ -8,8 +8,8 @@ "startup": { "type": "local", "command": ["startup-mcp"], - "timeout": { "startup": 1000, "catalog": 3000, "execution": 3000 } - } - } - } + "timeout": { "startup": 1000, "catalog": 3000, "execution": 3000 }, + }, + }, + }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-output.json index 41b9b7cd9..7f9bc3b0a 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-output.json +++ b/packages/opencode/test/config/fixtures/v2-compat/read/mcp-timeouts-output.json @@ -2,31 +2,23 @@ "mcp": { "safe": { "type": "local", - "command": [ - "safe-mcp" - ], + "command": ["safe-mcp"], "enabled": true, "timeout": 3000 }, "unsafe": { "type": "local", - "command": [ - "unsafe-mcp" - ], + "command": ["unsafe-mcp"], "enabled": true }, "partial": { "type": "local", - "command": [ - "partial-mcp" - ], + "command": ["partial-mcp"], "enabled": true }, "startup": { "type": "local", - "command": [ - "startup-mcp" - ], + "command": ["startup-mcp"], "enabled": true } }, diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/model-object-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/model-object-input.jsonc index f526f0cb0..1fe39335c 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/model-object-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/model-object-input.jsonc @@ -1,4 +1,4 @@ { "$schema": "https://opencode.ai/config.json", - "model": { "providerID": "anthropic", "model": "claude-sonnet", "variant": "fast" } + "model": { "providerID": "anthropic", "model": "claude-sonnet", "variant": "fast" }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/model-string-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/model-string-input.jsonc index 1ef2530d9..30d1ab9b8 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/model-string-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/model-string-input.jsonc @@ -1,4 +1,4 @@ { "model": "anthropic/claude-sonnet", - "permission": "deny" + "permission": "deny", } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/model-variant-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/model-variant-input.jsonc index ac0b39dfe..354a71140 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/model-variant-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/model-variant-input.jsonc @@ -1,3 +1,3 @@ { - "model": "anthropic/claude-sonnet#fast" + "model": "anthropic/claude-sonnet#fast", } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/settings-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/settings-input.jsonc index 94bdbdee1..bde7a6580 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/settings-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/settings-input.jsonc @@ -1,12 +1,12 @@ { "snapshots": false, "media": { - "image": { "auto_resize": false, "max_width": 1920, "max_height": 1080, "max_base64_bytes": 4096 } + "image": { "auto_resize": false, "max_width": 1920, "max_height": 1080, "max_base64_bytes": 4096 }, }, "compaction": { "auto": false, "keep": { "tokens": 12000 }, "buffer": 2048 }, "experimental": { "subagent_depth": 3, "policies": [{ "effect": "deny", "action": "provider.use", "resource": "openai" }], - "batch_tool": true - } + "batch_tool": true, + }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-input.jsonc index d43042091..4f4de052a 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/settings-precedence-input.jsonc @@ -9,7 +9,7 @@ "preserve_recent_tokens": 100, "keep": { "tokens": 200 }, "reserved": 300, - "buffer": 400 + "buffer": 400, }, - "mcp": { "timeout": { "catalog": 8000, "execution": 8000 } } + "mcp": { "timeout": { "catalog": 8000, "execution": 8000 } }, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/skills-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/read/skills-input.jsonc index ab005d622..c5156eb03 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/skills-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/read/skills-input.jsonc @@ -1,3 +1,3 @@ { - "skills": ["./skills", "https://example.com/skills", "/opt/skills", "http://localhost:8080/skills"] + "skills": ["./skills", "https://example.com/skills", "/opt/skills", "http://localhost:8080/skills"], } diff --git a/packages/opencode/test/config/fixtures/v2-compat/read/skills-output.json b/packages/opencode/test/config/fixtures/v2-compat/read/skills-output.json index 1486ecd7c..169bc6fe0 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/read/skills-output.json +++ b/packages/opencode/test/config/fixtures/v2-compat/read/skills-output.json @@ -1,12 +1,6 @@ { "skills": { - "paths": [ - "./skills", - "/opt/skills" - ], - "urls": [ - "https://example.com/skills", - "http://localhost:8080/skills" - ] + "paths": ["./skills", "/opt/skills"], + "urls": ["https://example.com/skills", "http://localhost:8080/skills"] } } diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-input.jsonc b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-input.jsonc index fa3ea0b6c..010758720 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-input.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-input.jsonc @@ -3,5 +3,5 @@ // Empty shell in a global update removes the setting. "shell": "bash", "model": { "providerID": "example", "model": "demo" }, - "snapshots": false + "snapshots": false, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-output.jsonc b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-output.jsonc index d665f8127..a347fd0ac 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-output.jsonc +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/clear-shell-output.jsonc @@ -1,5 +1,5 @@ { "$schema": "https://opencode.ai/config.json", "model": { "providerID": "example", "model": "demo" }, - "snapshots": false + "snapshots": false, } diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-normalized.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-normalized.json index 57bd3589d..a2c318971 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-normalized.json +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-normalized.json @@ -4,9 +4,7 @@ "mcp": { "modern": { "type": "local", - "command": [ - "modern-mcp" - ], + "command": ["modern-mcp"], "enabled": false } } diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-output.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-output.json index 9a2ce8d38..2ac6239a0 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-output.json +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-json-output.json @@ -5,9 +5,7 @@ "servers": { "modern": { "type": "local", - "command": [ - "modern-mcp" - ], + "command": ["modern-mcp"], "disabled": true } } @@ -19,4 +17,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-normalized.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-normalized.json index 57bd3589d..a2c318971 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-normalized.json +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/preserve-v2-jsonc-normalized.json @@ -4,9 +4,7 @@ "mcp": { "modern": { "type": "local", - "command": [ - "modern-mcp" - ], + "command": ["modern-mcp"], "enabled": false } } diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-output.json b/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-output.json index 13a7ef229..1edbbdddd 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-output.json +++ b/packages/opencode/test/config/fixtures/v2-compat/update-global/v1-overrides-output.json @@ -10,9 +10,7 @@ "servers": { "modern": { "type": "local", - "command": [ - "modern-mcp" - ], + "command": ["modern-mcp"], "disabled": false } }, @@ -31,4 +29,4 @@ "permission": {} } } -} \ No newline at end of file +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-normalized.json b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-normalized.json index 57bd3589d..a2c318971 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-normalized.json +++ b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-normalized.json @@ -4,9 +4,7 @@ "mcp": { "modern": { "type": "local", - "command": [ - "modern-mcp" - ], + "command": ["modern-mcp"], "enabled": false } } diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-output.json b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-output.json index 9a2ce8d38..2ac6239a0 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-output.json +++ b/packages/opencode/test/config/fixtures/v2-compat/update-project/preserve-v2-output.json @@ -5,9 +5,7 @@ "servers": { "modern": { "type": "local", - "command": [ - "modern-mcp" - ], + "command": ["modern-mcp"], "disabled": true } } @@ -19,4 +17,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-output.json b/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-output.json index ce2eb0dad..38c069d5b 100644 --- a/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-output.json +++ b/packages/opencode/test/config/fixtures/v2-compat/update-project/v1-overrides-output.json @@ -10,9 +10,7 @@ "servers": { "modern": { "type": "local", - "command": [ - "modern-mcp" - ], + "command": ["modern-mcp"], "disabled": false } }, @@ -29,4 +27,4 @@ } }, "shell": "" -} \ No newline at end of file +} From 517ee736b31876e6fc7df57307e78bf790b135a7 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 28 Aug 2026 00:48:48 +0200 Subject: [PATCH 182/271] fix(provider): filter unreplayable Bedrock reasoning before caching (#45769) Co-authored-by: neriousy <34747899+neriousy@users.noreply.github.com> --- packages/opencode/src/provider/transform.ts | 9 +- .../opencode/test/provider/transform.test.ts | 131 +++++++++++++++++- 2 files changed, 134 insertions(+), 6 deletions(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 0667fc2eb..28a5beb9a 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -208,11 +208,10 @@ function normalizeMessages( return part.text !== "" } if (part.type === "reasoning") { - return ( - part.text.trim().length > 0 || - part.providerOptions?.bedrock?.signature != null || - part.providerOptions?.bedrock?.redactedData != null - ) + // Match what the SDK can replay before assigning cache points. Otherwise + // unsigned reasoning can leave an empty or cache-point-only message. + const metadata = part.providerOptions?.[model.providerID] ?? part.providerOptions?.bedrock + return metadata?.signature != null || metadata?.redactedContent != null || metadata?.redactedData != null } return true }) diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index 97f0de281..9245e3a57 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -5,7 +5,8 @@ import { LLMRequestPrep } from "@/session/llm/request" import { ProviderV2 } from "@opencode-ai/core/provider" import { ModelV2 } from "@opencode-ai/core/model" import { ModelsDev } from "@opencode-ai/core/models-dev" -import { jsonSchema } from "ai" +import { generateText, jsonSchema, type ModelMessage } from "ai" +import { createAmazonBedrock } from "@ai-sdk/amazon-bedrock" describe("ProviderTransform.options - setCacheKey", () => { const sessionID = "test-session-123" @@ -2362,6 +2363,134 @@ describe("ProviderTransform.message - anthropic empty content filtering", () => expect(result[1].content[0]).toEqual({ type: "text", text: "Answer" }) }) + describe("Bedrock reasoning replay", () => { + const model = { + ...anthropicModel, + id: "amazon-bedrock/anthropic.claude-opus-4-6", + providerID: "amazon-bedrock", + api: { + id: "anthropic.claude-opus-4-6", + url: "https://bedrock-runtime.us-east-1.amazonaws.com", + npm: "@ai-sdk/amazon-bedrock", + }, + } + + for (const cached of [false, true]) { + test(`omits unsigned reasoning before SDK conversion (caching: ${cached})`, async () => { + const selected = cached + ? model + : { ...model, id: "amazon-bedrock/openai.gpt-oss-120b", api: { ...model.api, id: "openai.gpt-oss-120b" } } + const messages = ProviderTransform.message( + [ + { role: "user", content: "Think" }, + { role: "assistant", content: [{ type: "text", text: "Earlier answer" }] }, + { + role: "assistant", + content: [ + { type: "reasoning", text: "Partial thought" }, + { type: "text", text: "" }, + ], + }, + { role: "user", content: "Continue" }, + ], + selected, + {}, + ) + expect(messages.map((message) => message.role)).toEqual(["user", "assistant", "user"]) + expect(messages[1].providerOptions?.bedrock?.cachePoint).toEqual(cached ? { type: "default" } : undefined) + const provider = createAmazonBedrock({ + apiKey: "test-key", + region: "us-east-1", + fetch: Object.assign( + async (...args: Parameters) => { + const body = JSON.parse(String(args[1]?.body)) + expect(body.messages).toEqual([ + { role: "user", content: [{ text: "Think" }] }, + { + role: "assistant", + content: [{ text: "Earlier answer" }, ...(cached ? [{ cachePoint: { type: "default" } }] : [])], + }, + { + role: "user", + content: [{ text: "Continue" }, ...(cached ? [{ cachePoint: { type: "default" } }] : [])], + }, + ]) + return Response.json({ + output: { message: { role: "assistant", content: [{ text: "Recovered" }] } }, + stopReason: "end_turn", + usage: { inputTokens: 1, outputTokens: 1, totalTokens: 2 }, + }) + }, + { preconnect: () => undefined }, + ), + }) + const result = await generateText({ model: provider(selected.api.id), messages, maxRetries: 0 }) + expect(result.text).toBe("Recovered") + }) + } + + for (const namespace of ["bedrock", "amazon-bedrock", "custom-bedrock"]) { + for (const field of ["signature", "redactedContent", "redactedData"]) { + test(`preserves ${namespace}.${field} on empty reasoning`, () => { + const result = ProviderTransform.message( + [ + { + role: "assistant", + content: [{ type: "reasoning", text: "", providerOptions: { [namespace]: { [field]: "opaque" } } }], + }, + ], + namespace === "custom-bedrock" ? { ...model, providerID: namespace } : model, + {}, + ) + expect(result).toHaveLength(1) + expect(result[0].content).toEqual([ + { type: "reasoning", text: "", providerOptions: { bedrock: { [field]: "opaque" } } }, + ]) + }) + } + } + + test("uses stored provider metadata when it will overwrite the SDK namespace", () => { + const result = ProviderTransform.message( + [ + { + role: "assistant", + content: [ + { + type: "reasoning", + text: "Partial thought", + providerOptions: { "amazon-bedrock": {}, bedrock: { signature: "overwritten" } }, + }, + ], + }, + ], + model, + {}, + ) + expect(result).toEqual([]) + }) + + test("keeps text and tool calls next to unsigned reasoning", () => { + const content: ModelMessage["content"] = [ + { type: "text", text: "Answer" }, + { type: "tool-call", toolCallId: "call_1", toolName: "lookup", input: {} }, + ] + const result = ProviderTransform.message( + [{ role: "assistant", content: [{ type: "reasoning", text: "Partial thought" }, ...content] }], + model, + {}, + ) + expect(result).toHaveLength(1) + expect(result[0].content).toEqual(content) + }) + + test("does not remove unsigned reasoning for other providers", () => { + const content: ModelMessage["content"] = [{ type: "reasoning", text: "Partial thought" }] + const result = ProviderTransform.message([{ role: "assistant", content }], anthropicModel, {}) + expect(result[0].content).toEqual(content) + }) + }) + test("does not filter for non-anthropic providers", () => { const openaiModel = { ...anthropicModel, From 790fb5b86f3a5bfea919d426374f9086af4094bd Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 28 Aug 2026 01:50:15 +0200 Subject: [PATCH 183/271] feat(opencode): support Azure CLI authentication (#45079) Co-authored-by: neriousy <34747899+neriousy@users.noreply.github.com> --- packages/opencode/src/plugin/azure.ts | 231 ++++++++++- packages/opencode/src/provider/provider.ts | 1 + packages/opencode/test/plugin/azure.test.ts | 431 ++++++++++++++++++++ packages/web/src/content/docs/providers.mdx | 33 ++ 4 files changed, 693 insertions(+), 3 deletions(-) create mode 100644 packages/opencode/test/plugin/azure.test.ts diff --git a/packages/opencode/src/plugin/azure.ts b/packages/opencode/src/plugin/azure.ts index 62792b3bd..8dd893a0e 100644 --- a/packages/opencode/src/plugin/azure.ts +++ b/packages/opencode/src/plugin/azure.ts @@ -1,6 +1,98 @@ -import type { Hooks, PluginInput } from "@opencode-ai/plugin" +import { readFile } from "node:fs/promises" +import { homedir } from "node:os" +import { join } from "node:path" +import { InstallationVersion } from "@opencode-ai/core/installation/version" +import type { Hooks } from "@opencode-ai/plugin" +import type { Provider } from "@opencode-ai/sdk/v2" +import { Effect, Schema } from "effect" +import { OAUTH_DUMMY_KEY } from "../auth" + +const AZURE_COGNITIVE_SERVICES_SCOPE = "https://cognitiveservices.azure.com/.default" +const AZURE_FOUNDRY_SCOPE = "https://ai.azure.com/.default" +const AZURE_TOKEN_REFRESH_BUFFER = 60_000 + +const AzureCliToken = Schema.Struct({ + accessToken: Schema.NonEmptyString, + expires_on: Schema.optional(Schema.Number), + expiresOn: Schema.optional(Schema.NonEmptyString), +}) +const decodeAzureCliToken = Schema.decodeUnknownPromise(AzureCliToken) +const decodeAzureProfile = Schema.decodeUnknownPromise( + Schema.fromJsonString(Schema.Struct({ subscriptions: Schema.Array(Schema.Unknown) })), +) + +const decodeAzureAccounts = Schema.decodeUnknownPromise( + Schema.Array( + Schema.Struct({ + name: Schema.NonEmptyString, + resourceGroup: Schema.NonEmptyString, + }), + ), +) + +const decodeAzureDeployments = Schema.decodeUnknownPromise( + Schema.Array( + Schema.Struct({ + name: Schema.NonEmptyString, + properties: Schema.Struct({ + model: Schema.Struct({ + name: Schema.NonEmptyString, + }), + provisioningState: Schema.NonEmptyString, + }), + }), + ), +) + +type AzureCommand = { + quiet(): AzureCommand + json(): Promise +} + +type AzureShell = (strings: TemplateStringsArray, ...values: string[]) => AzureCommand +type AzureAccount = { readonly name: string; readonly resourceGroup: string } + +export async function AzureAuthPlugin(input: { $: AzureShell }): Promise { + const available = Boolean(Bun.which("az", { PATH: process.env.PATH })) + // Avoid launching Azure CLI on unrelated commands just because the executable is installed. + const signedIn = available + ? await readFile(join(process.env.AZURE_CONFIG_DIR ?? join(homedir(), ".azure"), "azureProfile.json"), "utf8") + .then((text) => decodeAzureProfile(text.replace(/^\uFEFF/, ""))) + .then((profile) => profile.subscriptions.length > 0) + .catch(() => false) + : false + const accounts = + !process.env.AZURE_RESOURCE_NAME && !process.env.AZURE_RESOURCE_GROUP && signedIn + ? await input.$`az cognitiveservices account list --output json --only-show-errors` + .quiet() + .json() + .then(decodeAzureAccounts) + .catch(() => []) + : [] + return createAzureAuthHooks(input.$, fetch, accounts, available) +} + +export function createAzureAuthHooks( + shell: AzureShell, + request: (input: RequestInfo | URL, init?: RequestInit) => Promise = fetch, + accounts: readonly AzureAccount[] = [], + available = true, +): Hooks { + const tokens = new Map() + async function token(scope: string) { + const cached = tokens.get(scope) + if (cached && cached.expires - Date.now() > AZURE_TOKEN_REFRESH_BUFFER) return cached.token + + const result = await decodeAzureCliToken( + await shell`az account get-access-token --scope ${scope} --output json`.quiet().json(), + ) + const expires = result.expires_on !== undefined ? result.expires_on * 1000 : Date.parse(result.expiresOn ?? "") + if (!Number.isFinite(expires)) throw new Error("Azure CLI returned an invalid token expiration") + const refreshed = { token: result.accessToken, expires } + tokens.set(scope, refreshed) + return refreshed.token + } -export async function AzureAuthPlugin(_input: PluginInput): Promise { const prompts = [] if (!process.env.AZURE_RESOURCE_NAME) { prompts.push({ @@ -10,17 +102,150 @@ export async function AzureAuthPlugin(_input: PluginInput): Promise { placeholder: "e.g. my-models", }) } + const oauthPrompts = + accounts.length > 0 && !process.env.AZURE_RESOURCE_NAME + ? [ + { + type: "select" as const, + key: "resourceSelection", + message: "Select Azure resource", + options: [ + ...accounts.map((account) => ({ + label: account.name, + value: account.name, + hint: account.resourceGroup, + })), + { label: "Enter another resource name", value: "__manual__" }, + ], + }, + { + type: "text" as const, + key: "resourceName", + message: "Enter Azure Resource Name", + placeholder: "e.g. my-models", + when: { key: "resourceSelection", op: "eq" as const, value: "__manual__" }, + }, + ] + : prompts - return { + const hooks: Hooks = { + provider: { + id: "azure", + async models(provider, context) { + if (context.auth?.type !== "oauth") return provider.models + const resource = context.auth.accountId + if (!resource) return {} + return discoverAzureModels(provider.models, resource, shell).catch((error: unknown) => { + Effect.runSync( + Effect.logWarning("Azure model discovery failed", { + resource, + error: error instanceof Error ? error.message : String(error), + }), + ) + return provider.models + }) + }, + }, auth: { provider: "azure", + async loader(getAuth) { + if ((await getAuth()).type !== "oauth") return {} + + return { + apiKey: OAUTH_DUMMY_KEY, + async fetch(input: RequestInfo | URL, init?: RequestInit) { + const headers = new Headers(input instanceof Request ? input.headers : undefined) + new Headers(init?.headers).forEach((value, key) => headers.set(key, value)) + headers.delete("api-key") + headers.delete("x-api-key") + headers.set("authorization", `Bearer ${await token(scopeForRequest(input))}`) + headers.set("User-Agent", `opencode/${InstallationVersion}`) + return request(input, { ...init, headers }) + }, + } + }, methods: [ { type: "api", label: "API key", prompts, }, + { + type: "oauth", + label: "Microsoft Entra ID (Azure CLI)", + prompts: oauthPrompts, + async authorize(inputs) { + return { + url: "", + instructions: "Sign in with `az login` before continuing.", + method: "auto", + callback: async () => { + const resourceName = + inputs?.resourceName ?? + (inputs?.resourceSelection === "__manual__" ? undefined : inputs?.resourceSelection) ?? + process.env.AZURE_RESOURCE_NAME + if (!resourceName) throw new Error("Azure Resource Name is required") + + await token(AZURE_COGNITIVE_SERVICES_SCOPE) + return { + type: "success", + access: OAUTH_DUMMY_KEY, + refresh: OAUTH_DUMMY_KEY, + expires: Date.now() + 365 * 24 * 60 * 60 * 1000, + accountId: resourceName, + } + }, + } + }, + }, ], }, } + if (!available && hooks.auth) hooks.auth.methods = hooks.auth.methods.filter((method) => method.type !== "oauth") + return hooks +} + +async function discoverAzureModels(models: Provider["models"], resourceName: string, shell: AzureShell) { + const resourceGroup = process.env.AZURE_RESOURCE_GROUP + const account = resourceGroup + ? { name: resourceName, resourceGroup } + : ( + await decodeAzureAccounts( + await shell`az cognitiveservices account list --output json --only-show-errors`.quiet().json(), + ) + ).find((account) => account.name.toLowerCase() === resourceName.toLowerCase()) + if (!account) throw new Error(`Azure resource "${resourceName}" was not found in the active subscription`) + + const deployments = await decodeAzureDeployments( + await shell`az cognitiveservices account deployment list --name ${account.name} --resource-group ${account.resourceGroup} --output json --only-show-errors` + .quiet() + .json(), + ) + const found = new Map() + deployments.forEach((deployment) => { + if (deployment.properties.provisioningState !== "Succeeded") return + const modelID = Object.keys(models).find( + (modelID) => modelID.toLowerCase() === deployment.properties.model.name.toLowerCase(), + ) + if (!modelID) return + const id = found.has(modelID) ? deployment.name : modelID + found.set(id, { + ...models[modelID], + id, + name: id === modelID ? models[modelID].name : `${models[modelID].name} (${deployment.name})`, + api: { + ...models[modelID].api, + id: deployment.name, + }, + }) + }) + return Object.fromEntries(found) +} + +function scopeForRequest(input: RequestInfo | URL) { + const url = new URL(input instanceof Request ? input.url : input) + if (url.hostname.endsWith(".services.ai.azure.com") && !url.pathname.startsWith("/models")) { + return AZURE_FOUNDRY_SCOPE + } + return AZURE_COGNITIVE_SERVICES_SCOPE } diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 0f8cbd23f..b5980f158 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -250,6 +250,7 @@ function custom(dep: CustomDep): Record { return [ provider.options?.resourceName, auth?.type === "api" ? auth.metadata?.resourceName : undefined, + auth?.type === "oauth" ? auth.accountId : undefined, env["AZURE_RESOURCE_NAME"], ].find((name) => typeof name === "string" && name.trim() !== "") }) diff --git a/packages/opencode/test/plugin/azure.test.ts b/packages/opencode/test/plugin/azure.test.ts new file mode 100644 index 000000000..efb4c94f4 --- /dev/null +++ b/packages/opencode/test/plugin/azure.test.ts @@ -0,0 +1,431 @@ +import { afterEach, describe, expect, test } from "bun:test" +import { chmod } from "node:fs/promises" +import path from "node:path" +import { tmpdir } from "../fixture/fixture" +import type { Hooks } from "@opencode-ai/plugin" +import type { Auth, Provider } from "@opencode-ai/sdk/v2" +import { OAUTH_DUMMY_KEY } from "../../src/auth" +import { AzureAuthPlugin, createAzureAuthHooks } from "../../src/plugin/azure" + +const resourceName = process.env.AZURE_RESOURCE_NAME +const resourceGroup = process.env.AZURE_RESOURCE_GROUP +const azureConfig = process.env.AZURE_CONFIG_DIR +const originalPath = process.env.PATH + +afterEach(() => { + if (resourceName === undefined) delete process.env.AZURE_RESOURCE_NAME + else process.env.AZURE_RESOURCE_NAME = resourceName + if (resourceGroup === undefined) delete process.env.AZURE_RESOURCE_GROUP + else process.env.AZURE_RESOURCE_GROUP = resourceGroup + if (azureConfig === undefined) delete process.env.AZURE_CONFIG_DIR + else process.env.AZURE_CONFIG_DIR = azureConfig + if (originalPath === undefined) delete process.env.PATH + else process.env.PATH = originalPath +}) + +const oauth: Auth = { + type: "oauth", + access: OAUTH_DUMMY_KEY, + refresh: OAUTH_DUMMY_KEY, + expires: Date.now() + 60 * 60 * 1000, + accountId: "test-resource", +} + +const provider: Provider = { + id: "azure", + name: "Azure", + source: "custom", + env: [], + options: {}, + models: {}, +} + +function oauthMethod(hooks: Hooks) { + const method = hooks.auth?.methods.find((method) => method.type === "oauth") + if (!method || method.type !== "oauth") throw new Error("Azure OAuth method is missing") + return method +} + +function loader(hooks: Hooks) { + if (!hooks.auth?.loader) throw new Error("Azure auth loader is missing") + return hooks.auth.loader +} + +function customFetch(options: Record) { + const result = options["fetch"] + if (typeof result !== "function") throw new Error("Azure custom fetch is missing") + return async (input: RequestInfo | URL, init?: RequestInit) => { + const response: unknown = await Reflect.apply(result, undefined, [input, init]) + if (!(response instanceof Response)) throw new Error("Azure custom fetch returned an invalid response") + return response + } +} + +function models(...ids: string[]): Provider["models"] { + return Object.fromEntries( + ids.map((id) => [ + id, + { + id, + providerID: "azure", + name: id, + family: "", + api: { id, url: "", npm: "@ai-sdk/azure" }, + status: "active", + headers: {}, + options: {}, + cost: { input: 0, output: 0, cache: { read: 0, write: 0 } }, + limit: { context: 0, output: 0 }, + capabilities: { + temperature: true, + reasoning: false, + attachment: false, + toolcall: true, + input: { text: true, audio: false, image: false, video: false, pdf: false }, + output: { text: true, audio: false, image: false, video: false, pdf: false }, + interleaved: false, + }, + release_date: "", + variants: {}, + }, + ]), + ) +} + +function azureShell(scopes: string[]) { + return (_strings: TemplateStringsArray, ...values: string[]) => { + const output = { + quiet: () => output, + json: async () => { + const scope = values[0] + scopes.push(scope) + return { + accessToken: `${scope}-token`, + expires_on: Math.floor((Date.now() + 60 * 60 * 1000) / 1000), + } + }, + } + return output + } +} + +function discoveryShell(accounts: unknown, deployments: unknown, commands: string[]) { + return (strings: TemplateStringsArray, ...values: string[]) => { + const command = String.raw(strings, ...values) + commands.push(command) + const output = { + quiet: () => output, + json: async () => (command.includes("deployment list") ? deployments : accounts), + } + return output + } +} + +describe("plugin.azure", () => { + for (const profile of [ + { name: "missing", content: undefined, signedIn: false }, + { name: "logged out", content: '{"subscriptions":[]}', signedIn: false }, + { name: "signed in with BOM", content: '\uFEFF{"subscriptions":[{}]}', signedIn: true }, + ]) { + test(`only lists resources for a cached Azure login (${profile.name})`, async () => { + await using tmp = await tmpdir() + const executable = path.join(tmp.path, process.platform === "win32" ? "az.cmd" : "az") + await Bun.write(executable, process.platform === "win32" ? "@exit /b 0\r\n" : "#!/bin/sh\nexit 0\n") + await chmod(executable, 0o755) + process.env.PATH = `${tmp.path}${path.delimiter}${originalPath}` + process.env.AZURE_CONFIG_DIR = path.join(tmp.path, "azure-cli") + if (profile.content) + await Bun.write(path.join(process.env.AZURE_CONFIG_DIR, "azureProfile.json"), profile.content) + delete process.env.AZURE_RESOURCE_NAME + delete process.env.AZURE_RESOURCE_GROUP + const commands: string[] = [] + + const hooks = await AzureAuthPlugin({ + $: discoveryShell([{ name: "test-resource", resourceGroup: "test-group" }], [], commands), + }) + + expect(commands).toHaveLength(profile.signedIn ? 1 : 0) + expect(hooks.auth?.methods.some((method) => method.type === "oauth")).toBe(true) + if (profile.signedIn) expect(oauthMethod(hooks).prompts?.[0].type).toBe("select") + }) + } + + test("keeps the existing API-key method and adds Entra ID", () => { + delete process.env.AZURE_RESOURCE_NAME + const hooks = createAzureAuthHooks(azureShell([])) + + expect(hooks.auth?.provider).toBe("azure") + expect(hooks.provider?.id).toBe("azure") + expect(hooks.auth?.methods.map((method) => [method.type, method.label])).toEqual([ + ["api", "API key"], + ["oauth", "Microsoft Entra ID (Azure CLI)"], + ]) + expect(hooks.auth?.methods[0]).toEqual({ + type: "api", + label: "API key", + prompts: [ + { + type: "text", + key: "resourceName", + message: "Enter Azure Resource Name", + placeholder: "e.g. my-models", + }, + ], + }) + expect(hooks.auth?.methods[1].prompts).toEqual(hooks.auth?.methods[0].prompts) + }) + + test("hides Azure CLI authentication when the Azure CLI is not installed", () => { + const hooks = createAzureAuthHooks(azureShell([]), fetch, [], false) + + expect(hooks.auth?.methods.map((method) => method.type)).toEqual(["api"]) + }) + + test("lists Azure CLI resources and allows entering another resource", () => { + delete process.env.AZURE_RESOURCE_NAME + const hooks = createAzureAuthHooks(azureShell([]), fetch, [ + { name: "first-resource", resourceGroup: "first-group" }, + { name: "second-resource", resourceGroup: "second-group" }, + ]) + + expect(oauthMethod(hooks).prompts).toEqual([ + { + type: "select", + key: "resourceSelection", + message: "Select Azure resource", + options: [ + { label: "first-resource", value: "first-resource", hint: "first-group" }, + { label: "second-resource", value: "second-resource", hint: "second-group" }, + { label: "Enter another resource name", value: "__manual__" }, + ], + }, + { + type: "text", + key: "resourceName", + message: "Enter Azure Resource Name", + placeholder: "e.g. my-models", + when: { key: "resourceSelection", op: "eq", value: "__manual__" }, + }, + ]) + }) + + test("uses the selected Azure CLI resource", async () => { + const hooks = createAzureAuthHooks(azureShell([]), fetch, [ + { name: "selected-resource", resourceGroup: "selected-group" }, + ]) + const authorization = await oauthMethod(hooks).authorize({ resourceSelection: "selected-resource" }) + if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") + + expect(await authorization.callback()).toMatchObject({ type: "success", accountId: "selected-resource" }) + }) + + test("uses a manually entered Azure resource that was not listed", async () => { + const hooks = createAzureAuthHooks(azureShell([]), fetch, [{ name: "listed-resource", resourceGroup: "group" }]) + const authorization = await oauthMethod(hooks).authorize({ + resourceSelection: "__manual__", + resourceName: "unlisted-resource", + }) + if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") + + expect(await authorization.callback()).toMatchObject({ type: "success", accountId: "unlisted-resource" }) + }) + + test("checks Azure CLI and stores the resource name", async () => { + const scopes: string[] = [] + const hooks = createAzureAuthHooks(azureShell(scopes)) + const authorization = await oauthMethod(hooks).authorize({ resourceName: "test-resource" }) + if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") + + expect(await authorization.callback()).toMatchObject({ + type: "success", + access: OAUTH_DUMMY_KEY, + refresh: OAUTH_DUMMY_KEY, + accountId: "test-resource", + }) + expect(scopes).toEqual(["https://cognitiveservices.azure.com/.default"]) + }) + + test("supports Azure CLI versions that only provide expiresOn", async () => { + const hooks = createAzureAuthHooks(() => { + const output = { + quiet: () => output, + json: async () => ({ + accessToken: "legacy-token", + expiresOn: new Date(Date.now() + 60 * 60 * 1000).toISOString(), + }), + } + return output + }) + const authorization = await oauthMethod(hooks).authorize({ resourceName: "test-resource" }) + if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") + + expect(await authorization.callback()).toMatchObject({ type: "success", accountId: "test-resource" }) + }) + + test("rejects Azure CLI tokens without a usable expiration", async () => { + const hooks = createAzureAuthHooks(() => { + const output = { + quiet: () => output, + json: async () => ({ accessToken: "invalid-token" }), + } + return output + }) + const authorization = await oauthMethod(hooks).authorize({ resourceName: "test-resource" }) + if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") + + await expect(authorization.callback()).rejects.toThrow("Azure CLI returned an invalid token expiration") + }) + + test("discovers deployed models through Azure CLI", async () => { + delete process.env.AZURE_RESOURCE_GROUP + const commands: string[] = [] + const hooks = createAzureAuthHooks( + discoveryShell( + [{ name: "test-resource", resourceGroup: "test-group" }], + [ + { + name: "gpt-production", + properties: { model: { name: "gpt-5-mini" }, provisioningState: "Succeeded" }, + }, + { + name: "DeepSeek-V4-Flash", + properties: { model: { name: "DeepSeek-V4-Flash" }, provisioningState: "Succeeded" }, + }, + { + name: "phi-production", + properties: { model: { name: "Phi-4-mini-instruct" }, provisioningState: "Succeeded" }, + }, + { + name: "gpt-5-nano", + properties: { model: { name: "gpt-5-nano" }, provisioningState: "Creating" }, + }, + ], + commands, + ), + ) + const list = hooks.provider?.models + if (!list) throw new Error("Azure provider model hook is missing") + + const result = await list( + { + ...provider, + models: models("gpt-5-mini", "deepseek-v4-flash", "phi-4-mini", "phi-4-mini-instruct", "gpt-5-nano"), + }, + { auth: oauth }, + ) + + expect(Object.keys(result)).toEqual(["gpt-5-mini", "deepseek-v4-flash", "phi-4-mini-instruct"]) + expect(result["gpt-5-mini"].api.id).toBe("gpt-production") + expect(result["deepseek-v4-flash"].api.id).toBe("DeepSeek-V4-Flash") + expect(result["phi-4-mini-instruct"].api.id).toBe("phi-production") + expect(commands).toEqual([ + "az cognitiveservices account list --output json --only-show-errors", + "az cognitiveservices account deployment list --name test-resource --resource-group test-group --output json --only-show-errors", + ]) + }) + + test("discovers models directly when the resource group is configured", async () => { + process.env.AZURE_RESOURCE_GROUP = "restricted-group" + const commands: string[] = [] + const hooks = createAzureAuthHooks( + discoveryShell( + [], + [{ name: "gpt-production", properties: { model: { name: "gpt-5-mini" }, provisioningState: "Succeeded" } }], + commands, + ), + ) + const list = hooks.provider?.models + if (!list) throw new Error("Azure provider model hook is missing") + + const result = await list({ ...provider, models: models("gpt-5-mini") }, { auth: oauth }) + + expect(result["gpt-5-mini"].api.id).toBe("gpt-production") + expect(commands).toEqual([ + "az cognitiveservices account deployment list --name test-resource --resource-group restricted-group --output json --only-show-errors", + ]) + }) + + test("preserves multiple deployments of the same model", async () => { + delete process.env.AZURE_RESOURCE_GROUP + const hooks = createAzureAuthHooks( + discoveryShell( + [{ name: "test-resource", resourceGroup: "test-group" }], + [ + { name: "gpt-production", properties: { model: { name: "gpt-5-mini" }, provisioningState: "Succeeded" } }, + { name: "gpt-staging", properties: { model: { name: "gpt-5-mini" }, provisioningState: "Succeeded" } }, + ], + [], + ), + ) + const list = hooks.provider?.models + if (!list) throw new Error("Azure provider model hook is missing") + + const result = await list({ ...provider, models: models("gpt-5-mini") }, { auth: oauth }) + + expect(Object.keys(result)).toEqual(["gpt-5-mini", "gpt-staging"]) + expect(result["gpt-5-mini"].api.id).toBe("gpt-production") + expect(result["gpt-staging"].api.id).toBe("gpt-staging") + expect(result["gpt-staging"].name).toBe("gpt-5-mini (gpt-staging)") + }) + + test("keeps configured models available when Azure discovery fails", async () => { + const hooks = createAzureAuthHooks(() => { + const output = { + quiet: () => output, + json: async () => { + throw new Error("Azure CLI failed") + }, + } + return output + }) + const list = hooks.provider?.models + if (!list) throw new Error("Azure provider model hook is missing") + + const catalog = models("gpt-5-mini") + expect(await list({ ...provider, models: catalog }, { auth: oauth })).toBe(catalog) + }) + + test("does not change API-key loading", async () => { + const scopes: string[] = [] + const hooks = createAzureAuthHooks(azureShell(scopes)) + const catalog = models("gpt-5-mini") + const list = hooks.provider?.models + if (!list) throw new Error("Azure provider model hook is missing") + + expect(await loader(hooks)(async () => ({ type: "api", key: "test-key" }), provider)).toEqual({}) + expect(await list({ ...provider, models: catalog }, { auth: { type: "api", key: "test-key" } })).toBe(catalog) + expect(scopes).toEqual([]) + }) + + test("uses Azure CLI bearer tokens for Azure inference endpoints", async () => { + const scopes: string[] = [] + const requests: Headers[] = [] + const hooks = createAzureAuthHooks(azureShell(scopes), async (_input, init) => { + requests.push(new Headers(init?.headers)) + return new Response(null, { status: 200 }) + }) + const options = await loader(hooks)(async () => oauth, provider) + const request = customFetch(options) + + await request("https://test-resource.openai.azure.com/openai/v1/responses", { + headers: { "api-key": OAUTH_DUMMY_KEY, "x-keep": "yes" }, + }) + await request("https://test-resource.services.ai.azure.com/models/chat/completions", { + headers: { Authorization: `Bearer ${OAUTH_DUMMY_KEY}` }, + }) + await request("https://test-resource.services.ai.azure.com/anthropic/v1/messages", { + headers: { "x-api-key": OAUTH_DUMMY_KEY }, + }) + + expect(scopes).toEqual(["https://cognitiveservices.azure.com/.default", "https://ai.azure.com/.default"]) + expect(requests.map((headers) => headers.get("authorization"))).toEqual([ + "Bearer https://cognitiveservices.azure.com/.default-token", + "Bearer https://cognitiveservices.azure.com/.default-token", + "Bearer https://ai.azure.com/.default-token", + ]) + expect(requests[0].get("api-key")).toBeNull() + expect(requests[0].get("x-keep")).toBe("yes") + expect(requests[2].get("x-api-key")).toBeNull() + expect(requests.every((headers) => headers.get("user-agent")?.startsWith("opencode/"))).toBe(true) + }) +}) diff --git a/packages/web/src/content/docs/providers.mdx b/packages/web/src/content/docs/providers.mdx index 331a55ec6..877f91c4e 100644 --- a/packages/web/src/content/docs/providers.mdx +++ b/packages/web/src/content/docs/providers.mdx @@ -457,6 +457,39 @@ If you encounter "I'm sorry, but I cannot assist with that request" errors, try /models ``` +#### Microsoft Entra ID (Azure CLI) + +You can use your Azure CLI session instead of an API key. [Install the Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli), run `az login`, then run `/connect`, select **Azure**, and choose **Microsoft Entra ID (Azure CLI)**. OpenCode lists the Resources visible to your Azure CLI session and their Resource groups. Select a Resource, or choose **Enter another resource name** to enter one manually. If resource listing is unavailable, OpenCode asks for the name directly. Use `az login --tenant TENANT_ID` if the Resource belongs to a different tenant. + +Find the Resource name by opening your Azure OpenAI or Foundry Resource in the [Azure portal](https://portal.azure.com/) or [Microsoft Foundry](https://ai.azure.com/). It is also the first part of the endpoint: `my-models` in `https://my-models.openai.azure.com/` or `https://my-models.services.ai.azure.com/`. If your identity can list Resources, you can also find their names and Resource groups with: + +```bash +az cognitiveservices account list \ + --query "[].{name:name,resourceGroup:resourceGroup}" \ + --output table +``` + +OpenCode finds the Resource group and discovers its deployed models from the active Azure CLI subscription. Run `az account set --subscription NAME_OR_ID` first if the Resource is in a different subscription. Set `AZURE_RESOURCE_GROUP` to skip listing the subscription and query a known Resource directly. + +Model discovery requires Azure control-plane permissions, which are separate from inference permissions. If your identity cannot list deployments, OpenCode keeps the Azure model catalog available instead. Select a model whose name matches your deployment, or configure its deployment name explicitly: + +```json title="opencode.json" +{ + "$schema": "https://opencode.ai/config.json", + "provider": { + "azure": { + "models": { + "gpt-5-mini": { + "id": "gpt-production" + } + } + } + } +} +``` + +Assign your identity the inference role required by the deployment: **Cognitive Services OpenAI User** for Azure OpenAI models or **Cognitive Services User** for other Foundry models. OpenCode refreshes access tokens through the Azure CLI, including versions earlier than 2.54.0, so you only need to sign in again when the CLI session expires. + --- ### Azure Cognitive Services From 15537a41d2a0514f7040e1c4128b7846cdc19ce0 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 20:08:12 -0400 Subject: [PATCH 184/271] fix(opencode): compare config snapshots as JSON (#45784) Co-authored-by: jlongster <17031+jlongster@users.noreply.github.com> --- packages/opencode/test/config/snapshot.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/opencode/test/config/snapshot.ts b/packages/opencode/test/config/snapshot.ts index d184432fb..d206570fd 100644 --- a/packages/opencode/test/config/snapshot.ts +++ b/packages/opencode/test/config/snapshot.ts @@ -1,6 +1,8 @@ import { expect } from "bun:test" +import { ConfigParse } from "../../src/config/parse" export async function snapshot(file: string, actual: string) { + const value = ConfigParse.jsonc(actual, file) if (process.env.UPDATE_CONFIG_FIXTURES === "1") await Bun.write(file, actual) - expect(actual).toBe(await Bun.file(file).text()) + expect(value).toEqual(ConfigParse.jsonc(await Bun.file(file).text(), file)) } From 19db518e0a851160cc77230320125563f4cb117f Mon Sep 17 00:00:00 2001 From: opencode Date: Fri, 28 Aug 2026 04:10:10 +0000 Subject: [PATCH 185/271] sync release versions for v1.18.24 --- bun.lock | 56 ++++++++++----------- packages/app/package.json | 2 +- packages/cli/package.json | 2 +- packages/codemode/package.json | 2 +- packages/console/app/package.json | 2 +- packages/console/core/package.json | 2 +- packages/console/function/package.json | 2 +- packages/console/mail/package.json | 2 +- packages/console/support/package.json | 2 +- packages/core/package.json | 2 +- packages/desktop/package.json | 2 +- packages/effect-drizzle-sqlite/package.json | 2 +- packages/effect-sqlite-node/package.json | 2 +- packages/enterprise/package.json | 2 +- packages/function/package.json | 2 +- packages/http-recorder/package.json | 2 +- packages/llm/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/server/package.json | 2 +- packages/session-ui/package.json | 2 +- packages/slack/package.json | 2 +- packages/stats/app/package.json | 2 +- packages/stats/core/package.json | 2 +- packages/stats/server/package.json | 2 +- packages/tui/package.json | 2 +- packages/ui/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 30 files changed, 57 insertions(+), 57 deletions(-) diff --git a/bun.lock b/bun.lock index 740abb799..ec7c2c1eb 100644 --- a/bun.lock +++ b/bun.lock @@ -29,7 +29,7 @@ }, "packages/app": { "name": "@opencode-ai/app", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", @@ -96,7 +96,7 @@ }, "packages/cli": { "name": "@opencode-ai/cli", - "version": "1.18.23", + "version": "1.18.24", "bin": { "lildax": "./bin/lildax.cjs", }, @@ -144,7 +144,7 @@ }, "packages/codemode": { "name": "@opencode-ai/codemode", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "acorn": "8.15.0", "effect": "catalog:", @@ -158,7 +158,7 @@ }, "packages/console/app": { "name": "@opencode-ai/console-app", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@ibm/plex": "6.4.1", @@ -194,7 +194,7 @@ }, "packages/console/core": { "name": "@opencode-ai/console-core", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@jsx-email/render": "1.1.1", @@ -221,7 +221,7 @@ }, "packages/console/function": { "name": "@opencode-ai/console-function", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/openai": "3.0.48", @@ -244,7 +244,7 @@ }, "packages/console/mail": { "name": "@opencode-ai/console-mail", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", @@ -268,7 +268,7 @@ }, "packages/console/support": { "name": "@opencode-ai/console-support", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@opencode-ai/console-core": "workspace:*", @@ -288,7 +288,7 @@ }, "packages/core": { "name": "@opencode-ai/core", - "version": "1.18.23", + "version": "1.18.24", "bin": { "opencode": "./bin/opencode", }, @@ -382,7 +382,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@zip.js/zip.js": "2.7.62", "drizzle-orm": "catalog:", @@ -436,7 +436,7 @@ }, "packages/effect-drizzle-sqlite": { "name": "@opencode-ai/effect-drizzle-sqlite", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "drizzle-orm": "catalog:", "effect": "catalog:", @@ -450,7 +450,7 @@ }, "packages/effect-sqlite-node": { "name": "@opencode-ai/effect-sqlite-node", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "effect": "catalog:", }, @@ -462,7 +462,7 @@ }, "packages/enterprise": { "name": "@opencode-ai/enterprise", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@hono/standard-validator": "catalog:", "@opencode-ai/core": "workspace:*", @@ -494,7 +494,7 @@ }, "packages/function": { "name": "@opencode-ai/function", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "catalog:", @@ -510,7 +510,7 @@ }, "packages/http-recorder": { "name": "@opencode-ai/http-recorder", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@effect/platform-node": "4.0.0-beta.83", "@effect/platform-node-shared": "4.0.0-beta.83", @@ -541,7 +541,7 @@ }, "packages/llm": { "name": "@opencode-ai/llm", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@opencode-ai/schema": "workspace:*", "@smithy/eventstream-codec": "4.2.14", @@ -560,7 +560,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "1.18.23", + "version": "1.18.24", "bin": { "opencode": "./bin/opencode", }, @@ -691,7 +691,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@ai-sdk/provider": "3.0.8", "@opencode-ai/sdk": "workspace:*", @@ -767,7 +767,7 @@ }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "cross-spawn": "catalog:", }, @@ -782,7 +782,7 @@ }, "packages/server": { "name": "@opencode-ai/server", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", @@ -797,7 +797,7 @@ }, "packages/session-ui": { "name": "@opencode-ai/session-ui", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@kobalte/core": "catalog:", "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13-v2.tgz", @@ -837,7 +837,7 @@ }, "packages/slack": { "name": "@opencode-ai/slack", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@opencode-ai/sdk": "workspace:*", "@slack/bolt": "^3.17.1", @@ -850,7 +850,7 @@ }, "packages/stats/app": { "name": "@opencode-ai/stats-app", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@ibm/plex": "6.4.1", "@kobalte/core": "catalog:", @@ -877,7 +877,7 @@ }, "packages/stats/core": { "name": "@opencode-ai/stats-core", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@aws-sdk/client-athena": "3.933.0", "@planetscale/database": "1.19.0", @@ -896,7 +896,7 @@ }, "packages/stats/server": { "name": "@opencode-ai/stats-server", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@aws-sdk/client-firehose": "3.933.0", "@effect/platform-node": "catalog:", @@ -938,7 +938,7 @@ }, "packages/tui": { "name": "@opencode-ai/tui", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", @@ -965,7 +965,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@kobalte/core": "catalog:", "@pierre/diffs": "catalog:", @@ -1016,7 +1016,7 @@ }, "packages/web": { "name": "@opencode-ai/web", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", diff --git a/packages/app/package.json b/packages/app/package.json index 044e0cd9e..fa7e969d0 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "1.18.23", + "version": "1.18.24", "description": "", "type": "module", "exports": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 4c77ac3c2..cdd74c067 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/cli", - "version": "1.18.23", + "version": "1.18.24", "type": "module", "license": "MIT", "bin": { diff --git a/packages/codemode/package.json b/packages/codemode/package.json index cbfb81c45..9772aeee2 100644 --- a/packages/codemode/package.json +++ b/packages/codemode/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/codemode", - "version": "1.18.23", + "version": "1.18.24", "description": "Effect-native confined code execution over schema-described tools", "private": true, "type": "module", diff --git a/packages/console/app/package.json b/packages/console/app/package.json index ca4db3c70..908421539 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-app", - "version": "1.18.23", + "version": "1.18.24", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/console/core/package.json b/packages/console/core/package.json index 78b0a05e3..729ce531f 100644 --- a/packages/console/core/package.json +++ b/packages/console/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/console-core", - "version": "1.18.23", + "version": "1.18.24", "private": true, "type": "module", "license": "MIT", diff --git a/packages/console/function/package.json b/packages/console/function/package.json index 2848ac685..9afac31c0 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-function", - "version": "1.18.23", + "version": "1.18.24", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json index 6d81e0bbf..09e59abd7 100644 --- a/packages/console/mail/package.json +++ b/packages/console/mail/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-mail", - "version": "1.18.23", + "version": "1.18.24", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", diff --git a/packages/console/support/package.json b/packages/console/support/package.json index 1b12ec028..f1a837f14 100644 --- a/packages/console/support/package.json +++ b/packages/console/support/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-support", - "version": "1.18.23", + "version": "1.18.24", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/core/package.json b/packages/core/package.json index ba3653df8..c185ce923 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.23", + "version": "1.18.24", "name": "@opencode-ai/core", "type": "module", "license": "MIT", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index b2c975f2b..91cbafd1e 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop", "private": true, - "version": "1.18.23", + "version": "1.18.24", "type": "module", "license": "MIT", "homepage": "https://opencode.ai", diff --git a/packages/effect-drizzle-sqlite/package.json b/packages/effect-drizzle-sqlite/package.json index d289ec31f..ed29249c6 100644 --- a/packages/effect-drizzle-sqlite/package.json +++ b/packages/effect-drizzle-sqlite/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.23", + "version": "1.18.24", "name": "@opencode-ai/effect-drizzle-sqlite", "type": "module", "license": "MIT", diff --git a/packages/effect-sqlite-node/package.json b/packages/effect-sqlite-node/package.json index 572b7c5e8..0de3380ca 100644 --- a/packages/effect-sqlite-node/package.json +++ b/packages/effect-sqlite-node/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.23", + "version": "1.18.24", "name": "@opencode-ai/effect-sqlite-node", "type": "module", "license": "MIT", diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json index b5fa9476f..6f38a4ce2 100644 --- a/packages/enterprise/package.json +++ b/packages/enterprise/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/enterprise", - "version": "1.18.23", + "version": "1.18.24", "private": true, "type": "module", "license": "MIT", diff --git a/packages/function/package.json b/packages/function/package.json index 85771f635..c5da6ac18 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/function", - "version": "1.18.23", + "version": "1.18.24", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json index 07ed4c961..6a4f06694 100644 --- a/packages/http-recorder/package.json +++ b/packages/http-recorder/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.23", + "version": "1.18.24", "name": "@opencode-ai/http-recorder", "description": "Record and replay Effect HTTP client traffic with deterministic cassettes", "type": "module", diff --git a/packages/llm/package.json b/packages/llm/package.json index b18e9ceae..bbd432a22 100644 --- a/packages/llm/package.json +++ b/packages/llm/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.23", + "version": "1.18.24", "name": "@opencode-ai/llm", "type": "module", "license": "MIT", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index a8b4ee7a8..007c0bcad 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.23", + "version": "1.18.24", "name": "opencode", "type": "module", "license": "MIT", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index c39a8c9d8..9f3de7c8c 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "1.18.23", + "version": "1.18.24", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 64ec112cd..ae7135ac9 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "1.18.23", + "version": "1.18.24", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index c5f24b3ff..d33ddbe09 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/server", - "version": "1.18.23", + "version": "1.18.24", "private": true, "type": "module", "license": "MIT", diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json index 341bc8272..a373c2ab0 100644 --- a/packages/session-ui/package.json +++ b/packages/session-ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/session-ui", - "version": "1.18.23", + "version": "1.18.24", "private": true, "type": "module", "license": "MIT", diff --git a/packages/slack/package.json b/packages/slack/package.json index 46eac6d1f..a2d71e2b5 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/slack", - "version": "1.18.23", + "version": "1.18.24", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index 472999056..f35c12961 100644 --- a/packages/stats/app/package.json +++ b/packages/stats/app/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-app", - "version": "1.18.23", + "version": "1.18.24", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json index f4ab6c5ca..882f51f40 100644 --- a/packages/stats/core/package.json +++ b/packages/stats/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-core", - "version": "1.18.23", + "version": "1.18.24", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json index 12da00b36..135e884b3 100644 --- a/packages/stats/server/package.json +++ b/packages/stats/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-server", - "version": "1.18.23", + "version": "1.18.24", "private": true, "type": "module", "license": "MIT", diff --git a/packages/tui/package.json b/packages/tui/package.json index 08557e636..cc211c1d6 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/tui", - "version": "1.18.23", + "version": "1.18.24", "private": true, "type": "module", "license": "MIT", diff --git a/packages/ui/package.json b/packages/ui/package.json index 2a8dc93df..a62dc8dbf 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/ui", - "version": "1.18.23", + "version": "1.18.24", "type": "module", "license": "MIT", "repository": { diff --git a/packages/web/package.json b/packages/web/package.json index f3a3f4ab9..de7043fc9 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,7 +2,7 @@ "name": "@opencode-ai/web", "type": "module", "license": "MIT", - "version": "1.18.23", + "version": "1.18.24", "scripts": { "dev": "astro dev", "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index cae6ef427..f7526a368 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "1.18.23", + "version": "1.18.24", "publisher": "sst-dev", "repository": { "type": "git", From 8a7cc0c0ffa3a1b70ca0211a425434771402d673 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 28 Aug 2026 13:17:02 +0800 Subject: [PATCH 186/271] docs(go): add Qwen3.8 Flash (#45836) --- packages/console/app/src/routes/go/index.tsx | 3 ++- .../app/src/routes/workspace/[id]/go/lite-section.tsx | 1 + packages/web/src/content/docs/ar/go.mdx | 6 ++++++ packages/web/src/content/docs/bs/go.mdx | 6 ++++++ packages/web/src/content/docs/da/go.mdx | 6 ++++++ packages/web/src/content/docs/de/go.mdx | 6 ++++++ packages/web/src/content/docs/es/go.mdx | 6 ++++++ packages/web/src/content/docs/fr/go.mdx | 6 ++++++ packages/web/src/content/docs/go.mdx | 6 ++++++ packages/web/src/content/docs/it/go.mdx | 6 ++++++ packages/web/src/content/docs/ja/go.mdx | 6 ++++++ packages/web/src/content/docs/ko/go.mdx | 6 ++++++ packages/web/src/content/docs/nb/go.mdx | 6 ++++++ packages/web/src/content/docs/pl/go.mdx | 6 ++++++ packages/web/src/content/docs/pt-br/go.mdx | 6 ++++++ packages/web/src/content/docs/ru/go.mdx | 6 ++++++ packages/web/src/content/docs/th/go.mdx | 6 ++++++ packages/web/src/content/docs/tr/go.mdx | 6 ++++++ packages/web/src/content/docs/zh-cn/go.mdx | 6 ++++++ packages/web/src/content/docs/zh-tw/go.mdx | 6 ++++++ 20 files changed, 111 insertions(+), 1 deletion(-) diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index 7d3170331..423f98b95 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -36,6 +36,7 @@ const models = [ { name: "MiMo-V2.5-Pro", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "MiMo-V2.5", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Qwen3.8 Max", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, + { name: "Qwen3.8 Flash", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Qwen3.7 Max", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Qwen3.7 Plus", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Qwen3.6 Plus", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, @@ -71,12 +72,12 @@ function LimitsGraph(props: { href: string }) { const baseline = 100 const graph = [ { id: "kimi-k3", name: "Kimi K3", req: 110, d: "50ms" }, - { id: "qwen3.8-max", name: "Qwen3.8 Max", req: 160, d: "90ms" }, { id: "grok-4.6", name: "Grok 4.6", req: 169, d: "75ms" }, { id: "gpt-5.6-luna", name: "GPT 5.6 Luna", req: 2050, d: "290ms" }, { id: "glm-5.3-flash", name: "GLM-5.3-Flash", req: 3160, baseReq: 1580, bonus: "2x usage", d: "100ms" }, { id: "minimax-m3", name: "MiniMax M3", req: 3200, d: "210ms" }, { id: "qwen3.7-plus", name: "Qwen3.7 Plus", req: 4300, d: "300ms" }, + { id: "qwen3.8-flash", name: "Qwen3.8 Flash", req: 5400, d: "315ms" }, { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", req: 7600, d: "330ms" }, { id: "longcat-2.0", name: "LongCat-2.0", req: 11400, d: "335ms" }, { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100, d: "340ms" }, diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index 1770ee307..2c762920d 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -654,6 +654,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {

      • MiniMax M2.7
      • Muse Spark 1.2 Contributor
      • Qwen3.8 Max
      • +
      • Qwen3.8 Flash
      • Qwen3.7 Max
      • Qwen3.7 Plus
      • Qwen3.6 Plus
      • diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 6d74e4b66..b2094f5c1 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -65,6 +65,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([مناطق محدودة](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -107,6 +108,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -131,6 +133,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر - MiniMax M2.7 — ‏300 input، و55,000 cached، و125 output tokens لكل طلب - Muse Spark 1.2 Contributor — ‏620 input، و71,400 cached، و300 output tokens لكل طلب - Qwen3.8 Max — ‏420 input، و66,000 cached، و200 output tokens لكل طلب +- Qwen3.8 Flash — ‏600 input، و58,000 cached، و200 output tokens لكل طلب - Qwen3.7 Max — ‏420 input، و66,000 cached، و200 output tokens لكل طلب - Qwen3.7 Plus — ‏500 input، و57,000 cached، و190 output tokens لكل طلب - Qwen3.6 Plus — ‏500 input، و57,000 cached، و190 output tokens لكل طلب @@ -161,6 +164,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -232,6 +236,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -268,6 +273,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | غير مستخدَمة | 0 أيام | | MiMo-V2.5 | غير مستخدَمة | 0 أيام | | Qwen3.8 Max | غير مستخدَمة | 0 أيام | +| Qwen3.8 Flash | غير مستخدَمة | 0 أيام | | Qwen3.7 Max | غير مستخدَمة | 0 أيام | | Qwen3.7 Plus | غير مستخدَمة | 0 أيام | | Qwen3.6 Plus | غير مستخدَمة | 0 أيام | diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 67c398dcd..cf7dbfad6 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -75,6 +75,7 @@ Trenutna lista modela uključuje: - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([ograničene regije](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -117,6 +118,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -141,6 +143,7 @@ Procjene se zasnivaju na zapaženim obrascima zahtjeva: - MiniMax M2.7 — 300 ulaznih, 55,000 keširanih, 125 izlaznih tokena po zahtjevu - Muse Spark 1.2 Contributor — 620 ulaznih, 71,400 keširanih, 300 izlaznih tokena po zahtjevu - Qwen3.8 Max — 420 ulaznih, 66,000 keširanih, 200 izlaznih tokena po zahtjevu +- Qwen3.8 Flash — 600 ulaznih, 58,000 keširanih, 200 izlaznih tokena po zahtjevu - Qwen3.7 Max — 420 ulaznih, 66,000 keširanih, 200 izlaznih tokena po zahtjevu - Qwen3.7 Plus — 500 ulaznih, 57,000 keširanih, 190 izlaznih tokena po zahtjevu - Qwen3.6 Plus — 500 ulaznih, 57,000 keširanih, 190 izlaznih tokena po zahtjevu @@ -171,6 +174,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -244,6 +248,7 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -282,6 +287,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | Ne koristi se | 0 dana | | MiMo-V2.5 | Ne koristi se | 0 dana | | Qwen3.8 Max | Ne koristi se | 0 dana | +| Qwen3.8 Flash | Ne koristi se | 0 dana | | Qwen3.7 Max | Ne koristi se | 0 dana | | Qwen3.7 Plus | Ne koristi se | 0 dana | | Qwen3.6 Plus | Ne koristi se | 0 dana | diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index b926902d1..e962d4e4a 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -75,6 +75,7 @@ Den nuværende liste over modeller inkluderer: - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([begrænsede regioner](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -117,6 +118,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -141,6 +143,7 @@ Estimaterne er baseret på observerede anmodningsmønstre: - MiniMax M2.7 — 300 input, 55.000 cachelagrede, 125 output-tokens pr. anmodning - Muse Spark 1.2 Contributor — 620 input, 71.400 cachelagrede, 300 output-tokens pr. anmodning - Qwen3.8 Max — 420 input, 66.000 cachelagrede, 200 output-tokens pr. anmodning +- Qwen3.8 Flash — 600 input, 58.000 cachelagrede, 200 output-tokens pr. anmodning - Qwen3.7 Max — 420 input, 66.000 cachelagrede, 200 output-tokens pr. anmodning - Qwen3.7 Plus — 500 input, 57.000 cachelagrede, 190 output-tokens pr. anmodning - Qwen3.6 Plus — 500 input, 57.000 cachelagrede, 190 output-tokens pr. anmodning @@ -171,6 +174,7 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -244,6 +248,7 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -282,6 +287,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | Ikke brugt | 0 dage | | MiMo-V2.5 | Ikke brugt | 0 dage | | Qwen3.8 Max | Ikke brugt | 0 dage | +| Qwen3.8 Flash | Ikke brugt | 0 dage | | Qwen3.7 Max | Ikke brugt | 0 dage | | Qwen3.7 Plus | Ikke brugt | 0 dage | | Qwen3.6 Plus | Ikke brugt | 0 dage | diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index c26b2cd01..31c5233dd 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -67,6 +67,7 @@ Die aktuelle Liste der Modelle umfasst: - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([begrenzte Regionen](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -109,6 +110,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -133,6 +135,7 @@ Die Schätzungen basieren auf beobachteten Anfragemustern: - MiniMax M2.7 — 300 Input-, 55.000 Cached-, 125 Output-Tokens pro Anfrage - Muse Spark 1.2 Contributor — 620 Input-, 71.400 Cached-, 300 Output-Tokens pro Anfrage - Qwen3.8 Max — 420 Input-, 66.000 Cached-, 200 Output-Tokens pro Anfrage +- Qwen3.8 Flash — 600 Input-, 58.000 Cached-, 200 Output-Tokens pro Anfrage - Qwen3.7 Max — 420 Input-, 66.000 Cached-, 200 Output-Tokens pro Anfrage - Qwen3.7 Plus — 500 Input-, 57.000 Cached-, 190 Output-Tokens pro Anfrage - Qwen3.6 Plus — 500 Input-, 57.000 Cached-, 190 Output-Tokens pro Anfrage @@ -163,6 +166,7 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -234,6 +238,7 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -270,6 +275,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | Nicht verwendet | 0 Tage | | MiMo-V2.5 | Nicht verwendet | 0 Tage | | Qwen3.8 Max | Nicht verwendet | 0 Tage | +| Qwen3.8 Flash | Nicht verwendet | 0 Tage | | Qwen3.7 Max | Nicht verwendet | 0 Tage | | Qwen3.7 Plus | Nicht verwendet | 0 Tage | | Qwen3.6 Plus | Nicht verwendet | 0 Tage | diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 5bab364e4..1585fb230 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -75,6 +75,7 @@ La lista actual de modelos incluye: - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([regiones limitadas](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -117,6 +118,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -141,6 +143,7 @@ Las estimaciones se basan en los patrones de peticiones observados: - MiniMax M2.7 — 300 tokens de entrada, 55,000 en caché, 125 tokens de salida por petición - Muse Spark 1.2 Contributor — 620 tokens de entrada, 71,400 en caché, 300 tokens de salida por petición - Qwen3.8 Max — 420 tokens de entrada, 66,000 en caché, 200 tokens de salida por petición +- Qwen3.8 Flash — 600 tokens de entrada, 58,000 en caché, 200 tokens de salida por petición - Qwen3.7 Max — 420 tokens de entrada, 66,000 en caché, 200 tokens de salida por petición - Qwen3.7 Plus — 500 tokens de entrada, 57,000 en caché, 190 tokens de salida por petición - Qwen3.6 Plus — 500 tokens de entrada, 57,000 en caché, 190 tokens de salida por petición @@ -171,6 +174,7 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -244,6 +248,7 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -282,6 +287,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | No utilizado | 0 días | | MiMo-V2.5 | No utilizado | 0 días | | Qwen3.8 Max | No utilizado | 0 días | +| Qwen3.8 Flash | No utilizado | 0 días | | Qwen3.7 Max | No utilizado | 0 días | | Qwen3.7 Plus | No utilizado | 0 días | | Qwen3.6 Plus | No utilizado | 0 días | diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 6c70197dc..a5b13e2fa 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -65,6 +65,7 @@ La liste actuelle des modèles comprend : - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([régions limitées](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -107,6 +108,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -131,6 +133,7 @@ Les estimations sont basées sur les schémas de requêtes observés : - MiniMax M2.7 — 300 tokens en entrée, 55,000 en cache, 125 tokens en sortie par requête - Muse Spark 1.2 Contributor — 620 tokens en entrée, 71,400 en cache, 300 tokens en sortie par requête - Qwen3.8 Max — 420 tokens en entrée, 66,000 en cache, 200 tokens en sortie par requête +- Qwen3.8 Flash — 600 tokens en entrée, 58,000 en cache, 200 tokens en sortie par requête - Qwen3.7 Max — 420 tokens en entrée, 66,000 en cache, 200 tokens en sortie par requête - Qwen3.7 Plus — 500 tokens en entrée, 57,000 en cache, 190 tokens en sortie par requête - Qwen3.6 Plus — 500 tokens en entrée, 57,000 en cache, 190 tokens en sortie par requête @@ -161,6 +164,7 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -232,6 +236,7 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -268,6 +273,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | Non utilisé | 0 jour | | MiMo-V2.5 | Non utilisé | 0 jour | | Qwen3.8 Max | Non utilisé | 0 jour | +| Qwen3.8 Flash | Non utilisé | 0 jour | | Qwen3.7 Max | Non utilisé | 0 jour | | Qwen3.7 Plus | Non utilisé | 0 jour | | Qwen3.6 Plus | Non utilisé | 0 jour | diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index f0b5af658..96a6b4cbc 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -75,6 +75,7 @@ The current list of models includes: - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([limited regions](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -117,6 +118,7 @@ The table below provides an estimated request count based on typical Go usage pa | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -143,6 +145,7 @@ The estimates are based on observed request patterns: - MiMo-V2.5 — 830 input, 71,500 cached, 295 output tokens per request - MiMo-V2.5-Pro — 790 input, 86,000 cached, 305 output tokens per request - Qwen3.8 Max — 420 input, 66,000 cached, 200 output tokens per request +- Qwen3.8 Flash — 600 input, 58,000 cached, 200 output tokens per request - Qwen3.7 Max — 420 input, 66,000 cached, 200 output tokens per request - Qwen3.7 Plus — 500 input, 57,000 cached, 190 output tokens per request - Qwen3.6 Plus — 500 input, 57,000 cached, 190 output tokens per request @@ -171,6 +174,7 @@ The estimates are also based on the following prices per 1M tokens and the month | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -244,6 +248,7 @@ You can also access Go models through the following API endpoints. | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -282,6 +287,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | Not used | 0 days | | MiMo-V2.5 | Not used | 0 days | | Qwen3.8 Max | Not used | 0 days | +| Qwen3.8 Flash | Not used | 0 days | | Qwen3.7 Max | Not used | 0 days | | Qwen3.7 Plus | Not used | 0 days | | Qwen3.6 Plus | Not used | 0 days | diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 018c63550..cd553896b 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -73,6 +73,7 @@ L'elenco attuale dei modelli include: - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([regioni limitate](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -115,6 +116,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -139,6 +141,7 @@ Le stime si basano sui pattern di richieste osservati: - MiniMax M2.7 — 300 di input, 55.000 in cache, 125 token di output per richiesta - Muse Spark 1.2 Contributor — 620 di input, 71.400 in cache, 300 token di output per richiesta - Qwen3.8 Max — 420 di input, 66.000 in cache, 200 token di output per richiesta +- Qwen3.8 Flash — 600 di input, 58.000 in cache, 200 token di output per richiesta - Qwen3.7 Max — 420 di input, 66.000 in cache, 200 token di output per richiesta - Qwen3.7 Plus — 500 di input, 57.000 in cache, 190 token di output per richiesta - Qwen3.6 Plus — 500 di input, 57.000 in cache, 190 token di output per richiesta @@ -169,6 +172,7 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -242,6 +246,7 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -280,6 +285,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | Non utilizzato | 0 giorni | | MiMo-V2.5 | Non utilizzato | 0 giorni | | Qwen3.8 Max | Non utilizzato | 0 giorni | +| Qwen3.8 Flash | Non utilizzato | 0 giorni | | Qwen3.7 Max | Non utilizzato | 0 giorni | | Qwen3.7 Plus | Non utilizzato | 0 giorni | | Qwen3.6 Plus | Non utilizzato | 0 giorni | diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index c1ad6d018..c277ee728 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -65,6 +65,7 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([一部の地域に限定](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -107,6 +108,7 @@ OpenCode Goには以下の制限が含まれています: | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -131,6 +133,7 @@ OpenCode Goには以下の制限が含まれています: - MiniMax M2.7 — リクエストあたり 入力 300トークン、キャッシュ 55,000トークン、出力 125トークン - Muse Spark 1.2 Contributor — リクエストあたり 入力 620トークン、キャッシュ 71,400トークン、出力 300トークン - Qwen3.8 Max — リクエストあたり 入力 420トークン、キャッシュ 66,000トークン、出力 200トークン +- Qwen3.8 Flash — リクエストあたり 入力 600トークン、キャッシュ 58,000トークン、出力 200トークン - Qwen3.7 Max — リクエストあたり 入力 420トークン、キャッシュ 66,000トークン、出力 200トークン - Qwen3.7 Plus — リクエストあたり 入力 500トークン、キャッシュ 57,000トークン、出力 190トークン - Qwen3.6 Plus — リクエストあたり 入力 500トークン、キャッシュ 57,000トークン、出力 190トークン @@ -161,6 +164,7 @@ OpenCode Goには以下の制限が含まれています: | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -232,6 +236,7 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -268,6 +273,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | 使用なし | 0日 | | MiMo-V2.5 | 使用なし | 0日 | | Qwen3.8 Max | 使用なし | 0日 | +| Qwen3.8 Flash | 使用なし | 0日 | | Qwen3.7 Max | 使用なし | 0日 | | Qwen3.7 Plus | 使用なし | 0日 | | Qwen3.6 Plus | 使用なし | 0日 | diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index b0aecf2e4..d2e5bfc8b 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -65,6 +65,7 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([일부 지역에서만 제공](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -107,6 +108,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -131,6 +133,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. - MiniMax M2.7 — 요청당 입력 300, 캐시 55,000, 출력 토큰 125 - Muse Spark 1.2 Contributor — 요청당 입력 620, 캐시 71,400, 출력 토큰 300 - Qwen3.8 Max — 요청당 입력 420, 캐시 66,000, 출력 토큰 200 +- Qwen3.8 Flash — 요청당 입력 600, 캐시 58,000, 출력 토큰 200 - Qwen3.7 Max — 요청당 입력 420, 캐시 66,000, 출력 토큰 200 - Qwen3.7 Plus — 요청당 입력 500, 캐시 57,000, 출력 토큰 190 - Qwen3.6 Plus — 요청당 입력 500, 캐시 57,000, 출력 토큰 190 @@ -161,6 +164,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -232,6 +236,7 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -268,6 +273,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | 사용되지 않음 | 0일 | | MiMo-V2.5 | 사용되지 않음 | 0일 | | Qwen3.8 Max | 사용되지 않음 | 0일 | +| Qwen3.8 Flash | 사용되지 않음 | 0일 | | Qwen3.7 Max | 사용되지 않음 | 0일 | | Qwen3.7 Plus | 사용되지 않음 | 0일 | | Qwen3.6 Plus | 사용되지 않음 | 0일 | diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index f8016c461..37393d9e4 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -75,6 +75,7 @@ Den nåværende listen over modeller inkluderer: - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([begrensede regioner](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -117,6 +118,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -141,6 +143,7 @@ Estimatene er basert på observerte forespørselsmønstre: - MiniMax M2.7 — 300 input, 55 000 bufret, 125 output-tokens per forespørsel - Muse Spark 1.2 Contributor — 620 input, 71 400 bufret, 300 output-tokens per forespørsel - Qwen3.8 Max — 420 input, 66 000 bufret, 200 output-tokens per forespørsel +- Qwen3.8 Flash — 600 input, 58 000 bufret, 200 output-tokens per forespørsel - Qwen3.7 Max — 420 input, 66 000 bufret, 200 output-tokens per forespørsel - Qwen3.7 Plus — 500 input, 57 000 bufret, 190 output-tokens per forespørsel - Qwen3.6 Plus — 500 input, 57 000 bufret, 190 output-tokens per forespørsel @@ -171,6 +174,7 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -244,6 +248,7 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -282,6 +287,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | Brukes ikke | 0 dager | | MiMo-V2.5 | Brukes ikke | 0 dager | | Qwen3.8 Max | Brukes ikke | 0 dager | +| Qwen3.8 Flash | Brukes ikke | 0 dager | | Qwen3.7 Max | Brukes ikke | 0 dager | | Qwen3.7 Plus | Brukes ikke | 0 dager | | Qwen3.6 Plus | Brukes ikke | 0 dager | diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 4d04f30c0..a43f032f8 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -69,6 +69,7 @@ Obecna lista modeli obejmuje: - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([ograniczone regiony](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -111,6 +112,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -135,6 +137,7 @@ Szacunki te opierają się na zaobserwowanych wzorcach żądań: - MiniMax M2.7 — 300 tokenów wejściowych, 55 000 w pamięci podręcznej, 125 tokenów wyjściowych na żądanie - Muse Spark 1.2 Contributor — 620 tokenów wejściowych, 71 400 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie - Qwen3.8 Max — 420 tokenów wejściowych, 66 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie +- Qwen3.8 Flash — 600 tokenów wejściowych, 58 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie - Qwen3.7 Max — 420 tokenów wejściowych, 66 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie - Qwen3.7 Plus — 500 tokenów wejściowych, 57 000 w pamięci podręcznej, 190 tokenów wyjściowych na żądanie - Qwen3.6 Plus — 500 tokenów wejściowych, 57 000 w pamięci podręcznej, 190 tokenów wyjściowych na żądanie @@ -165,6 +168,7 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -236,6 +240,7 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -274,6 +279,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | Niewykorzystywane | 0 dni | | MiMo-V2.5 | Niewykorzystywane | 0 dni | | Qwen3.8 Max | Niewykorzystywane | 0 dni | +| Qwen3.8 Flash | Niewykorzystywane | 0 dni | | Qwen3.7 Max | Niewykorzystywane | 0 dni | | Qwen3.7 Plus | Niewykorzystywane | 0 dni | | Qwen3.6 Plus | Niewykorzystywane | 0 dni | diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index a0ec0c5b5..5cc643212 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -75,6 +75,7 @@ A lista atual de modelos inclui: - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([regiões limitadas](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -117,6 +118,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -141,6 +143,7 @@ As estimativas se baseiam nos padrões de requisições observados: - MiniMax M2.7 — 300 tokens de entrada, 55.000 em cache, 125 tokens de saída por requisição - Muse Spark 1.2 Contributor — 620 tokens de entrada, 71.400 em cache, 300 tokens de saída por requisição - Qwen3.8 Max — 420 tokens de entrada, 66.000 em cache, 200 tokens de saída por requisição +- Qwen3.8 Flash — 600 tokens de entrada, 58.000 em cache, 200 tokens de saída por requisição - Qwen3.7 Max — 420 tokens de entrada, 66.000 em cache, 200 tokens de saída por requisição - Qwen3.7 Plus — 500 tokens de entrada, 57.000 em cache, 190 tokens de saída por requisição - Qwen3.6 Plus — 500 tokens de entrada, 57.000 em cache, 190 tokens de saída por requisição @@ -171,6 +174,7 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -244,6 +248,7 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -282,6 +287,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | Não usado | 0 dias | | MiMo-V2.5 | Não usado | 0 dias | | Qwen3.8 Max | Não usado | 0 dias | +| Qwen3.8 Flash | Não usado | 0 dias | | Qwen3.7 Max | Não usado | 0 dias | | Qwen3.7 Plus | Não usado | 0 dias | | Qwen3.6 Plus | Não usado | 0 dias | diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index c6a05c844..91c2936b3 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -75,6 +75,7 @@ OpenCode Go работает так же, как и любой другой пр - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([доступно в отдельных регионах](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -117,6 +118,7 @@ OpenCode Go включает следующие лимиты: | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -141,6 +143,7 @@ OpenCode Go включает следующие лимиты: - MiniMax M2.7 — 300 входных, 55,000 кешированных, 125 выходных токенов на запрос - Muse Spark 1.2 Contributor — 620 входных, 71,400 кешированных, 300 выходных токенов на запрос - Qwen3.8 Max — 420 входных, 66,000 кешированных, 200 выходных токенов на запрос +- Qwen3.8 Flash — 600 входных, 58,000 кешированных, 200 выходных токенов на запрос - Qwen3.7 Max — 420 входных, 66,000 кешированных, 200 выходных токенов на запрос - Qwen3.7 Plus — 500 входных, 57,000 кешированных, 190 выходных токенов на запрос - Qwen3.6 Plus — 500 входных, 57,000 кешированных, 190 выходных токенов на запрос @@ -171,6 +174,7 @@ OpenCode Go включает следующие лимиты: | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -244,6 +248,7 @@ OpenCode Go включает следующие лимиты: | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -282,6 +287,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | Не используется | 0 дней | | MiMo-V2.5 | Не используется | 0 дней | | Qwen3.8 Max | Не используется | 0 дней | +| Qwen3.8 Flash | Не используется | 0 дней | | Qwen3.7 Max | Не используется | 0 дней | | Qwen3.7 Plus | Не используется | 0 дней | | Qwen3.6 Plus | Не используется | 0 дней | diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 26ae73a36..05c7facde 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -65,6 +65,7 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([เฉพาะบางภูมิภาค](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -107,6 +108,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -131,6 +133,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: - MiniMax M2.7 — 300 input, 55,000 cached, 125 output tokens ต่อ request - Muse Spark 1.2 Contributor — 620 input, 71,400 cached, 300 output tokens ต่อ request - Qwen3.8 Max — 420 input, 66,000 cached, 200 output tokens ต่อ request +- Qwen3.8 Flash — 600 input, 58,000 cached, 200 output tokens ต่อ request - Qwen3.7 Max — 420 input, 66,000 cached, 200 output tokens ต่อ request - Qwen3.7 Plus — 500 input, 57,000 cached, 190 output tokens ต่อ request - Qwen3.6 Plus — 500 input, 57,000 cached, 190 output tokens ต่อ request @@ -161,6 +164,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -232,6 +236,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -268,6 +273,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | ไม่นำไปใช้ | 0 วัน | | MiMo-V2.5 | ไม่นำไปใช้ | 0 วัน | | Qwen3.8 Max | ไม่นำไปใช้ | 0 วัน | +| Qwen3.8 Flash | ไม่นำไปใช้ | 0 วัน | | Qwen3.7 Max | ไม่นำไปใช้ | 0 วัน | | Qwen3.7 Plus | ไม่นำไปใช้ | 0 วัน | | Qwen3.6 Plus | ไม่นำไปใช้ | 0 วัน | diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 7200d2e13..5b2222eb4 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -65,6 +65,7 @@ Mevcut model listesi şunları içerir: - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([sınırlı bölgeler](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -107,6 +108,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -131,6 +133,7 @@ Tahminler, gözlemlenen istek modellerine dayanır: - MiniMax M2.7 — İstek başına 300 girdi, 55.000 önbelleğe alınmış, 125 çıktı token'ı - Muse Spark 1.2 Contributor — İstek başına 620 girdi, 71.400 önbelleğe alınmış, 300 çıktı token'ı - Qwen3.8 Max — İstek başına 420 girdi, 66.000 önbelleğe alınmış, 200 çıktı token'ı +- Qwen3.8 Flash — İstek başına 600 girdi, 58.000 önbelleğe alınmış, 200 çıktı token'ı - Qwen3.7 Max — İstek başına 420 girdi, 66.000 önbelleğe alınmış, 200 çıktı token'ı - Qwen3.7 Plus — İstek başına 500 girdi, 57.000 önbelleğe alınmış, 190 çıktı token'ı - Qwen3.6 Plus — İstek başına 500 girdi, 57.000 önbelleğe alınmış, 190 çıktı token'ı @@ -161,6 +164,7 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -232,6 +236,7 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -268,6 +273,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | Kullanılmaz | 0 gün | | MiMo-V2.5 | Kullanılmaz | 0 gün | | Qwen3.8 Max | Kullanılmaz | 0 gün | +| Qwen3.8 Flash | Kullanılmaz | 0 gün | | Qwen3.7 Max | Kullanılmaz | 0 gün | | Qwen3.7 Plus | Kullanılmaz | 0 gün | | Qwen3.6 Plus | Kullanılmaz | 0 gün | diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 81f9274b4..2a66074ad 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -65,6 +65,7 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([仅限部分地区](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -107,6 +108,7 @@ OpenCode Go 包含以下限制: | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -133,6 +135,7 @@ OpenCode Go 包含以下限制: - MiniMax M2.7 — 每次请求 300 个输入 token,55,000 个缓存 token,125 个输出 token - Muse Spark 1.2 Contributor — 每次请求 620 个输入 token,71,400 个缓存 token,300 个输出 token - Qwen3.8 Max — 每次请求 420 个输入 token,66,000 个缓存 token,200 个输出 token +- Qwen3.8 Flash — 每次请求 600 个输入 token,58,000 个缓存 token,200 个输出 token - Qwen3.7 Max — 每次请求 420 个输入 token,66,000 个缓存 token,200 个输出 token - Qwen3.7 Plus — 每次请求 500 个输入 token,57,000 个缓存 token,190 个输出 token - Qwen3.6 Plus — 每次请求 500 个输入 token,57,000 个缓存 token,190 个输出 token @@ -161,6 +164,7 @@ OpenCode Go 包含以下限制: | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -232,6 +236,7 @@ OpenCode Go 包含以下限制: | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -268,6 +273,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | 不使用 | 0 天 | | MiMo-V2.5 | 不使用 | 0 天 | | Qwen3.8 Max | 不使用 | 0 天 | +| Qwen3.8 Flash | 不使用 | 0 天 | | Qwen3.7 Max | 不使用 | 0 天 | | Qwen3.7 Plus | 不使用 | 0 天 | | Qwen3.6 Plus | 不使用 | 0 天 | diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index bf9076663..e006253df 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -65,6 +65,7 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 - **MiniMax M2.7** - **Muse Spark 1.2 Contributor** ([僅限部分地區](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** +- **Qwen3.8 Flash** - **Qwen3.7 Max** - **Qwen3.7 Plus** - **Qwen3.6 Plus** @@ -107,6 +108,7 @@ OpenCode Go 包含以下限制: | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | +| Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | | Qwen3.7 Max | 340 | 840 | 1,690 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | @@ -131,6 +133,7 @@ OpenCode Go 包含以下限制: - MiniMax M2.7 — 每次請求 300 個輸入 token、55,000 個快取 token、125 個輸出 token - Muse Spark 1.2 Contributor — 每次請求 620 個輸入 token、71,400 個快取 token、300 個輸出 token - Qwen3.8 Max — 每次請求 420 個輸入 token、66,000 個快取 token、200 個輸出 token +- Qwen3.8 Flash — 每次請求 600 個輸入 token、58,000 個快取 token、200 個輸出 token - Qwen3.7 Max — 每次請求 420 個輸入 token、66,000 個快取 token、200 個輸出 token - Qwen3.7 Plus — 每次請求 500 個輸入 token、57,000 個快取 token、190 個輸出 token - Qwen3.6 Plus — 每次請求 500 個輸入 token、57,000 個快取 token、190 個輸出 token @@ -161,6 +164,7 @@ OpenCode Go 包含以下限制: | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | | Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | @@ -232,6 +236,7 @@ OpenCode Go 包含以下限制: | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -268,6 +273,7 @@ https://opencode.ai/zen/go/v1/models | MiMo-V2.5-Pro | 不使用 | 0 天 | | MiMo-V2.5 | 不使用 | 0 天 | | Qwen3.8 Max | 不使用 | 0 天 | +| Qwen3.8 Flash | 不使用 | 0 天 | | Qwen3.7 Max | 不使用 | 0 天 | | Qwen3.7 Plus | 不使用 | 0 天 | | Qwen3.6 Plus | 不使用 | 0 天 | From 733562e92a96255fb123aae92f267e4534a635fb Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 28 Aug 2026 15:38:25 +1000 Subject: [PATCH 187/271] fix(opencode): remove Bun dependency from Azure authentication (#45845) Co-authored-by: Hona <10430890+Hona@users.noreply.github.com> --- packages/opencode/src/plugin/azure.ts | 50 +++--- packages/opencode/test/plugin/azure.test.ts | 179 ++++++++++++++------ 2 files changed, 155 insertions(+), 74 deletions(-) diff --git a/packages/opencode/src/plugin/azure.ts b/packages/opencode/src/plugin/azure.ts index 8dd893a0e..33a164f37 100644 --- a/packages/opencode/src/plugin/azure.ts +++ b/packages/opencode/src/plugin/azure.ts @@ -2,10 +2,12 @@ import { readFile } from "node:fs/promises" import { homedir } from "node:os" import { join } from "node:path" import { InstallationVersion } from "@opencode-ai/core/installation/version" +import { which } from "@opencode-ai/core/util/which" import type { Hooks } from "@opencode-ai/plugin" import type { Provider } from "@opencode-ai/sdk/v2" import { Effect, Schema } from "effect" import { OAUTH_DUMMY_KEY } from "../auth" +import { Process } from "../util/process" const AZURE_COGNITIVE_SERVICES_SCOPE = "https://cognitiveservices.azure.com/.default" const AZURE_FOUNDRY_SCOPE = "https://ai.azure.com/.default" @@ -44,16 +46,11 @@ const decodeAzureDeployments = Schema.decodeUnknownPromise( ), ) -type AzureCommand = { - quiet(): AzureCommand - json(): Promise -} - -type AzureShell = (strings: TemplateStringsArray, ...values: string[]) => AzureCommand +type AzureCommand = (args: string[]) => Promise type AzureAccount = { readonly name: string; readonly resourceGroup: string } -export async function AzureAuthPlugin(input: { $: AzureShell }): Promise { - const available = Boolean(Bun.which("az", { PATH: process.env.PATH })) +export async function AzureAuthPlugin(): Promise { + const available = Boolean(which("az")) // Avoid launching Azure CLI on unrelated commands just because the executable is installed. const signedIn = available ? await readFile(join(process.env.AZURE_CONFIG_DIR ?? join(homedir(), ".azure"), "azureProfile.json"), "utf8") @@ -63,17 +60,15 @@ export async function AzureAuthPlugin(input: { $: AzureShell }): Promise : false const accounts = !process.env.AZURE_RESOURCE_NAME && !process.env.AZURE_RESOURCE_GROUP && signedIn - ? await input.$`az cognitiveservices account list --output json --only-show-errors` - .quiet() - .json() + ? await runAzure(["cognitiveservices", "account", "list", "--output", "json", "--only-show-errors"]) .then(decodeAzureAccounts) .catch(() => []) : [] - return createAzureAuthHooks(input.$, fetch, accounts, available) + return createAzureAuthHooks(runAzure, fetch, accounts, available) } export function createAzureAuthHooks( - shell: AzureShell, + run: AzureCommand, request: (input: RequestInfo | URL, init?: RequestInit) => Promise = fetch, accounts: readonly AzureAccount[] = [], available = true, @@ -84,7 +79,7 @@ export function createAzureAuthHooks( if (cached && cached.expires - Date.now() > AZURE_TOKEN_REFRESH_BUFFER) return cached.token const result = await decodeAzureCliToken( - await shell`az account get-access-token --scope ${scope} --output json`.quiet().json(), + await run(["account", "get-access-token", "--scope", scope, "--output", "json"]), ) const expires = result.expires_on !== undefined ? result.expires_on * 1000 : Date.parse(result.expiresOn ?? "") if (!Number.isFinite(expires)) throw new Error("Azure CLI returned an invalid token expiration") @@ -135,7 +130,7 @@ export function createAzureAuthHooks( if (context.auth?.type !== "oauth") return provider.models const resource = context.auth.accountId if (!resource) return {} - return discoverAzureModels(provider.models, resource, shell).catch((error: unknown) => { + return discoverAzureModels(provider.models, resource, run).catch((error: unknown) => { Effect.runSync( Effect.logWarning("Azure model discovery failed", { resource, @@ -205,21 +200,36 @@ export function createAzureAuthHooks( return hooks } -async function discoverAzureModels(models: Provider["models"], resourceName: string, shell: AzureShell) { +async function runAzure(args: string[]): Promise { + const result = await Process.run([which("az") ?? "az", ...args]) + return JSON.parse(result.stdout.toString()) +} + +async function discoverAzureModels(models: Provider["models"], resourceName: string, run: AzureCommand) { const resourceGroup = process.env.AZURE_RESOURCE_GROUP const account = resourceGroup ? { name: resourceName, resourceGroup } : ( await decodeAzureAccounts( - await shell`az cognitiveservices account list --output json --only-show-errors`.quiet().json(), + await run(["cognitiveservices", "account", "list", "--output", "json", "--only-show-errors"]), ) ).find((account) => account.name.toLowerCase() === resourceName.toLowerCase()) if (!account) throw new Error(`Azure resource "${resourceName}" was not found in the active subscription`) const deployments = await decodeAzureDeployments( - await shell`az cognitiveservices account deployment list --name ${account.name} --resource-group ${account.resourceGroup} --output json --only-show-errors` - .quiet() - .json(), + await run([ + "cognitiveservices", + "account", + "deployment", + "list", + "--name", + account.name, + "--resource-group", + account.resourceGroup, + "--output", + "json", + "--only-show-errors", + ]), ) const found = new Map() deployments.forEach((deployment) => { diff --git a/packages/opencode/test/plugin/azure.test.ts b/packages/opencode/test/plugin/azure.test.ts index efb4c94f4..11e7f3a2c 100644 --- a/packages/opencode/test/plugin/azure.test.ts +++ b/packages/opencode/test/plugin/azure.test.ts @@ -1,11 +1,14 @@ import { afterEach, describe, expect, test } from "bun:test" import { chmod } from "node:fs/promises" import path from "node:path" +import { pathToFileURL } from "node:url" import { tmpdir } from "../fixture/fixture" import type { Hooks } from "@opencode-ai/plugin" import type { Auth, Provider } from "@opencode-ai/sdk/v2" import { OAUTH_DUMMY_KEY } from "../../src/auth" import { AzureAuthPlugin, createAzureAuthHooks } from "../../src/plugin/azure" +import { Process } from "../../src/util/process" +import { which } from "@opencode-ai/core/util/which" const resourceName = process.env.AZURE_RESOURCE_NAME const resourceGroup = process.env.AZURE_RESOURCE_GROUP @@ -93,35 +96,127 @@ function models(...ids: string[]): Provider["models"] { } function azureShell(scopes: string[]) { - return (_strings: TemplateStringsArray, ...values: string[]) => { - const output = { - quiet: () => output, - json: async () => { - const scope = values[0] - scopes.push(scope) - return { - accessToken: `${scope}-token`, - expires_on: Math.floor((Date.now() + 60 * 60 * 1000) / 1000), - } - }, + return async (args: string[]) => { + const scope = args[args.indexOf("--scope") + 1] + scopes.push(scope) + return { + accessToken: `${scope}-token`, + expires_on: Math.floor((Date.now() + 60 * 60 * 1000) / 1000), } - return output } } function discoveryShell(accounts: unknown, deployments: unknown, commands: string[]) { - return (strings: TemplateStringsArray, ...values: string[]) => { - const command = String.raw(strings, ...values) + return async (args: string[]) => { + const command = ["az", ...args].join(" ") commands.push(command) - const output = { - quiet: () => output, - json: async () => (command.includes("deployment list") ? deployments : accounts), - } - return output + return command.includes("deployment list") ? deployments : accounts + } +} + +async function azureCli(dir: string) { + const bin = path.join(dir, "azure cli") + const calls = path.join(dir, "calls.jsonl") + const script = path.join(bin, "cli.cjs") + await Bun.write(calls, "") + await Bun.write( + script, + ` + const fs = require("node:fs") + const args = process.argv.slice(2) + fs.appendFileSync(${JSON.stringify(calls)}, JSON.stringify(args) + "\\n") + console.log(JSON.stringify(args.includes("get-access-token") + ? { accessToken: "test-token", expires_on: Math.floor(Date.now() / 1000) + 3600 } + : args.includes("deployment") ? [] : [{ name: "test-resource", resourceGroup: "test group & value" }])) + `, + ) + const executable = path.join(bin, process.platform === "win32" ? "az.cmd" : "az") + await Bun.write( + executable, + process.platform === "win32" + ? `@"${process.execPath}" "${script}" %*\r\n` + : `#!/bin/sh\nexec '${process.execPath}' '${script}' "$@"\n`, + ) + await chmod(executable, 0o755) + return { + bin, + calls: async () => + (await Bun.file(calls).text()) + .split("\n") + .filter(Boolean) + .map((line) => JSON.parse(line)), } } describe("plugin.azure", () => { + test("initializes and runs Azure CLI under Node without Bun or a plugin shell", async () => { + await using tmp = await tmpdir() + const node = which("node") + if (!node) throw new Error("Node is required for the Azure runtime compatibility test") + const bundle = await Bun.build({ + entrypoints: [path.join(import.meta.dir, "../../src/plugin/azure.ts")], + target: "node", + format: "esm", + }) + expect(bundle.success).toBe(true) + const entry = path.join(tmp.path, "azure.mjs") + await Bun.write(entry, bundle.outputs[0]) + const cli = await azureCli(tmp.path) + await Bun.write(path.join(tmp.path, "azureProfile.json"), '\uFEFF{"subscriptions":[{}]}') + for (const installed of [false, true]) { + const result = await Process.run( + [ + node, + "--input-type=module", + "-e", + ` + import assert from "node:assert/strict" + import { AzureAuthPlugin } from ${JSON.stringify(pathToFileURL(entry).href)} + assert.equal(typeof Bun, "undefined") + delete process.env.AZURE_RESOURCE_NAME + delete process.env.AZURE_RESOURCE_GROUP + const hooks = await AzureAuthPlugin({ $: undefined }) + assert.equal(hooks.auth.provider, "azure") + assert.deepEqual(hooks.auth.methods.map((method) => method.type), ${JSON.stringify(installed ? ["api", "oauth"] : ["api"])}) + if (${installed}) { + const method = hooks.auth.methods.find((method) => method.type === "oauth") + assert.equal(method.prompts[0].type, "select") + const authorization = await method.authorize({ resourceSelection: "test-resource" }) + const auth = await authorization.callback() + assert.equal(auth.type, "success") + assert.equal(auth.accountId, "test-resource") + assert.deepEqual(await hooks.provider.models({ models: {} }, { auth: { ...auth, type: "oauth" } }), {}) + } + `, + ], + { + env: { PATH: installed ? cli.bin : tmp.path, XDG_DATA_HOME: tmp.path, AZURE_CONFIG_DIR: tmp.path }, + nothrow: true, + }, + ) + expect(result.stderr.toString()).toBe("") + expect(result.code).toBe(0) + } + expect(await cli.calls()).toEqual([ + ["cognitiveservices", "account", "list", "--output", "json", "--only-show-errors"], + ["account", "get-access-token", "--scope", "https://cognitiveservices.azure.com/.default", "--output", "json"], + ["cognitiveservices", "account", "list", "--output", "json", "--only-show-errors"], + [ + "cognitiveservices", + "account", + "deployment", + "list", + "--name", + "test-resource", + "--resource-group", + "test group & value", + "--output", + "json", + "--only-show-errors", + ], + ]) + }) + for (const profile of [ { name: "missing", content: undefined, signedIn: false }, { name: "logged out", content: '{"subscriptions":[]}', signedIn: false }, @@ -129,22 +224,16 @@ describe("plugin.azure", () => { ]) { test(`only lists resources for a cached Azure login (${profile.name})`, async () => { await using tmp = await tmpdir() - const executable = path.join(tmp.path, process.platform === "win32" ? "az.cmd" : "az") - await Bun.write(executable, process.platform === "win32" ? "@exit /b 0\r\n" : "#!/bin/sh\nexit 0\n") - await chmod(executable, 0o755) - process.env.PATH = `${tmp.path}${path.delimiter}${originalPath}` + const cli = await azureCli(tmp.path) + process.env.PATH = cli.bin process.env.AZURE_CONFIG_DIR = path.join(tmp.path, "azure-cli") if (profile.content) await Bun.write(path.join(process.env.AZURE_CONFIG_DIR, "azureProfile.json"), profile.content) delete process.env.AZURE_RESOURCE_NAME delete process.env.AZURE_RESOURCE_GROUP - const commands: string[] = [] - - const hooks = await AzureAuthPlugin({ - $: discoveryShell([{ name: "test-resource", resourceGroup: "test-group" }], [], commands), - }) + const hooks = await AzureAuthPlugin() - expect(commands).toHaveLength(profile.signedIn ? 1 : 0) + expect(await cli.calls()).toHaveLength(profile.signedIn ? 1 : 0) expect(hooks.auth?.methods.some((method) => method.type === "oauth")).toBe(true) if (profile.signedIn) expect(oauthMethod(hooks).prompts?.[0].type).toBe("select") }) @@ -246,16 +335,10 @@ describe("plugin.azure", () => { }) test("supports Azure CLI versions that only provide expiresOn", async () => { - const hooks = createAzureAuthHooks(() => { - const output = { - quiet: () => output, - json: async () => ({ - accessToken: "legacy-token", - expiresOn: new Date(Date.now() + 60 * 60 * 1000).toISOString(), - }), - } - return output - }) + const hooks = createAzureAuthHooks(async () => ({ + accessToken: "legacy-token", + expiresOn: new Date(Date.now() + 60 * 60 * 1000).toISOString(), + })) const authorization = await oauthMethod(hooks).authorize({ resourceName: "test-resource" }) if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") @@ -263,13 +346,7 @@ describe("plugin.azure", () => { }) test("rejects Azure CLI tokens without a usable expiration", async () => { - const hooks = createAzureAuthHooks(() => { - const output = { - quiet: () => output, - json: async () => ({ accessToken: "invalid-token" }), - } - return output - }) + const hooks = createAzureAuthHooks(async () => ({ accessToken: "invalid-token" })) const authorization = await oauthMethod(hooks).authorize({ resourceName: "test-resource" }) if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") @@ -369,14 +446,8 @@ describe("plugin.azure", () => { }) test("keeps configured models available when Azure discovery fails", async () => { - const hooks = createAzureAuthHooks(() => { - const output = { - quiet: () => output, - json: async () => { - throw new Error("Azure CLI failed") - }, - } - return output + const hooks = createAzureAuthHooks(async () => { + throw new Error("Azure CLI failed") }) const list = hooks.provider?.models if (!list) throw new Error("Azure provider model hook is missing") From c2e39bb5565f9a76f4c9a2eed171f088f949310a Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 28 Aug 2026 05:52:06 +0000 Subject: [PATCH 188/271] test(opencode): use native config path in permission assertion (#45849) Co-authored-by: Hona <10430890+Hona@users.noreply.github.com> --- packages/opencode/test/config/config.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opencode/test/config/config.test.ts b/packages/opencode/test/config/config.test.ts index 4eb46ae1e..8d5baede5 100644 --- a/packages/opencode/test/config/config.test.ts +++ b/packages/opencode/test/config/config.test.ts @@ -573,7 +573,7 @@ it.effect("rejects native project permissions even with inherited V1 rules", () if (Exit.isFailure(exit)) expect(Cause.squash(exit.cause)).toMatchObject({ data: { - path: expect.stringContaining("project/opencode.json"), + path: expect.stringContaining(path.join("project", "opencode.json")), issues: [ { path: ["permissions"], message: expect.stringContaining('Use V1 "permission" rules or run opencode2') }, { path: ["agents", "reviewer", "permissions"], message: expect.stringContaining("not supported") }, From 755ebdb94ee755a9d5691e47af2c16f56696996e Mon Sep 17 00:00:00 2001 From: opencode Date: Fri, 28 Aug 2026 05:58:17 +0000 Subject: [PATCH 189/271] sync release versions for v1.18.25 --- bun.lock | 56 ++++++++++----------- packages/app/package.json | 2 +- packages/cli/package.json | 2 +- packages/codemode/package.json | 2 +- packages/console/app/package.json | 2 +- packages/console/core/package.json | 2 +- packages/console/function/package.json | 2 +- packages/console/mail/package.json | 2 +- packages/console/support/package.json | 2 +- packages/core/package.json | 2 +- packages/desktop/package.json | 2 +- packages/effect-drizzle-sqlite/package.json | 2 +- packages/effect-sqlite-node/package.json | 2 +- packages/enterprise/package.json | 2 +- packages/function/package.json | 2 +- packages/http-recorder/package.json | 2 +- packages/llm/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/server/package.json | 2 +- packages/session-ui/package.json | 2 +- packages/slack/package.json | 2 +- packages/stats/app/package.json | 2 +- packages/stats/core/package.json | 2 +- packages/stats/server/package.json | 2 +- packages/tui/package.json | 2 +- packages/ui/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 30 files changed, 57 insertions(+), 57 deletions(-) diff --git a/bun.lock b/bun.lock index ec7c2c1eb..c8cb37f4e 100644 --- a/bun.lock +++ b/bun.lock @@ -29,7 +29,7 @@ }, "packages/app": { "name": "@opencode-ai/app", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", @@ -96,7 +96,7 @@ }, "packages/cli": { "name": "@opencode-ai/cli", - "version": "1.18.24", + "version": "1.18.25", "bin": { "lildax": "./bin/lildax.cjs", }, @@ -144,7 +144,7 @@ }, "packages/codemode": { "name": "@opencode-ai/codemode", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "acorn": "8.15.0", "effect": "catalog:", @@ -158,7 +158,7 @@ }, "packages/console/app": { "name": "@opencode-ai/console-app", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@ibm/plex": "6.4.1", @@ -194,7 +194,7 @@ }, "packages/console/core": { "name": "@opencode-ai/console-core", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@jsx-email/render": "1.1.1", @@ -221,7 +221,7 @@ }, "packages/console/function": { "name": "@opencode-ai/console-function", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/openai": "3.0.48", @@ -244,7 +244,7 @@ }, "packages/console/mail": { "name": "@opencode-ai/console-mail", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", @@ -268,7 +268,7 @@ }, "packages/console/support": { "name": "@opencode-ai/console-support", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@opencode-ai/console-core": "workspace:*", @@ -288,7 +288,7 @@ }, "packages/core": { "name": "@opencode-ai/core", - "version": "1.18.24", + "version": "1.18.25", "bin": { "opencode": "./bin/opencode", }, @@ -382,7 +382,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@zip.js/zip.js": "2.7.62", "drizzle-orm": "catalog:", @@ -436,7 +436,7 @@ }, "packages/effect-drizzle-sqlite": { "name": "@opencode-ai/effect-drizzle-sqlite", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "drizzle-orm": "catalog:", "effect": "catalog:", @@ -450,7 +450,7 @@ }, "packages/effect-sqlite-node": { "name": "@opencode-ai/effect-sqlite-node", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "effect": "catalog:", }, @@ -462,7 +462,7 @@ }, "packages/enterprise": { "name": "@opencode-ai/enterprise", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@hono/standard-validator": "catalog:", "@opencode-ai/core": "workspace:*", @@ -494,7 +494,7 @@ }, "packages/function": { "name": "@opencode-ai/function", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "catalog:", @@ -510,7 +510,7 @@ }, "packages/http-recorder": { "name": "@opencode-ai/http-recorder", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@effect/platform-node": "4.0.0-beta.83", "@effect/platform-node-shared": "4.0.0-beta.83", @@ -541,7 +541,7 @@ }, "packages/llm": { "name": "@opencode-ai/llm", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@opencode-ai/schema": "workspace:*", "@smithy/eventstream-codec": "4.2.14", @@ -560,7 +560,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "1.18.24", + "version": "1.18.25", "bin": { "opencode": "./bin/opencode", }, @@ -691,7 +691,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@ai-sdk/provider": "3.0.8", "@opencode-ai/sdk": "workspace:*", @@ -767,7 +767,7 @@ }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "cross-spawn": "catalog:", }, @@ -782,7 +782,7 @@ }, "packages/server": { "name": "@opencode-ai/server", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", @@ -797,7 +797,7 @@ }, "packages/session-ui": { "name": "@opencode-ai/session-ui", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@kobalte/core": "catalog:", "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13-v2.tgz", @@ -837,7 +837,7 @@ }, "packages/slack": { "name": "@opencode-ai/slack", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@opencode-ai/sdk": "workspace:*", "@slack/bolt": "^3.17.1", @@ -850,7 +850,7 @@ }, "packages/stats/app": { "name": "@opencode-ai/stats-app", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@ibm/plex": "6.4.1", "@kobalte/core": "catalog:", @@ -877,7 +877,7 @@ }, "packages/stats/core": { "name": "@opencode-ai/stats-core", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@aws-sdk/client-athena": "3.933.0", "@planetscale/database": "1.19.0", @@ -896,7 +896,7 @@ }, "packages/stats/server": { "name": "@opencode-ai/stats-server", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@aws-sdk/client-firehose": "3.933.0", "@effect/platform-node": "catalog:", @@ -938,7 +938,7 @@ }, "packages/tui": { "name": "@opencode-ai/tui", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", @@ -965,7 +965,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@kobalte/core": "catalog:", "@pierre/diffs": "catalog:", @@ -1016,7 +1016,7 @@ }, "packages/web": { "name": "@opencode-ai/web", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", diff --git a/packages/app/package.json b/packages/app/package.json index fa7e969d0..e0a1d076e 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "1.18.24", + "version": "1.18.25", "description": "", "type": "module", "exports": { diff --git a/packages/cli/package.json b/packages/cli/package.json index cdd74c067..207967c19 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/cli", - "version": "1.18.24", + "version": "1.18.25", "type": "module", "license": "MIT", "bin": { diff --git a/packages/codemode/package.json b/packages/codemode/package.json index 9772aeee2..400451efc 100644 --- a/packages/codemode/package.json +++ b/packages/codemode/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/codemode", - "version": "1.18.24", + "version": "1.18.25", "description": "Effect-native confined code execution over schema-described tools", "private": true, "type": "module", diff --git a/packages/console/app/package.json b/packages/console/app/package.json index 908421539..e83f568c3 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-app", - "version": "1.18.24", + "version": "1.18.25", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/console/core/package.json b/packages/console/core/package.json index 729ce531f..0ce0fa748 100644 --- a/packages/console/core/package.json +++ b/packages/console/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/console-core", - "version": "1.18.24", + "version": "1.18.25", "private": true, "type": "module", "license": "MIT", diff --git a/packages/console/function/package.json b/packages/console/function/package.json index 9afac31c0..734a3efe3 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-function", - "version": "1.18.24", + "version": "1.18.25", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json index 09e59abd7..a859c292f 100644 --- a/packages/console/mail/package.json +++ b/packages/console/mail/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-mail", - "version": "1.18.24", + "version": "1.18.25", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", diff --git a/packages/console/support/package.json b/packages/console/support/package.json index f1a837f14..c68e83fcd 100644 --- a/packages/console/support/package.json +++ b/packages/console/support/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-support", - "version": "1.18.24", + "version": "1.18.25", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/core/package.json b/packages/core/package.json index c185ce923..37afa0b65 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.24", + "version": "1.18.25", "name": "@opencode-ai/core", "type": "module", "license": "MIT", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 91cbafd1e..d4d2532c5 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop", "private": true, - "version": "1.18.24", + "version": "1.18.25", "type": "module", "license": "MIT", "homepage": "https://opencode.ai", diff --git a/packages/effect-drizzle-sqlite/package.json b/packages/effect-drizzle-sqlite/package.json index ed29249c6..eb8103695 100644 --- a/packages/effect-drizzle-sqlite/package.json +++ b/packages/effect-drizzle-sqlite/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.24", + "version": "1.18.25", "name": "@opencode-ai/effect-drizzle-sqlite", "type": "module", "license": "MIT", diff --git a/packages/effect-sqlite-node/package.json b/packages/effect-sqlite-node/package.json index 0de3380ca..829aab45f 100644 --- a/packages/effect-sqlite-node/package.json +++ b/packages/effect-sqlite-node/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.24", + "version": "1.18.25", "name": "@opencode-ai/effect-sqlite-node", "type": "module", "license": "MIT", diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json index 6f38a4ce2..6e70986db 100644 --- a/packages/enterprise/package.json +++ b/packages/enterprise/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/enterprise", - "version": "1.18.24", + "version": "1.18.25", "private": true, "type": "module", "license": "MIT", diff --git a/packages/function/package.json b/packages/function/package.json index c5da6ac18..1c0931b39 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/function", - "version": "1.18.24", + "version": "1.18.25", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json index 6a4f06694..b7041f722 100644 --- a/packages/http-recorder/package.json +++ b/packages/http-recorder/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.24", + "version": "1.18.25", "name": "@opencode-ai/http-recorder", "description": "Record and replay Effect HTTP client traffic with deterministic cassettes", "type": "module", diff --git a/packages/llm/package.json b/packages/llm/package.json index bbd432a22..e7b93f1fd 100644 --- a/packages/llm/package.json +++ b/packages/llm/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.24", + "version": "1.18.25", "name": "@opencode-ai/llm", "type": "module", "license": "MIT", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 007c0bcad..45c611036 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.24", + "version": "1.18.25", "name": "opencode", "type": "module", "license": "MIT", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 9f3de7c8c..60c3cad95 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "1.18.24", + "version": "1.18.25", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index ae7135ac9..66b07a349 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "1.18.24", + "version": "1.18.25", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index d33ddbe09..7c65eedad 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/server", - "version": "1.18.24", + "version": "1.18.25", "private": true, "type": "module", "license": "MIT", diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json index a373c2ab0..16a2d8815 100644 --- a/packages/session-ui/package.json +++ b/packages/session-ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/session-ui", - "version": "1.18.24", + "version": "1.18.25", "private": true, "type": "module", "license": "MIT", diff --git a/packages/slack/package.json b/packages/slack/package.json index a2d71e2b5..ecaa750fd 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/slack", - "version": "1.18.24", + "version": "1.18.25", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index f35c12961..a53fca609 100644 --- a/packages/stats/app/package.json +++ b/packages/stats/app/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-app", - "version": "1.18.24", + "version": "1.18.25", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json index 882f51f40..5d333cfce 100644 --- a/packages/stats/core/package.json +++ b/packages/stats/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-core", - "version": "1.18.24", + "version": "1.18.25", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json index 135e884b3..0681be86c 100644 --- a/packages/stats/server/package.json +++ b/packages/stats/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-server", - "version": "1.18.24", + "version": "1.18.25", "private": true, "type": "module", "license": "MIT", diff --git a/packages/tui/package.json b/packages/tui/package.json index cc211c1d6..d208dfa62 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/tui", - "version": "1.18.24", + "version": "1.18.25", "private": true, "type": "module", "license": "MIT", diff --git a/packages/ui/package.json b/packages/ui/package.json index a62dc8dbf..dc3052a6c 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/ui", - "version": "1.18.24", + "version": "1.18.25", "type": "module", "license": "MIT", "repository": { diff --git a/packages/web/package.json b/packages/web/package.json index de7043fc9..5552d1fff 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,7 +2,7 @@ "name": "@opencode-ai/web", "type": "module", "license": "MIT", - "version": "1.18.24", + "version": "1.18.25", "scripts": { "dev": "astro dev", "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index f7526a368..de3b012f3 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "1.18.24", + "version": "1.18.25", "publisher": "sst-dev", "repository": { "type": "git", From 1be9fd55a9326d5e7b09786195e5669e311e61b4 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 28 Aug 2026 18:21:28 +0800 Subject: [PATCH 190/271] docs(go): add Hy4 preview (#45904) --- packages/console/app/src/routes/go/index.tsx | 2 ++ .../app/src/routes/workspace/[id]/go/lite-section.tsx | 1 + packages/web/src/content/docs/ar/go.mdx | 6 ++++++ packages/web/src/content/docs/bs/go.mdx | 6 ++++++ packages/web/src/content/docs/da/go.mdx | 6 ++++++ packages/web/src/content/docs/de/go.mdx | 6 ++++++ packages/web/src/content/docs/es/go.mdx | 6 ++++++ packages/web/src/content/docs/fr/go.mdx | 6 ++++++ packages/web/src/content/docs/go.mdx | 6 ++++++ packages/web/src/content/docs/it/go.mdx | 6 ++++++ packages/web/src/content/docs/ja/go.mdx | 6 ++++++ packages/web/src/content/docs/ko/go.mdx | 6 ++++++ packages/web/src/content/docs/nb/go.mdx | 6 ++++++ packages/web/src/content/docs/pl/go.mdx | 6 ++++++ packages/web/src/content/docs/pt-br/go.mdx | 6 ++++++ packages/web/src/content/docs/ru/go.mdx | 6 ++++++ packages/web/src/content/docs/th/go.mdx | 6 ++++++ packages/web/src/content/docs/tr/go.mdx | 6 ++++++ packages/web/src/content/docs/zh-cn/go.mdx | 6 ++++++ packages/web/src/content/docs/zh-tw/go.mdx | 6 ++++++ 20 files changed, 111 insertions(+) diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index 423f98b95..b2e67ecc6 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -45,6 +45,7 @@ const models = [ { name: "Muse Spark 1.2 Contributor", training: "go.faq.a5.used", retention: "go.faq.a5.notZdr" }, { name: "DeepSeek V4 Pro", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "DeepSeek V4 Flash", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, + { name: "Hy4 preview", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Hy3", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, ] as const @@ -73,6 +74,7 @@ function LimitsGraph(props: { href: string }) { const graph = [ { id: "kimi-k3", name: "Kimi K3", req: 110, d: "50ms" }, { id: "grok-4.6", name: "Grok 4.6", req: 169, d: "75ms" }, + { id: "hy4-preview", name: "Hy4 preview", req: 1350, d: "90ms" }, { id: "gpt-5.6-luna", name: "GPT 5.6 Luna", req: 2050, d: "290ms" }, { id: "glm-5.3-flash", name: "GLM-5.3-Flash", req: 3160, baseReq: 1580, bonus: "2x usage", d: "100ms" }, { id: "minimax-m3", name: "MiniMax M3", req: 3200, d: "210ms" }, diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index 2c762920d..3a0ebe361 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -663,6 +663,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {
      • DeepSeek V4 Flash Vision Exp
      • MiMo-V2.5
      • MiMo-V2.5-Pro
      • +
      • Hy4 preview
      • Hy3

      {i18n.t("workspace.lite.promo.footer")}

      diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index b2094f5c1..23e95b346 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -72,6 +72,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** قد تتغير قائمة النماذج مع استمرارنا في اختبار نماذج جديدة وإضافتها. @@ -115,6 +116,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | تستند التقديرات إلى أنماط الطلبات المرصودة: @@ -137,6 +139,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر - Qwen3.7 Max — ‏420 input، و66,000 cached، و200 output tokens لكل طلب - Qwen3.7 Plus — ‏500 input، و57,000 cached، و190 output tokens لكل طلب - Qwen3.6 Plus — ‏500 input، و57,000 cached، و190 output tokens لكل طلب +- Hy4 preview — ‏830 input، و71,500 cached، و295 output tokens لكل طلب - Hy3 — ‏830 input، و71,500 cached، و295 output tokens لكل طلب - MiMo-V2.5 — ‏830 input، و71,500 cached، و295 output tokens لكل طلب - MiMo-V2.5-Pro — ‏790 input، و86,000 cached، و305 output tokens لكل طلب @@ -176,6 +179,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC من الاثنين إلى الجمعة؛ وجميع الساعات الأخرى، بما في ذلك عطلات نهاية الأسبوع، Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). @@ -240,6 +244,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | يستخدم [model id](/docs/config/#models) في إعدادات OpenCode لديك التنسيق `opencode-go/`. على سبيل المثال، بالنسبة إلى Kimi K3، ستستخدم `opencode-go/kimi-k3` في إعداداتك. @@ -283,6 +288,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | غير مستخدَمة | 0 أيام | | DeepSeek V4 Flash | غير مستخدَمة | 0 أيام | | DeepSeek V4 Flash Vision Exp | غير مستخدَمة | 0 أيام | +| Hy4 preview | غير مستخدَمة | 0 أيام | | Hy3 | غير مستخدَمة | 0 أيام | - **Grok 4.6:** تعطّل ZDR ميزات API مهمة تعتمد على البيانات المخزنة، بما في ذلك Responses API ذات الحالة، وFiles and Collections، وBatch API. [اعرف المزيد](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index cf7dbfad6..1200b785a 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -82,6 +82,7 @@ Trenutna lista modela uključuje: - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** Lista modela se može mijenjati dok testiramo i dodajemo nove. @@ -125,6 +126,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | Procjene se zasnivaju na zapaženim obrascima zahtjeva: @@ -147,6 +149,7 @@ Procjene se zasnivaju na zapaženim obrascima zahtjeva: - Qwen3.7 Max — 420 ulaznih, 66,000 keširanih, 200 izlaznih tokena po zahtjevu - Qwen3.7 Plus — 500 ulaznih, 57,000 keširanih, 190 izlaznih tokena po zahtjevu - Qwen3.6 Plus — 500 ulaznih, 57,000 keširanih, 190 izlaznih tokena po zahtjevu +- Hy4 preview — 830 ulaznih, 71,500 keširanih, 295 izlaznih tokena po zahtjevu - Hy3 — 830 ulaznih, 71,500 keširanih, 295 izlaznih tokena po zahtjevu - MiMo-V2.5 — 830 ulaznih, 71,500 keširanih, 295 izlaznih tokena po zahtjevu - MiMo-V2.5-Pro — 790 ulaznih, 86,000 keširanih, 305 izlaznih tokena po zahtjevu @@ -186,6 +189,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC od ponedjeljka do petka; svi ostali sati, uključujući vikende, su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). @@ -252,6 +256,7 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Model id](/docs/config/#models) u vašoj OpenCode konfiguraciji @@ -297,6 +302,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | Ne koristi se | 0 dana | | DeepSeek V4 Flash | Ne koristi se | 0 dana | | DeepSeek V4 Flash Vision Exp | Ne koristi se | 0 dana | +| Hy4 preview | Ne koristi se | 0 dana | | Hy3 | Ne koristi se | 0 dana | - **Grok 4.6:** ZDR onemogućava važne API funkcije koje zavise od pohranjenih podataka, uključujući Responses API s očuvanjem stanja, Files and Collections i Batch API. [Saznajte više](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index e962d4e4a..925e8c517 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -82,6 +82,7 @@ Den nuværende liste over modeller inkluderer: - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** Listen over modeller kan ændre sig, efterhånden som vi tester og tilføjer nye. @@ -125,6 +126,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | Estimaterne er baseret på observerede anmodningsmønstre: @@ -147,6 +149,7 @@ Estimaterne er baseret på observerede anmodningsmønstre: - Qwen3.7 Max — 420 input, 66.000 cachelagrede, 200 output-tokens pr. anmodning - Qwen3.7 Plus — 500 input, 57.000 cachelagrede, 190 output-tokens pr. anmodning - Qwen3.6 Plus — 500 input, 57.000 cachelagrede, 190 output-tokens pr. anmodning +- Hy4 preview — 830 input, 71.500 cachelagrede, 295 output-tokens pr. anmodning - Hy3 — 830 input, 71.500 cachelagrede, 295 output-tokens pr. anmodning - MiMo-V2.5 — 830 input, 71.500 cachelagrede, 295 output-tokens pr. anmodning - MiMo-V2.5-Pro — 790 input, 86.000 cachelagrede, 305 output-tokens pr. anmodning @@ -186,6 +189,7 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC fra mandag til fredag; alle andre tider, herunder weekender, er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). @@ -252,6 +256,7 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Dit [model id](/docs/config/#models) i din OpenCode config @@ -297,6 +302,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | Ikke brugt | 0 dage | | DeepSeek V4 Flash | Ikke brugt | 0 dage | | DeepSeek V4 Flash Vision Exp | Ikke brugt | 0 dage | +| Hy4 preview | Ikke brugt | 0 dage | | Hy3 | Ikke brugt | 0 dage | - **Grok 4.6:** ZDR deaktiverer vigtige API-funktioner, der afhænger af lagrede data, herunder den tilstandsbevarende Responses API, Files and Collections og Batch API. [Læs mere](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index 31c5233dd..941c439d7 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -74,6 +74,7 @@ Die aktuelle Liste der Modelle umfasst: - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** Die Liste der Modelle kann sich ändern, während wir neue testen und hinzufügen. @@ -117,6 +118,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | Die Schätzungen basieren auf beobachteten Anfragemustern: @@ -139,6 +141,7 @@ Die Schätzungen basieren auf beobachteten Anfragemustern: - Qwen3.7 Max — 420 Input-, 66.000 Cached-, 200 Output-Tokens pro Anfrage - Qwen3.7 Plus — 500 Input-, 57.000 Cached-, 190 Output-Tokens pro Anfrage - Qwen3.6 Plus — 500 Input-, 57.000 Cached-, 190 Output-Tokens pro Anfrage +- Hy4 preview — 830 Input-, 71.500 Cached-, 295 Output-Tokens pro Anfrage - Hy3 — 830 Input-, 71.500 Cached-, 295 Output-Tokens pro Anfrage - MiMo-V2.5 — 830 Input-, 71.500 Cached-, 295 Output-Tokens pro Anfrage - MiMo-V2.5-Pro — 790 Input-, 86.000 Cached-, 305 Output-Tokens pro Anfrage @@ -178,6 +181,7 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Die Peak-Zeiten sind montags bis freitags von 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten, einschließlich der Wochenenden, sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). @@ -242,6 +246,7 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Die [Modell-ID](/docs/config/#models) in deiner OpenCode Config verwendet das Format `opencode-go/`. Für Kimi K3 würdest du beispielsweise `opencode-go/kimi-k3` in deiner Config verwenden. @@ -285,6 +290,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | Nicht verwendet | 0 Tage | | DeepSeek V4 Flash | Nicht verwendet | 0 Tage | | DeepSeek V4 Flash Vision Exp | Nicht verwendet | 0 Tage | +| Hy4 preview | Nicht verwendet | 0 Tage | | Hy3 | Nicht verwendet | 0 Tage | - **Grok 4.6:** ZDR deaktiviert wichtige API-Funktionen, die von gespeicherten Daten abhängen, einschließlich der zustandsbehafteten Responses API, Files and Collections und der Batch API. [Mehr erfahren](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 1585fb230..c5b40f679 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -82,6 +82,7 @@ La lista actual de modelos incluye: - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** La lista de modelos puede cambiar a medida que probamos y agregamos otros nuevos. @@ -125,6 +126,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | Las estimaciones se basan en los patrones de peticiones observados: @@ -147,6 +149,7 @@ Las estimaciones se basan en los patrones de peticiones observados: - Qwen3.7 Max — 420 tokens de entrada, 66,000 en caché, 200 tokens de salida por petición - Qwen3.7 Plus — 500 tokens de entrada, 57,000 en caché, 190 tokens de salida por petición - Qwen3.6 Plus — 500 tokens de entrada, 57,000 en caché, 190 tokens de salida por petición +- Hy4 preview — 830 tokens de entrada, 71,500 en caché, 295 tokens de salida por petición - Hy3 — 830 tokens de entrada, 71,500 en caché, 295 tokens de salida por petición - MiMo-V2.5 — 830 tokens de entrada, 71,500 en caché, 295 tokens de salida por petición - MiMo-V2.5-Pro — 790 tokens de entrada, 86,000 en caché, 305 tokens de salida por petición @@ -186,6 +189,7 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC, de lunes a viernes; todas las demás horas, incluidos los fines de semana, son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). @@ -252,6 +256,7 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | El [ID del modelo](/docs/config/#models) en tu configuración de OpenCode @@ -297,6 +302,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | No utilizado | 0 días | | DeepSeek V4 Flash | No utilizado | 0 días | | DeepSeek V4 Flash Vision Exp | No utilizado | 0 días | +| Hy4 preview | No utilizado | 0 días | | Hy3 | No utilizado | 0 días | - **Grok 4.6:** ZDR deshabilita funciones importantes de la API que dependen de datos almacenados, incluidas la Responses API con estado, Files and Collections y la Batch API. [Más información](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index a5b13e2fa..f47bf643b 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -72,6 +72,7 @@ La liste actuelle des modèles comprend : - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** La liste des modèles peut changer au fur et à mesure que nous en testons et en ajoutons de nouveaux. @@ -115,6 +116,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | Les estimations sont basées sur les schémas de requêtes observés : @@ -137,6 +139,7 @@ Les estimations sont basées sur les schémas de requêtes observés : - Qwen3.7 Max — 420 tokens en entrée, 66,000 en cache, 200 tokens en sortie par requête - Qwen3.7 Plus — 500 tokens en entrée, 57,000 en cache, 190 tokens en sortie par requête - Qwen3.6 Plus — 500 tokens en entrée, 57,000 en cache, 190 tokens en sortie par requête +- Hy4 preview — 830 tokens en entrée, 71,500 en cache, 295 tokens en sortie par requête - Hy3 — 830 tokens en entrée, 71,500 en cache, 295 tokens en sortie par requête - MiMo-V2.5 — 830 tokens en entrée, 71,500 en cache, 295 tokens en sortie par requête - MiMo-V2.5-Pro — 790 tokens en entrée, 86,000 en cache, 305 tokens en sortie par requête @@ -176,6 +179,7 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC, du lundi au vendredi ; toutes les autres heures, y compris le week-end, sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). @@ -240,6 +244,7 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | L'[ID de modèle](/docs/config/#models) dans votre configuration OpenCode utilise le format `opencode-go/`. Par exemple, pour Kimi K3, vous utiliseriez `opencode-go/kimi-k3` dans votre configuration. @@ -283,6 +288,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | Non utilisé | 0 jour | | DeepSeek V4 Flash | Non utilisé | 0 jour | | DeepSeek V4 Flash Vision Exp | Non utilisé | 0 jour | +| Hy4 preview | Non utilisé | 0 jour | | Hy3 | Non utilisé | 0 jour | - **Grok 4.6:** Le ZDR désactive d’importantes fonctionnalités API qui dépendent des données stockées, notamment Responses API avec état, Files and Collections et Batch API. [En savoir plus](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 96a6b4cbc..4c5e925a9 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -82,6 +82,7 @@ The current list of models includes: - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** The list of models may change as we test and add new ones. @@ -125,6 +126,7 @@ The table below provides an estimated request count based on typical Go usage pa | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | The estimates are based on observed request patterns: @@ -149,6 +151,7 @@ The estimates are based on observed request patterns: - Qwen3.7 Max — 420 input, 66,000 cached, 200 output tokens per request - Qwen3.7 Plus — 500 input, 57,000 cached, 190 output tokens per request - Qwen3.6 Plus — 500 input, 57,000 cached, 190 output tokens per request +- Hy4 preview — 830 input, 71,500 cached, 295 output tokens per request - Hy3 — 830 input, 71,500 cached, 295 output tokens per request The estimates are also based on the following prices per 1M tokens and the monthly usage included with each model: @@ -186,6 +189,7 @@ The estimates are also based on the following prices per 1M tokens and the month | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC, Monday through Friday; all other hours, including weekends, are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). @@ -252,6 +256,7 @@ You can also access Go models through the following API endpoints. | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | The [model id](/docs/config/#models) in your OpenCode config @@ -297,6 +302,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | Not used | 0 days\* | | DeepSeek V4 Flash | Not used | 0 days\* | | DeepSeek V4 Flash Vision Exp | Not used | 0 days\* | +| Hy4 preview | Not used | 0 days | | Hy3 | Not used | 0 days | - **Grok 4.6:** ZDR disables important API features that depend on stored data, including the stateful Responses API, Files and Collections, and the Batch API. [Learn more](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index cd553896b..634a1d898 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -80,6 +80,7 @@ L'elenco attuale dei modelli include: - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** L'elenco dei modelli potrebbe cambiare man mano che ne testiamo e aggiungiamo di nuovi. @@ -123,6 +124,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | Le stime si basano sui pattern di richieste osservati: @@ -145,6 +147,7 @@ Le stime si basano sui pattern di richieste osservati: - Qwen3.7 Max — 420 di input, 66.000 in cache, 200 token di output per richiesta - Qwen3.7 Plus — 500 di input, 57.000 in cache, 190 token di output per richiesta - Qwen3.6 Plus — 500 di input, 57.000 in cache, 190 token di output per richiesta +- Hy4 preview — 830 di input, 71.500 in cache, 295 token di output per richiesta - Hy3 — 830 di input, 71.500 in cache, 295 token di output per richiesta - MiMo-V2.5 — 830 di input, 71.500 in cache, 295 token di output per richiesta - MiMo-V2.5-Pro — 790 di input, 86.000 in cache, 305 token di output per richiesta @@ -184,6 +187,7 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC, dal lunedì al venerdì; tutti gli altri orari, inclusi i fine settimana, sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). @@ -250,6 +254,7 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Il [model id](/docs/config/#models) nella tua OpenCode config @@ -295,6 +300,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | Non utilizzato | 0 giorni | | DeepSeek V4 Flash | Non utilizzato | 0 giorni | | DeepSeek V4 Flash Vision Exp | Non utilizzato | 0 giorni | +| Hy4 preview | Non utilizzato | 0 giorni | | Hy3 | Non utilizzato | 0 giorni | - **Grok 4.6:** ZDR disabilita importanti funzionalità API che dipendono dai dati archiviati, tra cui la Responses API con stato, Files and Collections e Batch API. [Scopri di più](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index c277ee728..fdfbb5ab9 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -72,6 +72,7 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** 新しいモデルをテストして追加するにつれて、モデルのリストは変更される場合があります。 @@ -115,6 +116,7 @@ OpenCode Goには以下の制限が含まれています: | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | 推定値は、観測されたリクエストパターンに基づいています: @@ -137,6 +139,7 @@ OpenCode Goには以下の制限が含まれています: - Qwen3.7 Max — リクエストあたり 入力 420トークン、キャッシュ 66,000トークン、出力 200トークン - Qwen3.7 Plus — リクエストあたり 入力 500トークン、キャッシュ 57,000トークン、出力 190トークン - Qwen3.6 Plus — リクエストあたり 入力 500トークン、キャッシュ 57,000トークン、出力 190トークン +- Hy4 preview — リクエストあたり 入力 830トークン、キャッシュ 71,500トークン、出力 295トークン - Hy3 — リクエストあたり 入力 830トークン、キャッシュ 71,500トークン、出力 295トークン - MiMo-V2.5 — リクエストあたり 入力 830トークン、キャッシュ 71,500トークン、出力 295トークン - MiMo-V2.5-Pro — リクエストあたり 入力 790トークン、キャッシュ 86,000トークン、出力 305トークン @@ -176,6 +179,7 @@ OpenCode Goには以下の制限が含まれています: | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak時間は月曜日から金曜日の01:00-04:00と06:00-10:00 UTCで、週末を含むそれ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 @@ -240,6 +244,7 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode設定の[model id](/docs/config/#models)は、`opencode-go/`という形式を使用します。たとえば、Kimi K3の場合は、設定で`opencode-go/kimi-k3`を使用します。 @@ -283,6 +288,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | 使用なし | 0日 | | DeepSeek V4 Flash | 使用なし | 0日 | | DeepSeek V4 Flash Vision Exp | 使用なし | 0日 | +| Hy4 preview | 使用なし | 0日 | | Hy3 | 使用なし | 0日 | - **Grok 4.6:** ZDRでは、保存データに依存する重要なAPI機能(ステートフルなResponses API、Files and Collections、Batch APIなど)が無効になります。[詳しく見る](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index d2e5bfc8b..41d6f227d 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -72,6 +72,7 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** 새로운 모델을 테스트하고 추가함에 따라 이 목록은 변경될 수 있습니다. @@ -115,6 +116,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | 이 예상치는 관찰된 요청 패턴을 기준으로 합니다. @@ -137,6 +139,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. - Qwen3.7 Max — 요청당 입력 420, 캐시 66,000, 출력 토큰 200 - Qwen3.7 Plus — 요청당 입력 500, 캐시 57,000, 출력 토큰 190 - Qwen3.6 Plus — 요청당 입력 500, 캐시 57,000, 출력 토큰 190 +- Hy4 preview — 요청당 입력 830, 캐시 71,500, 출력 토큰 295 - Hy3 — 요청당 입력 830, 캐시 71,500, 출력 토큰 295 - MiMo-V2.5 — 요청당 입력 830, 캐시 71,500, 출력 토큰 295 - MiMo-V2.5-Pro — 요청당 입력 790, 캐시 86,000, 출력 토큰 305 @@ -176,6 +179,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 시간은 월요일부터 금요일까지 01:00-04:00 및 06:00-10:00 UTC이며, 주말을 포함한 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). @@ -240,6 +244,7 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode config의 [model id](/docs/config/#models)는 `opencode-go/` 형식을 사용합니다. 예를 들어 Kimi K3의 경우 config에서 `opencode-go/kimi-k3`를 사용하면 됩니다. @@ -283,6 +288,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | 사용되지 않음 | 0일 | | DeepSeek V4 Flash | 사용되지 않음 | 0일 | | DeepSeek V4 Flash Vision Exp | 사용되지 않음 | 0일 | +| Hy4 preview | 사용되지 않음 | 0일 | | Hy3 | 사용되지 않음 | 0일 | - **Grok 4.6:** ZDR은 저장된 데이터에 의존하는 중요한 API 기능(상태 저장형 Responses API, Files and Collections, Batch API 포함)을 비활성화합니다. [자세히 알아보기](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 37393d9e4..cb802b371 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -82,6 +82,7 @@ Den nåværende listen over modeller inkluderer: - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** Listen over modeller kan endres etter hvert som vi tester og legger til nye. @@ -125,6 +126,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | Estimatene er basert på observerte forespørselsmønstre: @@ -147,6 +149,7 @@ Estimatene er basert på observerte forespørselsmønstre: - Qwen3.7 Max — 420 input, 66 000 bufret, 200 output-tokens per forespørsel - Qwen3.7 Plus — 500 input, 57 000 bufret, 190 output-tokens per forespørsel - Qwen3.6 Plus — 500 input, 57 000 bufret, 190 output-tokens per forespørsel +- Hy4 preview — 830 input, 71 500 bufret, 295 output-tokens per forespørsel - Hy3 — 830 input, 71 500 bufret, 295 output-tokens per forespørsel - MiMo-V2.5 — 830 input, 71 500 bufret, 295 output-tokens per forespørsel - MiMo-V2.5-Pro — 790 input, 86 000 bufret, 305 output-tokens per forespørsel @@ -186,6 +189,7 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC fra mandag til fredag; alle andre tider, inkludert helger, er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). @@ -252,6 +256,7 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Modell-ID-en](/docs/config/#models) i din OpenCode-konfigurasjon @@ -297,6 +302,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | Brukes ikke | 0 dager | | DeepSeek V4 Flash | Brukes ikke | 0 dager | | DeepSeek V4 Flash Vision Exp | Brukes ikke | 0 dager | +| Hy4 preview | Brukes ikke | 0 dager | | Hy3 | Brukes ikke | 0 dager | - **Grok 4.6:** ZDR deaktiverer viktige API-funksjoner som er avhengige av lagrede data, inkludert den tilstandsbaserte Responses API, Files and Collections og Batch API. [Les mer](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index a43f032f8..2acddfffb 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -76,6 +76,7 @@ Obecna lista modeli obejmuje: - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** Lista modeli może ulec zmianie w miarę testowania i dodawania nowych. @@ -119,6 +120,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | Szacunki te opierają się na zaobserwowanych wzorcach żądań: @@ -141,6 +143,7 @@ Szacunki te opierają się na zaobserwowanych wzorcach żądań: - Qwen3.7 Max — 420 tokenów wejściowych, 66 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie - Qwen3.7 Plus — 500 tokenów wejściowych, 57 000 w pamięci podręcznej, 190 tokenów wyjściowych na żądanie - Qwen3.6 Plus — 500 tokenów wejściowych, 57 000 w pamięci podręcznej, 190 tokenów wyjściowych na żądanie +- Hy4 preview — 830 tokenów wejściowych, 71 500 w pamięci podręcznej, 295 tokenów wyjściowych na żądanie - Hy3 — 830 tokenów wejściowych, 71 500 w pamięci podręcznej, 295 tokenów wyjściowych na żądanie - MiMo-V2.5 — 830 tokenów wejściowych, 71 500 w pamięci podręcznej, 295 tokenów wyjściowych na żądanie - MiMo-V2.5-Pro — 790 tokenów wejściowych, 86 000 w pamięci podręcznej, 305 tokenów wyjściowych na żądanie @@ -180,6 +183,7 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC od poniedziałku do piątku; wszystkie pozostałe godziny, w tym weekendy, to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). @@ -244,6 +248,7 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID modelu](/docs/config/#models) w Twojej konfiguracji OpenCode @@ -289,6 +294,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | Niewykorzystywane | 0 dni | | DeepSeek V4 Flash | Niewykorzystywane | 0 dni | | DeepSeek V4 Flash Vision Exp | Niewykorzystywane | 0 dni | +| Hy4 preview | Niewykorzystywane | 0 dni | | Hy3 | Niewykorzystywane | 0 dni | - **Grok 4.6:** ZDR wyłącza ważne funkcje API zależne od przechowywanych danych, w tym stanowy Responses API, Files and Collections oraz Batch API. [Dowiedz się więcej](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 5cc643212..291ce76e8 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -82,6 +82,7 @@ A lista atual de modelos inclui: - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** A lista de modelos pode mudar conforme testamos e adicionamos novos. @@ -125,6 +126,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | As estimativas se baseiam nos padrões de requisições observados: @@ -147,6 +149,7 @@ As estimativas se baseiam nos padrões de requisições observados: - Qwen3.7 Max — 420 tokens de entrada, 66.000 em cache, 200 tokens de saída por requisição - Qwen3.7 Plus — 500 tokens de entrada, 57.000 em cache, 190 tokens de saída por requisição - Qwen3.6 Plus — 500 tokens de entrada, 57.000 em cache, 190 tokens de saída por requisição +- Hy4 preview — 830 tokens de entrada, 71.500 em cache, 295 tokens de saída por requisição - Hy3 — 830 tokens de entrada, 71.500 em cache, 295 tokens de saída por requisição - MiMo-V2.5 — 830 tokens de entrada, 71.500 em cache, 295 tokens de saída por requisição - MiMo-V2.5-Pro — 790 tokens de entrada, 86.000 em cache, 305 tokens de saída por requisição @@ -186,6 +189,7 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC, de segunda a sexta-feira; todos os demais horários, incluindo os fins de semana, são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). @@ -252,6 +256,7 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | O [ID do modelo](/docs/config/#models) na sua configuração do OpenCode @@ -297,6 +302,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | Não usado | 0 dias | | DeepSeek V4 Flash | Não usado | 0 dias | | DeepSeek V4 Flash Vision Exp | Não usado | 0 dias | +| Hy4 preview | Não usado | 0 dias | | Hy3 | Não usado | 0 dias | - **Grok 4.6:** O ZDR desativa recursos importantes da API que dependem de dados armazenados, incluindo a Responses API com estado, Files and Collections e a Batch API. [Saiba mais](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 91c2936b3..f6f04d416 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -82,6 +82,7 @@ OpenCode Go работает так же, как и любой другой пр - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** Список моделей может меняться по мере того, как мы тестируем и добавляем новые. @@ -125,6 +126,7 @@ OpenCode Go включает следующие лимиты: | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | Эти оценки основаны на наблюдаемых показателях запросов: @@ -147,6 +149,7 @@ OpenCode Go включает следующие лимиты: - Qwen3.7 Max — 420 входных, 66,000 кешированных, 200 выходных токенов на запрос - Qwen3.7 Plus — 500 входных, 57,000 кешированных, 190 выходных токенов на запрос - Qwen3.6 Plus — 500 входных, 57,000 кешированных, 190 выходных токенов на запрос +- Hy4 preview — 830 входных, 71,500 кешированных, 295 выходных токенов на запрос - Hy3 — 830 входных, 71,500 кешированных, 295 выходных токенов на запрос - MiMo-V2.5 — 830 входных, 71,500 кешированных, 295 выходных токенов на запрос - MiMo-V2.5-Pro — 790 входных, 86,000 кешированных, 305 выходных токенов на запрос @@ -186,6 +189,7 @@ OpenCode Go включает следующие лимиты: | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Часы Peak с понедельника по пятницу: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы, включая выходные, относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). @@ -252,6 +256,7 @@ OpenCode Go включает следующие лимиты: | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID модели](/docs/config/#models) в вашем конфиге OpenCode @@ -297,6 +302,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | Не используется | 0 дней | | DeepSeek V4 Flash | Не используется | 0 дней | | DeepSeek V4 Flash Vision Exp | Не используется | 0 дней | +| Hy4 preview | Не используется | 0 дней | | Hy3 | Не используется | 0 дней | - **Grok 4.6:** ZDR отключает важные функции API, зависящие от сохраненных данных, включая Responses API с сохранением состояния, Files and Collections и Batch API. [Подробнее](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 05c7facde..eb98cda3e 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -72,6 +72,7 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** รายชื่อโมเดลอาจมีการเปลี่ยนแปลงเมื่อเราทำการทดสอบและเพิ่มโมเดลใหม่ๆ @@ -115,6 +116,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | การประมาณการนี้อ้างอิงจากรูปแบบการใช้งาน request ที่สังเกตพบ: @@ -137,6 +139,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: - Qwen3.7 Max — 420 input, 66,000 cached, 200 output tokens ต่อ request - Qwen3.7 Plus — 500 input, 57,000 cached, 190 output tokens ต่อ request - Qwen3.6 Plus — 500 input, 57,000 cached, 190 output tokens ต่อ request +- Hy4 preview — 830 input, 71,500 cached, 295 output tokens ต่อ request - Hy3 — 830 input, 71,500 cached, 295 output tokens ต่อ request - MiMo-V2.5 — 830 input, 71,500 cached, 295 output tokens ต่อ request - MiMo-V2.5-Pro — 790 input, 86,000 cached, 305 output tokens ต่อ request @@ -176,6 +179,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ตั้งแต่วันจันทร์ถึงวันศุกร์ ส่วนเวลาอื่นทั้งหมด รวมถึงวันหยุดสุดสัปดาห์ เป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) @@ -240,6 +244,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [model id](/docs/config/#models) ใน OpenCode config ของคุณจะใช้รูปแบบ `opencode-go/` ตัวอย่างเช่น สำหรับ Kimi K3 คุณจะใช้ `opencode-go/kimi-k3` ใน config ของคุณ @@ -283,6 +288,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | ไม่นำไปใช้ | 0 วัน | | DeepSeek V4 Flash | ไม่นำไปใช้ | 0 วัน | | DeepSeek V4 Flash Vision Exp | ไม่นำไปใช้ | 0 วัน | +| Hy4 preview | ไม่นำไปใช้ | 0 วัน | | Hy3 | ไม่นำไปใช้ | 0 วัน | - **Grok 4.6:** ZDR ปิดใช้งานฟีเจอร์ API สำคัญที่ต้องอาศัยข้อมูลที่จัดเก็บไว้ ซึ่งรวมถึง Responses API แบบมีสถานะ, Files and Collections และ Batch API [ดูข้อมูลเพิ่มเติม](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr) diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 5b2222eb4..c54cd4d80 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -72,6 +72,7 @@ Mevcut model listesi şunları içerir: - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** Test edip yenilerini ekledikçe model listesi değişebilir. @@ -115,6 +116,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | Tahminler, gözlemlenen istek modellerine dayanır: @@ -137,6 +139,7 @@ Tahminler, gözlemlenen istek modellerine dayanır: - Qwen3.7 Max — İstek başına 420 girdi, 66.000 önbelleğe alınmış, 200 çıktı token'ı - Qwen3.7 Plus — İstek başına 500 girdi, 57.000 önbelleğe alınmış, 190 çıktı token'ı - Qwen3.6 Plus — İstek başına 500 girdi, 57.000 önbelleğe alınmış, 190 çıktı token'ı +- Hy4 preview — İstek başına 830 girdi, 71.500 önbelleğe alınmış, 295 çıktı token'ı - Hy3 — İstek başına 830 girdi, 71.500 önbelleğe alınmış, 295 çıktı token'ı - MiMo-V2.5 — İstek başına 830 girdi, 71.500 önbelleğe alınmış, 295 çıktı token'ı - MiMo-V2.5-Pro — İstek başına 790 girdi, 86.000 önbelleğe alınmış, 305 çıktı token'ı @@ -176,6 +179,7 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak saatleri pazartesiden cumaya 01:00-04:00 ve 06:00-10:00 UTC'dir; hafta sonları dahil diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). @@ -240,6 +244,7 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode yapılandırmanızdaki [model id](/docs/config/#models) formatı `opencode-go/` şeklindedir. Örneğin, Kimi K3 için yapılandırmanızda `opencode-go/kimi-k3` kullanmalısınız. @@ -283,6 +288,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | Kullanılmaz | 0 gün | | DeepSeek V4 Flash | Kullanılmaz | 0 gün | | DeepSeek V4 Flash Vision Exp | Kullanılmaz | 0 gün | +| Hy4 preview | Kullanılmaz | 0 gün | | Hy3 | Kullanılmaz | 0 gün | - **Grok 4.6:** ZDR, durum bilgisi tutan Responses API, Files and Collections ve Batch API dahil olmak üzere saklanan verilere bağlı önemli API özelliklerini devre dışı bırakır. [Daha fazla bilgi](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 2a66074ad..6cdada177 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -72,6 +72,7 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** 随着我们进行测试和添加新模型,该列表可能会发生变化。 @@ -115,6 +116,7 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | 预估值基于观察到的请求模式: @@ -139,6 +141,7 @@ OpenCode Go 包含以下限制: - Qwen3.7 Max — 每次请求 420 个输入 token,66,000 个缓存 token,200 个输出 token - Qwen3.7 Plus — 每次请求 500 个输入 token,57,000 个缓存 token,190 个输出 token - Qwen3.6 Plus — 每次请求 500 个输入 token,57,000 个缓存 token,190 个输出 token +- Hy4 preview — 每次请求 830 个输入 token,71,500 个缓存 token,295 个输出 token - Hy3 — 每次请求 830 个输入 token,71,500 个缓存 token,295 个输出 token 预估值还基于以下每 1M tokens 的价格以及每个模型包含的每月使用额度: @@ -176,6 +179,7 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 时段为周一至周五的 01:00-04:00 和 06:00-10:00 UTC;其他所有时段(包括周末)均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 @@ -240,6 +244,7 @@ OpenCode Go 包含以下限制: | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 你的 OpenCode 配置中的 [模型 ID](/docs/config/#models) 使用 `opencode-go/` 格式。例如,对于 Kimi K3,你将在配置中使用 `opencode-go/kimi-k3`。 @@ -283,6 +288,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | 不使用 | 0 天 | | DeepSeek V4 Flash | 不使用 | 0 天 | | DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | +| Hy4 preview | 不使用 | 0 天 | | Hy3 | 不使用 | 0 天 | - **Grok 4.6:** ZDR 会禁用依赖所存储数据的重要 API 功能,包括有状态的 Responses API、Files and Collections 和 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index e006253df..010715b80 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -72,6 +72,7 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 - **DeepSeek V4 Pro** - **DeepSeek V4 Flash** - **DeepSeek V4 Flash Vision Exp** +- **Hy4 preview** - **Hy3** 隨著我們測試並加入新模型,模型清單可能會有所變動。 @@ -115,6 +116,7 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | | DeepSeek V4 Flash | 7,600 | 18,900 | 37,800 | | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | +| Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | 這些預估值是基於觀察到的請求模式: @@ -137,6 +139,7 @@ OpenCode Go 包含以下限制: - Qwen3.7 Max — 每次請求 420 個輸入 token、66,000 個快取 token、200 個輸出 token - Qwen3.7 Plus — 每次請求 500 個輸入 token、57,000 個快取 token、190 個輸出 token - Qwen3.6 Plus — 每次請求 500 個輸入 token、57,000 個快取 token、190 個輸出 token +- Hy4 preview — 每次請求 830 個輸入 token、71,500 個快取 token、295 個輸出 token - Hy3 — 每次請求 830 個輸入 token、71,500 個快取 token、295 個輸出 token - MiMo-V2.5 — 每次請求 830 個輸入 token、71,500 個快取 token、295 個輸出 token - MiMo-V2.5-Pro — 每次請求 790 個輸入 token、86,000 個快取 token、305 個輸出 token @@ -176,6 +179,7 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | | DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 時段為週一至週五的 01:00-04:00 和 06:00-10:00 UTC;其他所有時段(包括週末)均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 @@ -240,6 +244,7 @@ OpenCode Go 包含以下限制: | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.7 Plus | qwen3.7-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 您的 OpenCode 設定中的 [model id](/docs/config/#models) 使用 `opencode-go/` 格式。例如,Kimi K3 在設定中應使用 `opencode-go/kimi-k3`。 @@ -283,6 +288,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Pro | 不使用 | 0 天 | | DeepSeek V4 Flash | 不使用 | 0 天 | | DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | +| Hy4 preview | 不使用 | 0 天 | | Hy3 | 不使用 | 0 天 | - **Grok 4.6:** ZDR 會停用依賴儲存資料的重要 API 功能,包括具狀態的 Responses API、Files and Collections 與 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 From df35e842f59bc115bb7c0479a8e11f017d443f2c Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 28 Aug 2026 20:04:58 +0800 Subject: [PATCH 191/271] docs(zen): add Ling 3.0 Flash Fin Free (#45923) --- packages/web/src/content/docs/ar/zen.mdx | 4 ++++ packages/web/src/content/docs/bs/zen.mdx | 4 ++++ packages/web/src/content/docs/da/zen.mdx | 4 ++++ packages/web/src/content/docs/de/zen.mdx | 4 ++++ packages/web/src/content/docs/es/zen.mdx | 4 ++++ packages/web/src/content/docs/fr/zen.mdx | 4 ++++ packages/web/src/content/docs/it/zen.mdx | 4 ++++ packages/web/src/content/docs/ja/zen.mdx | 4 ++++ packages/web/src/content/docs/ko/zen.mdx | 4 ++++ packages/web/src/content/docs/nb/zen.mdx | 4 ++++ packages/web/src/content/docs/pl/zen.mdx | 4 ++++ packages/web/src/content/docs/pt-br/zen.mdx | 4 ++++ packages/web/src/content/docs/ru/zen.mdx | 4 ++++ packages/web/src/content/docs/th/zen.mdx | 4 ++++ packages/web/src/content/docs/tr/zen.mdx | 4 ++++ packages/web/src/content/docs/zen.mdx | 4 ++++ packages/web/src/content/docs/zh-cn/zen.mdx | 4 ++++ packages/web/src/content/docs/zh-tw/zen.mdx | 4 ++++ 18 files changed, 72 insertions(+) diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index 7609c0b6f..e8e549426 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -114,6 +114,7 @@ OpenCode Zen هي بوابة AI تتيح لك الوصول إلى هذه الن | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -141,6 +142,7 @@ https://opencode.ai/zen/v1/models | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -226,6 +228,7 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Hy3 Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. +- Ling 3.0 Flash Fin Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Nemotron 3 Ultra Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Nemotron 3.5 Lightning Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Big Pickle نموذج خفي ومتاح مجانا على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. @@ -283,6 +286,7 @@ https://opencode.ai/zen/v1/models - Big Pickle: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. - MiMo-V2.5 Free: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. - Hy3 Free: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. +- Ling 3.0 Flash Fin Free: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. - Nemotron 3 Ultra Free (نقاط نهاية NVIDIA المجانية): للاستخدام التجريبي فقط — لا ترسل بيانات شخصية أو سرية. يُسجَّل استخدامك لأغراض أمنية ولتحسين منتجات وخدمات NVIDIA. بيانات الجلسة المُسجَّلة لأغراض التحسين غير مرتبطة بهويتك أو بأي مُعرِّف دائم. لمزيد من المعلومات حول ممارسات معالجة البيانات لدينا، راجع [سياسة الخصوصية](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). بتفاعلك مع نقطة النهاية هذه، فإنك توافق على جمعنا لهذه المعلومات وتسجيلها واستخدامها وعلى [شروط خدمة النسخة التجريبية من واجهة NVIDIA API](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (نقاط نهاية NVIDIA المجانية): للاستخدام التجريبي فقط — لا ترسل بيانات شخصية أو سرية. يُسجَّل استخدامك لأغراض أمنية ولتحسين منتجات وخدمات NVIDIA. بيانات الجلسة المُسجَّلة لأغراض التحسين غير مرتبطة بهويتك أو بأي مُعرِّف دائم. لمزيد من المعلومات حول ممارسات معالجة البيانات لدينا، راجع [سياسة الخصوصية](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). بتفاعلك مع نقطة النهاية هذه، فإنك توافق على جمعنا لهذه المعلومات وتسجيلها واستخدامها وعلى [شروط خدمة النسخة التجريبية من واجهة NVIDIA API](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: يتم الاحتفاظ بالطلبات لمدة 30 يوما وفقا لـ [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index 4cb932343..a38341ae1 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -119,6 +119,7 @@ Našim modelima možete pristupiti i preko sljedećih API endpointa. | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -148,6 +149,7 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -233,6 +235,7 @@ Besplatni modeli: - MiMo-V2.5 Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Hy3 Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. +- Ling 3.0 Flash Fin Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Nemotron 3 Ultra Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Nemotron 3.5 Lightning Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Big Pickle je stealth model koji je besplatan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. @@ -295,6 +298,7 @@ i ne koriste vaše podatke za treniranje modela, uz sljedeće izuzetke: - Big Pickle: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. - MiMo-V2.5 Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. - Hy3 Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. +- Ling 3.0 Flash Fin Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. - Nemotron 3 Ultra Free (besplatni NVIDIA endpointi): Samo za probnu upotrebu — nemojte slati lične ili povjerljive podatke. Vaše korištenje se bilježi radi sigurnosti i poboljšanja NVIDIA proizvoda i usluga. Zabilježeni podaci sesije koji se koriste u svrhu poboljšanja nisu povezani s vašim identitetom niti bilo kojim trajnim identifikatorom. Za više informacija o našim praksama obrade podataka pogledajte našu [Politiku privatnosti](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interakcijom s ovim endpointom pristajete na naše prikupljanje, bilježenje i korištenje takvih informacija te na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (besplatni NVIDIA endpointi): Samo za probnu upotrebu — nemojte slati lične ili povjerljive podatke. Vaše korištenje se bilježi radi sigurnosti i poboljšanja NVIDIA proizvoda i usluga. Zabilježeni podaci sesije koji se koriste u svrhu poboljšanja nisu povezani s vašim identitetom niti bilo kojim trajnim identifikatorom. Za više informacija o našim praksama obrade podataka pogledajte našu [Politiku privatnosti](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interakcijom s ovim endpointom pristajete na naše prikupljanje, bilježenje i korištenje takvih informacija te na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Requests are retained for 30 days in accordance with [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index 5a8fee3ea..f6a1831ea 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -119,6 +119,7 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints. | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -148,6 +149,7 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -233,6 +235,7 @@ De gratis modeller: - MiMo-V2.5 Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Hy3 Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. +- Ling 3.0 Flash Fin Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Nemotron 3 Ultra Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Nemotron 3.5 Lightning Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Big Pickle er en stealth-model, som er gratis på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. @@ -293,6 +296,7 @@ Alle vores modeller hostes i US. Vores udbydere følger en nul-opbevaringspoliti - Big Pickle: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. - MiMo-V2.5 Free: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. - Hy3 Free: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. +- Ling 3.0 Flash Fin Free: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. - Nemotron 3 Ultra Free (gratis NVIDIA-endpoints): Kun til prøvebrug — indsend ikke personlige eller fortrolige data. Din brug logges af sikkerhedshensyn og for at forbedre NVIDIAs produkter og tjenester. De loggede sessionsdata, der bruges til forbedringsformål, er ikke knyttet til din identitet eller nogen vedvarende identifikator. For mere information om vores databehandlingspraksis, se vores [privatlivspolitik](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved at interagere med dette endpoint giver du samtykke til vores indsamling, registrering og brug af sådanne oplysninger samt [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (gratis NVIDIA-endpoints): Kun til prøvebrug — indsend ikke personlige eller fortrolige data. Din brug logges af sikkerhedshensyn og for at forbedre NVIDIAs produkter og tjenester. De loggede sessionsdata, der bruges til forbedringsformål, er ikke knyttet til din identitet eller nogen vedvarende identifikator. For mere information om vores databehandlingspraksis, se vores [privatlivspolitik](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved at interagere med dette endpoint giver du samtykke til vores indsamling, registrering og brug af sådanne oplysninger samt [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Anmodninger opbevares i 30 dage i overensstemmelse med [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index c1061c2d7..a39b0217f 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -110,6 +110,7 @@ Du kannst auch über die folgenden API-Endpunkte auf unsere Modelle zugreifen. | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -137,6 +138,7 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -222,6 +224,7 @@ Die kostenlosen Modelle: - MiMo-V2.5 Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Hy3 Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. +- Ling 3.0 Flash Fin Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Nemotron 3 Ultra Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Nemotron 3.5 Lightning Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Big Pickle ist ein Stealth-Modell, das für begrenzte Zeit kostenlos auf OpenCode verfügbar ist. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. @@ -279,6 +282,7 @@ Alle unsere Modelle werden in den USA gehostet. Unsere Provider folgen einer Zer - Big Pickle: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. - MiMo-V2.5 Free: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. - Hy3 Free: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. +- Ling 3.0 Flash Fin Free: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. - Nemotron 3 Ultra Free (kostenlose NVIDIA-Endpunkte): Nur für Testzwecke — übermitteln Sie keine personenbezogenen oder vertraulichen Daten. Ihre Nutzung wird zu Sicherheitszwecken und zur Verbesserung der Produkte und Dienste von NVIDIA protokolliert. Die zu Verbesserungszwecken protokollierten Sitzungsdaten sind nicht mit Ihrer Identität oder einem dauerhaften Identifikator verknüpft. Weitere Informationen zu unseren Datenverarbeitungspraktiken finden Sie in unserer [Datenschutzrichtlinie](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Durch die Interaktion mit diesem Endpunkt stimmen Sie unserer Erhebung, Aufzeichnung und Nutzung solcher Informationen sowie den [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) zu. - Nemotron 3.5 Lightning Free (kostenlose NVIDIA-Endpunkte): Nur für Testzwecke — übermitteln Sie keine personenbezogenen oder vertraulichen Daten. Ihre Nutzung wird zu Sicherheitszwecken und zur Verbesserung der Produkte und Dienste von NVIDIA protokolliert. Die zu Verbesserungszwecken protokollierten Sitzungsdaten sind nicht mit Ihrer Identität oder einem dauerhaften Identifikator verknüpft. Weitere Informationen zu unseren Datenverarbeitungspraktiken finden Sie in unserer [Datenschutzrichtlinie](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Durch die Interaktion mit diesem Endpunkt stimmen Sie unserer Erhebung, Aufzeichnung und Nutzung solcher Informationen sowie den [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) zu. - OpenAI APIs: Anfragen werden in Übereinstimmung mit [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) 30 Tage lang gespeichert. diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index eed117a8d..c48854ac6 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -119,6 +119,7 @@ También puedes acceder a nuestros modelos a través de los siguientes endpoints | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -148,6 +149,7 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -233,6 +235,7 @@ Los modelos gratuitos: - MiMo-V2.5 Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Hy3 Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. +- Ling 3.0 Flash Fin Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Nemotron 3 Ultra Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Nemotron 3.5 Lightning Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Big Pickle es un modelo stealth que es gratuito en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. @@ -293,6 +296,7 @@ Todos nuestros modelos están alojados en US. Nuestros proveedores siguen una po - Big Pickle: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. - MiMo-V2.5 Free: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. - Hy3 Free: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. +- Ling 3.0 Flash Fin Free: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. - Nemotron 3 Ultra Free (endpoints gratuitos de NVIDIA): Solo para uso de prueba — no envíes datos personales ni confidenciales. Tu uso se registra con fines de seguridad y para mejorar los productos y servicios de NVIDIA. Los datos de sesión registrados con fines de mejora no están vinculados a tu identidad ni a ningún identificador persistente. Para obtener más información sobre nuestras prácticas de procesamiento de datos, consulta nuestra [Política de privacidad](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Al interactuar con este endpoint, aceptas que recopilemos, registremos y usemos dicha información, así como los [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoints gratuitos de NVIDIA): Solo para uso de prueba — no envíes datos personales ni confidenciales. Tu uso se registra con fines de seguridad y para mejorar los productos y servicios de NVIDIA. Los datos de sesión registrados con fines de mejora no están vinculados a tu identidad ni a ningún identificador persistente. Para obtener más información sobre nuestras prácticas de procesamiento de datos, consulta nuestra [Política de privacidad](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Al interactuar con este endpoint, aceptas que recopilemos, registremos y usemos dicha información, así como los [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Las solicitudes se conservan durante 30 días de acuerdo con [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index 8061a2ced..1cc5b70dc 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -110,6 +110,7 @@ Vous pouvez également accéder à nos modèles via les points de terminaison AP | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -137,6 +138,7 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -222,6 +224,7 @@ Les modèles gratuits : - MiMo-V2.5 Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Hy3 Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. +- Ling 3.0 Flash Fin Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Nemotron 3 Ultra Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Nemotron 3.5 Lightning Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Big Pickle est un modèle stealth gratuit sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. @@ -279,6 +282,7 @@ Tous nos modèles sont hébergés aux US. Nos fournisseurs suivent une politique - Big Pickle : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. - MiMo-V2.5 Free : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. - Hy3 Free : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. +- Ling 3.0 Flash Fin Free : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. - Nemotron 3 Ultra Free (endpoints NVIDIA gratuits) : Réservé à un usage d'essai — n'envoyez pas de données personnelles ou confidentielles. Votre utilisation est journalisée à des fins de sécurité et pour améliorer les produits et services de NVIDIA. Les données de session journalisées à des fins d'amélioration ne sont pas liées à votre identité ni à un quelconque identifiant persistant. Pour plus d'informations sur nos pratiques de traitement des données, consultez notre [Politique de confidentialité](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). En interagissant avec cet endpoint, vous consentez à notre collecte, à notre enregistrement et à notre utilisation de ces informations ainsi qu'aux [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoints NVIDIA gratuits) : Réservé à un usage d'essai — n'envoyez pas de données personnelles ou confidentielles. Votre utilisation est journalisée à des fins de sécurité et pour améliorer les produits et services de NVIDIA. Les données de session journalisées à des fins d'amélioration ne sont pas liées à votre identité ni à un quelconque identifiant persistant. Pour plus d'informations sur nos pratiques de traitement des données, consultez notre [Politique de confidentialité](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). En interagissant avec cet endpoint, vous consentez à notre collecte, à notre enregistrement et à notre utilisation de ces informations ainsi qu'aux [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs : Les requêtes sont conservées pendant 30 jours conformément à [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index ab6c94472..f77f77622 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -119,6 +119,7 @@ Puoi anche accedere ai nostri modelli tramite i seguenti endpoint API. | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -148,6 +149,7 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -233,6 +235,7 @@ I modelli gratuiti: - MiMo-V2.5 Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Hy3 Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. +- Ling 3.0 Flash Fin Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Nemotron 3 Ultra Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Nemotron 3.5 Lightning Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Big Pickle è un modello stealth che è gratuito su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. @@ -293,6 +296,7 @@ Tutti i nostri modelli sono ospitati negli US. I nostri provider seguono una pol - Big Pickle: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. - MiMo-V2.5 Free: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. - Hy3 Free: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. +- Ling 3.0 Flash Fin Free: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. - Nemotron 3 Ultra Free (endpoint NVIDIA gratuiti): solo per uso di prova — non inviare dati personali o riservati. Il tuo utilizzo viene registrato per finalità di sicurezza e per migliorare i prodotti e i servizi di NVIDIA. I dati di sessione registrati a fini di miglioramento non sono collegati alla tua identità né ad alcun identificatore persistente. Per maggiori informazioni sulle nostre pratiche di trattamento dei dati, consulta la nostra [Informativa sulla privacy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interagendo con questo endpoint, acconsenti alla nostra raccolta, registrazione e utilizzo di tali informazioni e ai [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoint NVIDIA gratuiti): solo per uso di prova — non inviare dati personali o riservati. Il tuo utilizzo viene registrato per finalità di sicurezza e per migliorare i prodotti e i servizi di NVIDIA. I dati di sessione registrati a fini di miglioramento non sono collegati alla tua identità né ad alcun identificatore persistente. Per maggiori informazioni sulle nostre pratiche di trattamento dei dati, consulta la nostra [Informativa sulla privacy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interagendo con questo endpoint, acconsenti alla nostra raccolta, registrazione e utilizzo di tali informazioni e ai [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: le richieste vengono conservate per 30 giorni in conformità con [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index acf316674..9ccc24c28 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -110,6 +110,7 @@ OpenCode Zen は、OpenCode のほかのプロバイダーと同じように動 | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -137,6 +138,7 @@ https://opencode.ai/zen/v1/models | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -222,6 +224,7 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Hy3 Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 +- Ling 3.0 Flash Fin Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Nemotron 3 Ultra Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Nemotron 3.5 Lightning Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Big Pickle はステルスモデルで、期間限定で OpenCode で無料提供されています。チームはこの期間中にフィードバックを集め、モデルを改善しています。 @@ -279,6 +282,7 @@ https://opencode.ai/zen/v1/models - Big Pickle: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 - MiMo-V2.5 Free: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 - Hy3 Free: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 +- Ling 3.0 Flash Fin Free: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 - Nemotron 3 Ultra Free(NVIDIA の無料エンドポイント): 試用専用です — 個人情報や機密データは送信しないでください。お客様の利用は、セキュリティ目的および NVIDIA の製品とサービスの改善のために記録されます。改善目的で記録されたセッションデータは、お客様の身元や永続的な識別子とは関連付けられません。当社のデータ処理慣行の詳細については、[プライバシーポリシー](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)をご覧ください。このエンドポイントを利用することで、お客様はそのような情報の当社による収集、記録、利用、および [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) に同意したものとみなされます。 - Nemotron 3.5 Lightning Free(NVIDIA の無料エンドポイント): 試用専用です — 個人情報や機密データは送信しないでください。お客様の利用は、セキュリティ目的および NVIDIA の製品とサービスの改善のために記録されます。改善目的で記録されたセッションデータは、お客様の身元や永続的な識別子とは関連付けられません。当社のデータ処理慣行の詳細については、[プライバシーポリシー](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)をご覧ください。このエンドポイントを利用することで、お客様はそのような情報の当社による収集、記録、利用、および [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) に同意したものとみなされます。 - OpenAI APIs: リクエストは [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) に従って 30 日間保持されます。 diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index a3965a9eb..eca5125ad 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -110,6 +110,7 @@ OpenCode Zen은 OpenCode의 다른 provider와 똑같이 작동합니다. | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -137,6 +138,7 @@ https://opencode.ai/zen/v1/models | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -222,6 +224,7 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Hy3 Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. +- Ling 3.0 Flash Fin Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Nemotron 3 Ultra Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Nemotron 3.5 Lightning Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Big Pickle은 한정된 기간 동안 OpenCode에서 무료로 제공되는 stealth model입니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. @@ -279,6 +282,7 @@ https://opencode.ai/zen/v1/models - Big Pickle: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. - MiMo-V2.5 Free: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. - Hy3 Free: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. +- Ling 3.0 Flash Fin Free: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. - Nemotron 3 Ultra Free(NVIDIA 무료 엔드포인트): 평가판 전용이며 — 개인 정보나 기밀 데이터는 제출하지 마세요. 사용 내역은 보안 목적과 NVIDIA 제품 및 서비스 개선을 위해 기록됩니다. 개선 목적으로 기록된 세션 데이터는 사용자의 신원이나 영구 식별자와 연결되지 않습니다. 당사의 데이터 처리 관행에 대한 자세한 내용은 [개인정보처리방침](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)을 참조하세요. 이 엔드포인트와 상호 작용함으로써 사용자는 당사가 이러한 정보를 수집, 기록, 사용하는 것과 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)에 동의하게 됩니다. - Nemotron 3.5 Lightning Free(NVIDIA 무료 엔드포인트): 평가판 전용이며 — 개인 정보나 기밀 데이터는 제출하지 마세요. 사용 내역은 보안 목적과 NVIDIA 제품 및 서비스 개선을 위해 기록됩니다. 개선 목적으로 기록된 세션 데이터는 사용자의 신원이나 영구 식별자와 연결되지 않습니다. 당사의 데이터 처리 관행에 대한 자세한 내용은 [개인정보처리방침](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)을 참조하세요. 이 엔드포인트와 상호 작용함으로써 사용자는 당사가 이러한 정보를 수집, 기록, 사용하는 것과 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)에 동의하게 됩니다. - OpenAI APIs: 요청은 [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data)에 따라 30일 동안 보관됩니다. diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index 68b7435be..4a48b8310 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -119,6 +119,7 @@ Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter. | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -148,6 +149,7 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -233,6 +235,7 @@ Gratis-modellene: - MiMo-V2.5 Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Hy3 Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. +- Ling 3.0 Flash Fin Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Nemotron 3 Ultra Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Nemotron 3.5 Lightning Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Big Pickle er en stealth-modell som er gratis på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. @@ -293,6 +296,7 @@ Alle modellene våre hostes i US. Leverandørene våre følger en policy for zer - Big Pickle: I gratisperioden kan innsamlede data brukes til å forbedre modellen. - MiMo-V2.5 Free: I gratisperioden kan innsamlede data brukes til å forbedre modellen. - Hy3 Free: I gratisperioden kan innsamlede data brukes til å forbedre modellen. +- Ling 3.0 Flash Fin Free: I gratisperioden kan innsamlede data brukes til å forbedre modellen. - Nemotron 3 Ultra Free (gratis NVIDIA-endepunkter): Kun for prøvebruk — ikke send inn personopplysninger eller konfidensielle data. Bruken din logges av sikkerhetshensyn og for å forbedre NVIDIAs produkter og tjenester. Sesjonsdataene som logges for forbedringsformål, er ikke knyttet til identiteten din eller noen vedvarende identifikator. For mer informasjon om vår databehandlingspraksis, se vår [personvernerklæring](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved å samhandle med dette endepunktet samtykker du til at vi samler inn, registrerer og bruker slik informasjon, samt til [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (gratis NVIDIA-endepunkter): Kun for prøvebruk — ikke send inn personopplysninger eller konfidensielle data. Bruken din logges av sikkerhetshensyn og for å forbedre NVIDIAs produkter og tjenester. Sesjonsdataene som logges for forbedringsformål, er ikke knyttet til identiteten din eller noen vedvarende identifikator. For mer informasjon om vår databehandlingspraksis, se vår [personvernerklæring](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved å samhandle med dette endepunktet samtykker du til at vi samler inn, registrerer og bruker slik informasjon, samt til [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Forespørsler lagres i 30 dager i samsvar med [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index c7db53507..9698672a2 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -119,6 +119,7 @@ Możesz też uzyskać dostęp do naszych modeli przez poniższe endpointy API. | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -148,6 +149,7 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -233,6 +235,7 @@ Darmowe modele: - MiMo-V2.5 Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Hy3 Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. +- Ling 3.0 Flash Fin Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Nemotron 3 Ultra Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Nemotron 3.5 Lightning Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Big Pickle to stealth model, który jest darmowy w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. @@ -293,6 +296,7 @@ Wszystkie nasze modele są hostowane w US. Nasi dostawcy stosują politykę zero - Big Pickle: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. - MiMo-V2.5 Free: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. - Hy3 Free: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. +- Ling 3.0 Flash Fin Free: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. - Nemotron 3 Ultra Free (darmowe endpointy NVIDIA): Tylko do użytku próbnego — nie przesyłaj danych osobowych ani poufnych. Twoje korzystanie jest rejestrowane w celach bezpieczeństwa oraz w celu ulepszania produktów i usług NVIDIA. Rejestrowane dane sesji wykorzystywane do celów ulepszania nie są powiązane z Twoją tożsamością ani żadnym trwałym identyfikatorem. Aby uzyskać więcej informacji o naszych praktykach przetwarzania danych, zapoznaj się z naszą [Polityką prywatności](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Korzystając z tego endpointu, wyrażasz zgodę na gromadzenie, rejestrowanie i wykorzystywanie przez nas takich informacji oraz na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (darmowe endpointy NVIDIA): Tylko do użytku próbnego — nie przesyłaj danych osobowych ani poufnych. Twoje korzystanie jest rejestrowane w celach bezpieczeństwa oraz w celu ulepszania produktów i usług NVIDIA. Rejestrowane dane sesji wykorzystywane do celów ulepszania nie są powiązane z Twoją tożsamością ani żadnym trwałym identyfikatorem. Aby uzyskać więcej informacji o naszych praktykach przetwarzania danych, zapoznaj się z naszą [Polityką prywatności](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Korzystając z tego endpointu, wyrażasz zgodę na gromadzenie, rejestrowanie i wykorzystywanie przez nas takich informacji oraz na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Żądania są przechowywane przez 30 dni zgodnie z [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index 5792ca2db..6ee33cd32 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -110,6 +110,7 @@ Você também pode acessar nossos modelos pelos seguintes endpoints de API. | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -137,6 +138,7 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -222,6 +224,7 @@ Os modelos gratuitos: - MiMo-V2.5 Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Hy3 Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. +- Ling 3.0 Flash Fin Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Nemotron 3 Ultra Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Nemotron 3.5 Lightning Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Big Pickle é um modelo stealth que está gratuito no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. @@ -279,6 +282,7 @@ Todos os nossos modelos são hospedados nos US. Nossos provedores seguem uma pol - Big Pickle: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. - MiMo-V2.5 Free: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. - Hy3 Free: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. +- Ling 3.0 Flash Fin Free: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. - Nemotron 3 Ultra Free (endpoints gratuitos da NVIDIA): Apenas para uso de avaliação — não envie dados pessoais ou confidenciais. Seu uso é registrado para fins de segurança e para melhorar os produtos e serviços da NVIDIA. Os dados de sessão registrados para fins de melhoria não estão vinculados à sua identidade nem a qualquer identificador persistente. Para mais informações sobre nossas práticas de processamento de dados, consulte nossa [Política de Privacidade](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ao interagir com este endpoint, você consente com a nossa coleta, registro e uso dessas informações e com os [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoints gratuitos da NVIDIA): Apenas para uso de avaliação — não envie dados pessoais ou confidenciais. Seu uso é registrado para fins de segurança e para melhorar os produtos e serviços da NVIDIA. Os dados de sessão registrados para fins de melhoria não estão vinculados à sua identidade nem a qualquer identificador persistente. Para mais informações sobre nossas práticas de processamento de dados, consulte nossa [Política de Privacidade](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ao interagir com este endpoint, você consente com a nossa coleta, registro e uso dessas informações e com os [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: As solicitações são retidas por 30 dias de acordo com [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index f72238c90..cda6177b9 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -119,6 +119,7 @@ OpenCode Zen работает как любой другой провайдер | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -148,6 +149,7 @@ https://opencode.ai/zen/v1/models | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -233,6 +235,7 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Hy3 Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. +- Ling 3.0 Flash Fin Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Nemotron 3 Ultra Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Nemotron 3.5 Lightning Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Big Pickle — это скрытая модель, которая доступна бесплатно в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. @@ -293,6 +296,7 @@ https://opencode.ai/zen/v1/models - Big Pickle: во время бесплатного периода собранные данные могут использоваться для улучшения модели. - MiMo-V2.5 Free: во время бесплатного периода собранные данные могут использоваться для улучшения модели. - Hy3 Free: во время бесплатного периода собранные данные могут использоваться для улучшения модели. +- Ling 3.0 Flash Fin Free: во время бесплатного периода собранные данные могут использоваться для улучшения модели. - Nemotron 3 Ultra Free (бесплатные эндпоинты NVIDIA): только для пробного использования — не отправляйте персональные или конфиденциальные данные. Использование логируется в целях безопасности и для улучшения продуктов и сервисов NVIDIA. Логируемые данные сессии, используемые в целях улучшения, не связаны с вашей личностью или каким-либо постоянным идентификатором. Подробнее о наших практиках обработки данных см. в нашей [Политике конфиденциальности](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Взаимодействуя с этим эндпоинтом, вы соглашаетесь на сбор, запись и использование нами такой информации, а также с [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (бесплатные эндпоинты NVIDIA): только для пробного использования — не отправляйте персональные или конфиденциальные данные. Использование логируется в целях безопасности и для улучшения продуктов и сервисов NVIDIA. Логируемые данные сессии, используемые в целях улучшения, не связаны с вашей личностью или каким-либо постоянным идентификатором. Подробнее о наших практиках обработки данных см. в нашей [Политике конфиденциальности](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Взаимодействуя с этим эндпоинтом, вы соглашаетесь на сбор, запись и использование нами такой информации, а также с [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: запросы хранятся 30 дней в соответствии с [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index 157e906a3..4788e22dd 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -112,6 +112,7 @@ OpenCode Zen ทำงานเหมือน provider อื่น ๆ ใน | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -139,6 +140,7 @@ https://opencode.ai/zen/v1/models | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -224,6 +226,7 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Hy3 Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล +- Ling 3.0 Flash Fin Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Nemotron 3 Ultra Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Nemotron 3.5 Lightning Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Big Pickle เป็น stealth model ที่ใช้งานฟรีบน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล @@ -281,6 +284,7 @@ https://opencode.ai/zen/v1/models - Big Pickle: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล - MiMo-V2.5 Free: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล - Hy3 Free: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล +- Ling 3.0 Flash Fin Free: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล - Nemotron 3 Ultra Free (endpoint ฟรีของ NVIDIA): ใช้สำหรับการทดลองเท่านั้น — โปรดอย่าส่งข้อมูลส่วนบุคคลหรือข้อมูลลับ การใช้งานของคุณจะถูกบันทึกเพื่อวัตถุประสงค์ด้านความปลอดภัยและเพื่อปรับปรุงผลิตภัณฑ์และบริการของ NVIDIA ข้อมูลเซสชันที่บันทึกไว้เพื่อวัตถุประสงค์ในการปรับปรุงจะไม่เชื่อมโยงกับตัวตนของคุณหรือตัวระบุถาวรใด ๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแนวปฏิบัติในการประมวลผลข้อมูลของเรา โปรดดู [นโยบายความเป็นส่วนตัว](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) ของเรา การโต้ตอบกับ endpoint นี้ถือว่าคุณยินยอมให้เราเก็บรวบรวม บันทึก และใช้ข้อมูลดังกล่าว รวมถึง [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) - Nemotron 3.5 Lightning Free (endpoint ฟรีของ NVIDIA): ใช้สำหรับการทดลองเท่านั้น — โปรดอย่าส่งข้อมูลส่วนบุคคลหรือข้อมูลลับ การใช้งานของคุณจะถูกบันทึกเพื่อวัตถุประสงค์ด้านความปลอดภัยและเพื่อปรับปรุงผลิตภัณฑ์และบริการของ NVIDIA ข้อมูลเซสชันที่บันทึกไว้เพื่อวัตถุประสงค์ในการปรับปรุงจะไม่เชื่อมโยงกับตัวตนของคุณหรือตัวระบุถาวรใด ๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแนวปฏิบัติในการประมวลผลข้อมูลของเรา โปรดดู [นโยบายความเป็นส่วนตัว](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) ของเรา การโต้ตอบกับ endpoint นี้ถือว่าคุณยินยอมให้เราเก็บรวบรวม บันทึก และใช้ข้อมูลดังกล่าว รวมถึง [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) - OpenAI APIs: คำขอจะถูกเก็บไว้เป็นเวลา 30 วันตาม [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index d96fdce37..0188c0961 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -110,6 +110,7 @@ Modellerimize aşağıdaki API uç noktaları aracılığıyla da erişebilirsin | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -137,6 +138,7 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -222,6 +224,7 @@ Kredi kartı ücretleri maliyet üzerinden yansıtılır (%4.4 + işlem başına - MiMo-V2.5 Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Hy3 Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. +- Ling 3.0 Flash Fin Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Nemotron 3 Ultra Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Nemotron 3.5 Lightning Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Big Pickle, sınırlı bir süre için OpenCode'da ücretsiz olan gizli bir modeldir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. @@ -279,6 +282,7 @@ Tüm modellerimiz US'de barındırılıyor. Sağlayıcılarımız zero-retention - Big Pickle: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. - MiMo-V2.5 Free: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. - Hy3 Free: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. +- Ling 3.0 Flash Fin Free: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. - Nemotron 3 Ultra Free (ücretsiz NVIDIA uç noktaları): Yalnızca deneme amaçlıdır — kişisel veya gizli veri göndermeyin. Kullanımınız güvenlik amacıyla ve NVIDIA ürünlerini ve hizmetlerini geliştirmek için kaydedilir. Geliştirme amacıyla kaydedilen oturum verileri kimliğinizle veya herhangi bir kalıcı tanımlayıcıyla ilişkilendirilmez. Veri işleme uygulamalarımız hakkında daha fazla bilgi için [Gizlilik Politikamıza](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) bakın. Bu uç noktayla etkileşime geçerek, bu tür bilgileri toplamamıza, kaydetmemize ve kullanmamıza ve [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) koşullarına onay vermiş olursunuz. - Nemotron 3.5 Lightning Free (ücretsiz NVIDIA uç noktaları): Yalnızca deneme amaçlıdır — kişisel veya gizli veri göndermeyin. Kullanımınız güvenlik amacıyla ve NVIDIA ürünlerini ve hizmetlerini geliştirmek için kaydedilir. Geliştirme amacıyla kaydedilen oturum verileri kimliğinizle veya herhangi bir kalıcı tanımlayıcıyla ilişkilendirilmez. Veri işleme uygulamalarımız hakkında daha fazla bilgi için [Gizlilik Politikamıza](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) bakın. Bu uç noktayla etkileşime geçerek, bu tür bilgileri toplamamıza, kaydetmemize ve kullanmamıza ve [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) koşullarına onay vermiş olursunuz. - OpenAI APIs: İstekler [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) uyarınca 30 gün boyunca saklanır. diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index a5a80dbf6..e41ab3f90 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -119,6 +119,7 @@ You can also access our models through the following API endpoints. | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -148,6 +149,7 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -233,6 +235,7 @@ The free models: - MiMo-V2.5 Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Hy3 Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. +- Ling 3.0 Flash Fin Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Nemotron 3 Ultra Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Nemotron 3.5 Lightning Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Big Pickle is a stealth model that's free on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. @@ -293,6 +296,7 @@ All our models are hosted in the US. Our providers follow a zero-retention polic - Big Pickle: During its free period, collected data may be used to improve the model. - MiMo-V2.5 Free: During its free period, collected data may be used to improve the model. - Hy3 Free: During its free period, collected data may be used to improve the model. +- Ling 3.0 Flash Fin Free: During its free period, collected data may be used to improve the model. - Nemotron 3 Ultra Free (NVIDIA free endpoints): Trial use only — do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (NVIDIA free endpoints): Trial use only — do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Requests are retained for 30 days in accordance with [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index 258905c22..51c0549f3 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -110,6 +110,7 @@ OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -137,6 +138,7 @@ https://opencode.ai/zen/v1/models | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -222,6 +224,7 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Hy3 Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 +- Ling 3.0 Flash Fin Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Nemotron 3 Ultra Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Nemotron 3.5 Lightning Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Big Pickle 是一个隐身模型,目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 @@ -279,6 +282,7 @@ https://opencode.ai/zen/v1/models - Big Pickle:在免费期间,收集的数据可能会被用于改进模型。 - MiMo-V2.5 Free:在免费期间,收集的数据可能会被用于改进模型。 - Hy3 Free:在免费期间,收集的数据可能会被用于改进模型。 +- Ling 3.0 Flash Fin Free:在免费期间,收集的数据可能会被用于改进模型。 - Nemotron 3 Ultra Free(NVIDIA 免费端点):仅供试用 — 请勿提交个人或机密数据。出于安全目的以及为改进 NVIDIA 产品和服务,系统会记录你的使用情况。出于改进目的而记录的会话数据不会与你的身份或任何持久标识符相关联。有关我们数据处理实践的更多信息,请参阅我们的[隐私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。与此端点进行交互,即表示你同意我们收集、记录和使用此类信息,并同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - Nemotron 3.5 Lightning Free(NVIDIA 免费端点):仅供试用 — 请勿提交个人或机密数据。出于安全目的以及为改进 NVIDIA 产品和服务,系统会记录你的使用情况。出于改进目的而记录的会话数据不会与你的身份或任何持久标识符相关联。有关我们数据处理实践的更多信息,请参阅我们的[隐私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。与此端点进行交互,即表示你同意我们收集、记录和使用此类信息,并同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - OpenAI APIs:请求会根据 [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) 保留 30 天。 diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 38be595c4..501a62dbb 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -114,6 +114,7 @@ OpenCode Zen 的運作方式和 OpenCode 中的其他供應商一樣。 | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -142,6 +143,7 @@ https://opencode.ai/zen/v1/models | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | | Hy3 Free | Free | Free | Free | - | +| Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | @@ -227,6 +229,7 @@ https://opencode.ai/zen/v1/models - MiMo-V2.5 Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Hy3 Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 +- Ling 3.0 Flash Fin Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Nemotron 3 Ultra Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Nemotron 3.5 Lightning Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Big Pickle 是一個隱身模型,在 OpenCode 上限時免費提供。團隊正在利用這段時間收集回饋並改進模型。 @@ -285,6 +288,7 @@ https://opencode.ai/zen/v1/models - Big Pickle: 在免費期間,收集到的資料可能會用於改進模型。 - MiMo-V2.5 Free: 在免費期間,收集到的資料可能會用於改進模型。 - Hy3 Free: 在免費期間,收集到的資料可能會用於改進模型。 +- Ling 3.0 Flash Fin Free: 在免費期間,收集到的資料可能會用於改進模型。 - Nemotron 3 Ultra Free(NVIDIA 免費端點):僅供試用 — 請勿提交個人或機密資料。基於安全目的以及為了改進 NVIDIA 產品與服務,系統會記錄你的使用情況。基於改進目的而記錄的工作階段資料不會與你的身分或任何持久識別碼相關聯。有關我們資料處理實務的更多資訊,請參閱我們的[隱私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。與此端點進行互動,即表示你同意我們收集、記錄與使用此類資訊,並同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - Nemotron 3.5 Lightning Free(NVIDIA 免費端點):僅供試用 — 請勿提交個人或機密資料。基於安全目的以及為了改進 NVIDIA 產品與服務,系統會記錄你的使用情況。基於改進目的而記錄的工作階段資料不會與你的身分或任何持久識別碼相關聯。有關我們資料處理實務的更多資訊,請參閱我們的[隱私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。與此端點進行互動,即表示你同意我們收集、記錄與使用此類資訊,並同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - OpenAI APIs: 請求會依據 [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) 保留 30 天。 From 62a2f0e6174de920ca8cbb118bdea7dbef3ef3fd Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Fri, 28 Aug 2026 22:22:28 -0400 Subject: [PATCH 192/271] feat(console): animate Go usage allowances and bonuses (#46055) --- bun.lock | 5 + packages/console/app/package.json | 1 + .../app/src/component/limits-graph.tsx | 267 ++++++++++++++++++ .../app/src/component/rolling-number.tsx | 58 ++++ packages/console/app/src/i18n/en.ts | 2 +- packages/console/app/src/routes/go/index.css | 210 ++++++++++++-- packages/console/app/src/routes/go/index.tsx | 200 +------------ 7 files changed, 528 insertions(+), 215 deletions(-) create mode 100644 packages/console/app/src/component/limits-graph.tsx create mode 100644 packages/console/app/src/component/rolling-number.tsx diff --git a/bun.lock b/bun.lock index c8cb37f4e..71049cb1a 100644 --- a/bun.lock +++ b/bun.lock @@ -178,6 +178,7 @@ "@upstash/redis": "1.38.0", "chart.js": "4.5.1", "nitro": "3.0.1-alpha.1", + "number-flow": "0.6.2", "solid-js": "catalog:", "solid-list": "0.3.0", "solid-stripe": "0.8.1", @@ -3651,6 +3652,8 @@ "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "esm-env": ["esm-env@1.2.2", "", {}, "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA=="], + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], "estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], @@ -4565,6 +4568,8 @@ "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], + "number-flow": ["number-flow@0.6.2", "", { "dependencies": { "esm-env": "^1.1.4" } }, "sha512-MCnImG4Q5vPwhSXnov56nOuyyKn6LC+Qd7II1UiKc+ACRtug5iAtn0+CwXNxM38AC5lSowEY+oYEtZX2qMnUyw=="], + "nypm": ["nypm@0.6.6", "", { "dependencies": { "citty": "^0.2.2", "pathe": "^2.0.3", "tinyexec": "^1.1.1" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-vRyr0r4cbBapw07Xw8xrj9Teq3o7MUD35rSaTcanDbW+aK2XHDgJFiU6ZTj2GBw7Q12ysdsyFss+Vdz4hQ0Y6Q=="], "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], diff --git a/packages/console/app/package.json b/packages/console/app/package.json index e83f568c3..8e03034d6 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -29,6 +29,7 @@ "@upstash/redis": "1.38.0", "chart.js": "4.5.1", "nitro": "3.0.1-alpha.1", + "number-flow": "0.6.2", "solid-js": "catalog:", "solid-list": "0.3.0", "solid-stripe": "0.8.1", diff --git a/packages/console/app/src/component/limits-graph.tsx b/packages/console/app/src/component/limits-graph.tsx new file mode 100644 index 000000000..03e278939 --- /dev/null +++ b/packages/console/app/src/component/limits-graph.tsx @@ -0,0 +1,267 @@ +import { For, createSignal, onCleanup, onMount } from "solid-js" +import { useI18n } from "~/context/i18n" +import { RollingNumber } from "./rolling-number" + +export function LimitsGraph(props: { href: string }) { + let root!: HTMLElement + const [visible, setVisible] = createSignal(false) + const [boosted, setBoosted] = createSignal(false) + const [promoted, setPromoted] = createSignal([]) + let timer: ReturnType | undefined + + const i18n = useI18n() + + onMount(() => { + const motion = window.matchMedia("(prefers-reduced-motion: reduce)") + const finish = () => { + if (!motion.matches) return + clearTimeout(timer) + setVisible(true) + setBoosted(true) + setPromoted(bonuses.map((model) => model.id)) + } + motion.addEventListener("change", finish) + onCleanup(() => { + clearTimeout(timer) + motion.removeEventListener("change", finish) + }) + if (motion.matches) return finish() + if (typeof IntersectionObserver === "undefined") return setVisible(true) + const observer = new IntersectionObserver( + (entries) => { + const entry = entries[0] + if (!entry?.isIntersecting || entry.intersectionRatio < 0.35) return + setVisible(true) + observer.disconnect() + }, + { threshold: 0.35 }, + ) + observer.observe(root) + onCleanup(() => observer.disconnect()) + }) + + const baseline = 100 + const graph = [ + { id: "kimi-k3", name: "Kimi K3", req: 110 }, + { id: "grok-4.6", name: "Grok 4.6", req: 169 }, + { id: "hy4-preview", name: "Hy4 preview", req: 1350 }, + { id: "gpt-5.6-luna", name: "GPT 5.6 Luna", req: 2050 }, + { id: "glm-5.3-flash", name: "GLM-5.3-Flash", req: 3160, baseReq: 1580, bonus: "2x usage" }, + { id: "minimax-m3", name: "MiniMax M3", req: 3200 }, + { id: "qwen3.7-plus", name: "Qwen3.7 Plus", req: 4300 }, + { id: "qwen3.8-flash", name: "Qwen3.8 Flash", req: 5400 }, + { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", req: 7600 }, + { id: "longcat-2.0", name: "LongCat-2.0", req: 11400 }, + { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100 }, + { id: "hy3", name: "Hy3", req: 34400, baseReq: 4300, bonus: "8x usage" }, + { id: "muse-spark-1.2-contributor", name: "Muse Spark 1.2 Contributor", req: 45300, edge: true }, + ].map((model, index) => ({ ...model, d: `${50 + index * 25}ms` })) + const bonuses = graph.filter((model) => model.baseReq) + + const w = 1040 + const chartW = 720 + const left = 40 + const right = 60 + const top = 18 + const bottom = 44 + const plot = chartW - left - right + const infiniteX = w - 180 + + const ratio = (n: number) => n / baseline + const rmax = Math.max(1, ...graph.filter((m) => !("infinite" in m)).map((m) => ratio(m.req))) + const log = (n: number) => Math.log10(Math.max(n, 1)) + const base = 24 + const p = 2.2 + const x = (r: number) => left + base + Math.pow(log(r) / log(rmax), p) * (plot - base) + const ticks = [1, 5, 10, 25, 50, 100, 250].filter((t) => t <= rmax) + const labels = (() => { + const set = new Set() + let last = -Infinity + for (const t of ticks) { + if (t === 1) { + set.add(t) + last = x(t) + continue + } + const pos = x(t) + if (pos - last < 44) continue + set.add(t) + last = pos + } + return set + })() + const shown = ticks.filter((t) => labels.has(t)) + const bh = 8 + const gap = 20 + const step = bh + gap + const gy = (i: number) => top + 22 + step * i + const h = gy(graph.length - 1) + bottom + const my = graph.length < 2 ? gy(0) : (gy(0) + gy(graph.length - 1)) / 2 + const px = (n: number) => `${(n / w) * 100}%` + const py = (n: number) => `${(n / h) * 100}%` + const lx = px(left - 16) + const ty = py(h - 18) + const timing = () => { + const style = getComputedStyle(root) + return { + duration: Number.parseFloat(style.getPropertyValue("--bonus-duration")), + easing: style.getPropertyValue("--spring-easing").trim(), + spinEasing: style.getPropertyValue("--digit-easing").trim(), + } + } + + return ( +
      { + if (!(event.target instanceof SVGElement) || event.animationName !== "go-graph-reveal") return + if (event.target.hasAttribute("data-stage-end") && !boosted()) { + const duration = Number.parseFloat(getComputedStyle(root).getPropertyValue("--reveal-duration")) + timer = setTimeout(() => setBoosted(true), duration * 0.6) + return + } + if (event.target.dataset.animate !== "bonus") return + const model = event.target.dataset.model + if (!model) return + setPromoted((current) => [...current, model]) + }} + > +
      + + + + + + +
      + + {(m, i) => ( + + + {!("infinite" in m) && m.baseReq ? ( + + ) : ( + {"infinite" in m ? "\u221e" : m.req.toLocaleString()} + )} + {m.name} + {m.id === "muse-spark-1.2-contributor" && ( + + ( + + {i18n.t("go.graph.limitedRegions")} + + ) + + )} + {"infinite" in m && ({i18n.t("go.graph.limitedTime")})} + + {"bonus" in m && {m.bonus}} + + )} + +
      +
      + +
      +
      +
      +
      + {i18n.t("go.graph.label")} + + {i18n.t("go.graph.usageLimits")} + +
      +
      +
      +
      +
      + ) +} diff --git a/packages/console/app/src/component/rolling-number.tsx b/packages/console/app/src/component/rolling-number.tsx new file mode 100644 index 000000000..df1af6ca2 --- /dev/null +++ b/packages/console/app/src/component/rolling-number.tsx @@ -0,0 +1,58 @@ +import NumberFlow from "number-flow" +import { continuous } from "number-flow/plugins" +import { createEffect, onCleanup, onMount } from "solid-js" + +export function RollingNumber(props: { + value: number + target: number + timing: () => { duration: number; easing: string; spinEasing: string } +}) { + let root!: HTMLSpanElement + // Keep the server-rendered text stable while the custom element owns its contents. + const initial = props.value.toLocaleString() + const growing = props.target.toLocaleString().length > initial.length + + onMount(() => { + if (new Intl.NumberFormat().resolvedOptions().numberingSystem !== "latn") { + createEffect(() => { + root.textContent = props.value.toLocaleString() + }) + return + } + + const flow = new NumberFlow() + flow.format = { useGrouping: true, maximumFractionDigits: 0 } + flow.trend = 1 + if (growing) flow.plugins = [continuous] + flow.opacityTiming = { duration: 180, easing: "ease-out" } + const motion = window.matchMedia("(prefers-reduced-motion: reduce)") + const updateMotion = () => { + flow.animated = !motion.matches + } + updateMotion() + motion.addEventListener("change", updateMotion) + onCleanup(() => motion.removeEventListener("change", updateMotion)) + root.replaceChildren(flow) + createEffect(() => { + const value = props.value + if (flow.value === value) return + const timing = props.timing() + flow.transformTiming = { duration: timing.duration, easing: timing.easing } + flow.spinTiming = { + duration: timing.duration, + easing: growing ? "cubic-bezier(0.45, 0, 0.55, 1)" : timing.spinEasing, + } + flow.update(value) + }) + }) + + return ( + + {initial} + + ) +} diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index a557d4fb0..a479f2642 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -267,7 +267,7 @@ export const dict = { "go.graph.free": "Free", "go.graph.freePill": "Big Pickle and free models", "go.graph.go": "Go", - "go.graph.label": "Requests per 5 hour", + "go.graph.label": "Requests / 5 hours", "go.graph.limitedRegions": "limited regions", "go.graph.limitedTime": "limited time", "go.graph.tick": "{{n}}x", diff --git a/packages/console/app/src/routes/go/index.css b/packages/console/app/src/routes/go/index.css index b72b01395..7f70c41c1 100644 --- a/packages/console/app/src/routes/go/index.css +++ b/packages/console/app/src/routes/go/index.css @@ -21,10 +21,40 @@ } } -@keyframes go-graph-bar { +@keyframes go-graph-reveal { to { + clip-path: inset(0 0 0 0) fill-box; + } +} + +@keyframes go-graph-label { + to { + mask-position: 0 0; opacity: 1; - transform: scaleX(1); + } +} + +@keyframes go-graph-grid { + to { + mask-position: 0 100%; + } +} + +@keyframes go-graph-heat { + from { + filter: brightness(var(--arrival-brightness)); + } + to { + filter: brightness(1); + } +} + +@keyframes go-graph-bonus-heat { + from { + color: var(--color-go-3); + } + to { + color: var(--color-text-weak); } } @@ -477,6 +507,48 @@ body { } [data-component="limit-graph"] { + --reveal-duration: 950ms; + --bonus-duration: 1500ms; + --digit-easing: cubic-bezier(0.22, 1, 0.36, 1); + --grid-duration: 2000ms; + --grid-easing: cubic-bezier(0.22, 1, 0.36, 1); + --arrival-brightness: 1.15; + --heat-duration: 1600ms; + --bar-delay: 240ms; + /* Critically damped response, shared by the bars, labels, and rolling digits. */ + --spring-easing: linear( + 0, + 0.02991, + 0.10078, + 0.19179, + 0.28962, + 0.38611, + 0.47651, + 0.55839, + 0.63079, + 0.69365, + 0.74748, + 0.79306, + 0.83131, + 0.86315, + 0.8895, + 0.91117, + 0.92892, + 0.94339, + 0.95515, + 0.96467, + 0.97236, + 0.97855, + 0.98352, + 0.98751, + 0.9907, + 0.99324, + 0.99527, + 0.99689, + 0.99817, + 0.99919, + 1 + ); margin: 0 auto; width: calc(100% - 120px); max-width: calc(100% - 120px); @@ -491,6 +563,7 @@ body { } [data-slot="plot"] { + container-type: inline-size; position: relative; overflow: visible; width: 100%; @@ -515,6 +588,7 @@ body { } [data-slot="xlabels"] [data-xlabel] { + opacity: 0; position: absolute; left: var(--x); top: var(--y); @@ -551,11 +625,26 @@ body { } } + [data-slot="xlabels"] [data-xlabel], + [data-slot="pills"] [data-label], + [data-bonus] { + mask-image: linear-gradient(to right, #000 40%, transparent 60%); + mask-size: 250% 100%; + mask-position: 100% 0; + mask-repeat: no-repeat; + } + [data-slot="pills"] { position: absolute; inset: 0; pointer-events: none; + [data-label] { + display: inline-flex; + align-items: center; + gap: 8px; + } + [data-item] { position: absolute; left: var(--x); @@ -573,7 +662,6 @@ body { font-size: 13px; line-height: 20px; box-sizing: border-box; - opacity: 0; } @media (max-width: 60rem) { @@ -605,10 +693,16 @@ body { [data-value] { color: var(--color-text-strong); font-weight: 600; + font-variant-numeric: tabular-nums; white-space: nowrap; + + number-flow { + line-height: 1; + } } [data-bonus] { + opacity: 0; color: var(--color-text-weak); font-size: 12px; font-weight: 400; @@ -685,11 +779,22 @@ body { opacity: 0.55; } + [data-grid], + [data-stub] { + mask-image: linear-gradient(to top, #000 48%, transparent 52%); + mask-size: 100% 250%; + mask-position: 0 0; + mask-repeat: no-repeat; + mask-origin: stroke-box; + mask-clip: stroke-box; + } + + [data-animate="bar"], + [data-animate="bonus"] { + clip-path: inset(0 100% 0 0) fill-box; + } + [data-bar] { - transform-box: fill-box; - transform-origin: left center; - opacity: 0; - transform: scaleX(0.02); fill: var(--bar-go); stroke: none; } @@ -760,18 +865,74 @@ body { animation-delay: var(--d, 0ms); } - &[data-visible] [data-bar] { - animation: go-graph-bar 560ms cubic-bezier(0.2, 0.7, 0.2, 1) forwards; + &[data-visible] [data-grid], + &[data-visible] [data-stub] { + animation: + go-graph-grid var(--grid-duration) var(--grid-easing) forwards, + go-graph-heat var(--heat-duration) linear backwards; + animation-delay: var(--d, 0ms), calc(var(--d, 0ms) + var(--grid-duration)); + } + + &[data-visible] [data-slot="xlabels"] [data-xlabel] { + animation: go-graph-label 300ms ease-out forwards; animation-delay: var(--d, 0ms); } - &[data-visible] [data-slot="pills"] [data-item] { - opacity: 1; - transition: opacity 240ms ease; - transition-delay: var(--d, 0ms); + &[data-visible] [data-animate="bar"] { + animation: + go-graph-reveal var(--reveal-duration) var(--spring-easing) forwards, + go-graph-heat var(--heat-duration) linear backwards; + animation-delay: + calc(var(--bar-delay) + var(--d, 0ms)), calc(var(--bar-delay) + var(--d, 0ms) + var(--reveal-duration)); + } + + &[data-visible] [data-slot="pills"] [data-label] { + animation: go-graph-label 400ms ease-out forwards; + animation-delay: calc(var(--bar-delay) + var(--d, 0ms) + var(--reveal-duration) * 0.4); + } + + &[data-boosted] [data-animate="bonus"] { + animation: + go-graph-reveal var(--bonus-duration) var(--spring-easing) forwards, + go-graph-heat var(--heat-duration) linear backwards; + animation-delay: var(--bonus-delay), calc(var(--bonus-delay) + var(--bonus-duration)); + } + + &[data-boosted] [data-slot="pills"] [data-item][data-promo] { + translate: var(--travel) 0; + transition: translate var(--bonus-duration) var(--spring-easing) var(--bonus-delay); + + @media (max-width: 60rem) { + &[data-edge] { + translate: none; + transition: none; + } + } + } + + &[data-boosted] [data-bonus] { + animation: + go-graph-label 400ms ease-out forwards, + go-graph-bonus-heat 3000ms linear backwards; + animation-delay: var(--bonus-delay); } @media (prefers-reduced-motion: reduce) { + [data-grid], + [data-stub], + &[data-visible] [data-grid], + &[data-visible] [data-stub] { + mask-image: none; + animation: none; + } + + [data-slot="xlabels"] [data-xlabel], + &[data-visible] [data-slot="xlabels"] [data-xlabel] { + opacity: 1; + mask-image: none; + animation: none; + } + [data-animate="line"] { stroke-dashoffset: 0; animation: none; @@ -781,9 +942,12 @@ body { transform: none; animation: none; } - [data-bar] { + [data-animate="bar"], + &[data-visible] [data-animate="bar"], + [data-animate="bonus"], + &[data-boosted] [data-animate="bonus"] { opacity: 1; - transform: none; + clip-path: none; animation: none; } [data-row], @@ -792,8 +956,16 @@ body { transition: none; } - [data-slot="pills"] [data-item] { + [data-slot="pills"] [data-label], + &[data-visible] [data-slot="pills"] [data-label], + [data-bonus], + &[data-boosted] [data-bonus] { opacity: 1; + mask-image: none; + animation: none; + } + + &[data-boosted] [data-slot="pills"] [data-item][data-promo] { transition: none; } } @@ -886,6 +1058,12 @@ body { flex-wrap: wrap; justify-content: flex-start; + [data-label] { + max-width: 100%; + flex-wrap: wrap; + gap: 3px 8px; + } + &[data-model="muse-spark-1.2-contributor"] { transform: translateY(11px); diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index b2e67ecc6..6b356ccaf 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -1,7 +1,7 @@ import "./index.css" import { createAsync, query } from "@solidjs/router" import { Title, Meta } from "@solidjs/meta" -import { For, createMemo, createSignal, onCleanup, onMount } from "solid-js" +import { For, createMemo } from "solid-js" //import { HttpHeader } from "@solidjs/start" import goLogoLight from "../../asset/go-ornate-light.svg" import goLogoDark from "../../asset/go-ornate-dark.svg" @@ -10,6 +10,7 @@ import { Faq } from "~/component/faq" import { Legal } from "~/component/legal" import { Footer } from "~/component/footer" import { Header } from "~/component/header" +import { LimitsGraph } from "~/component/limits-graph" import { config } from "~/config" import { getLastSeenWorkspaceID } from "../workspace/common" import { IconMiniMax, IconMiMo, IconZai, IconAlibaba, IconDeepSeek } from "~/component/icon" @@ -49,203 +50,6 @@ const models = [ { name: "Hy3", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, ] as const -function LimitsGraph(props: { href: string }) { - let root!: HTMLElement - const [visible, setVisible] = createSignal(false) - - const i18n = useI18n() - - onMount(() => { - if (typeof IntersectionObserver === "undefined") return setVisible(true) - const observer = new IntersectionObserver( - (entries) => { - const entry = entries[0] - if (!entry?.isIntersecting) return - setVisible(true) - observer.disconnect() - }, - { threshold: 0.35 }, - ) - observer.observe(root) - onCleanup(() => observer.disconnect()) - }) - - const baseline = 100 - const graph = [ - { id: "kimi-k3", name: "Kimi K3", req: 110, d: "50ms" }, - { id: "grok-4.6", name: "Grok 4.6", req: 169, d: "75ms" }, - { id: "hy4-preview", name: "Hy4 preview", req: 1350, d: "90ms" }, - { id: "gpt-5.6-luna", name: "GPT 5.6 Luna", req: 2050, d: "290ms" }, - { id: "glm-5.3-flash", name: "GLM-5.3-Flash", req: 3160, baseReq: 1580, bonus: "2x usage", d: "100ms" }, - { id: "minimax-m3", name: "MiniMax M3", req: 3200, d: "210ms" }, - { id: "qwen3.7-plus", name: "Qwen3.7 Plus", req: 4300, d: "300ms" }, - { id: "qwen3.8-flash", name: "Qwen3.8 Flash", req: 5400, d: "315ms" }, - { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", req: 7600, d: "330ms" }, - { id: "longcat-2.0", name: "LongCat-2.0", req: 11400, d: "335ms" }, - { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100, d: "340ms" }, - { id: "hy3", name: "Hy3", req: 34400, baseReq: 4300, bonus: "8x usage", d: "320ms" }, - { id: "muse-spark-1.2-contributor", name: "Muse Spark 1.2 Contributor", req: 45300, edge: true, d: "360ms" }, - ] - - const w = 1040 - const chartW = 720 - const left = 40 - const right = 60 - const top = 18 - const bottom = 44 - const plot = chartW - left - right - const infiniteX = w - 180 - - const ratio = (n: number) => n / baseline - const rmax = Math.max(1, ...graph.filter((m) => !("infinite" in m)).map((m) => ratio(m.req))) - const log = (n: number) => Math.log10(Math.max(n, 1)) - const base = 24 - const p = 2.2 - const x = (r: number) => left + base + Math.pow(log(r) / log(rmax), p) * (plot - base) - const ticks = [1, 5, 10, 25, 50, 100, 250].filter((t) => t <= rmax) - const labels = (() => { - const set = new Set() - let last = -Infinity - for (const t of ticks) { - if (t === 1) { - set.add(t) - last = x(t) - continue - } - const pos = x(t) - if (pos - last < 44) continue - set.add(t) - last = pos - } - return set - })() - const shown = ticks.filter((t) => labels.has(t)) - const bh = 8 - const gap = 20 - const step = bh + gap - const gy = (i: number) => top + 22 + step * i - const h = gy(graph.length - 1) + bottom - const my = graph.length < 2 ? gy(0) : (gy(0) + gy(graph.length - 1)) / 2 - const px = (n: number) => `${(n / w) * 100}%` - const py = (n: number) => `${(n / h) * 100}%` - const lx = px(left - 16) - const ty = py(h - 18) - - return ( -
      -
      - - - - - - -
      - - {(m, i) => ( - - {"infinite" in m ? "∞" : m.req.toLocaleString()} - {m.name} - {m.id === "muse-spark-1.2-contributor" && ( - - ( - - {i18n.t("go.graph.limitedRegions")} - - ) - - )} - {"infinite" in m && ({i18n.t("go.graph.limitedTime")})} - {"bonus" in m && {m.bonus}} - - )} - -
      -
      - -
      -
      -
      -
      - {i18n.t("go.graph.label")} - - {i18n.t("go.graph.usageLimits")} - -
      -
      -
      -
      -
      - ) -} - export default function Home() { const workspaceID = createAsync(() => checkLoggedIn()) const subscribeUrl = createMemo(() => (workspaceID() ? `/workspace/${workspaceID()}/go` : "/auth")) From dc4449df0d52199704ea4989a5a993ebbc605612 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Sat, 29 Aug 2026 02:34:49 +0000 Subject: [PATCH 193/271] chore: update nix node_modules hashes --- nix/hashes.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/hashes.json b/nix/hashes.json index 827947042..8ad745661 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-fJ72uEK9rSoFL6eJk0Lwkc2TIMLZyQ7Iz83WrZE2duA=", - "aarch64-linux": "sha256-ElEwz5spFa8XFYSBiGjKlTKRFQCju/ZYDlb6h1FaKoI=", - "aarch64-darwin": "sha256-RmbrAlggOqxNFdhW+qj2tjRCpRf2NDLe68TikbGtCeA=", - "x86_64-darwin": "sha256-ZgYE0J+Dkz/kALK3kZ1jdFIZ5/BEkEaw0mXCqPon0iY=" + "x86_64-linux": "sha256-Sz806ltZYh+09hLqdqZAxSUlhJMk8bg50oHHoykNa/Y=", + "aarch64-linux": "sha256-dDSLsgah0NKAJLVczh25KOzLl10xhhSbO7WKac1qbJI=", + "aarch64-darwin": "sha256-xZZ5d4i4Ek+X7kvyGN96gbRwXK45j3bsWhPW1kILawI=", + "x86_64-darwin": "sha256-hYTHDIbNF4PZuuSz7z4NZv870FcstVYrMuhGIiFapEY=" } } From be53e17e19f3bae8925c65c9cd5802104d1d8a3e Mon Sep 17 00:00:00 2001 From: Jack Date: Sun, 30 Aug 2026 11:34:46 +0800 Subject: [PATCH 194/271] docs(go): end Hy3 usage promotion (#46213) --- packages/console/app/src/component/limits-graph.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/console/app/src/component/limits-graph.tsx b/packages/console/app/src/component/limits-graph.tsx index 03e278939..376e23f9c 100644 --- a/packages/console/app/src/component/limits-graph.tsx +++ b/packages/console/app/src/component/limits-graph.tsx @@ -49,11 +49,11 @@ export function LimitsGraph(props: { href: string }) { { id: "glm-5.3-flash", name: "GLM-5.3-Flash", req: 3160, baseReq: 1580, bonus: "2x usage" }, { id: "minimax-m3", name: "MiniMax M3", req: 3200 }, { id: "qwen3.7-plus", name: "Qwen3.7 Plus", req: 4300 }, + { id: "hy3", name: "Hy3", req: 4300 }, { id: "qwen3.8-flash", name: "Qwen3.8 Flash", req: 5400 }, { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", req: 7600 }, { id: "longcat-2.0", name: "LongCat-2.0", req: 11400 }, { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100 }, - { id: "hy3", name: "Hy3", req: 34400, baseReq: 4300, bonus: "8x usage" }, { id: "muse-spark-1.2-contributor", name: "Muse Spark 1.2 Contributor", req: 45300, edge: true }, ].map((model, index) => ({ ...model, d: `${50 + index * 25}ms` })) const bonuses = graph.filter((model) => model.baseReq) From 10765ff2a9da8c3b88e4de873aa383a49c318912 Mon Sep 17 00:00:00 2001 From: Jack Date: Sun, 30 Aug 2026 12:09:56 +0800 Subject: [PATCH 195/271] fix: remove Hy3 Free docs and correct Go chart rendering (#46221) --- packages/console/app/src/routes/go/index.css | 45 ++++---------------- packages/web/src/content/docs/ar/zen.mdx | 4 -- packages/web/src/content/docs/bs/zen.mdx | 4 -- packages/web/src/content/docs/da/zen.mdx | 4 -- packages/web/src/content/docs/de/zen.mdx | 4 -- packages/web/src/content/docs/es/zen.mdx | 4 -- packages/web/src/content/docs/fr/zen.mdx | 4 -- packages/web/src/content/docs/it/zen.mdx | 4 -- packages/web/src/content/docs/ja/zen.mdx | 4 -- packages/web/src/content/docs/ko/zen.mdx | 4 -- packages/web/src/content/docs/nb/zen.mdx | 4 -- packages/web/src/content/docs/pl/zen.mdx | 4 -- packages/web/src/content/docs/pt-br/zen.mdx | 4 -- packages/web/src/content/docs/ru/zen.mdx | 4 -- packages/web/src/content/docs/th/zen.mdx | 4 -- packages/web/src/content/docs/tr/zen.mdx | 4 -- packages/web/src/content/docs/zen.mdx | 4 -- packages/web/src/content/docs/zh-cn/zen.mdx | 4 -- packages/web/src/content/docs/zh-tw/zen.mdx | 4 -- 19 files changed, 8 insertions(+), 109 deletions(-) diff --git a/packages/console/app/src/routes/go/index.css b/packages/console/app/src/routes/go/index.css index 7f70c41c1..724fa381e 100644 --- a/packages/console/app/src/routes/go/index.css +++ b/packages/console/app/src/routes/go/index.css @@ -40,24 +40,6 @@ } } -@keyframes go-graph-heat { - from { - filter: brightness(var(--arrival-brightness)); - } - to { - filter: brightness(1); - } -} - -@keyframes go-graph-bonus-heat { - from { - color: var(--color-go-3); - } - to { - color: var(--color-text-weak); - } -} - [data-page="go"] { --color-background: hsl(0, 20%, 99%); --color-background-weak: hsl(0, 8%, 97%); @@ -512,8 +494,6 @@ body { --digit-easing: cubic-bezier(0.22, 1, 0.36, 1); --grid-duration: 2000ms; --grid-easing: cubic-bezier(0.22, 1, 0.36, 1); - --arrival-brightness: 1.15; - --heat-duration: 1600ms; --bar-delay: 240ms; /* Critically damped response, shared by the bars, labels, and rolling digits. */ --spring-easing: linear( @@ -706,7 +686,7 @@ body { color: var(--color-text-weak); font-size: 12px; font-weight: 400; - line-height: 1; + line-height: inherit; white-space: nowrap; @media (max-width: 40rem) { @@ -867,10 +847,8 @@ body { &[data-visible] [data-grid], &[data-visible] [data-stub] { - animation: - go-graph-grid var(--grid-duration) var(--grid-easing) forwards, - go-graph-heat var(--heat-duration) linear backwards; - animation-delay: var(--d, 0ms), calc(var(--d, 0ms) + var(--grid-duration)); + animation: go-graph-grid var(--grid-duration) var(--grid-easing) forwards; + animation-delay: var(--d, 0ms); } &[data-visible] [data-slot="xlabels"] [data-xlabel] { @@ -879,11 +857,8 @@ body { } &[data-visible] [data-animate="bar"] { - animation: - go-graph-reveal var(--reveal-duration) var(--spring-easing) forwards, - go-graph-heat var(--heat-duration) linear backwards; - animation-delay: - calc(var(--bar-delay) + var(--d, 0ms)), calc(var(--bar-delay) + var(--d, 0ms) + var(--reveal-duration)); + animation: go-graph-reveal var(--reveal-duration) var(--spring-easing) forwards; + animation-delay: calc(var(--bar-delay) + var(--d, 0ms)); } &[data-visible] [data-slot="pills"] [data-label] { @@ -892,10 +867,8 @@ body { } &[data-boosted] [data-animate="bonus"] { - animation: - go-graph-reveal var(--bonus-duration) var(--spring-easing) forwards, - go-graph-heat var(--heat-duration) linear backwards; - animation-delay: var(--bonus-delay), calc(var(--bonus-delay) + var(--bonus-duration)); + animation: go-graph-reveal var(--bonus-duration) var(--spring-easing) forwards; + animation-delay: var(--bonus-delay); } &[data-boosted] [data-slot="pills"] [data-item][data-promo] { @@ -911,9 +884,7 @@ body { } &[data-boosted] [data-bonus] { - animation: - go-graph-label 400ms ease-out forwards, - go-graph-bonus-heat 3000ms linear backwards; + animation: go-graph-label 400ms ease-out forwards; animation-delay: var(--bonus-delay); } diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index e8e549426..ff8c3d215 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -113,7 +113,6 @@ OpenCode Zen هي بوابة AI تتيح لك الوصول إلى هذه الن | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -141,7 +140,6 @@ https://opencode.ai/zen/v1/models | --------------------------------- | ------- | ------- | --------------- | --------------- | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -227,7 +225,6 @@ https://opencode.ai/zen/v1/models النماذج المجانية: - MiMo-V2.5 Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. -- Hy3 Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Ling 3.0 Flash Fin Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Nemotron 3 Ultra Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Nemotron 3.5 Lightning Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. @@ -285,7 +282,6 @@ https://opencode.ai/zen/v1/models - Big Pickle: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. - MiMo-V2.5 Free: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. -- Hy3 Free: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. - Ling 3.0 Flash Fin Free: خلال فترته المجانية، قد تُستخدم البيانات المجمعة لتحسين النموذج. - Nemotron 3 Ultra Free (نقاط نهاية NVIDIA المجانية): للاستخدام التجريبي فقط — لا ترسل بيانات شخصية أو سرية. يُسجَّل استخدامك لأغراض أمنية ولتحسين منتجات وخدمات NVIDIA. بيانات الجلسة المُسجَّلة لأغراض التحسين غير مرتبطة بهويتك أو بأي مُعرِّف دائم. لمزيد من المعلومات حول ممارسات معالجة البيانات لدينا، راجع [سياسة الخصوصية](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). بتفاعلك مع نقطة النهاية هذه، فإنك توافق على جمعنا لهذه المعلومات وتسجيلها واستخدامها وعلى [شروط خدمة النسخة التجريبية من واجهة NVIDIA API](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (نقاط نهاية NVIDIA المجانية): للاستخدام التجريبي فقط — لا ترسل بيانات شخصية أو سرية. يُسجَّل استخدامك لأغراض أمنية ولتحسين منتجات وخدمات NVIDIA. بيانات الجلسة المُسجَّلة لأغراض التحسين غير مرتبطة بهويتك أو بأي مُعرِّف دائم. لمزيد من المعلومات حول ممارسات معالجة البيانات لدينا، راجع [سياسة الخصوصية](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). بتفاعلك مع نقطة النهاية هذه، فإنك توافق على جمعنا لهذه المعلومات وتسجيلها واستخدامها وعلى [شروط خدمة النسخة التجريبية من واجهة NVIDIA API](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index a38341ae1..5ed6bb9f8 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -118,7 +118,6 @@ Našim modelima možete pristupiti i preko sljedećih API endpointa. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -148,7 +147,6 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -234,7 +232,6 @@ Naknade za kreditne kartice prosljeđujemo po stvarnom trošku (4.4% + $0.30 po Besplatni modeli: - MiMo-V2.5 Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. -- Hy3 Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Ling 3.0 Flash Fin Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Nemotron 3 Ultra Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Nemotron 3.5 Lightning Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. @@ -297,7 +294,6 @@ i ne koriste vaše podatke za treniranje modela, uz sljedeće izuzetke: - Big Pickle: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. - MiMo-V2.5 Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. -- Hy3 Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. - Ling 3.0 Flash Fin Free: Tokom besplatnog perioda, prikupljeni podaci mogu se koristiti za poboljšanje modela. - Nemotron 3 Ultra Free (besplatni NVIDIA endpointi): Samo za probnu upotrebu — nemojte slati lične ili povjerljive podatke. Vaše korištenje se bilježi radi sigurnosti i poboljšanja NVIDIA proizvoda i usluga. Zabilježeni podaci sesije koji se koriste u svrhu poboljšanja nisu povezani s vašim identitetom niti bilo kojim trajnim identifikatorom. Za više informacija o našim praksama obrade podataka pogledajte našu [Politiku privatnosti](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interakcijom s ovim endpointom pristajete na naše prikupljanje, bilježenje i korištenje takvih informacija te na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (besplatni NVIDIA endpointi): Samo za probnu upotrebu — nemojte slati lične ili povjerljive podatke. Vaše korištenje se bilježi radi sigurnosti i poboljšanja NVIDIA proizvoda i usluga. Zabilježeni podaci sesije koji se koriste u svrhu poboljšanja nisu povezani s vašim identitetom niti bilo kojim trajnim identifikatorom. Za više informacija o našim praksama obrade podataka pogledajte našu [Politiku privatnosti](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interakcijom s ovim endpointom pristajete na naše prikupljanje, bilježenje i korištenje takvih informacija te na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index f6a1831ea..3b07f92d3 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -118,7 +118,6 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -148,7 +147,6 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -234,7 +232,6 @@ Kreditkortgebyrer videregives til kostpris (4.4% + $0.30 pr. transaktion); vi op De gratis modeller: - MiMo-V2.5 Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. -- Hy3 Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Ling 3.0 Flash Fin Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Nemotron 3 Ultra Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Nemotron 3.5 Lightning Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. @@ -295,7 +292,6 @@ Alle vores modeller hostes i US. Vores udbydere følger en nul-opbevaringspoliti - Big Pickle: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. - MiMo-V2.5 Free: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. -- Hy3 Free: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. - Ling 3.0 Flash Fin Free: I den gratis periode kan indsamlede data blive brugt til at forbedre modellen. - Nemotron 3 Ultra Free (gratis NVIDIA-endpoints): Kun til prøvebrug — indsend ikke personlige eller fortrolige data. Din brug logges af sikkerhedshensyn og for at forbedre NVIDIAs produkter og tjenester. De loggede sessionsdata, der bruges til forbedringsformål, er ikke knyttet til din identitet eller nogen vedvarende identifikator. For mere information om vores databehandlingspraksis, se vores [privatlivspolitik](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved at interagere med dette endpoint giver du samtykke til vores indsamling, registrering og brug af sådanne oplysninger samt [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (gratis NVIDIA-endpoints): Kun til prøvebrug — indsend ikke personlige eller fortrolige data. Din brug logges af sikkerhedshensyn og for at forbedre NVIDIAs produkter og tjenester. De loggede sessionsdata, der bruges til forbedringsformål, er ikke knyttet til din identitet eller nogen vedvarende identifikator. For mere information om vores databehandlingspraksis, se vores [privatlivspolitik](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved at interagere med dette endpoint giver du samtykke til vores indsamling, registrering og brug af sådanne oplysninger samt [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index a39b0217f..6e4d611ea 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -109,7 +109,6 @@ Du kannst auch über die folgenden API-Endpunkte auf unsere Modelle zugreifen. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -137,7 +136,6 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -223,7 +221,6 @@ Kreditkartengebühren werden zum Selbstkostenpreis weitergegeben (4.4% + $0.30 p Die kostenlosen Modelle: - MiMo-V2.5 Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. -- Hy3 Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Ling 3.0 Flash Fin Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Nemotron 3 Ultra Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Nemotron 3.5 Lightning Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. @@ -281,7 +278,6 @@ Alle unsere Modelle werden in den USA gehostet. Unsere Provider folgen einer Zer - Big Pickle: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. - MiMo-V2.5 Free: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. -- Hy3 Free: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. - Ling 3.0 Flash Fin Free: Während des kostenlosen Zeitraums können gesammelte Daten zur Verbesserung des Modells verwendet werden. - Nemotron 3 Ultra Free (kostenlose NVIDIA-Endpunkte): Nur für Testzwecke — übermitteln Sie keine personenbezogenen oder vertraulichen Daten. Ihre Nutzung wird zu Sicherheitszwecken und zur Verbesserung der Produkte und Dienste von NVIDIA protokolliert. Die zu Verbesserungszwecken protokollierten Sitzungsdaten sind nicht mit Ihrer Identität oder einem dauerhaften Identifikator verknüpft. Weitere Informationen zu unseren Datenverarbeitungspraktiken finden Sie in unserer [Datenschutzrichtlinie](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Durch die Interaktion mit diesem Endpunkt stimmen Sie unserer Erhebung, Aufzeichnung und Nutzung solcher Informationen sowie den [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) zu. - Nemotron 3.5 Lightning Free (kostenlose NVIDIA-Endpunkte): Nur für Testzwecke — übermitteln Sie keine personenbezogenen oder vertraulichen Daten. Ihre Nutzung wird zu Sicherheitszwecken und zur Verbesserung der Produkte und Dienste von NVIDIA protokolliert. Die zu Verbesserungszwecken protokollierten Sitzungsdaten sind nicht mit Ihrer Identität oder einem dauerhaften Identifikator verknüpft. Weitere Informationen zu unseren Datenverarbeitungspraktiken finden Sie in unserer [Datenschutzrichtlinie](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Durch die Interaktion mit diesem Endpunkt stimmen Sie unserer Erhebung, Aufzeichnung und Nutzung solcher Informationen sowie den [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) zu. diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index c48854ac6..046afde6c 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -118,7 +118,6 @@ También puedes acceder a nuestros modelos a través de los siguientes endpoints | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -148,7 +147,6 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | --------------------------------- | ------- | ------- | ---------------- | ------------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -234,7 +232,6 @@ Las comisiones de tarjeta de crédito se trasladan al costo (4.4% + $0.30 por tr Los modelos gratuitos: - MiMo-V2.5 Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. -- Hy3 Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Ling 3.0 Flash Fin Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Nemotron 3 Ultra Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Nemotron 3.5 Lightning Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. @@ -295,7 +292,6 @@ Todos nuestros modelos están alojados en US. Nuestros proveedores siguen una po - Big Pickle: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. - MiMo-V2.5 Free: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. -- Hy3 Free: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. - Ling 3.0 Flash Fin Free: Durante su período gratuito, los datos recopilados pueden usarse para mejorar el modelo. - Nemotron 3 Ultra Free (endpoints gratuitos de NVIDIA): Solo para uso de prueba — no envíes datos personales ni confidenciales. Tu uso se registra con fines de seguridad y para mejorar los productos y servicios de NVIDIA. Los datos de sesión registrados con fines de mejora no están vinculados a tu identidad ni a ningún identificador persistente. Para obtener más información sobre nuestras prácticas de procesamiento de datos, consulta nuestra [Política de privacidad](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Al interactuar con este endpoint, aceptas que recopilemos, registremos y usemos dicha información, así como los [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoints gratuitos de NVIDIA): Solo para uso de prueba — no envíes datos personales ni confidenciales. Tu uso se registra con fines de seguridad y para mejorar los productos y servicios de NVIDIA. Los datos de sesión registrados con fines de mejora no están vinculados a tu identidad ni a ningún identificador persistente. Para obtener más información sobre nuestras prácticas de procesamiento de datos, consulta nuestra [Política de privacidad](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Al interactuar con este endpoint, aceptas que recopilemos, registremos y usemos dicha información, así como los [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index 1cc5b70dc..2f6924fbe 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -109,7 +109,6 @@ Vous pouvez également accéder à nos modèles via les points de terminaison AP | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -137,7 +136,6 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -223,7 +221,6 @@ Les frais de carte de crédit sont répercutés au prix coûtant (4.4% + $0.30 p Les modèles gratuits : - MiMo-V2.5 Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. -- Hy3 Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Ling 3.0 Flash Fin Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Nemotron 3 Ultra Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Nemotron 3.5 Lightning Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. @@ -281,7 +278,6 @@ Tous nos modèles sont hébergés aux US. Nos fournisseurs suivent une politique - Big Pickle : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. - MiMo-V2.5 Free : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. -- Hy3 Free : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. - Ling 3.0 Flash Fin Free : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle. - Nemotron 3 Ultra Free (endpoints NVIDIA gratuits) : Réservé à un usage d'essai — n'envoyez pas de données personnelles ou confidentielles. Votre utilisation est journalisée à des fins de sécurité et pour améliorer les produits et services de NVIDIA. Les données de session journalisées à des fins d'amélioration ne sont pas liées à votre identité ni à un quelconque identifiant persistant. Pour plus d'informations sur nos pratiques de traitement des données, consultez notre [Politique de confidentialité](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). En interagissant avec cet endpoint, vous consentez à notre collecte, à notre enregistrement et à notre utilisation de ces informations ainsi qu'aux [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoints NVIDIA gratuits) : Réservé à un usage d'essai — n'envoyez pas de données personnelles ou confidentielles. Votre utilisation est journalisée à des fins de sécurité et pour améliorer les produits et services de NVIDIA. Les données de session journalisées à des fins d'amélioration ne sont pas liées à votre identité ni à un quelconque identifiant persistant. Pour plus d'informations sur nos pratiques de traitement des données, consultez notre [Politique de confidentialité](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). En interagissant avec cet endpoint, vous consentez à notre collecte, à notre enregistrement et à notre utilisation de ces informations ainsi qu'aux [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index f77f77622..a1bf4668d 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -118,7 +118,6 @@ Puoi anche accedere ai nostri modelli tramite i seguenti endpoint API. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -148,7 +147,6 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -234,7 +232,6 @@ Le commissioni della carta di credito vengono trasferite al costo (4.4% + $0.30 I modelli gratuiti: - MiMo-V2.5 Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. -- Hy3 Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Ling 3.0 Flash Fin Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Nemotron 3 Ultra Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Nemotron 3.5 Lightning Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. @@ -295,7 +292,6 @@ Tutti i nostri modelli sono ospitati negli US. I nostri provider seguono una pol - Big Pickle: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. - MiMo-V2.5 Free: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. -- Hy3 Free: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. - Ling 3.0 Flash Fin Free: durante il periodo gratuito, i dati raccolti possono essere usati per migliorare il modello. - Nemotron 3 Ultra Free (endpoint NVIDIA gratuiti): solo per uso di prova — non inviare dati personali o riservati. Il tuo utilizzo viene registrato per finalità di sicurezza e per migliorare i prodotti e i servizi di NVIDIA. I dati di sessione registrati a fini di miglioramento non sono collegati alla tua identità né ad alcun identificatore persistente. Per maggiori informazioni sulle nostre pratiche di trattamento dei dati, consulta la nostra [Informativa sulla privacy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interagendo con questo endpoint, acconsenti alla nostra raccolta, registrazione e utilizzo di tali informazioni e ai [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoint NVIDIA gratuiti): solo per uso di prova — non inviare dati personali o riservati. Il tuo utilizzo viene registrato per finalità di sicurezza e per migliorare i prodotti e i servizi di NVIDIA. I dati di sessione registrati a fini di miglioramento non sono collegati alla tua identità né ad alcun identificatore persistente. Per maggiori informazioni sulle nostre pratiche di trattamento dei dati, consulta la nostra [Informativa sulla privacy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interagendo con questo endpoint, acconsenti alla nostra raccolta, registrazione e utilizzo di tali informazioni e ai [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index 9ccc24c28..1bee36788 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -109,7 +109,6 @@ OpenCode Zen は、OpenCode のほかのプロバイダーと同じように動 | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -137,7 +136,6 @@ https://opencode.ai/zen/v1/models | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -223,7 +221,6 @@ https://opencode.ai/zen/v1/models 無料モデル: - MiMo-V2.5 Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 -- Hy3 Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Ling 3.0 Flash Fin Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Nemotron 3 Ultra Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Nemotron 3.5 Lightning Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 @@ -281,7 +278,6 @@ https://opencode.ai/zen/v1/models - Big Pickle: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 - MiMo-V2.5 Free: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 -- Hy3 Free: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 - Ling 3.0 Flash Fin Free: 無料提供期間中、収集されたデータがモデル改善に使われる場合があります。 - Nemotron 3 Ultra Free(NVIDIA の無料エンドポイント): 試用専用です — 個人情報や機密データは送信しないでください。お客様の利用は、セキュリティ目的および NVIDIA の製品とサービスの改善のために記録されます。改善目的で記録されたセッションデータは、お客様の身元や永続的な識別子とは関連付けられません。当社のデータ処理慣行の詳細については、[プライバシーポリシー](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)をご覧ください。このエンドポイントを利用することで、お客様はそのような情報の当社による収集、記録、利用、および [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) に同意したものとみなされます。 - Nemotron 3.5 Lightning Free(NVIDIA の無料エンドポイント): 試用専用です — 個人情報や機密データは送信しないでください。お客様の利用は、セキュリティ目的および NVIDIA の製品とサービスの改善のために記録されます。改善目的で記録されたセッションデータは、お客様の身元や永続的な識別子とは関連付けられません。当社のデータ処理慣行の詳細については、[プライバシーポリシー](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)をご覧ください。このエンドポイントを利用することで、お客様はそのような情報の当社による収集、記録、利用、および [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) に同意したものとみなされます。 diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index eca5125ad..13bbed54a 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -109,7 +109,6 @@ OpenCode Zen은 OpenCode의 다른 provider와 똑같이 작동합니다. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -137,7 +136,6 @@ https://opencode.ai/zen/v1/models | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -223,7 +221,6 @@ https://opencode.ai/zen/v1/models 무료 모델: - MiMo-V2.5 Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. -- Hy3 Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Ling 3.0 Flash Fin Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Nemotron 3 Ultra Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Nemotron 3.5 Lightning Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. @@ -281,7 +278,6 @@ https://opencode.ai/zen/v1/models - Big Pickle: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. - MiMo-V2.5 Free: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. -- Hy3 Free: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. - Ling 3.0 Flash Fin Free: 무료 제공 기간에는 수집된 데이터가 모델 개선에 사용될 수 있습니다. - Nemotron 3 Ultra Free(NVIDIA 무료 엔드포인트): 평가판 전용이며 — 개인 정보나 기밀 데이터는 제출하지 마세요. 사용 내역은 보안 목적과 NVIDIA 제품 및 서비스 개선을 위해 기록됩니다. 개선 목적으로 기록된 세션 데이터는 사용자의 신원이나 영구 식별자와 연결되지 않습니다. 당사의 데이터 처리 관행에 대한 자세한 내용은 [개인정보처리방침](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)을 참조하세요. 이 엔드포인트와 상호 작용함으로써 사용자는 당사가 이러한 정보를 수집, 기록, 사용하는 것과 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)에 동의하게 됩니다. - Nemotron 3.5 Lightning Free(NVIDIA 무료 엔드포인트): 평가판 전용이며 — 개인 정보나 기밀 데이터는 제출하지 마세요. 사용 내역은 보안 목적과 NVIDIA 제품 및 서비스 개선을 위해 기록됩니다. 개선 목적으로 기록된 세션 데이터는 사용자의 신원이나 영구 식별자와 연결되지 않습니다. 당사의 데이터 처리 관행에 대한 자세한 내용은 [개인정보처리방침](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)을 참조하세요. 이 엔드포인트와 상호 작용함으로써 사용자는 당사가 이러한 정보를 수집, 기록, 사용하는 것과 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)에 동의하게 됩니다. diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index 4a48b8310..57ee59e75 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -118,7 +118,6 @@ Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -148,7 +147,6 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | --------------------------------- | ------- | ------- | ------------- | --------------- | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -234,7 +232,6 @@ Kredittkortgebyrer videreføres til kostpris (4.4% + $0.30 per transaction); vi Gratis-modellene: - MiMo-V2.5 Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. -- Hy3 Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Ling 3.0 Flash Fin Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Nemotron 3 Ultra Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Nemotron 3.5 Lightning Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. @@ -295,7 +292,6 @@ Alle modellene våre hostes i US. Leverandørene våre følger en policy for zer - Big Pickle: I gratisperioden kan innsamlede data brukes til å forbedre modellen. - MiMo-V2.5 Free: I gratisperioden kan innsamlede data brukes til å forbedre modellen. -- Hy3 Free: I gratisperioden kan innsamlede data brukes til å forbedre modellen. - Ling 3.0 Flash Fin Free: I gratisperioden kan innsamlede data brukes til å forbedre modellen. - Nemotron 3 Ultra Free (gratis NVIDIA-endepunkter): Kun for prøvebruk — ikke send inn personopplysninger eller konfidensielle data. Bruken din logges av sikkerhetshensyn og for å forbedre NVIDIAs produkter og tjenester. Sesjonsdataene som logges for forbedringsformål, er ikke knyttet til identiteten din eller noen vedvarende identifikator. For mer informasjon om vår databehandlingspraksis, se vår [personvernerklæring](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved å samhandle med dette endepunktet samtykker du til at vi samler inn, registrerer og bruker slik informasjon, samt til [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (gratis NVIDIA-endepunkter): Kun for prøvebruk — ikke send inn personopplysninger eller konfidensielle data. Bruken din logges av sikkerhetshensyn og for å forbedre NVIDIAs produkter og tjenester. Sesjonsdataene som logges for forbedringsformål, er ikke knyttet til identiteten din eller noen vedvarende identifikator. For mer informasjon om vår databehandlingspraksis, se vår [personvernerklæring](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved å samhandle med dette endepunktet samtykker du til at vi samler inn, registrerer og bruker slik informasjon, samt til [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index 9698672a2..5ea4233d9 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -118,7 +118,6 @@ Możesz też uzyskać dostęp do naszych modeli przez poniższe endpointy API. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -148,7 +147,6 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | --------------------------------- | ------- | ------- | -------------- | -------------- | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -234,7 +232,6 @@ Opłaty za karty kredytowe są przenoszone po kosztach (4.4% + $0.30 per transac Darmowe modele: - MiMo-V2.5 Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. -- Hy3 Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Ling 3.0 Flash Fin Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Nemotron 3 Ultra Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Nemotron 3.5 Lightning Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. @@ -295,7 +292,6 @@ Wszystkie nasze modele są hostowane w US. Nasi dostawcy stosują politykę zero - Big Pickle: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. - MiMo-V2.5 Free: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. -- Hy3 Free: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. - Ling 3.0 Flash Fin Free: W czasie darmowego okresu zebrane dane mogą być wykorzystywane do ulepszania modelu. - Nemotron 3 Ultra Free (darmowe endpointy NVIDIA): Tylko do użytku próbnego — nie przesyłaj danych osobowych ani poufnych. Twoje korzystanie jest rejestrowane w celach bezpieczeństwa oraz w celu ulepszania produktów i usług NVIDIA. Rejestrowane dane sesji wykorzystywane do celów ulepszania nie są powiązane z Twoją tożsamością ani żadnym trwałym identyfikatorem. Aby uzyskać więcej informacji o naszych praktykach przetwarzania danych, zapoznaj się z naszą [Polityką prywatności](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Korzystając z tego endpointu, wyrażasz zgodę na gromadzenie, rejestrowanie i wykorzystywanie przez nas takich informacji oraz na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (darmowe endpointy NVIDIA): Tylko do użytku próbnego — nie przesyłaj danych osobowych ani poufnych. Twoje korzystanie jest rejestrowane w celach bezpieczeństwa oraz w celu ulepszania produktów i usług NVIDIA. Rejestrowane dane sesji wykorzystywane do celów ulepszania nie są powiązane z Twoją tożsamością ani żadnym trwałym identyfikatorem. Aby uzyskać więcej informacji o naszych praktykach przetwarzania danych, zapoznaj się z naszą [Polityką prywatności](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Korzystając z tego endpointu, wyrażasz zgodę na gromadzenie, rejestrowanie i wykorzystywanie przez nas takich informacji oraz na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index 6ee33cd32..3ff1c7b8e 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -109,7 +109,6 @@ Você também pode acessar nossos modelos pelos seguintes endpoints de API. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -137,7 +136,6 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | --------------------------------- | ------- | ------- | ---------------- | ---------------- | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -223,7 +221,6 @@ As taxas de cartão de crédito são repassadas a preço de custo (4.4% + $0.30 Os modelos gratuitos: - MiMo-V2.5 Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. -- Hy3 Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Ling 3.0 Flash Fin Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Nemotron 3 Ultra Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Nemotron 3.5 Lightning Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. @@ -281,7 +278,6 @@ Todos os nossos modelos são hospedados nos US. Nossos provedores seguem uma pol - Big Pickle: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. - MiMo-V2.5 Free: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. -- Hy3 Free: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. - Ling 3.0 Flash Fin Free: Durante seu período gratuito, os dados coletados podem ser usados para melhorar o modelo. - Nemotron 3 Ultra Free (endpoints gratuitos da NVIDIA): Apenas para uso de avaliação — não envie dados pessoais ou confidenciais. Seu uso é registrado para fins de segurança e para melhorar os produtos e serviços da NVIDIA. Os dados de sessão registrados para fins de melhoria não estão vinculados à sua identidade nem a qualquer identificador persistente. Para mais informações sobre nossas práticas de processamento de dados, consulte nossa [Política de Privacidade](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ao interagir com este endpoint, você consente com a nossa coleta, registro e uso dessas informações e com os [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (endpoints gratuitos da NVIDIA): Apenas para uso de avaliação — não envie dados pessoais ou confidenciais. Seu uso é registrado para fins de segurança e para melhorar os produtos e serviços da NVIDIA. Os dados de sessão registrados para fins de melhoria não estão vinculados à sua identidade nem a qualquer identificador persistente. Para mais informações sobre nossas práticas de processamento de dados, consulte nossa [Política de Privacidade](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ao interagir com este endpoint, você consente com a nossa coleta, registro e uso dessas informações e com os [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index cda6177b9..ddd2c29bc 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -118,7 +118,6 @@ OpenCode Zen работает как любой другой провайдер | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -148,7 +147,6 @@ https://opencode.ai/zen/v1/models | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -234,7 +232,6 @@ https://opencode.ai/zen/v1/models Бесплатные модели: - MiMo-V2.5 Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. -- Hy3 Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Ling 3.0 Flash Fin Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Nemotron 3 Ultra Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Nemotron 3.5 Lightning Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. @@ -295,7 +292,6 @@ https://opencode.ai/zen/v1/models - Big Pickle: во время бесплатного периода собранные данные могут использоваться для улучшения модели. - MiMo-V2.5 Free: во время бесплатного периода собранные данные могут использоваться для улучшения модели. -- Hy3 Free: во время бесплатного периода собранные данные могут использоваться для улучшения модели. - Ling 3.0 Flash Fin Free: во время бесплатного периода собранные данные могут использоваться для улучшения модели. - Nemotron 3 Ultra Free (бесплатные эндпоинты NVIDIA): только для пробного использования — не отправляйте персональные или конфиденциальные данные. Использование логируется в целях безопасности и для улучшения продуктов и сервисов NVIDIA. Логируемые данные сессии, используемые в целях улучшения, не связаны с вашей личностью или каким-либо постоянным идентификатором. Подробнее о наших практиках обработки данных см. в нашей [Политике конфиденциальности](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Взаимодействуя с этим эндпоинтом, вы соглашаетесь на сбор, запись и использование нами такой информации, а также с [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (бесплатные эндпоинты NVIDIA): только для пробного использования — не отправляйте персональные или конфиденциальные данные. Использование логируется в целях безопасности и для улучшения продуктов и сервисов NVIDIA. Логируемые данные сессии, используемые в целях улучшения, не связаны с вашей личностью или каким-либо постоянным идентификатором. Подробнее о наших практиках обработки данных см. в нашей [Политике конфиденциальности](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Взаимодействуя с этим эндпоинтом, вы соглашаетесь на сбор, запись и использование нами такой информации, а также с [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index 4788e22dd..c58ae2db6 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -111,7 +111,6 @@ OpenCode Zen ทำงานเหมือน provider อื่น ๆ ใน | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -139,7 +138,6 @@ https://opencode.ai/zen/v1/models | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -225,7 +223,6 @@ https://opencode.ai/zen/v1/models โมเดลฟรี: - MiMo-V2.5 Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล -- Hy3 Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Ling 3.0 Flash Fin Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Nemotron 3 Ultra Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Nemotron 3.5 Lightning Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล @@ -283,7 +280,6 @@ https://opencode.ai/zen/v1/models - Big Pickle: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล - MiMo-V2.5 Free: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล -- Hy3 Free: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล - Ling 3.0 Flash Fin Free: ระหว่างช่วงที่เปิดให้ใช้ฟรี ข้อมูลที่เก็บรวบรวมอาจถูกนำไปใช้เพื่อปรับปรุงโมเดล - Nemotron 3 Ultra Free (endpoint ฟรีของ NVIDIA): ใช้สำหรับการทดลองเท่านั้น — โปรดอย่าส่งข้อมูลส่วนบุคคลหรือข้อมูลลับ การใช้งานของคุณจะถูกบันทึกเพื่อวัตถุประสงค์ด้านความปลอดภัยและเพื่อปรับปรุงผลิตภัณฑ์และบริการของ NVIDIA ข้อมูลเซสชันที่บันทึกไว้เพื่อวัตถุประสงค์ในการปรับปรุงจะไม่เชื่อมโยงกับตัวตนของคุณหรือตัวระบุถาวรใด ๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแนวปฏิบัติในการประมวลผลข้อมูลของเรา โปรดดู [นโยบายความเป็นส่วนตัว](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) ของเรา การโต้ตอบกับ endpoint นี้ถือว่าคุณยินยอมให้เราเก็บรวบรวม บันทึก และใช้ข้อมูลดังกล่าว รวมถึง [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) - Nemotron 3.5 Lightning Free (endpoint ฟรีของ NVIDIA): ใช้สำหรับการทดลองเท่านั้น — โปรดอย่าส่งข้อมูลส่วนบุคคลหรือข้อมูลลับ การใช้งานของคุณจะถูกบันทึกเพื่อวัตถุประสงค์ด้านความปลอดภัยและเพื่อปรับปรุงผลิตภัณฑ์และบริการของ NVIDIA ข้อมูลเซสชันที่บันทึกไว้เพื่อวัตถุประสงค์ในการปรับปรุงจะไม่เชื่อมโยงกับตัวตนของคุณหรือตัวระบุถาวรใด ๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแนวปฏิบัติในการประมวลผลข้อมูลของเรา โปรดดู [นโยบายความเป็นส่วนตัว](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) ของเรา การโต้ตอบกับ endpoint นี้ถือว่าคุณยินยอมให้เราเก็บรวบรวม บันทึก และใช้ข้อมูลดังกล่าว รวมถึง [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index 0188c0961..13670c0f3 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -109,7 +109,6 @@ Modellerimize aşağıdaki API uç noktaları aracılığıyla da erişebilirsin | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -137,7 +136,6 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -223,7 +221,6 @@ Kredi kartı ücretleri maliyet üzerinden yansıtılır (%4.4 + işlem başına Ücretsiz modeller: - MiMo-V2.5 Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. -- Hy3 Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Ling 3.0 Flash Fin Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Nemotron 3 Ultra Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Nemotron 3.5 Lightning Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. @@ -281,7 +278,6 @@ Tüm modellerimiz US'de barındırılıyor. Sağlayıcılarımız zero-retention - Big Pickle: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. - MiMo-V2.5 Free: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. -- Hy3 Free: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. - Ling 3.0 Flash Fin Free: Ücretsiz döneminde toplanan veriler modeli iyileştirmek için kullanılabilir. - Nemotron 3 Ultra Free (ücretsiz NVIDIA uç noktaları): Yalnızca deneme amaçlıdır — kişisel veya gizli veri göndermeyin. Kullanımınız güvenlik amacıyla ve NVIDIA ürünlerini ve hizmetlerini geliştirmek için kaydedilir. Geliştirme amacıyla kaydedilen oturum verileri kimliğinizle veya herhangi bir kalıcı tanımlayıcıyla ilişkilendirilmez. Veri işleme uygulamalarımız hakkında daha fazla bilgi için [Gizlilik Politikamıza](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) bakın. Bu uç noktayla etkileşime geçerek, bu tür bilgileri toplamamıza, kaydetmemize ve kullanmamıza ve [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) koşullarına onay vermiş olursunuz. - Nemotron 3.5 Lightning Free (ücretsiz NVIDIA uç noktaları): Yalnızca deneme amaçlıdır — kişisel veya gizli veri göndermeyin. Kullanımınız güvenlik amacıyla ve NVIDIA ürünlerini ve hizmetlerini geliştirmek için kaydedilir. Geliştirme amacıyla kaydedilen oturum verileri kimliğinizle veya herhangi bir kalıcı tanımlayıcıyla ilişkilendirilmez. Veri işleme uygulamalarımız hakkında daha fazla bilgi için [Gizlilik Politikamıza](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) bakın. Bu uç noktayla etkileşime geçerek, bu tür bilgileri toplamamıza, kaydetmemize ve kullanmamıza ve [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) koşullarına onay vermiş olursunuz. diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index e41ab3f90..cb737893a 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -118,7 +118,6 @@ You can also access our models through the following API endpoints. | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -148,7 +147,6 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | --------------------------------- | ------ | ------- | ----------- | ------------ | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -234,7 +232,6 @@ Credit card fees are passed along at cost (4.4% + $0.30 per transaction); we don The free models: - MiMo-V2.5 Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. -- Hy3 Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Ling 3.0 Flash Fin Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Nemotron 3 Ultra Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Nemotron 3.5 Lightning Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. @@ -295,7 +292,6 @@ All our models are hosted in the US. Our providers follow a zero-retention polic - Big Pickle: During its free period, collected data may be used to improve the model. - MiMo-V2.5 Free: During its free period, collected data may be used to improve the model. -- Hy3 Free: During its free period, collected data may be used to improve the model. - Ling 3.0 Flash Fin Free: During its free period, collected data may be used to improve the model. - Nemotron 3 Ultra Free (NVIDIA free endpoints): Trial use only — do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - Nemotron 3.5 Lightning Free (NVIDIA free endpoints): Trial use only — do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index 51c0549f3..518badf0f 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -109,7 +109,6 @@ OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -137,7 +136,6 @@ https://opencode.ai/zen/v1/models | --------------------------------- | ------ | ------- | -------- | -------- | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -223,7 +221,6 @@ https://opencode.ai/zen/v1/models 免费模型: - MiMo-V2.5 Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 -- Hy3 Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Ling 3.0 Flash Fin Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Nemotron 3 Ultra Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Nemotron 3.5 Lightning Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 @@ -281,7 +278,6 @@ https://opencode.ai/zen/v1/models - Big Pickle:在免费期间,收集的数据可能会被用于改进模型。 - MiMo-V2.5 Free:在免费期间,收集的数据可能会被用于改进模型。 -- Hy3 Free:在免费期间,收集的数据可能会被用于改进模型。 - Ling 3.0 Flash Fin Free:在免费期间,收集的数据可能会被用于改进模型。 - Nemotron 3 Ultra Free(NVIDIA 免费端点):仅供试用 — 请勿提交个人或机密数据。出于安全目的以及为改进 NVIDIA 产品和服务,系统会记录你的使用情况。出于改进目的而记录的会话数据不会与你的身份或任何持久标识符相关联。有关我们数据处理实践的更多信息,请参阅我们的[隐私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。与此端点进行交互,即表示你同意我们收集、记录和使用此类信息,并同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - Nemotron 3.5 Lightning Free(NVIDIA 免费端点):仅供试用 — 请勿提交个人或机密数据。出于安全目的以及为改进 NVIDIA 产品和服务,系统会记录你的使用情况。出于改进目的而记录的会话数据不会与你的身份或任何持久标识符相关联。有关我们数据处理实践的更多信息,请参阅我们的[隐私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。与此端点进行交互,即表示你同意我们收集、记录和使用此类信息,并同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 501a62dbb..eed177158 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -113,7 +113,6 @@ OpenCode Zen 的運作方式和 OpenCode 中的其他供應商一樣。 | Kimi K3 | kimi-k3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiMo-V2.5 Free | mimo-v2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| Hy3 Free | hy3-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -142,7 +141,6 @@ https://opencode.ai/zen/v1/models | --------------------------------- | ------ | ------- | -------- | -------- | | Big Pickle | Free | Free | Free | - | | MiMo-V2.5 Free | Free | Free | Free | - | -| Hy3 Free | Free | Free | Free | - | | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | @@ -228,7 +226,6 @@ https://opencode.ai/zen/v1/models 免費模型: - MiMo-V2.5 Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 -- Hy3 Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Ling 3.0 Flash Fin Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Nemotron 3 Ultra Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Nemotron 3.5 Lightning Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 @@ -287,7 +284,6 @@ https://opencode.ai/zen/v1/models - Big Pickle: 在免費期間,收集到的資料可能會用於改進模型。 - MiMo-V2.5 Free: 在免費期間,收集到的資料可能會用於改進模型。 -- Hy3 Free: 在免費期間,收集到的資料可能會用於改進模型。 - Ling 3.0 Flash Fin Free: 在免費期間,收集到的資料可能會用於改進模型。 - Nemotron 3 Ultra Free(NVIDIA 免費端點):僅供試用 — 請勿提交個人或機密資料。基於安全目的以及為了改進 NVIDIA 產品與服務,系統會記錄你的使用情況。基於改進目的而記錄的工作階段資料不會與你的身分或任何持久識別碼相關聯。有關我們資料處理實務的更多資訊,請參閱我們的[隱私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。與此端點進行互動,即表示你同意我們收集、記錄與使用此類資訊,並同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - Nemotron 3.5 Lightning Free(NVIDIA 免費端點):僅供試用 — 請勿提交個人或機密資料。基於安全目的以及為了改進 NVIDIA 產品與服務,系統會記錄你的使用情況。基於改進目的而記錄的工作階段資料不會與你的身分或任何持久識別碼相關聯。有關我們資料處理實務的更多資訊,請參閱我們的[隱私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。與此端點進行互動,即表示你同意我們收集、記錄與使用此類資訊,並同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 From 9f69463f1d556af2b5b51d2efa1c04f5f544f911 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 05:19:51 +0000 Subject: [PATCH 196/271] fix(app): backport session rename and tab menu fixes to v1 (#46116) Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com> --- .../app/e2e/regression/session-rename.spec.ts | 141 ++++++++++++++++++ .../subagent-child-navigation.spec.ts | 2 +- .../app/src/components/titlebar-tab-nav.tsx | 71 ++++++--- .../session/timeline/message-timeline.tsx | 4 +- 4 files changed, 196 insertions(+), 22 deletions(-) create mode 100644 packages/app/e2e/regression/session-rename.spec.ts diff --git a/packages/app/e2e/regression/session-rename.spec.ts b/packages/app/e2e/regression/session-rename.spec.ts new file mode 100644 index 000000000..2cd97c24c --- /dev/null +++ b/packages/app/e2e/regression/session-rename.spec.ts @@ -0,0 +1,141 @@ +import { expect, test } from "@playwright/test" +import { fixture, pageMessages } from "../smoke/session-timeline.fixture" +import { mockOpenCodeServer } from "../utils/mock-server" + +test.beforeEach(async ({ page }) => { + const sessions = fixture.sessions.map((session) => ({ ...session })) + await mockOpenCodeServer(page, { + protocol: "v1", + sessions, + provider: fixture.provider, + directory: fixture.directory, + project: fixture.project, + pageMessages, + }) + await page.route(/\/session\/[^/]+(?:\?.*)?$/, async (route) => { + if (route.request().method() !== "PATCH") return route.fallback() + const id = new URL(route.request().url()).pathname.split("/").at(-1) + const session = sessions.find((item) => item.id === id) + const payload: unknown = route.request().postDataJSON() + if ( + !session || + !payload || + typeof payload !== "object" || + !("title" in payload) || + typeof payload.title !== "string" + ) + throw new Error("Invalid rename request") + session.title = payload.title + await route.fulfill({ json: session, headers: { "access-control-allow-origin": "*" } }) + }) + await page.addInitScript((directory) => { + localStorage.setItem( + "opencode.global.dat:server", + JSON.stringify({ + projects: { local: [{ worktree: directory, expanded: true }] }, + lastProject: { local: directory }, + }), + ) + }, fixture.directory) + await page.goto("/") + await page.locator('[data-component="home-session-row"]').filter({ hasText: fixture.expected.targetTitle }).click() + await expect(page.getByRole("heading", { name: fixture.expected.targetTitle, exact: true })).toBeVisible() +}) + +for (const commit of ["Enter", "blur", "click outside"]) { + test(`saves the session heading on ${commit}`, async ({ page }) => { + await page.getByRole("heading", { name: fixture.expected.targetTitle, exact: true }).click() + const input = page.locator('input[data-slot="session-title-child"]') + await expect(input).toBeFocused() + await input.fill("Renamed session") + if (commit === "Enter") await input.press("Enter") + if (commit === "blur") await input.press("Tab") + if (commit === "click outside") await page.getByRole("textbox", { name: "Prompt", exact: true }).click() + await expect(page.getByRole("heading", { name: "Renamed session", exact: true })).toBeVisible() + await expect(page.locator('[data-slot="titlebar-tabs"] a').filter({ hasText: "Renamed session" })).toBeVisible() + await page.reload() + await expect(page.getByRole("heading", { name: "Renamed session", exact: true })).toBeVisible() + }) +} + +test("cancels the session heading with Escape", async ({ page }) => { + await page.getByRole("heading", { name: fixture.expected.targetTitle, exact: true }).click() + const input = page.locator('input[data-slot="session-title-child"]') + await input.fill("Discard this title") + await input.press("Escape") + await expect(page.getByRole("heading", { name: fixture.expected.targetTitle, exact: true })).toBeVisible() + await page.reload() + await expect(page.getByRole("heading", { name: fixture.expected.targetTitle, exact: true })).toBeVisible() +}) + +test("keeps the draft when saving the session heading fails", async ({ page }) => { + await page.route(/\/session\/[^/]+(?:\?.*)?$/, (route) => { + if (route.request().method() !== "PATCH") return route.fallback() + return route.fulfill({ status: 500, headers: { "access-control-allow-origin": "*" } }) + }) + await page.getByRole("heading", { name: fixture.expected.targetTitle, exact: true }).click() + const input = page.locator('input[data-slot="session-title-child"]') + await input.fill("Retry this title") + await input.press("Tab") + await expect(page.getByText("Request failed", { exact: true })).toBeVisible() + await expect(input).toBeEnabled() + await expect(input).toHaveValue("Retry this title") + await expect( + page.locator('[data-slot="titlebar-tabs"] a').filter({ hasText: fixture.expected.targetTitle }), + ).toBeVisible() +}) + +test("does not save an empty session heading", async ({ page }) => { + await page.getByRole("heading", { name: fixture.expected.targetTitle, exact: true }).click() + const input = page.locator('input[data-slot="session-title-child"]') + await input.fill(" ") + await input.press("Tab") + await expect(page.getByRole("heading", { name: fixture.expected.targetTitle, exact: true })).toBeVisible() + await page.reload() + await expect(page.getByRole("heading", { name: fixture.expected.targetTitle, exact: true })).toBeVisible() +}) + +test("renames and closes the session tab from its context menu", async ({ page }) => { + const tab = page.locator('[data-slot="titlebar-tabs"] a').filter({ hasText: fixture.expected.targetTitle }) + await tab.click({ button: "right" }) + await expect(page.getByRole("menuitem", { name: "Rename", exact: true })).toBeVisible() + await page.keyboard.press("Escape") + await expect(page.getByRole("menuitem", { name: "Rename", exact: true })).toBeHidden() + await expect(tab).toBeFocused() + await tab.press("Shift+F10") + await page.getByRole("menuitem", { name: "Rename", exact: true }).click() + const input = page.locator('[data-slot="tab-title"][contenteditable="true"]') + await expect(input).toBeFocused() + await input.fill("Renamed from tab") + await input.press("Enter") + await expect(page.getByRole("heading", { name: "Renamed from tab", exact: true })).toBeVisible() + await page.reload() + await expect(page.getByRole("heading", { name: "Renamed from tab", exact: true })).toBeVisible() + const renamed = page.locator('[data-slot="titlebar-tabs"] a').filter({ hasText: "Renamed from tab" }) + await renamed.click({ button: "right" }) + await page.getByRole("menuitem", { name: "Close tab", exact: true }).click() + await expect(renamed).toBeHidden() + await page.getByRole("button", { name: "Home", exact: true }).click() + await expect( + page.locator('[data-component="home-session-row"]').filter({ hasText: "Renamed from tab" }), + ).toBeVisible() +}) + +test("renames an inactive tab without switching sessions", async ({ page }) => { + await page.getByRole("button", { name: "Home", exact: true }).click() + await page.locator('[data-component="home-session-row"]').filter({ hasText: fixture.expected.sourceTitle }).click() + await expect(page.getByRole("heading", { name: fixture.expected.sourceTitle, exact: true })).toBeVisible() + const tab = page.locator('[data-slot="titlebar-tabs"] a').filter({ hasText: fixture.expected.targetTitle }) + await tab.click({ button: "right" }) + await page.getByRole("menuitem", { name: "Rename", exact: true }).click() + const input = page.locator('[data-slot="tab-title"][contenteditable="true"]') + await expect(input).toBeFocused() + await input.fill("Inactive tab renamed") + await input.press("Tab") + await expect(page.getByRole("heading", { name: fixture.expected.sourceTitle, exact: true })).toBeVisible() + await expect(page).toHaveURL(new RegExp(`/session/${fixture.sourceID}$`)) + await page.locator('[data-slot="titlebar-tabs"] a').filter({ hasText: "Inactive tab renamed" }).click() + await expect(page.getByRole("heading", { name: "Inactive tab renamed", exact: true })).toBeVisible() + await page.reload() + await expect(page.getByRole("heading", { name: "Inactive tab renamed", exact: true })).toBeVisible() +}) diff --git a/packages/app/e2e/regression/subagent-child-navigation.spec.ts b/packages/app/e2e/regression/subagent-child-navigation.spec.ts index 019cc156e..c4ed6a78a 100644 --- a/packages/app/e2e/regression/subagent-child-navigation.spec.ts +++ b/packages/app/e2e/regression/subagent-child-navigation.spec.ts @@ -39,7 +39,7 @@ test("shows the not found fallback when the viewed session is deleted", async ({ }) await expect(page.getByText("This session cannot be found")).toBeVisible() - await expect(page.getByRole("button", { name: "Close Tab" })).toBeVisible() + await expect(page.getByRole("button", { name: "Close Tab", exact: true })).toBeVisible() await expect(page.getByRole("heading", { name: taskDescription })).toHaveCount(0) }) diff --git a/packages/app/src/components/titlebar-tab-nav.tsx b/packages/app/src/components/titlebar-tab-nav.tsx index 65493c54d..b016f286a 100644 --- a/packages/app/src/components/titlebar-tab-nav.tsx +++ b/packages/app/src/components/titlebar-tab-nav.tsx @@ -1,9 +1,11 @@ import { createEffect, createMemo, createSignal, onCleanup, Show, type Ref } from "solid-js" +import { createStore } from "solid-js/store" import { makeEventListener } from "@solid-primitives/event-listener" import { createResizeObserver } from "@solid-primitives/resize-observer" import { createMutation } from "@tanstack/solid-query" import { IconButtonV2 } from "@opencode-ai/ui/v2/icon-button-v2" import { Icon as IconV2 } from "@opencode-ai/ui/v2/icon" +import { MenuV2 } from "@opencode-ai/ui/v2/menu-v2" import { useGlobal } from "@/context/global" import { useLanguage } from "@/context/language" import { ServerConnection, serverName } from "@/context/server" @@ -33,6 +35,8 @@ export function TabNavItem(props: { pressed?: boolean hidden?: boolean }) { + const language = useLanguage() + const [menu, setMenu] = createStore({ open: false, rename: false }) const [editing, setEditing] = createSignal(false) const [titleOverflowing, setTitleOverflowing] = createSignal(false) let tabRoot!: HTMLDivElement @@ -76,7 +80,7 @@ export function TabNavItem(props: { }) const [popoverOpen, setPopoverOpen] = createSignal(false) - const previewBlocked = () => !!props.dragging || editing() || !!props.pressed || !props.session() + const previewBlocked = () => !!props.dragging || editing() || menu.open || !!props.pressed || !props.session() const measureTitleOverflow = () => { if (!titleEl || editing()) { @@ -138,9 +142,9 @@ export function TabNavItem(props: { titleEl.textContent = value }) - const openRename = (event: MouseEvent) => { - event.preventDefault() - event.stopPropagation() + const openRename = (event?: MouseEvent) => { + event?.preventDefault() + event?.stopPropagation() if (!canOpenTabRename(props.dragging, editing(), rename.isPending)) return const session = props.session() if (!session) return @@ -171,7 +175,7 @@ export function TabNavItem(props: { onCleanup(cleanup) }) - const tab = ( + const tab = () => (
      { tabRoot = el @@ -196,7 +200,11 @@ export function TabNavItem(props: { closeTab(event) }} > - - +
      } + aria-label={language.t("common.closeTab")} />
      ) return ( - { - if (value && previewBlocked()) return - setPopoverOpen(value) - }} - data={{ - projectName: projectName(), - title: props.session()?.title, - path: previewPath(), - serverName: serverLabel(), + { + setMenu("open", open) + if (open) setPopoverOpen(false) }} - /> + > + { + if (value && previewBlocked()) return + setPopoverOpen(value) + }} + data={{ + projectName: projectName(), + title: props.session()?.title, + path: previewPath(), + serverName: serverLabel(), + }} + /> + + { + if (!menu.rename) return + event.preventDefault() + setMenu("rename", false) + openRename() + }} + > + setMenu("rename", true)}> + {language.t("common.rename")} + + {language.t("common.closeTab")} + + + ) } diff --git a/packages/app/src/pages/session/timeline/message-timeline.tsx b/packages/app/src/pages/session/timeline/message-timeline.tsx index 18a153d29..e08388255 100644 --- a/packages/app/src/pages/session/timeline/message-timeline.tsx +++ b/packages/app/src/pages/session/timeline/message-timeline.tsx @@ -777,6 +777,7 @@ export function MessageTimeline(props: { } const saveTitleEditor = () => { + if (!title.editing) return const id = sessionID() if (!id) return if (titleMutation.isPending) return @@ -1447,6 +1448,7 @@ export function MessageTimeline(props: { onInput={(event) => setTitle("draft", event.currentTarget.value)} onKeyDown={(event) => { event.stopPropagation() + if (event.isComposing || event.keyCode === 229) return if (event.key === "Enter") { event.preventDefault() void saveTitleEditor() @@ -1457,7 +1459,7 @@ export function MessageTimeline(props: { closeTitleEditor() } }} - onBlur={closeTitleEditor} + onBlur={saveTitleEditor} /> From 26ff3ed3d3e28830190ef53f2ff4b261852139a4 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 12:01:31 -0400 Subject: [PATCH 197/271] fix(tui): keep home shortcuts right-aligned (#36906) Co-authored-by: Kit Langton --- packages/tui/src/component/prompt/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tui/src/component/prompt/index.tsx b/packages/tui/src/component/prompt/index.tsx index fe7f4a22f..0a3935ab2 100644 --- a/packages/tui/src/component/prompt/index.tsx +++ b/packages/tui/src/component/prompt/index.tsx @@ -1644,7 +1644,7 @@ export function Prompt(props: PromptProps) { {props.hint ?? ( - + }> {location()?.directory ?? paths.cwd} From b639de07acbf10c3fae53a564577e84dccf74612 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Mon, 31 Aug 2026 12:32:22 -0500 Subject: [PATCH 198/271] fix(stats): merge deepseek flash variants (#46446) --- packages/stats/core/src/domain/inference.test.ts | 9 +++++++++ packages/stats/core/src/domain/model-normalization.ts | 2 ++ 2 files changed, 11 insertions(+) diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index 5f7e0266b..e3b61193b 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -50,6 +50,10 @@ describe("inference stat normalization", () => { }) test("merges renamed models under their current name", () => { + expect(statModel("deepseek-v4-flash-0731", "")).toBe("deepseek-v4-flash") + expect(statModel("deepseek-v4-flash-0731-free", "")).toBe("deepseek-v4-flash") + expect(statModel("deepseek-v4-flash-dsv4-flash-final-rnaovd", "")).toBe("deepseek-v4-flash") + expect(statModel("deepseek-v4-flash-vision-exp", "")).toBe("deepseek-v4-flash-vision-exp") expect(statModel("x-preview-f", "")).toBe("glm-5.3-flash") expect(statModel("ox-alpha", "")).toBe("glm-5.3-flash") expect(statModel("ox-alpha-free", "")).toBe("glm-5.3-flash") @@ -130,6 +134,11 @@ describe("inference stat normalization", () => { expect(queries[0]).toContain("COALESCE(NULLIF(lower(model_tier), ''), '') AS raw_tier") expect(queries[0]).toContain("WHEN lower(COALESCE(raw_tier, '')) = 'free'") expect(queries[0]).toContain("regexp_replace(NULLIF(route_model, ''), '^.*/', '')") + expect(queries[0]).toContain("= 'deepseek-v4-flash-0731' THEN 'deepseek-v4-flash'") + expect(queries[0]).toContain( + "= 'deepseek-v4-flash-dsv4-flash-final-rnaovd' THEN 'deepseek-v4-flash'", + ) + expect(queries[0]).not.toContain("= 'deepseek-v4-flash-vision-exp' THEN 'deepseek-v4-flash'") expect(queries[0]).toContain("= 'ox-alpha' THEN 'glm-5.3-flash'") expect(queries[0]).toContain("= 'x-preview-f' THEN 'glm-5.3-flash'") expect(queries[0]).toContain("OR lower(raw_model) IN ('gpt-5-nano', 'grok-code', 'big-pickle')") diff --git a/packages/stats/core/src/domain/model-normalization.ts b/packages/stats/core/src/domain/model-normalization.ts index 744d761d9..6f2edb117 100644 --- a/packages/stats/core/src/domain/model-normalization.ts +++ b/packages/stats/core/src/domain/model-normalization.ts @@ -16,6 +16,8 @@ export const MODEL_AUTHOR_RULES = [ export const EXCLUDED_MODELS = new Set(["alpha-gpt-next"]) export const FREE_MODELS = new Set(["gpt-5-nano", "grok-code", "big-pickle"]) export const MODEL_NAME_ALIASES: Record = { + "deepseek-v4-flash-0731": "deepseek-v4-flash", + "deepseek-v4-flash-dsv4-flash-final-rnaovd": "deepseek-v4-flash", "ox-alpha": "glm-5.3-flash", "x-preview-f": "glm-5.3-flash", "xiaomi/mimo-v2.5": "mimo-v2.5", From 04284921ac8f657555b5a182f5ff055f471543e4 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Mon, 31 Aug 2026 17:33:52 +0000 Subject: [PATCH 199/271] chore: generate --- packages/stats/core/src/domain/inference.test.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index e3b61193b..20dbe8620 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -135,9 +135,7 @@ describe("inference stat normalization", () => { expect(queries[0]).toContain("WHEN lower(COALESCE(raw_tier, '')) = 'free'") expect(queries[0]).toContain("regexp_replace(NULLIF(route_model, ''), '^.*/', '')") expect(queries[0]).toContain("= 'deepseek-v4-flash-0731' THEN 'deepseek-v4-flash'") - expect(queries[0]).toContain( - "= 'deepseek-v4-flash-dsv4-flash-final-rnaovd' THEN 'deepseek-v4-flash'", - ) + expect(queries[0]).toContain("= 'deepseek-v4-flash-dsv4-flash-final-rnaovd' THEN 'deepseek-v4-flash'") expect(queries[0]).not.toContain("= 'deepseek-v4-flash-vision-exp' THEN 'deepseek-v4-flash'") expect(queries[0]).toContain("= 'ox-alpha' THEN 'glm-5.3-flash'") expect(queries[0]).toContain("= 'x-preview-f' THEN 'glm-5.3-flash'") From ba790579eab13db3bd5404f9ca5a8d3f424478fa Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 31 Aug 2026 21:32:58 -0400 Subject: [PATCH 200/271] docs on proper usage of OpenCode Go --- packages/web/src/content/docs/go.mdx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 4c5e925a9..0759b6c43 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -89,6 +89,17 @@ The list of models may change as we test and add new ones. --- +## Where can I use it? + +OpenCode Go is designed to be used with [OpenCode](https://opencode.ai) and other +popular coding agents that produce a similar types of requests. + +Traffic is monitored for abusive traffic that degrades the experience for other users. + +To ensure your account does not get flagged, make sure the tool you're using +- does not generate abusive traffic +- properly identifies itself (no broad user agents) + ## Usage limits OpenCode Go includes the following limits: From 2386fcec753c49c55c8df026edde8e822c924925 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Tue, 1 Sep 2026 01:35:29 +0000 Subject: [PATCH 201/271] chore: generate --- packages/web/src/content/docs/go.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 0759b6c43..29d79983e 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -97,6 +97,7 @@ popular coding agents that produce a similar types of requests. Traffic is monitored for abusive traffic that degrades the experience for other users. To ensure your account does not get flagged, make sure the tool you're using + - does not generate abusive traffic - properly identifies itself (no broad user agents) From 5c5c709feed2705fd00227f1d0718db6390016ca Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 21:16:05 -0500 Subject: [PATCH 202/271] fix(tui): pin diff highlights query (#46519) Co-authored-by: rekram1-node Co-authored-by: Andreas Holt <6665487+AndreasHolt@users.noreply.github.com> --- packages/tui/src/parsers-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tui/src/parsers-config.ts b/packages/tui/src/parsers-config.ts index 0450c4d2e..fcb064e0b 100644 --- a/packages/tui/src/parsers-config.ts +++ b/packages/tui/src/parsers-config.ts @@ -302,7 +302,7 @@ export default { wasm: "https://github.com/tree-sitter-grammars/tree-sitter-diff/releases/download/v0.1.0/tree-sitter-diff.wasm", queries: { highlights: [ - "https://raw.githubusercontent.com/tree-sitter-grammars/tree-sitter-diff/master/queries/highlights.scm", + "https://raw.githubusercontent.com/tree-sitter-grammars/tree-sitter-diff/2520c3f934b3179bb540d23e0ef45f75304b5fed/queries/highlights.scm", ], }, }, From f7da00f35ef9ab6ce6356aaafd8159033bc467f8 Mon Sep 17 00:00:00 2001 From: Kyle Altendorf Date: Mon, 31 Aug 2026 22:37:19 -0400 Subject: [PATCH 203/271] fix(opencode): omit empty apply patch move path (#45329) --- packages/opencode/src/tool/apply_patch.ts | 2 +- .../opencode/test/tool/apply_patch.test.ts | 22 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/tool/apply_patch.ts b/packages/opencode/src/tool/apply_patch.ts index f9201be8a..3f89a6397 100644 --- a/packages/opencode/src/tool/apply_patch.ts +++ b/packages/opencode/src/tool/apply_patch.ts @@ -198,7 +198,7 @@ export const ApplyPatchTool = Tool.define( patch: change.diff, additions: change.additions, deletions: change.deletions, - movePath: change.movePath, + ...(change.movePath ? { movePath: change.movePath } : {}), })) // Check permissions if needed diff --git a/packages/opencode/test/tool/apply_patch.test.ts b/packages/opencode/test/tool/apply_patch.test.ts index e394d8084..742036154 100644 --- a/packages/opencode/test/tool/apply_patch.test.ts +++ b/packages/opencode/test/tool/apply_patch.test.ts @@ -1,8 +1,9 @@ import { describe, expect } from "bun:test" import path from "path" import * as fs from "fs/promises" +import { PermissionV1 } from "@opencode-ai/core/v1/permission" import { LayerNode } from "@opencode-ai/core/effect/layer-node" -import { Cause, Effect, Exit, Layer } from "effect" +import { Cause, Effect, Exit, Layer, Schema } from "effect" import { ApplyPatchTool } from "../../src/tool/apply_patch" import { LSP } from "@/lsp/lsp" import { FSUtil } from "@opencode-ai/core/fs-util" @@ -107,6 +108,25 @@ describe("tool.apply_patch freeform", () => { }), ) + it.instance( + "produces JSON-encodable permission metadata", + () => + Effect.gen(function* () { + const { ctx, calls } = makeCtx() + yield* execute({ patchText: "*** Begin Patch\n*** Add File: new.txt\n+created\n*** End Patch" }, ctx) + + expect(() => { + const request = Schema.encodeUnknownSync(PermissionV1.Request)({ + id: PermissionV1.ID.ascending(), + sessionID: baseCtx.sessionID, + ...calls[0], + }) + Schema.encodeUnknownSync(Schema.Json)(request) + }).not.toThrow() + }), + { git: true }, + ) + it.instance( "applies add/update/delete in one patch", () => From be3b703a7b61953aa70c7a049fca6cc71471ef8d Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 31 Aug 2026 22:44:53 -0400 Subject: [PATCH 204/271] fix(web): restore documentation list markers --- packages/web/src/styles/custom.css | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/web/src/styles/custom.css b/packages/web/src/styles/custom.css index 04331dd6a..095e4a371 100644 --- a/packages/web/src/styles/custom.css +++ b/packages/web/src/styles/custom.css @@ -267,12 +267,6 @@ strong { font-weight: 500 !important; } -ul, -ol { - list-style: none !important; - padding: 0 !important; -} - .sl-markdown-content .tab > [role="tab"][aria-selected="true"] { border-color: var(--color-text-strong); } From 1ead9e3d7f02661176fd46d7bcac7f6b7be3b52d Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 31 Aug 2026 22:45:34 -0400 Subject: [PATCH 205/271] fix(web): number Go usage requirements --- packages/web/src/content/docs/go.mdx | 4 ++-- packages/web/src/styles/custom.css | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 29d79983e..7ad23efa8 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -98,8 +98,8 @@ Traffic is monitored for abusive traffic that degrades the experience for other To ensure your account does not get flagged, make sure the tool you're using -- does not generate abusive traffic -- properly identifies itself (no broad user agents) +1\. does not generate abusive traffic +2\. properly identifies itself (no broad user agents) ## Usage limits diff --git a/packages/web/src/styles/custom.css b/packages/web/src/styles/custom.css index 095e4a371..04331dd6a 100644 --- a/packages/web/src/styles/custom.css +++ b/packages/web/src/styles/custom.css @@ -267,6 +267,12 @@ strong { font-weight: 500 !important; } +ul, +ol { + list-style: none !important; + padding: 0 !important; +} + .sl-markdown-content .tab > [role="tab"][aria-selected="true"] { border-color: var(--color-text-strong); } From ebece6efd7b11401cf1e7390b5a22991b6608cc4 Mon Sep 17 00:00:00 2001 From: Jack Date: Tue, 1 Sep 2026 15:11:17 +0800 Subject: [PATCH 206/271] docs(web): update Qwen3.7 Max Go usage (#46555) --- packages/web/src/content/docs/ar/go.mdx | 4 ++-- packages/web/src/content/docs/bs/go.mdx | 4 ++-- packages/web/src/content/docs/da/go.mdx | 4 ++-- packages/web/src/content/docs/de/go.mdx | 4 ++-- packages/web/src/content/docs/es/go.mdx | 4 ++-- packages/web/src/content/docs/fr/go.mdx | 4 ++-- packages/web/src/content/docs/go.mdx | 4 ++-- packages/web/src/content/docs/it/go.mdx | 4 ++-- packages/web/src/content/docs/ja/go.mdx | 4 ++-- packages/web/src/content/docs/ko/go.mdx | 4 ++-- packages/web/src/content/docs/nb/go.mdx | 4 ++-- packages/web/src/content/docs/pl/go.mdx | 4 ++-- packages/web/src/content/docs/pt-br/go.mdx | 4 ++-- packages/web/src/content/docs/ru/go.mdx | 4 ++-- packages/web/src/content/docs/th/go.mdx | 4 ++-- packages/web/src/content/docs/tr/go.mdx | 4 ++-- packages/web/src/content/docs/zh-cn/go.mdx | 4 ++-- packages/web/src/content/docs/zh-tw/go.mdx | 4 ++-- 18 files changed, 36 insertions(+), 36 deletions(-) diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 23e95b346..f927fce25 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -110,7 +110,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -168,7 +168,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 1200b785a..08792e787 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -120,7 +120,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -178,7 +178,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 925e8c517..efcddab11 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -120,7 +120,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -178,7 +178,7 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index 941c439d7..f15dfd411 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -112,7 +112,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -170,7 +170,7 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index c5b40f679..e32c3038d 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -120,7 +120,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -178,7 +178,7 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index f47bf643b..6f08343c4 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -110,7 +110,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -168,7 +168,7 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 7ad23efa8..f6430f0c4 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -132,7 +132,7 @@ The table below provides an estimated request count based on typical Go usage pa | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -190,7 +190,7 @@ The estimates are also based on the following prices per 1M tokens and the month | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 634a1d898..10697cfb9 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -118,7 +118,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -176,7 +176,7 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index fdfbb5ab9..e8e83effc 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -110,7 +110,7 @@ OpenCode Goには以下の制限が含まれています: | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -168,7 +168,7 @@ OpenCode Goには以下の制限が含まれています: | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 41d6f227d..5e4857073 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -110,7 +110,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -168,7 +168,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index cb802b371..6edf6c24e 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -120,7 +120,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -178,7 +178,7 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 2acddfffb..7cd50ed39 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -114,7 +114,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -172,7 +172,7 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 291ce76e8..cc0bd44cd 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -120,7 +120,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -178,7 +178,7 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index f6f04d416..c8b7e6aba 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -120,7 +120,7 @@ OpenCode Go включает следующие лимиты: | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -178,7 +178,7 @@ OpenCode Go включает следующие лимиты: | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index eb98cda3e..436c0339f 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -110,7 +110,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -168,7 +168,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index c54cd4d80..7f9ae3746 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -110,7 +110,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -168,7 +168,7 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 6cdada177..35fe8356a 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -110,7 +110,7 @@ OpenCode Go 包含以下限制: | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -168,7 +168,7 @@ OpenCode Go 包含以下限制: | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index 010715b80..edf39e593 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -110,7 +110,7 @@ OpenCode Go 包含以下限制: | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | -| Qwen3.7 Max | 340 | 840 | 1,690 | +| Qwen3.7 Max | 170 | 420 | 840 | | Qwen3.7 Plus | 4,300 | 10,800 | 21,600 | | Qwen3.6 Plus | 3,300 | 8,200 | 16,300 | | DeepSeek V4 Pro | 1,050 | 2,600 | 5,200 | @@ -168,7 +168,7 @@ OpenCode Go 包含以下限制: | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $60 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | | Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | | Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | | Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | From 5341a5e442679f96fe152aac91c31509f4dd5430 Mon Sep 17 00:00:00 2001 From: Victor Navarro Date: Tue, 1 Sep 2026 18:20:52 +0200 Subject: [PATCH 207/271] feat(console): add workspace migration timestamp (#46627) --- .../migration.sql | 1 + .../snapshot.json | 3259 +++++++++++++++++ .../console/core/src/schema/workspace.sql.ts | 3 +- 3 files changed, 3262 insertions(+), 1 deletion(-) create mode 100644 packages/console/core/migrations/20260901161032_workspace_migrated_at/migration.sql create mode 100644 packages/console/core/migrations/20260901161032_workspace_migrated_at/snapshot.json diff --git a/packages/console/core/migrations/20260901161032_workspace_migrated_at/migration.sql b/packages/console/core/migrations/20260901161032_workspace_migrated_at/migration.sql new file mode 100644 index 000000000..87918c730 --- /dev/null +++ b/packages/console/core/migrations/20260901161032_workspace_migrated_at/migration.sql @@ -0,0 +1 @@ +ALTER TABLE `workspace` ADD `migrated_at` timestamp(3); diff --git a/packages/console/core/migrations/20260901161032_workspace_migrated_at/snapshot.json b/packages/console/core/migrations/20260901161032_workspace_migrated_at/snapshot.json new file mode 100644 index 000000000..1f19f7df0 --- /dev/null +++ b/packages/console/core/migrations/20260901161032_workspace_migrated_at/snapshot.json @@ -0,0 +1,3259 @@ +{ + "version": "6", + "dialect": "mysql", + "id": "3e952a24-4137-4944-b7fa-e39e71061235", + "prevIds": [ + "e365c1d7-fb02-44ad-b681-87bb51d01964" + ], + "ddl": [ + { + "name": "account", + "entityType": "tables" + }, + { + "name": "auth", + "entityType": "tables" + }, + { + "name": "benchmark", + "entityType": "tables" + }, + { + "name": "billing", + "entityType": "tables" + }, + { + "name": "coupon", + "entityType": "tables" + }, + { + "name": "lite", + "entityType": "tables" + }, + { + "name": "payment", + "entityType": "tables" + }, + { + "name": "subscription", + "entityType": "tables" + }, + { + "name": "usage", + "entityType": "tables" + }, + { + "name": "ip_rate_limit", + "entityType": "tables" + }, + { + "name": "ip", + "entityType": "tables" + }, + { + "name": "key_rate_limit", + "entityType": "tables" + }, + { + "name": "model_sticky_provider", + "entityType": "tables" + }, + { + "name": "model_tpm_rate_limit", + "entityType": "tables" + }, + { + "name": "model_tps_rate_limit", + "entityType": "tables" + }, + { + "name": "key", + "entityType": "tables" + }, + { + "name": "model", + "entityType": "tables" + }, + { + "name": "provider", + "entityType": "tables" + }, + { + "name": "referral_code", + "entityType": "tables" + }, + { + "name": "referral_reward", + "entityType": "tables" + }, + { + "name": "referral", + "entityType": "tables" + }, + { + "name": "user", + "entityType": "tables" + }, + { + "name": "workspace", + "entityType": "tables" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "account" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "account" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "account" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "account" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "auth" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "auth" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "auth" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "auth" + }, + { + "type": "enum('email','github','google')", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider", + "entityType": "columns", + "table": "auth" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "subject", + "entityType": "columns", + "table": "auth" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "account_id", + "entityType": "columns", + "table": "auth" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "model", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "agent", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "mediumtext", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "result", + "entityType": "columns", + "table": "benchmark" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "customer_id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "payment_method_id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(32)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "payment_method_type", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(4)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "payment_method_last4", + "entityType": "columns", + "table": "billing" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "balance", + "entityType": "columns", + "table": "billing" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "monthly_limit", + "entityType": "columns", + "table": "billing" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "monthly_usage", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_monthly_usage_updated", + "entityType": "columns", + "table": "billing" + }, + { + "type": "boolean", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reload", + "entityType": "columns", + "table": "billing" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reload_trigger", + "entityType": "columns", + "table": "billing" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reload_amount", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reload_error", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_reload_error", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_reload_locked_till", + "entityType": "columns", + "table": "billing" + }, + { + "type": "json", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "subscription", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(28)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "subscription_id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "enum('20','100','200')", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "subscription_plan", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_subscription_booked", + "entityType": "columns", + "table": "billing" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_subscription_selected", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(28)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "lite_subscription_id", + "entityType": "columns", + "table": "billing" + }, + { + "type": "json", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "lite", + "entityType": "columns", + "table": "billing" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "email", + "entityType": "columns", + "table": "coupon" + }, + { + "type": "enum('BUILDATHON','GO1MONTH50','GOFREEMONTH','GO3MONTHS100','GO6MONTHS100','GO12MONTHS100')", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "type", + "entityType": "columns", + "table": "coupon" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_redeemed", + "entityType": "columns", + "table": "coupon" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "lite" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "lite" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "user_id", + "entityType": "columns", + "table": "lite" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rolling_usage", + "entityType": "columns", + "table": "lite" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "weekly_usage", + "entityType": "columns", + "table": "lite" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "monthly_usage", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_rolling_updated", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_weekly_updated", + "entityType": "columns", + "table": "lite" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_monthly_updated", + "entityType": "columns", + "table": "lite" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "payment" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "payment" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "payment" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "payment" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "payment" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "customer_id", + "entityType": "columns", + "table": "payment" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "invoice_id", + "entityType": "columns", + "table": "payment" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "payment_id", + "entityType": "columns", + "table": "payment" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "amount", + "entityType": "columns", + "table": "payment" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_refunded", + "entityType": "columns", + "table": "payment" + }, + { + "type": "json", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "enrichment", + "entityType": "columns", + "table": "payment" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "user_id", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rolling_usage", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "fixed_usage", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_rolling_updated", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_fixed_updated", + "entityType": "columns", + "table": "subscription" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "usage" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "usage" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "usage" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "model", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "input_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "output_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reasoning_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cache_read_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cache_write_5m_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cache_write_1h_tokens", + "entityType": "columns", + "table": "usage" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cost", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(30)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "key_id", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(30)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "session_id", + "entityType": "columns", + "table": "usage" + }, + { + "type": "json", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "enrichment", + "entityType": "columns", + "table": "usage" + }, + { + "type": "varchar(45)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "ip", + "entityType": "columns", + "table": "ip_rate_limit" + }, + { + "type": "varchar(10)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "interval", + "entityType": "columns", + "table": "ip_rate_limit" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "count", + "entityType": "columns", + "table": "ip_rate_limit" + }, + { + "type": "varchar(45)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "ip", + "entityType": "columns", + "table": "ip" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "ip" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "ip" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "ip" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "usage", + "entityType": "columns", + "table": "ip" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "key", + "entityType": "columns", + "table": "key_rate_limit" + }, + { + "type": "varchar(40)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "interval", + "entityType": "columns", + "table": "key_rate_limit" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "count", + "entityType": "columns", + "table": "key_rate_limit" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "model_sticky_provider" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "model_sticky_provider" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "model_sticky_provider" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "model_sticky_provider" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider_id", + "entityType": "columns", + "table": "model_sticky_provider" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "model_tpm_rate_limit" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "interval", + "entityType": "columns", + "table": "model_tpm_rate_limit" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "count", + "entityType": "columns", + "table": "model_tpm_rate_limit" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "model_tps_rate_limit" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "interval", + "entityType": "columns", + "table": "model_tps_rate_limit" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "qualify", + "entityType": "columns", + "table": "model_tps_rate_limit" + }, + { + "type": "int", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "unqualify", + "entityType": "columns", + "table": "model_tps_rate_limit" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "key" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "key" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "key" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "key" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "key" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "name", + "entityType": "columns", + "table": "key" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "key", + "entityType": "columns", + "table": "key" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "user_id", + "entityType": "columns", + "table": "key" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_used", + "entityType": "columns", + "table": "key" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "model" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "model" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "model" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "model" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "model" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "model", + "entityType": "columns", + "table": "model" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "provider" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "provider" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "provider" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "provider" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "provider" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider", + "entityType": "columns", + "table": "provider" + }, + { + "type": "text", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "credentials", + "entityType": "columns", + "table": "provider" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "referral_code" + }, + { + "type": "varchar(10)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "code", + "entityType": "columns", + "table": "referral_code" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "referral_code" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "referral_code" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "referral_code" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "referral_id", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "amount", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_applied", + "entityType": "columns", + "table": "referral_reward" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "referral" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "referral" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "referral" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "referral" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "referral" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "invitee_account_id", + "entityType": "columns", + "table": "referral" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "user" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "workspace_id", + "entityType": "columns", + "table": "user" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "user" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "user" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "user" + }, + { + "type": "varchar(30)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "account_id", + "entityType": "columns", + "table": "user" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "email", + "entityType": "columns", + "table": "user" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "name", + "entityType": "columns", + "table": "user" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_seen", + "entityType": "columns", + "table": "user" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "color", + "entityType": "columns", + "table": "user" + }, + { + "type": "enum('admin','member')", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "role", + "entityType": "columns", + "table": "user" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "monthly_limit", + "entityType": "columns", + "table": "user" + }, + { + "type": "bigint", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "monthly_usage", + "entityType": "columns", + "table": "user" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_monthly_usage_updated", + "entityType": "columns", + "table": "user" + }, + { + "type": "varchar(30)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "varchar(255)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "slug", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "varchar(255)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "name", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "json", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "region", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "boolean", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "allow_training", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "boolean", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "is_blocked", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "boolean", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "is_flagged_by_anthropic", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "boolean", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "is_flagged_by_openai", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "migrated_at", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_created", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "timestamp(3)", + "notNull": true, + "autoIncrement": false, + "default": "(CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3))", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_updated", + "entityType": "columns", + "table": "workspace" + }, + { + "type": "timestamp(3)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "time_deleted", + "entityType": "columns", + "table": "workspace" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "account", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "auth", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "benchmark", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "billing", + "entityType": "pks" + }, + { + "columns": [ + "email", + "type" + ], + "name": "PRIMARY", + "table": "coupon", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "lite", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "payment", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "subscription", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "usage", + "entityType": "pks" + }, + { + "columns": [ + "ip", + "interval" + ], + "name": "PRIMARY", + "table": "ip_rate_limit", + "entityType": "pks" + }, + { + "columns": [ + "ip" + ], + "name": "PRIMARY", + "table": "ip", + "entityType": "pks" + }, + { + "columns": [ + "key", + "interval" + ], + "name": "PRIMARY", + "table": "key_rate_limit", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "model_sticky_provider", + "entityType": "pks" + }, + { + "columns": [ + "id", + "interval" + ], + "name": "PRIMARY", + "table": "model_tpm_rate_limit", + "entityType": "pks" + }, + { + "columns": [ + "id", + "interval" + ], + "name": "PRIMARY", + "table": "model_tps_rate_limit", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "key", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "model", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "provider", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id" + ], + "name": "PRIMARY", + "table": "referral_code", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "referral_id" + ], + "name": "PRIMARY", + "table": "referral_reward", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "referral", + "entityType": "pks" + }, + { + "columns": [ + "workspace_id", + "id" + ], + "name": "PRIMARY", + "table": "user", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "workspace", + "entityType": "pks" + }, + { + "columns": [ + { + "value": "provider", + "isExpression": false + }, + { + "value": "subject", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "provider", + "entityType": "indexes", + "table": "auth" + }, + { + "columns": [ + { + "value": "account_id", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "account_id", + "entityType": "indexes", + "table": "auth" + }, + { + "columns": [ + { + "value": "time_created", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "time_created", + "entityType": "indexes", + "table": "benchmark" + }, + { + "columns": [ + { + "value": "customer_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_customer_id", + "entityType": "indexes", + "table": "billing" + }, + { + "columns": [ + { + "value": "subscription_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_subscription_id", + "entityType": "indexes", + "table": "billing" + }, + { + "columns": [ + { + "value": "lite_subscription_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_lite_subscription_id", + "entityType": "indexes", + "table": "billing" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "user_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "workspace_user_id", + "entityType": "indexes", + "table": "lite" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "user_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "workspace_user_id", + "entityType": "indexes", + "table": "subscription" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "time_created", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "usage_time_created", + "entityType": "indexes", + "table": "usage" + }, + { + "columns": [ + { + "value": "key", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_key", + "entityType": "indexes", + "table": "key" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "model", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "model_workspace_model", + "entityType": "indexes", + "table": "model" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "provider", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "workspace_provider", + "entityType": "indexes", + "table": "provider" + }, + { + "columns": [ + { + "value": "code", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "code", + "entityType": "indexes", + "table": "referral_code" + }, + { + "columns": [ + { + "value": "referral_id", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "referral_id", + "entityType": "indexes", + "table": "referral_reward" + }, + { + "columns": [ + { + "value": "invitee_account_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "invitee_account_id", + "entityType": "indexes", + "table": "referral" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "account_id", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "user_account_id", + "entityType": "indexes", + "table": "user" + }, + { + "columns": [ + { + "value": "workspace_id", + "isExpression": false + }, + { + "value": "email", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "user_email", + "entityType": "indexes", + "table": "user" + }, + { + "columns": [ + { + "value": "account_id", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_account_id", + "entityType": "indexes", + "table": "user" + }, + { + "columns": [ + { + "value": "email", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "global_email", + "entityType": "indexes", + "table": "user" + }, + { + "columns": [ + { + "value": "slug", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "slug", + "entityType": "indexes", + "table": "workspace" + } + ], + "renames": [] +} diff --git a/packages/console/core/src/schema/workspace.sql.ts b/packages/console/core/src/schema/workspace.sql.ts index 3497979dc..c71f76bd4 100644 --- a/packages/console/core/src/schema/workspace.sql.ts +++ b/packages/console/core/src/schema/workspace.sql.ts @@ -1,5 +1,5 @@ import { boolean, json, primaryKey, mysqlTable, uniqueIndex, varchar } from "drizzle-orm/mysql-core" -import { timestamps, ulid } from "../drizzle/types" +import { timestamps, ulid, utc } from "../drizzle/types" export const WorkspaceTable = mysqlTable( "workspace", @@ -12,6 +12,7 @@ export const WorkspaceTable = mysqlTable( is_blocked: boolean(), is_flagged_by_anthropic: boolean(), is_flagged_by_openai: boolean(), + migrated_at: utc("migrated_at"), ...timestamps, }, (table) => [uniqueIndex("slug").on(table.slug)], From 1ce281b7abd1a2ee75dd4c9057da1d120200da67 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Tue, 1 Sep 2026 12:12:11 -0500 Subject: [PATCH 208/271] fix(stats): prevent comparison legend collapse --- packages/stats/app/src/routes/index.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/stats/app/src/routes/index.css b/packages/stats/app/src/routes/index.css index 3b6fa273f..2b8acb390 100644 --- a/packages/stats/app/src/routes/index.css +++ b/packages/stats/app/src/routes/index.css @@ -6126,6 +6126,7 @@ body { grid-template-columns: 6px minmax(0, 1fr); gap: 12px; align-items: start; + align-self: stretch; min-width: 0; } @@ -6145,7 +6146,8 @@ body { [data-page="stats"] [data-slot="compare-radar-legend"] small { font-size: 13px; line-height: 18px; - overflow-wrap: anywhere; + overflow-wrap: break-word; + word-break: normal; } [data-page="stats"] [data-slot="compare-radar-legend"] strong { From df6aecdbc50f08679e3ae81fa2b84ac89ec4ff14 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Tue, 1 Sep 2026 17:14:51 +0000 Subject: [PATCH 209/271] chore: generate --- .../snapshot.json | 112 ++++-------------- 1 file changed, 24 insertions(+), 88 deletions(-) diff --git a/packages/console/core/migrations/20260901161032_workspace_migrated_at/snapshot.json b/packages/console/core/migrations/20260901161032_workspace_migrated_at/snapshot.json index 1f19f7df0..e81037d44 100644 --- a/packages/console/core/migrations/20260901161032_workspace_migrated_at/snapshot.json +++ b/packages/console/core/migrations/20260901161032_workspace_migrated_at/snapshot.json @@ -2,9 +2,7 @@ "version": "6", "dialect": "mysql", "id": "3e952a24-4137-4944-b7fa-e39e71061235", - "prevIds": [ - "e365c1d7-fb02-44ad-b681-87bb51d01964" - ], + "prevIds": ["e365c1d7-fb02-44ad-b681-87bb51d01964"], "ddl": [ { "name": "account", @@ -2703,201 +2701,139 @@ "table": "workspace" }, { - "columns": [ - "id" - ], + "columns": ["id"], "name": "PRIMARY", "table": "account", "entityType": "pks" }, { - "columns": [ - "id" - ], + "columns": ["id"], "name": "PRIMARY", "table": "auth", "entityType": "pks" }, { - "columns": [ - "id" - ], + "columns": ["id"], "name": "PRIMARY", "table": "benchmark", "entityType": "pks" }, { - "columns": [ - "workspace_id", - "id" - ], + "columns": ["workspace_id", "id"], "name": "PRIMARY", "table": "billing", "entityType": "pks" }, { - "columns": [ - "email", - "type" - ], + "columns": ["email", "type"], "name": "PRIMARY", "table": "coupon", "entityType": "pks" }, { - "columns": [ - "workspace_id", - "id" - ], + "columns": ["workspace_id", "id"], "name": "PRIMARY", "table": "lite", "entityType": "pks" }, { - "columns": [ - "workspace_id", - "id" - ], + "columns": ["workspace_id", "id"], "name": "PRIMARY", "table": "payment", "entityType": "pks" }, { - "columns": [ - "workspace_id", - "id" - ], + "columns": ["workspace_id", "id"], "name": "PRIMARY", "table": "subscription", "entityType": "pks" }, { - "columns": [ - "workspace_id", - "id" - ], + "columns": ["workspace_id", "id"], "name": "PRIMARY", "table": "usage", "entityType": "pks" }, { - "columns": [ - "ip", - "interval" - ], + "columns": ["ip", "interval"], "name": "PRIMARY", "table": "ip_rate_limit", "entityType": "pks" }, { - "columns": [ - "ip" - ], + "columns": ["ip"], "name": "PRIMARY", "table": "ip", "entityType": "pks" }, { - "columns": [ - "key", - "interval" - ], + "columns": ["key", "interval"], "name": "PRIMARY", "table": "key_rate_limit", "entityType": "pks" }, { - "columns": [ - "id" - ], + "columns": ["id"], "name": "PRIMARY", "table": "model_sticky_provider", "entityType": "pks" }, { - "columns": [ - "id", - "interval" - ], + "columns": ["id", "interval"], "name": "PRIMARY", "table": "model_tpm_rate_limit", "entityType": "pks" }, { - "columns": [ - "id", - "interval" - ], + "columns": ["id", "interval"], "name": "PRIMARY", "table": "model_tps_rate_limit", "entityType": "pks" }, { - "columns": [ - "workspace_id", - "id" - ], + "columns": ["workspace_id", "id"], "name": "PRIMARY", "table": "key", "entityType": "pks" }, { - "columns": [ - "workspace_id", - "id" - ], + "columns": ["workspace_id", "id"], "name": "PRIMARY", "table": "model", "entityType": "pks" }, { - "columns": [ - "workspace_id", - "id" - ], + "columns": ["workspace_id", "id"], "name": "PRIMARY", "table": "provider", "entityType": "pks" }, { - "columns": [ - "workspace_id" - ], + "columns": ["workspace_id"], "name": "PRIMARY", "table": "referral_code", "entityType": "pks" }, { - "columns": [ - "workspace_id", - "referral_id" - ], + "columns": ["workspace_id", "referral_id"], "name": "PRIMARY", "table": "referral_reward", "entityType": "pks" }, { - "columns": [ - "workspace_id", - "id" - ], + "columns": ["workspace_id", "id"], "name": "PRIMARY", "table": "referral", "entityType": "pks" }, { - "columns": [ - "workspace_id", - "id" - ], + "columns": ["workspace_id", "id"], "name": "PRIMARY", "table": "user", "entityType": "pks" }, { - "columns": [ - "id" - ], + "columns": ["id"], "name": "PRIMARY", "table": "workspace", "entityType": "pks" From 216ba8f05f72ad502f3a807c5513ac2e93d02586 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Tue, 1 Sep 2026 13:39:45 -0500 Subject: [PATCH 210/271] fix(opencode): stop Azure model discovery from logging to stdout (#46646) --- packages/opencode/src/plugin/azure.ts | 22 ++--- packages/opencode/test/plugin/azure.test.ts | 102 +++++++++++++++----- 2 files changed, 88 insertions(+), 36 deletions(-) diff --git a/packages/opencode/src/plugin/azure.ts b/packages/opencode/src/plugin/azure.ts index 33a164f37..7a663093f 100644 --- a/packages/opencode/src/plugin/azure.ts +++ b/packages/opencode/src/plugin/azure.ts @@ -5,7 +5,7 @@ import { InstallationVersion } from "@opencode-ai/core/installation/version" import { which } from "@opencode-ai/core/util/which" import type { Hooks } from "@opencode-ai/plugin" import type { Provider } from "@opencode-ai/sdk/v2" -import { Effect, Schema } from "effect" +import { Schema } from "effect" import { OAUTH_DUMMY_KEY } from "../auth" import { Process } from "../util/process" @@ -69,9 +69,9 @@ export async function AzureAuthPlugin(): Promise { export function createAzureAuthHooks( run: AzureCommand, - request: (input: RequestInfo | URL, init?: RequestInit) => Promise = fetch, - accounts: readonly AzureAccount[] = [], - available = true, + request: (input: RequestInfo | URL, init?: RequestInit) => Promise, + accounts: readonly AzureAccount[], + available: boolean, ): Hooks { const tokens = new Map() async function token(scope: string) { @@ -128,17 +128,13 @@ export function createAzureAuthHooks( id: "azure", async models(provider, context) { if (context.auth?.type !== "oauth") return provider.models + // Discovery shells out to the Azure CLI, so skip it when the CLI is missing. + if (!available) return provider.models const resource = context.auth.accountId if (!resource) return {} - return discoverAzureModels(provider.models, resource, run).catch((error: unknown) => { - Effect.runSync( - Effect.logWarning("Azure model discovery failed", { - resource, - error: error instanceof Error ? error.message : String(error), - }), - ) - return provider.models - }) + // This hook runs outside the app's Effect runtime, so logging here would go to the + // console. Fall back to the configured models silently. + return discoverAzureModels(provider.models, resource, run).catch(() => provider.models) }, }, auth: { diff --git a/packages/opencode/test/plugin/azure.test.ts b/packages/opencode/test/plugin/azure.test.ts index 11e7f3a2c..66444965d 100644 --- a/packages/opencode/test/plugin/azure.test.ts +++ b/packages/opencode/test/plugin/azure.test.ts @@ -241,7 +241,7 @@ describe("plugin.azure", () => { test("keeps the existing API-key method and adds Entra ID", () => { delete process.env.AZURE_RESOURCE_NAME - const hooks = createAzureAuthHooks(azureShell([])) + const hooks = createAzureAuthHooks(azureShell([]), fetch, [], true) expect(hooks.auth?.provider).toBe("azure") expect(hooks.provider?.id).toBe("azure") @@ -272,10 +272,15 @@ describe("plugin.azure", () => { test("lists Azure CLI resources and allows entering another resource", () => { delete process.env.AZURE_RESOURCE_NAME - const hooks = createAzureAuthHooks(azureShell([]), fetch, [ - { name: "first-resource", resourceGroup: "first-group" }, - { name: "second-resource", resourceGroup: "second-group" }, - ]) + const hooks = createAzureAuthHooks( + azureShell([]), + fetch, + [ + { name: "first-resource", resourceGroup: "first-group" }, + { name: "second-resource", resourceGroup: "second-group" }, + ], + true, + ) expect(oauthMethod(hooks).prompts).toEqual([ { @@ -299,9 +304,12 @@ describe("plugin.azure", () => { }) test("uses the selected Azure CLI resource", async () => { - const hooks = createAzureAuthHooks(azureShell([]), fetch, [ - { name: "selected-resource", resourceGroup: "selected-group" }, - ]) + const hooks = createAzureAuthHooks( + azureShell([]), + fetch, + [{ name: "selected-resource", resourceGroup: "selected-group" }], + true, + ) const authorization = await oauthMethod(hooks).authorize({ resourceSelection: "selected-resource" }) if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") @@ -309,7 +317,12 @@ describe("plugin.azure", () => { }) test("uses a manually entered Azure resource that was not listed", async () => { - const hooks = createAzureAuthHooks(azureShell([]), fetch, [{ name: "listed-resource", resourceGroup: "group" }]) + const hooks = createAzureAuthHooks( + azureShell([]), + fetch, + [{ name: "listed-resource", resourceGroup: "group" }], + true, + ) const authorization = await oauthMethod(hooks).authorize({ resourceSelection: "__manual__", resourceName: "unlisted-resource", @@ -321,7 +334,7 @@ describe("plugin.azure", () => { test("checks Azure CLI and stores the resource name", async () => { const scopes: string[] = [] - const hooks = createAzureAuthHooks(azureShell(scopes)) + const hooks = createAzureAuthHooks(azureShell(scopes), fetch, [], true) const authorization = await oauthMethod(hooks).authorize({ resourceName: "test-resource" }) if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") @@ -335,10 +348,15 @@ describe("plugin.azure", () => { }) test("supports Azure CLI versions that only provide expiresOn", async () => { - const hooks = createAzureAuthHooks(async () => ({ - accessToken: "legacy-token", - expiresOn: new Date(Date.now() + 60 * 60 * 1000).toISOString(), - })) + const hooks = createAzureAuthHooks( + async () => ({ + accessToken: "legacy-token", + expiresOn: new Date(Date.now() + 60 * 60 * 1000).toISOString(), + }), + fetch, + [], + true, + ) const authorization = await oauthMethod(hooks).authorize({ resourceName: "test-resource" }) if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") @@ -346,7 +364,7 @@ describe("plugin.azure", () => { }) test("rejects Azure CLI tokens without a usable expiration", async () => { - const hooks = createAzureAuthHooks(async () => ({ accessToken: "invalid-token" })) + const hooks = createAzureAuthHooks(async () => ({ accessToken: "invalid-token" }), fetch, [], true) const authorization = await oauthMethod(hooks).authorize({ resourceName: "test-resource" }) if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") @@ -379,6 +397,9 @@ describe("plugin.azure", () => { ], commands, ), + fetch, + [], + true, ) const list = hooks.provider?.models if (!list) throw new Error("Azure provider model hook is missing") @@ -410,6 +431,9 @@ describe("plugin.azure", () => { [{ name: "gpt-production", properties: { model: { name: "gpt-5-mini" }, provisioningState: "Succeeded" } }], commands, ), + fetch, + [], + true, ) const list = hooks.provider?.models if (!list) throw new Error("Azure provider model hook is missing") @@ -433,6 +457,9 @@ describe("plugin.azure", () => { ], [], ), + fetch, + [], + true, ) const list = hooks.provider?.models if (!list) throw new Error("Azure provider model hook is missing") @@ -446,9 +473,14 @@ describe("plugin.azure", () => { }) test("keeps configured models available when Azure discovery fails", async () => { - const hooks = createAzureAuthHooks(async () => { - throw new Error("Azure CLI failed") - }) + const hooks = createAzureAuthHooks( + async () => { + throw new Error("Azure CLI failed") + }, + fetch, + [], + true, + ) const list = hooks.provider?.models if (!list) throw new Error("Azure provider model hook is missing") @@ -456,9 +488,28 @@ describe("plugin.azure", () => { expect(await list({ ...provider, models: catalog }, { auth: oauth })).toBe(catalog) }) + test("skips model discovery when the Azure CLI is unavailable", async () => { + const calls: string[][] = [] + const hooks = createAzureAuthHooks( + async (args) => { + calls.push(args) + throw new Error("spawn az ENOENT") + }, + fetch, + [], + false, + ) + const list = hooks.provider?.models + if (!list) throw new Error("Azure provider model hook is missing") + + const catalog = models("gpt-5-mini") + expect(await list({ ...provider, models: catalog }, { auth: oauth })).toBe(catalog) + expect(calls).toEqual([]) + }) + test("does not change API-key loading", async () => { const scopes: string[] = [] - const hooks = createAzureAuthHooks(azureShell(scopes)) + const hooks = createAzureAuthHooks(azureShell(scopes), fetch, [], true) const catalog = models("gpt-5-mini") const list = hooks.provider?.models if (!list) throw new Error("Azure provider model hook is missing") @@ -471,10 +522,15 @@ describe("plugin.azure", () => { test("uses Azure CLI bearer tokens for Azure inference endpoints", async () => { const scopes: string[] = [] const requests: Headers[] = [] - const hooks = createAzureAuthHooks(azureShell(scopes), async (_input, init) => { - requests.push(new Headers(init?.headers)) - return new Response(null, { status: 200 }) - }) + const hooks = createAzureAuthHooks( + azureShell(scopes), + async (_input, init) => { + requests.push(new Headers(init?.headers)) + return new Response(null, { status: 200 }) + }, + [], + true, + ) const options = await loader(hooks)(async () => oauth, provider) const request = customFetch(options) From 2da5a4b034cbe71149f9f9caa147a41ab2ea0c2f Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Tue, 1 Sep 2026 13:47:49 -0500 Subject: [PATCH 211/271] refactor(tui): use OpenTUI Dynamic in session view (#46649) --- packages/tui/src/routes/session/index.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/tui/src/routes/session/index.tsx b/packages/tui/src/routes/session/index.tsx index cbdaf0cfa..866a381f0 100644 --- a/packages/tui/src/routes/session/index.tsx +++ b/packages/tui/src/routes/session/index.tsx @@ -14,7 +14,6 @@ import { untrack, useContext, } from "solid-js" -import { Dynamic } from "solid-js/web" import path from "node:path" import { mkdir, writeFile } from "node:fs/promises" import { useRoute, useRouteData } from "../../context/route" @@ -40,7 +39,7 @@ import type { import { useLocal } from "../../context/local" import { Locale } from "../../util/locale" import { webSearchProviderLabel } from "../../util/tool-display" -import { useRenderer, useTerminalDimensions, type JSX } from "@opentui/solid" +import { Dynamic, useRenderer, useTerminalDimensions, type JSX } from "@opentui/solid" import { useSDK } from "../../context/sdk" import { useEditorContext } from "../../context/editor" import { openEditor } from "../../editor" From 55c54d14b846acd601854aaf82cb97210a458bf6 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Tue, 1 Sep 2026 13:50:55 -0500 Subject: [PATCH 212/271] chore: use native runtime conditions in development (#46644) --- CONTRIBUTING.md | 2 +- package.json | 2 +- packages/app/AGENTS.md | 2 +- packages/opencode/package.json | 4 ++-- packages/opencode/test/lib/cli-process.ts | 8 ++++---- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1ab14a7b6..a9c545efb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -157,7 +157,7 @@ Caveats: - If `spawn` does not work for you, you can debug the server separately: - Debug server: `bun run --inspect=ws://localhost:6499/ --cwd packages/opencode ./src/index.ts serve --port 4096`, then attach TUI with `opencode attach http://localhost:4096` - - Debug TUI: `bun run --inspect=ws://localhost:6499/ --cwd packages/opencode --conditions=browser ./src/index.ts` + - Debug TUI: `bun run --inspect=ws://localhost:6499/ --cwd packages/opencode ./src/index.ts` Other tips and tricks: diff --git a/package.json b/package.json index 0f11d0c39..07144ccbd 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "type": "module", "packageManager": "bun@1.3.14", "scripts": { - "dev": "bun run --cwd packages/opencode --conditions=browser src/index.ts", + "dev": "bun run --cwd packages/opencode src/index.ts", "dev:desktop": "bun --cwd packages/desktop dev", "dev:web": "bun --cwd packages/app dev", "dev:console": "ulimit -n 10240 2>/dev/null; bun run --cwd packages/console/app dev", diff --git a/packages/app/AGENTS.md b/packages/app/AGENTS.md index 72a973ebd..5638ea8e6 100644 --- a/packages/app/AGENTS.md +++ b/packages/app/AGENTS.md @@ -11,7 +11,7 @@ - `opencode dev web` proxies `https://app.opencode.ai`, so local UI/CSS changes will not show there. - For local UI changes, run the backend and app dev servers separately. -- Backend (from `packages/opencode`): `bun run --conditions=browser ./src/index.ts serve --port 4096` +- Backend (from `packages/opencode`): `bun run ./src/index.ts serve --port 4096` - App (from `packages/app`): `bun dev -- --port 4444` - Open `http://localhost:4444` to verify UI changes (it targets the backend at `http://localhost:4096`). diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 45c611036..de2582da2 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -12,8 +12,8 @@ "bench:test": "bun run script/bench-test-suite.ts", "profile:test": "bun run script/profile-test-files.ts", "build": "bun run script/build.ts", - "dev": "bun run --conditions=browser ./src/index.ts", - "dev:temporary": "bun run --conditions=browser ./src/temporary.ts" + "dev": "bun run ./src/index.ts", + "dev:temporary": "bun run ./src/temporary.ts" }, "bin": { "opencode": "./bin/opencode" diff --git a/packages/opencode/test/lib/cli-process.ts b/packages/opencode/test/lib/cli-process.ts index 12e8d9c86..a4d3b36c1 100644 --- a/packages/opencode/test/lib/cli-process.ts +++ b/packages/opencode/test/lib/cli-process.ts @@ -211,7 +211,7 @@ export function withCliFixture( // on `Bun.stdin.text()` (see src/cli/cmd/run.ts — non-TTY stdin is // consumed as the prompt). The old Process.run wrapper defaulted to // ignore; ChildProcess.make defaults to pipe, so we set it explicitly. - const command = ChildProcess.make("bun", ["run", "--conditions=browser", cliEntry, ...args], { + const command = ChildProcess.make("bun", ["run", cliEntry, ...args], { cwd: home, env: { ...env, ...opts?.env }, extendEnv: true, @@ -283,7 +283,7 @@ export function withCliFixture( const options = runOpts(opts) const proc = yield* Effect.acquireRelease( Effect.sync(() => - Bun.spawn(["bun", "run", "--conditions=browser", cliEntry, ...runArgs(message, opts)], { + Bun.spawn(["bun", "run", cliEntry, ...runArgs(message, opts)], { cwd: home, env: { ...process.env, ...env, ...options?.env }, stdin: "ignore", @@ -324,7 +324,7 @@ export function withCliFixture( // as a finalizer error during test teardown. const proc = yield* Effect.acquireRelease( Effect.sync(() => - Bun.spawn(["bun", "run", "--conditions=browser", cliEntry, ...argv], { + Bun.spawn(["bun", "run", cliEntry, ...argv], { cwd: home, env: { ...process.env, ...env, ...opts?.env }, stdout: "pipe", @@ -395,7 +395,7 @@ export function withCliFixture( // Either way we await proc.exited so the test scope doesn't leak. const proc = yield* Effect.acquireRelease( Effect.sync(() => - Bun.spawn(["bun", "run", "--conditions=browser", cliEntry, ...argv], { + Bun.spawn(["bun", "run", cliEntry, ...argv], { cwd: opts?.cwd ?? home, env: { ...process.env, ...env, ...opts?.env }, stdin: "pipe", From 4502ee568ed5aabf6dade6a9d79ecd9b069e597e Mon Sep 17 00:00:00 2001 From: KevinZhou Date: Wed, 2 Sep 2026 02:52:35 +0800 Subject: [PATCH 213/271] fix(core): bump @ai-sdk/amazon-bedrock to 4.0.166 for reasoning and replay fixes (#45520) Co-authored-by: Aiden Cline --- bun.lock | 12 ++++++------ packages/core/package.json | 2 +- packages/opencode/package.json | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bun.lock b/bun.lock index 71049cb1a..44ff5fab7 100644 --- a/bun.lock +++ b/bun.lock @@ -295,7 +295,7 @@ }, "dependencies": { "@ai-sdk/alibaba": "1.0.17", - "@ai-sdk/amazon-bedrock": "4.0.158", + "@ai-sdk/amazon-bedrock": "4.0.166", "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.41", @@ -570,7 +570,7 @@ "@actions/github": "6.0.1", "@agentclientprotocol/sdk": "0.21.0", "@ai-sdk/alibaba": "1.0.17", - "@ai-sdk/amazon-bedrock": "4.0.158", + "@ai-sdk/amazon-bedrock": "4.0.166", "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.60", @@ -1168,7 +1168,7 @@ "@ai-sdk/alibaba": ["@ai-sdk/alibaba@1.0.17", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.41", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ZbE+U5bWz2JBc5DERLowx5+TKbjGBE93LqKZAWvuEn7HOSQMraxFMZuc0ST335QZJAyfBOzh7m1mPQ+y7EaaoA=="], - "@ai-sdk/amazon-bedrock": ["@ai-sdk/amazon-bedrock@4.0.158", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.111", "@ai-sdk/openai": "3.0.98", "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.46", "@smithy/eventstream-codec": "^4.0.1", "@smithy/util-utf8": "^4.0.0", "aws4fetch": "^1.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-yZebHEszUzPLsK+Rq5sVZJkJj7EYDgY+Lz36IGf/RSkSC5LOMDbVKoQ55S8xNzJqVjUDqlWuZiQzg40HQslmCw=="], + "@ai-sdk/amazon-bedrock": ["@ai-sdk/amazon-bedrock@4.0.166", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.115", "@ai-sdk/openai": "3.0.105", "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.50", "@smithy/eventstream-codec": "^4.0.1", "@smithy/util-utf8": "^4.0.0", "aws4fetch": "^1.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-HzzQb+ks+WmRcnnT9uBdJAxaqSXz3CWgmLSe9hePAkELPzTl/nAIJh2fb2+UsTD0n9OzZfBb25k68CIxraKkoA=="], "@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.82", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-WKKou2wbhGGYV8PSALAPyV2YY4nfCqCPkyBzYtJtDA9yCcIFwsbtkTNgg7bqtLCVzeEsY7wwxRoCWy+EMfrw/A=="], @@ -5626,13 +5626,13 @@ "@ai-sdk/alibaba/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.41", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g=="], - "@ai-sdk/amazon-bedrock/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.111", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.46" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-atgBW8jZPr/KuaKX5FvDIHuXBI8VCol6kVeoD4P0657+VXR73QsLogXQVN/Zt5FHtq9WzpdIZseCJiXPqkgwwA=="], + "@ai-sdk/amazon-bedrock/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.115", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.50" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-S1oAUCVaB2Fr6LtMDfa9EmVlDVczpRodYc3IKdLD2z4r0s/pX+zwjqlhiwhS1FsCS2jVx8EnSyBtuPuOzF094A=="], - "@ai-sdk/amazon-bedrock/@ai-sdk/openai": ["@ai-sdk/openai@3.0.98", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.46" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-nAvp8pVOUJ3znJHRzZs54Y7CJQSikOW1Ty7LTdtQT+/pgtAwqhuKd8oaXbiW2xQaYBdH2i8o9AcEpcUdXIyF+g=="], + "@ai-sdk/amazon-bedrock/@ai-sdk/openai": ["@ai-sdk/openai@3.0.105", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.50" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-umx95F8gqGuhPdoW+4ofq83fuSN6aMHwISxvY6dZU51Iix5ZKId0FNru+0FQeu+xfFUrVNmf3vYQNc2FLN85xA=="], "@ai-sdk/amazon-bedrock/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], - "@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.46", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^6.28.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-tEtld97plCFiYevsJuOkGkeuhQndeMWFBVrJS4AjnbD5AqrNSXRCe0p+BZ3Cju/sxDeeZ9ym3q9YUV8fASA7aQ=="], + "@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.50", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^6.28.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-YAcB+7M1JhAYsHorTrWyldCyZihjCKr/QRXH2vFrara/+lwqNE7q5KzoucKLZ7ktFiUonhnhFhRoiymsq/2K2Q=="], "@ai-sdk/amazon-bedrock/@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.14", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.14.1", "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw=="], diff --git a/packages/core/package.json b/packages/core/package.json index 37afa0b65..ffd49ce5b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -62,7 +62,7 @@ }, "dependencies": { "@ai-sdk/alibaba": "1.0.17", - "@ai-sdk/amazon-bedrock": "4.0.158", + "@ai-sdk/amazon-bedrock": "4.0.166", "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.41", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index de2582da2..ac50498de 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -56,7 +56,7 @@ "@actions/github": "6.0.1", "@agentclientprotocol/sdk": "0.21.0", "@ai-sdk/alibaba": "1.0.17", - "@ai-sdk/amazon-bedrock": "4.0.158", + "@ai-sdk/amazon-bedrock": "4.0.166", "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.60", From dc8753f82a175f5f3588fe9c1f8d7398351193ca Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Tue, 1 Sep 2026 19:11:11 +0000 Subject: [PATCH 214/271] chore: update nix node_modules hashes --- nix/hashes.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/hashes.json b/nix/hashes.json index 8ad745661..2d4e1dd3e 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-Sz806ltZYh+09hLqdqZAxSUlhJMk8bg50oHHoykNa/Y=", - "aarch64-linux": "sha256-dDSLsgah0NKAJLVczh25KOzLl10xhhSbO7WKac1qbJI=", - "aarch64-darwin": "sha256-xZZ5d4i4Ek+X7kvyGN96gbRwXK45j3bsWhPW1kILawI=", - "x86_64-darwin": "sha256-hYTHDIbNF4PZuuSz7z4NZv870FcstVYrMuhGIiFapEY=" + "x86_64-linux": "sha256-6E/2HDZzT8lCFXDUWRfbD856aJgL9tmZBRkYMi63x5w=", + "aarch64-linux": "sha256-I0PTrqH6EIEbtNkS0+yVFk056maDR5iy2gtIHAv1Leg=", + "aarch64-darwin": "sha256-Uq8igYVnbU9X03ear64twODH2f8Hewl3MPdmsfCZjHI=", + "x86_64-darwin": "sha256-6yWfwZVOSiSxA3DxeDd5WAVlN5QBDIdyZXp3uQSN5Bk=" } } From 3f39a329c3d52ed66405c4bc6293b9ed08fe9ab6 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:32:26 -0500 Subject: [PATCH 215/271] feat(opencode): tolerate Anthropic thinking block binding (#46653) --- bun.lock | 31 +- package.json | 5 +- packages/core/package.json | 2 +- packages/opencode/package.json | 2 +- packages/opencode/src/provider/transform.ts | 37 +- packages/opencode/src/session/processor.ts | 14 + .../opencode/test/provider/transform.test.ts | 195 +++++++ .../@ai-sdk%2Famazon-bedrock@4.0.166.patch | 144 +++++ patches/@ai-sdk%2Fanthropic@3.0.111.patch | 528 ++++++++++++++++++ 9 files changed, 934 insertions(+), 24 deletions(-) create mode 100644 patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch create mode 100644 patches/@ai-sdk%2Fanthropic@3.0.111.patch diff --git a/bun.lock b/bun.lock index 44ff5fab7..3d8037e6f 100644 --- a/bun.lock +++ b/bun.lock @@ -296,7 +296,7 @@ "dependencies": { "@ai-sdk/alibaba": "1.0.17", "@ai-sdk/amazon-bedrock": "4.0.166", - "@ai-sdk/anthropic": "3.0.82", + "@ai-sdk/anthropic": "3.0.111", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.41", "@ai-sdk/cohere": "3.0.27", @@ -571,7 +571,7 @@ "@agentclientprotocol/sdk": "0.21.0", "@ai-sdk/alibaba": "1.0.17", "@ai-sdk/amazon-bedrock": "4.0.166", - "@ai-sdk/anthropic": "3.0.82", + "@ai-sdk/anthropic": "3.0.111", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.60", "@ai-sdk/cohere": "3.0.27", @@ -1066,10 +1066,12 @@ "gcp-metadata@8.1.2": "patches/gcp-metadata@8.1.2.patch", "@standard-community/standard-openapi@0.2.9": "patches/@standard-community%2Fstandard-openapi@0.2.9.patch", "effect@4.0.0-beta.83": "patches/effect@4.0.0-beta.83.patch", + "@ai-sdk/anthropic@3.0.111": "patches/@ai-sdk%2Fanthropic@3.0.111.patch", "@ai-sdk/mistral@3.0.51": "patches/@ai-sdk%2Fmistral@3.0.51.patch", "@silvia-odwyer/photon-node@0.3.4": "patches/@silvia-odwyer%2Fphoton-node@0.3.4.patch", - "@npmcli/agent@4.0.2": "patches/@npmcli%2Fagent@4.0.2.patch", "solid-js@1.9.10": "patches/solid-js@1.9.10.patch", + "@npmcli/agent@4.0.2": "patches/@npmcli%2Fagent@4.0.2.patch", + "@ai-sdk/amazon-bedrock@4.0.166": "patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch", "@ai-sdk/groq@3.0.31": "patches/@ai-sdk%2Fgroq@3.0.31.patch", "@ai-sdk/google@3.0.73": "patches/@ai-sdk%2Fgoogle@3.0.73.patch", "pacote@21.5.0": "patches/pacote@21.5.0.patch", @@ -1077,6 +1079,7 @@ "@ai-sdk/openai-compatible@2.0.41": "patches/@ai-sdk%2Fopenai-compatible@2.0.41.patch", }, "overrides": { + "@ai-sdk/anthropic": "3.0.111", "@opentui/core": "catalog:", "@opentui/keymap": "catalog:", "@opentui/solid": "catalog:", @@ -1170,7 +1173,7 @@ "@ai-sdk/amazon-bedrock": ["@ai-sdk/amazon-bedrock@4.0.166", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.115", "@ai-sdk/openai": "3.0.105", "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.50", "@smithy/eventstream-codec": "^4.0.1", "@smithy/util-utf8": "^4.0.0", "aws4fetch": "^1.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-HzzQb+ks+WmRcnnT9uBdJAxaqSXz3CWgmLSe9hePAkELPzTl/nAIJh2fb2+UsTD0n9OzZfBb25k68CIxraKkoA=="], - "@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.82", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-WKKou2wbhGGYV8PSALAPyV2YY4nfCqCPkyBzYtJtDA9yCcIFwsbtkTNgg7bqtLCVzeEsY7wwxRoCWy+EMfrw/A=="], + "@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.111", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.46" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-atgBW8jZPr/KuaKX5FvDIHuXBI8VCol6kVeoD4P0657+VXR73QsLogXQVN/Zt5FHtq9WzpdIZseCJiXPqkgwwA=="], "@ai-sdk/azure": ["@ai-sdk/azure@3.0.88", "", { "dependencies": { "@ai-sdk/deepseek": "2.0.47", "@ai-sdk/openai": "3.0.84", "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.38" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-RRjZkB1lYplh8dpBarnvkl1j7sYLHsyXua7erL3oNcMK7fHcl4bPO5C7iQhD1O/DqD/zCceDifnege1s+8yEvw=="], @@ -5626,8 +5629,6 @@ "@ai-sdk/alibaba/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.41", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g=="], - "@ai-sdk/amazon-bedrock/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.115", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.50" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-S1oAUCVaB2Fr6LtMDfa9EmVlDVczpRodYc3IKdLD2z4r0s/pX+zwjqlhiwhS1FsCS2jVx8EnSyBtuPuOzF094A=="], - "@ai-sdk/amazon-bedrock/@ai-sdk/openai": ["@ai-sdk/openai@3.0.105", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.50" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-umx95F8gqGuhPdoW+4ofq83fuSN6aMHwISxvY6dZU51Iix5ZKId0FNru+0FQeu+xfFUrVNmf3vYQNc2FLN85xA=="], "@ai-sdk/amazon-bedrock/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], @@ -5638,9 +5639,9 @@ "@ai-sdk/amazon-bedrock/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], - "@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], - "@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.46", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^6.28.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-tEtld97plCFiYevsJuOkGkeuhQndeMWFBVrJS4AjnbD5AqrNSXRCe0p+BZ3Cju/sxDeeZ9ym3q9YUV8fASA7aQ=="], "@ai-sdk/azure/@ai-sdk/openai": ["@ai-sdk/openai@3.0.84", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.38" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cmgbeJL0bbY0yTJH4/AdmP5E7MjWRL9G8UdhIi0JlV/So03o82ORJofW8OzwCZPTORVQblFbpZXYGDcUd9NdUQ=="], @@ -5676,8 +5677,6 @@ "@ai-sdk/google/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], - "@ai-sdk/google-vertex/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.110", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-rNkamQCeAUOUGr5Npg5pXZyYFH4fS1U6Mbdy3dF/NNBEI3D2Chc/ruRrwNegP0gfpX3cllP3O4jSibGBbWPZ7A=="], - "@ai-sdk/google-vertex/@ai-sdk/google": ["@ai-sdk/google@3.0.108", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kwvYpRNghqt0VRKE7Hx1UWZQCUJJFqUITj24baxy+ApS0Hru0PkBJHD75a36Wc+e6e+wHcKR2MconTeJiBZigA=="], "@ai-sdk/google-vertex/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.67", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-glcEJC2mBXJKj7joFI0fRhcbdDYKTBgXMPcT6Vcnlym67tTzuNG9pFx3zblxVv8TdOxhojJja5zGG19yeGJxuA=="], @@ -6160,8 +6159,6 @@ "ai-gateway-provider/@ai-sdk/amazon-bedrock": ["@ai-sdk/amazon-bedrock@4.0.153", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.110", "@ai-sdk/openai": "3.0.96", "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45", "@smithy/eventstream-codec": "^4.0.1", "@smithy/util-utf8": "^4.0.0", "aws4fetch": "^1.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-iEXrLgWylCHJmznqlKLU3CqRh8UWibv+illrwmsk136FVBBvyXiGnpQrI1pGWCScVLQjBQSFQu7GJDkUEomf/A=="], - "ai-gateway-provider/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.110", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-rNkamQCeAUOUGr5Npg5pXZyYFH4fS1U6Mbdy3dF/NNBEI3D2Chc/ruRrwNegP0gfpX3cllP3O4jSibGBbWPZ7A=="], - "ai-gateway-provider/@ai-sdk/cerebras": ["@ai-sdk/cerebras@2.0.60", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.54", "@ai-sdk/provider": "3.0.12", "@ai-sdk/provider-utils": "4.0.33" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Rnok3cThg6awBwaDSyiZpgRpbV7pqxGYrA89LODCo5cuEHeP2h0AM0lLHP7zIkclAdXfOm4wldKi/S2T/DGCOw=="], "ai-gateway-provider/@ai-sdk/cohere": ["@ai-sdk/cohere@3.0.54", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@ai-sdk/provider-utils": "4.0.45" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cXLjIsSzUriPHe704IH6d+ipJ/OvczTB700p9Zma7DPgQzvxG/diyr8q/2LEsbTRiTopiKhky8dn1PJNQcJToQ=="], @@ -6576,6 +6573,8 @@ "@ai-sdk/anthropic/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@ai-sdk/anthropic/@ai-sdk/provider-utils/undici": ["undici@6.28.0", "", {}, "sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA=="], + "@ai-sdk/azure/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], "@ai-sdk/cerebras/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], @@ -6984,10 +6983,6 @@ "ai-gateway-provider/@ai-sdk/amazon-bedrock/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], - "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/provider@3.0.15", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q=="], - - "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.45", "", { "dependencies": { "@ai-sdk/provider": "3.0.15", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8", "undici": "^5.29.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-7u5B/E2uZmU65SlJhhQGFHZwRCN0xOz4HHtFc4sEGV9PHbX3fGiEiZBpc/SABay1dGeJgK3VD60rvLGoWdWPXA=="], - "ai-gateway-provider/@ai-sdk/cerebras/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.54", "", { "dependencies": { "@ai-sdk/provider": "3.0.12", "@ai-sdk/provider-utils": "4.0.33" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-OyXt0zK8y2/ZIyWlbxTv2r1M7AK227S+Gl4BYOEF42q0wz1n5m4fwR8L4Fy/MQ4Ho6xje47MPsFcRdIqIyP6Rw=="], "ai-gateway-provider/@ai-sdk/cerebras/@ai-sdk/provider": ["@ai-sdk/provider@3.0.12", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-sj9DWTJ2Ze0WR9qsiOPqoqzNx3OxL6iMxHImbhvoe9qOspekbzxNDMiJ4TIGfYHYh9w4OmBjz3prvqhzTi96+Q=="], @@ -7434,10 +7429,6 @@ "ai-gateway-provider/@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], - "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - - "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider-utils/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], - "ai-gateway-provider/@ai-sdk/cerebras/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], "ai-gateway-provider/@ai-sdk/cohere/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], diff --git a/package.json b/package.json index 07144ccbd..dc4a813c5 100644 --- a/package.json +++ b/package.json @@ -137,6 +137,7 @@ "electron" ], "overrides": { + "@ai-sdk/anthropic": "3.0.111", "@opentui/core": "catalog:", "@opentui/keymap": "catalog:", "@opentui/solid": "catalog:", @@ -160,6 +161,8 @@ "effect@4.0.0-beta.83": "patches/effect@4.0.0-beta.83.patch", "@tanstack/virtual-core@3.17.3": "patches/@tanstack%2Fvirtual-core@3.17.3.patch", "@ai-sdk/openai-compatible@2.0.41": "patches/@ai-sdk%2Fopenai-compatible@2.0.41.patch", - "@ai-sdk/groq@3.0.31": "patches/@ai-sdk%2Fgroq@3.0.31.patch" + "@ai-sdk/groq@3.0.31": "patches/@ai-sdk%2Fgroq@3.0.31.patch", + "@ai-sdk/anthropic@3.0.111": "patches/@ai-sdk%2Fanthropic@3.0.111.patch", + "@ai-sdk/amazon-bedrock@4.0.166": "patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch" } } diff --git a/packages/core/package.json b/packages/core/package.json index ffd49ce5b..7ba2346dd 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -63,7 +63,7 @@ "dependencies": { "@ai-sdk/alibaba": "1.0.17", "@ai-sdk/amazon-bedrock": "4.0.166", - "@ai-sdk/anthropic": "3.0.82", + "@ai-sdk/anthropic": "3.0.111", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.41", "@ai-sdk/cohere": "3.0.27", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index ac50498de..d81bbebae 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -57,7 +57,7 @@ "@agentclientprotocol/sdk": "0.21.0", "@ai-sdk/alibaba": "1.0.17", "@ai-sdk/amazon-bedrock": "4.0.166", - "@ai-sdk/anthropic": "3.0.82", + "@ai-sdk/anthropic": "3.0.111", "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.60", "@ai-sdk/cohere": "3.0.27", diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 28a5beb9a..1244963e8 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -684,6 +684,41 @@ function anthropicOmitsThinking(apiId: string) { return anthropicUsesModernAdaptiveThinking(apiId) } +// Opus 5, Sonnet 5, Fable 5.x, and Mythos 5.x think without a `thinking` parameter. +function anthropicThinksByDefault(apiId: string) { + const version = /claude-(?:[a-z]+-)?(\d+)(?:[.-](\d{1,2}))?(?:[.@-]|$)/i.exec(apiId) + if (!version) return false + return Number(version[1]) >= 5 +} + +// Fable 5.1 binds each thinking signature to the system prompt, tool list, and +// messages above it, and rejects the request when any of that changes. opencode +// re-renders parts of that prefix between turns (system prompt, tools, compaction), +// so ask the API to drop the affected blocks instead of failing the request. +// Models that do not run the check accept the field, so it is safe on every Claude. +// The patched AI SDK adds the thinking-binding-controls beta whenever it is set. +const ANTHROPIC_BLOCK_BINDING = { prefixMismatchBehavior: "drop_block" } + +function anthropicBlockBinding(model: Provider.Model, options: { [x: string]: any }) { + if (!model.api.id.toLowerCase().includes("claude")) return options + const byDefault = anthropicThinksByDefault(model.api.id) + switch (model.api.npm) { + case "@ai-sdk/anthropic": + case "@ai-sdk/google-vertex/anthropic": { + const thinking = options.thinking ?? (byDefault ? { type: "adaptive" } : undefined) + if (!thinking || (thinking.type !== "adaptive" && thinking.type !== "enabled")) return options + return { ...options, thinking: { ...thinking, blockBinding: ANTHROPIC_BLOCK_BINDING } } + } + case "@ai-sdk/amazon-bedrock": { + const reasoningConfig = options.reasoningConfig ?? (byDefault ? { type: "adaptive" } : undefined) + if (!reasoningConfig || (reasoningConfig.type !== "adaptive" && reasoningConfig.type !== "enabled")) + return options + return { ...options, reasoningConfig: { ...reasoningConfig, blockBinding: ANTHROPIC_BLOCK_BINDING } } + } + } + return options +} + function googleThinkingLevelEfforts(apiId: string) { const id = apiId.toLowerCase() if (!id.includes("gemini-3")) return ["low", "high"] @@ -1363,7 +1398,7 @@ export function providerOptions(model: Provider.Model, options: { [x: string]: a usesOpenAIReasoningGate && (model.capabilities.reasoning || options.reasoningEffort !== undefined || options.reasoningSummary !== undefined) ? { ...options, forceReasoning: true } - : options + : anthropicBlockBinding(model, options) if (model.api.npm === "@ai-sdk/gateway") { // Gateway providerOptions are split across two namespaces: diff --git a/packages/opencode/src/session/processor.ts b/packages/opencode/src/session/processor.ts index 20aa8a840..9f8530929 100644 --- a/packages/opencode/src/session/processor.ts +++ b/packages/opencode/src/session/processor.ts @@ -435,6 +435,20 @@ const layer = Layer.effect( case "step-finish": { const completedSnapshot = yield* snapshot.track() yield* Effect.forEach(Object.keys(ctx.reasoningMap), finishReasoning) + // Anthropic reports thinking blocks it removed before the model saw the + // prompt. Prefix mismatches mean opencode changed history behind a signed + // block; log them so the churn can be tracked down. + const dropped = isRecord(value.providerMetadata?.anthropic) + ? value.providerMetadata.anthropic.inputTransformations + : undefined + if (Array.isArray(dropped) && dropped.length > 0) { + yield* Effect.logWarning("thinking blocks dropped by provider", { + sessionID: ctx.sessionID, + messageID: ctx.assistantMessage.id, + model: ctx.model.id, + transformations: JSON.stringify(dropped), + }) + } const usage = Session.getUsage({ model: ctx.model, usage: value.usage ?? new Usage({}), diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index 9245e3a57..ed85f6920 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -7,6 +7,8 @@ import { ModelV2 } from "@opencode-ai/core/model" import { ModelsDev } from "@opencode-ai/core/models-dev" import { generateText, jsonSchema, type ModelMessage } from "ai" import { createAmazonBedrock } from "@ai-sdk/amazon-bedrock" +import { createAnthropic } from "@ai-sdk/anthropic" +import { createVertexAnthropic } from "@ai-sdk/google-vertex/anthropic" describe("ProviderTransform.options - setCacheKey", () => { const sessionID = "test-session-123" @@ -845,6 +847,199 @@ describe("ProviderTransform.providerOptions", () => { }) }) + describe("anthropic thinking block binding", () => { + const binding = { prefixMismatchBehavior: "drop_block" } + const claude = (npm: string, id: string) => + createModel({ providerID: "custom", api: { id, url: "https://example.com", npm } }) + + test("adds blockBinding to explicit adaptive thinking on @ai-sdk/anthropic", () => { + const model = claude("@ai-sdk/anthropic", "claude-opus-4-7") + expect(ProviderTransform.providerOptions(model, { thinking: { type: "adaptive" }, effort: "high" })).toEqual({ + anthropic: { thinking: { type: "adaptive", blockBinding: binding }, effort: "high" }, + }) + }) + + test("adds blockBinding to explicit enabled thinking", () => { + const model = claude("@ai-sdk/anthropic", "claude-sonnet-4-5") + expect(ProviderTransform.providerOptions(model, { thinking: { type: "enabled", budgetTokens: 4000 } })).toEqual({ + anthropic: { thinking: { type: "enabled", budgetTokens: 4000, blockBinding: binding } }, + }) + }) + + test("injects adaptive thinking for models that think by default when no variant is set", () => { + for (const id of ["claude-fable-5-1", "claude-mythos-5-1", "claude-opus-5", "claude-sonnet-5"]) { + const model = claude("@ai-sdk/anthropic", id) + expect(ProviderTransform.providerOptions(model, {})).toEqual({ + anthropic: { thinking: { type: "adaptive", blockBinding: binding } }, + }) + } + }) + + test("does not inject thinking for models that are off by default", () => { + for (const id of ["claude-opus-4-7", "claude-opus-4-5", "claude-sonnet-4-6", "claude-haiku-4-5"]) { + const model = claude("@ai-sdk/anthropic", id) + expect(ProviderTransform.providerOptions(model, {})).toEqual({ anthropic: {} }) + } + }) + + test("leaves disabled thinking alone", () => { + const model = claude("@ai-sdk/anthropic", "claude-sonnet-5") + expect(ProviderTransform.providerOptions(model, { thinking: { type: "disabled" } })).toEqual({ + anthropic: { thinking: { type: "disabled" } }, + }) + }) + + test("applies to vertex anthropic", () => { + const model = claude("@ai-sdk/google-vertex/anthropic", "claude-fable-5-1") + expect(ProviderTransform.providerOptions(model, { thinking: { type: "adaptive" }, effort: "max" })).toEqual({ + anthropic: { thinking: { type: "adaptive", blockBinding: binding }, effort: "max" }, + }) + }) + + test("applies to bedrock reasoningConfig", () => { + const model = claude("@ai-sdk/amazon-bedrock", "us.anthropic.claude-fable-5-1-v1:0") + expect( + ProviderTransform.providerOptions(model, { reasoningConfig: { type: "adaptive", maxReasoningEffort: "high" } }), + ).toEqual({ + bedrock: { reasoningConfig: { type: "adaptive", maxReasoningEffort: "high", blockBinding: binding } }, + }) + expect(ProviderTransform.providerOptions(model, {})).toEqual({ + bedrock: { reasoningConfig: { type: "adaptive", blockBinding: binding } }, + }) + }) + + test("does not touch bedrock non-anthropic models", () => { + const model = claude("@ai-sdk/amazon-bedrock", "amazon.nova-pro-v1:0") + expect(ProviderTransform.providerOptions(model, { reasoningConfig: { type: "enabled" } })).toEqual({ + bedrock: { reasoningConfig: { type: "enabled" } }, + }) + }) + + test("does not touch non-claude models on anthropic-compatible transports", () => { + const model = claude("@ai-sdk/anthropic", "kimi-k2-thinking") + expect(ProviderTransform.providerOptions(model, { thinking: { type: "adaptive" } })).toEqual({ + anthropic: { thinking: { type: "adaptive" } }, + }) + }) + + test("reaches the anthropic wire as block_binding plus beta header", async () => { + const model = claude("@ai-sdk/anthropic", "claude-fable-5-1") + let sent: { headers: Headers; body: any } | undefined + const provider = createAnthropic({ + apiKey: "test-key", + fetch: Object.assign( + async (...args: Parameters) => { + sent = { headers: new Headers(args[1]?.headers), body: JSON.parse(String(args[1]?.body)) } + return Response.json({ + type: "message", + id: "msg_1", + model: "claude-fable-5-1", + role: "assistant", + content: [{ type: "text", text: "ok" }], + stop_reason: "end_turn", + usage: { input_tokens: 1, output_tokens: 1 }, + input_transformations: [ + { type: "thinking_dropped", path: "messages.1.content.0", reason: "prefix_binding_mismatch" }, + ], + }) + }, + { preconnect: () => undefined }, + ), + }) + const result = await generateText({ + model: provider("claude-fable-5-1"), + prompt: "hi", + providerOptions: ProviderTransform.providerOptions(model, {}), + }) + expect(sent?.body.thinking).toEqual({ + type: "adaptive", + block_binding: { prefix_mismatch_behavior: "drop_block" }, + }) + expect(sent?.headers.get("anthropic-beta")?.split(",")).toContain("thinking-binding-controls-2026-08-01") + expect(result.providerMetadata?.anthropic?.inputTransformations).toEqual([ + { type: "thinking_dropped", path: "messages.1.content.0", reason: "prefix_binding_mismatch" }, + ]) + }) + + test("reaches the vertex anthropic wire as block_binding plus beta header", async () => { + const model = claude("@ai-sdk/google-vertex/anthropic", "claude-fable-5-1") + let sent: { url: string; headers: Headers; body: any } | undefined + const provider = createVertexAnthropic({ + project: "test-project", + location: "global", + generateAuthToken: async () => "test-token", + fetch: Object.assign( + async (...args: Parameters) => { + sent = { + url: String(args[0]), + headers: new Headers(args[1]?.headers), + body: JSON.parse(String(args[1]?.body)), + } + return Response.json({ + type: "message", + id: "msg_1", + model: "claude-fable-5-1", + role: "assistant", + content: [{ type: "text", text: "ok" }], + stop_reason: "end_turn", + usage: { input_tokens: 1, output_tokens: 1 }, + }) + }, + { preconnect: () => undefined }, + ), + }) + await generateText({ + model: provider("claude-fable-5-1"), + prompt: "hi", + providerOptions: ProviderTransform.providerOptions(model, {}), + }) + // Same wire shape Anthropic's own Vertex SDK produces: rawPredict URL, model moved + // out of the body, anthropic_version added, betas carried in the anthropic-beta header. + expect(sent?.url).toBe( + "https://aiplatform.googleapis.com/v1/projects/test-project/locations/global/publishers/anthropic/models/claude-fable-5-1:rawPredict", + ) + expect(sent?.body.model).toBeUndefined() + expect(sent?.body.anthropic_version).toBe("vertex-2023-10-16") + expect(sent?.body.thinking).toEqual({ + type: "adaptive", + block_binding: { prefix_mismatch_behavior: "drop_block" }, + }) + expect(sent?.headers.get("anthropic-beta")?.split(",")).toContain("thinking-binding-controls-2026-08-01") + }) + + test("reaches the bedrock wire as additionalModelRequestFields", async () => { + const model = claude("@ai-sdk/amazon-bedrock", "us.anthropic.claude-fable-5-1-v1:0") + let body: any + const provider = createAmazonBedrock({ + apiKey: "test-key", + region: "us-east-1", + fetch: Object.assign( + async (...args: Parameters) => { + body = JSON.parse(String(args[1]?.body)) + return Response.json({ + output: { message: { role: "assistant", content: [{ text: "ok" }] } }, + stopReason: "end_turn", + usage: { inputTokens: 1, outputTokens: 1, totalTokens: 2 }, + }) + }, + { preconnect: () => undefined }, + ), + }) + await generateText({ + model: provider("us.anthropic.claude-fable-5-1-v1:0"), + prompt: "hi", + providerOptions: ProviderTransform.providerOptions(model, { + reasoningConfig: { type: "adaptive", maxReasoningEffort: "high" }, + }), + }) + expect(body.additionalModelRequestFields.thinking).toEqual({ + type: "adaptive", + block_binding: { prefix_mismatch_behavior: "drop_block" }, + }) + expect(body.additionalModelRequestFields.anthropic_beta).toContain("thinking-binding-controls-2026-08-01") + }) + }) + test("forces reasoning for explicit effort even when model is not marked reasoning-capable", () => { const model = createModel({ capabilities: { diff --git a/patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch b/patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch new file mode 100644 index 000000000..96fd15106 --- /dev/null +++ b/patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch @@ -0,0 +1,144 @@ +diff --git a/dist/index.d.mts b/dist/index.d.mts +index d194ae227fd1223ba44c8c5157b1bb72b1bab273..2e046db0a365c27659ffcec08782c7c26845c1fa 100644 +--- a/dist/index.d.mts ++++ b/dist/index.d.mts +@@ -61,6 +61,12 @@ declare const amazonBedrockLanguageModelOptions: z.ZodObject<{ + omitted: "omitted"; + summarized: "summarized"; + }>>; ++ blockBinding: z.ZodOptional; ++ }, z.core.$strip>>; + }, z.core.$strip>>; + anthropicBeta: z.ZodOptional>; + serviceTier: z.ZodOptional>; ++ blockBinding: z.ZodOptional; ++ }, z.core.$strip>>; + }, z.core.$strip>>; + anthropicBeta: z.ZodOptional>; + serviceTier: z.ZodOptional 0 || bedrockOptions.anthropicBeta) { + const existingBetas = (_g = bedrockOptions.anthropicBeta) != null ? _g : []; + const mergedBetas = betas.size > 0 ? [...existingBetas, ...Array.from(betas)] : existingBetas; +@@ -1050,7 +1057,12 @@ var BedrockChatLanguageModel = class { + ...bedrockOptions.additionalModelRequestFields, + thinking: { + type: "enabled", +- budget_tokens: thinkingBudget ++ budget_tokens: thinkingBudget, ++ ...thinkingBlockBinding != null && { ++ block_binding: { ++ prefix_mismatch_behavior: thinkingBlockBinding.prefixMismatchBehavior ++ } ++ } + } + }; + } else if (thinkingType === "adaptive") { +@@ -1058,7 +1070,12 @@ var BedrockChatLanguageModel = class { + ...bedrockOptions.additionalModelRequestFields, + thinking: { + type: "adaptive", +- ...thinkingDisplay != null && { display: thinkingDisplay } ++ ...thinkingDisplay != null && { display: thinkingDisplay }, ++ ...thinkingBlockBinding != null && { ++ block_binding: { ++ prefix_mismatch_behavior: thinkingBlockBinding.prefixMismatchBehavior ++ } ++ } + } + }; + } +diff --git a/dist/index.mjs b/dist/index.mjs +index 5a669504cb3b21f20788956bc9c22529c1498c35..000114dfe76cba25ddfe693f042232810026c229 100644 +--- a/dist/index.mjs ++++ b/dist/index.mjs +@@ -84,7 +84,10 @@ var amazonBedrockLanguageModelOptions = z.object({ + ]).optional(), + budgetTokens: z.number().optional(), + maxReasoningEffort: z.enum(["low", "medium", "high", "xhigh", "max"]).optional(), +- display: z.enum(["omitted", "summarized"]).optional() ++ display: z.enum(["omitted", "summarized"]).optional(), ++ blockBinding: z.object({ ++ prefixMismatchBehavior: z.enum(["error", "drop_block"]) ++ }).optional() + }).optional(), + /** + * Anthropic beta features to enable +@@ -1024,6 +1027,10 @@ var BedrockChatLanguageModel = class { + ...additionalTools + }; + } ++ const thinkingBlockBinding = isAnthropicModel && isThinkingEnabled ? (bedrockOptions.reasoningConfig == null ? void 0 : bedrockOptions.reasoningConfig.blockBinding) : void 0; ++ if (thinkingBlockBinding != null) { ++ betas.add("thinking-binding-controls-2026-08-01"); ++ } + if (betas.size > 0 || bedrockOptions.anthropicBeta) { + const existingBetas = (_g = bedrockOptions.anthropicBeta) != null ? _g : []; + const mergedBetas = betas.size > 0 ? [...existingBetas, ...Array.from(betas)] : existingBetas; +@@ -1054,7 +1061,12 @@ var BedrockChatLanguageModel = class { + ...bedrockOptions.additionalModelRequestFields, + thinking: { + type: "enabled", +- budget_tokens: thinkingBudget ++ budget_tokens: thinkingBudget, ++ ...thinkingBlockBinding != null && { ++ block_binding: { ++ prefix_mismatch_behavior: thinkingBlockBinding.prefixMismatchBehavior ++ } ++ } + } + }; + } else if (thinkingType === "adaptive") { +@@ -1062,7 +1074,12 @@ var BedrockChatLanguageModel = class { + ...bedrockOptions.additionalModelRequestFields, + thinking: { + type: "adaptive", +- ...thinkingDisplay != null && { display: thinkingDisplay } ++ ...thinkingDisplay != null && { display: thinkingDisplay }, ++ ...thinkingBlockBinding != null && { ++ block_binding: { ++ prefix_mismatch_behavior: thinkingBlockBinding.prefixMismatchBehavior ++ } ++ } + } + }; + } diff --git a/patches/@ai-sdk%2Fanthropic@3.0.111.patch b/patches/@ai-sdk%2Fanthropic@3.0.111.patch new file mode 100644 index 000000000..82003f9c2 --- /dev/null +++ b/patches/@ai-sdk%2Fanthropic@3.0.111.patch @@ -0,0 +1,528 @@ +diff --git a/dist/index.d.mts b/dist/index.d.mts +index a66d061f466c89a57efec33f37b7daabaaba2892..15f1b2aca0c0b43e5e1f8baddd2669c074912d18 100644 +--- a/dist/index.d.mts ++++ b/dist/index.d.mts +@@ -211,9 +211,21 @@ declare const anthropicLanguageModelOptions: z.ZodObject<{ + omitted: "omitted"; + summarized: "summarized"; + }>>; ++ blockBinding: z.ZodOptional; ++ }, z.core.$strip>>; + }, z.core.$strip>, z.ZodObject<{ + type: z.ZodLiteral<"enabled">; + budgetTokens: z.ZodOptional; ++ blockBinding: z.ZodOptional; ++ }, z.core.$strip>>; + }, z.core.$strip>, z.ZodObject<{ + type: z.ZodLiteral<"disabled">; + }, z.core.$strip>]>>; +diff --git a/dist/index.d.ts b/dist/index.d.ts +index a66d061f466c89a57efec33f37b7daabaaba2892..15f1b2aca0c0b43e5e1f8baddd2669c074912d18 100644 +--- a/dist/index.d.ts ++++ b/dist/index.d.ts +@@ -211,9 +211,21 @@ declare const anthropicLanguageModelOptions: z.ZodObject<{ + omitted: "omitted"; + summarized: "summarized"; + }>>; ++ blockBinding: z.ZodOptional; ++ }, z.core.$strip>>; + }, z.core.$strip>, z.ZodObject<{ + type: z.ZodLiteral<"enabled">; + budgetTokens: z.ZodOptional; ++ blockBinding: z.ZodOptional; ++ }, z.core.$strip>>; + }, z.core.$strip>, z.ZodObject<{ + type: z.ZodLiteral<"disabled">; + }, z.core.$strip>]>>; +diff --git a/dist/index.js b/dist/index.js +index 88c1aa865339baa320cf80ec543bed865825bc61..5006e82b0edd9676d1650cc94ecb573a2810acce 100644 +--- a/dist/index.js ++++ b/dist/index.js +@@ -85,6 +85,13 @@ var anthropicMessagesResponseSchema = (0, import_provider_utils2.lazySchema)( + type: import_v42.z.literal("message"), + id: import_v42.z.string().nullish(), + model: import_v42.z.string().nullish(), ++ input_transformations: import_v42.z.array( ++ import_v42.z.looseObject({ ++ type: import_v42.z.string(), ++ path: import_v42.z.string().nullish(), ++ reason: import_v42.z.string().nullish() ++ }) ++ ).nullish(), + content: import_v42.z.array( + import_v42.z.discriminatedUnion("type", [ + import_v42.z.object({ +@@ -424,6 +431,13 @@ var anthropicMessagesChunkSchema = (0, import_provider_utils2.lazySchema)( + id: import_v42.z.string().nullish(), + model: import_v42.z.string().nullish(), + role: import_v42.z.string().nullish(), ++ input_transformations: import_v42.z.array( ++ import_v42.z.looseObject({ ++ type: import_v42.z.string(), ++ path: import_v42.z.string().nullish(), ++ reason: import_v42.z.string().nullish() ++ }) ++ ).nullish(), + usage: import_v42.z.looseObject({ + input_tokens: import_v42.z.number(), + cache_creation_input_tokens: import_v42.z.number().nullish(), +@@ -923,12 +937,18 @@ var anthropicLanguageModelOptions = import_v43.z.object({ + * - `"omitted"`: Thinking blocks are present but text is empty (default for Opus 4.7+). + * - `"summarized"`: Thinking content is returned. Required to see reasoning output. + */ +- display: import_v43.z.enum(["omitted", "summarized"]).optional() ++ display: import_v43.z.enum(["omitted", "summarized"]).optional(), ++ blockBinding: import_v43.z.object({ ++ prefixMismatchBehavior: import_v43.z.enum(["error", "drop_block"]) ++ }).optional() + }), + import_v43.z.object({ + /** for models before Opus 4.6, except Sonnet 4.6 still supports it */ + type: import_v43.z.literal("enabled"), +- budgetTokens: import_v43.z.number().optional() ++ budgetTokens: import_v43.z.number().optional(), ++ blockBinding: import_v43.z.object({ ++ prefixMismatchBehavior: import_v43.z.enum(["error", "drop_block"]) ++ }).optional() + }), + import_v43.z.object({ + type: import_v43.z.literal("disabled") +@@ -3568,6 +3588,7 @@ var AnthropicMessagesLanguageModel = class { + const sendThinking = isThinking || thinkingType === "disabled"; + let thinkingBudget = thinkingType === "enabled" ? (_g = anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : _g.budgetTokens : void 0; + const thinkingDisplay = thinkingType === "adaptive" ? (_h = anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : _h.display : void 0; ++ const thinkingBlockBinding = isThinking ? (anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : anthropicOptions.thinking.blockBinding : void 0; + const maxTokens = maxOutputTokens != null ? maxOutputTokens : maxOutputTokensForModel; + const baseArgs = { + // model id: +@@ -3583,7 +3604,12 @@ var AnthropicMessagesLanguageModel = class { + thinking: { + type: thinkingType, + ...thinkingBudget != null && { budget_tokens: thinkingBudget }, +- ...thinkingDisplay != null && { display: thinkingDisplay } ++ ...thinkingDisplay != null && { display: thinkingDisplay }, ++ ...thinkingBlockBinding != null && { ++ block_binding: { ++ prefix_mismatch_behavior: thinkingBlockBinding.prefixMismatchBehavior ++ } ++ } + } + }, + ...((anthropicOptions == null ? void 0 : anthropicOptions.effort) || (anthropicOptions == null ? void 0 : anthropicOptions.taskBudget) || useStructuredOutput && (responseFormat == null ? void 0 : responseFormat.type) === "json" && responseFormat.schema != null) && { +@@ -3798,6 +3824,9 @@ var AnthropicMessagesLanguageModel = class { + } else if ((anthropicOptions == null ? void 0 : anthropicOptions.fallbacks) && anthropicOptions.fallbacks.length > 0) { + betas.add("server-side-fallback-2026-06-01"); + } ++ if (thinkingBlockBinding != null) { ++ betas.add("thinking-binding-controls-2026-08-01"); ++ } + const defaultEagerInputStreaming = stream && ((_j = anthropicOptions == null ? void 0 : anthropicOptions.toolStreaming) != null ? _j : true); + const { + tools: anthropicTools2, +@@ -4364,6 +4393,7 @@ var AnthropicMessagesLanguageModel = class { + cacheCreationInputTokens: (_a2 = response.usage.cache_creation_input_tokens) != null ? _a2 : null, + stopSequence: (_b2 = response.stop_sequence) != null ? _b2 : null, + ...stopDetails != null ? { stopDetails } : {}, ++ ...response.input_transformations != null ? { inputTransformations: response.input_transformations } : {}, + iterations: response.usage.iterations ? response.usage.iterations.map( + (iter) => ({ + type: iter.type, +@@ -4453,6 +4483,7 @@ var AnthropicMessagesLanguageModel = class { + let cacheCreationInputTokens = null; + let stopSequence = null; + let stopDetails = void 0; ++ let inputTransformations = void 0; + let container = null; + let isJsonResponseFromTool = false; + let isMessageOpen = false; +@@ -5111,6 +5142,9 @@ var AnthropicMessagesLanguageModel = class { + isMessageOpen = true; + activeMessageId = value.message.id; + usage.input_tokens = value.message.usage.input_tokens; ++ if (value.message.input_transformations != null) { ++ inputTransformations = value.message.input_transformations; ++ } + usage.cache_read_input_tokens = (_e = value.message.usage.cache_read_input_tokens) != null ? _e : 0; + usage.cache_creation_input_tokens = (_f = value.message.usage.cache_creation_input_tokens) != null ? _f : 0; + rawUsage = { +@@ -5231,6 +5265,7 @@ var AnthropicMessagesLanguageModel = class { + cacheCreationInputTokens, + stopSequence, + ...stopDetails != null ? { stopDetails } : {}, ++ ...inputTransformations != null ? { inputTransformations } : {}, + iterations: usage.iterations ? usage.iterations.map( + (iter) => ({ + type: iter.type, +diff --git a/dist/index.mjs b/dist/index.mjs +index 593b030c7f2adbe0cd38556b7a74f5ede6a5435e..1fa36ccb119715df3cd00976e479c679c66d2261 100644 +--- a/dist/index.mjs ++++ b/dist/index.mjs +@@ -85,6 +85,13 @@ var anthropicMessagesResponseSchema = lazySchema2( + type: z2.literal("message"), + id: z2.string().nullish(), + model: z2.string().nullish(), ++ input_transformations: z2.array( ++ z2.looseObject({ ++ type: z2.string(), ++ path: z2.string().nullish(), ++ reason: z2.string().nullish() ++ }) ++ ).nullish(), + content: z2.array( + z2.discriminatedUnion("type", [ + z2.object({ +@@ -424,6 +431,13 @@ var anthropicMessagesChunkSchema = lazySchema2( + id: z2.string().nullish(), + model: z2.string().nullish(), + role: z2.string().nullish(), ++ input_transformations: z2.array( ++ z2.looseObject({ ++ type: z2.string(), ++ path: z2.string().nullish(), ++ reason: z2.string().nullish() ++ }) ++ ).nullish(), + usage: z2.looseObject({ + input_tokens: z2.number(), + cache_creation_input_tokens: z2.number().nullish(), +@@ -923,12 +937,18 @@ var anthropicLanguageModelOptions = z3.object({ + * - `"omitted"`: Thinking blocks are present but text is empty (default for Opus 4.7+). + * - `"summarized"`: Thinking content is returned. Required to see reasoning output. + */ +- display: z3.enum(["omitted", "summarized"]).optional() ++ display: z3.enum(["omitted", "summarized"]).optional(), ++ blockBinding: z3.object({ ++ prefixMismatchBehavior: z3.enum(["error", "drop_block"]) ++ }).optional() + }), + z3.object({ + /** for models before Opus 4.6, except Sonnet 4.6 still supports it */ + type: z3.literal("enabled"), +- budgetTokens: z3.number().optional() ++ budgetTokens: z3.number().optional(), ++ blockBinding: z3.object({ ++ prefixMismatchBehavior: z3.enum(["error", "drop_block"]) ++ }).optional() + }), + z3.object({ + type: z3.literal("disabled") +@@ -3620,6 +3640,7 @@ var AnthropicMessagesLanguageModel = class { + const sendThinking = isThinking || thinkingType === "disabled"; + let thinkingBudget = thinkingType === "enabled" ? (_g = anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : _g.budgetTokens : void 0; + const thinkingDisplay = thinkingType === "adaptive" ? (_h = anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : _h.display : void 0; ++ const thinkingBlockBinding = isThinking ? (anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : anthropicOptions.thinking.blockBinding : void 0; + const maxTokens = maxOutputTokens != null ? maxOutputTokens : maxOutputTokensForModel; + const baseArgs = { + // model id: +@@ -3635,7 +3656,12 @@ var AnthropicMessagesLanguageModel = class { + thinking: { + type: thinkingType, + ...thinkingBudget != null && { budget_tokens: thinkingBudget }, +- ...thinkingDisplay != null && { display: thinkingDisplay } ++ ...thinkingDisplay != null && { display: thinkingDisplay }, ++ ...thinkingBlockBinding != null && { ++ block_binding: { ++ prefix_mismatch_behavior: thinkingBlockBinding.prefixMismatchBehavior ++ } ++ } + } + }, + ...((anthropicOptions == null ? void 0 : anthropicOptions.effort) || (anthropicOptions == null ? void 0 : anthropicOptions.taskBudget) || useStructuredOutput && (responseFormat == null ? void 0 : responseFormat.type) === "json" && responseFormat.schema != null) && { +@@ -3850,6 +3876,9 @@ var AnthropicMessagesLanguageModel = class { + } else if ((anthropicOptions == null ? void 0 : anthropicOptions.fallbacks) && anthropicOptions.fallbacks.length > 0) { + betas.add("server-side-fallback-2026-06-01"); + } ++ if (thinkingBlockBinding != null) { ++ betas.add("thinking-binding-controls-2026-08-01"); ++ } + const defaultEagerInputStreaming = stream && ((_j = anthropicOptions == null ? void 0 : anthropicOptions.toolStreaming) != null ? _j : true); + const { + tools: anthropicTools2, +@@ -4416,6 +4445,7 @@ var AnthropicMessagesLanguageModel = class { + cacheCreationInputTokens: (_a2 = response.usage.cache_creation_input_tokens) != null ? _a2 : null, + stopSequence: (_b2 = response.stop_sequence) != null ? _b2 : null, + ...stopDetails != null ? { stopDetails } : {}, ++ ...response.input_transformations != null ? { inputTransformations: response.input_transformations } : {}, + iterations: response.usage.iterations ? response.usage.iterations.map( + (iter) => ({ + type: iter.type, +@@ -4505,6 +4535,7 @@ var AnthropicMessagesLanguageModel = class { + let cacheCreationInputTokens = null; + let stopSequence = null; + let stopDetails = void 0; ++ let inputTransformations = void 0; + let container = null; + let isJsonResponseFromTool = false; + let isMessageOpen = false; +@@ -5163,6 +5194,9 @@ var AnthropicMessagesLanguageModel = class { + isMessageOpen = true; + activeMessageId = value.message.id; + usage.input_tokens = value.message.usage.input_tokens; ++ if (value.message.input_transformations != null) { ++ inputTransformations = value.message.input_transformations; ++ } + usage.cache_read_input_tokens = (_e = value.message.usage.cache_read_input_tokens) != null ? _e : 0; + usage.cache_creation_input_tokens = (_f = value.message.usage.cache_creation_input_tokens) != null ? _f : 0; + rawUsage = { +@@ -5283,6 +5317,7 @@ var AnthropicMessagesLanguageModel = class { + cacheCreationInputTokens, + stopSequence, + ...stopDetails != null ? { stopDetails } : {}, ++ ...inputTransformations != null ? { inputTransformations } : {}, + iterations: usage.iterations ? usage.iterations.map( + (iter) => ({ + type: iter.type, +diff --git a/dist/internal/index.js b/dist/internal/index.js +index 701ca5a333d83d384f682667b9976b7f72b0de37..ce53d0c9fe5c00a092b0347b45d61d8ce9c3a79a 100644 +--- a/dist/internal/index.js ++++ b/dist/internal/index.js +@@ -79,6 +79,13 @@ var anthropicMessagesResponseSchema = (0, import_provider_utils2.lazySchema)( + type: import_v42.z.literal("message"), + id: import_v42.z.string().nullish(), + model: import_v42.z.string().nullish(), ++ input_transformations: import_v42.z.array( ++ import_v42.z.looseObject({ ++ type: import_v42.z.string(), ++ path: import_v42.z.string().nullish(), ++ reason: import_v42.z.string().nullish() ++ }) ++ ).nullish(), + content: import_v42.z.array( + import_v42.z.discriminatedUnion("type", [ + import_v42.z.object({ +@@ -418,6 +425,13 @@ var anthropicMessagesChunkSchema = (0, import_provider_utils2.lazySchema)( + id: import_v42.z.string().nullish(), + model: import_v42.z.string().nullish(), + role: import_v42.z.string().nullish(), ++ input_transformations: import_v42.z.array( ++ import_v42.z.looseObject({ ++ type: import_v42.z.string(), ++ path: import_v42.z.string().nullish(), ++ reason: import_v42.z.string().nullish() ++ }) ++ ).nullish(), + usage: import_v42.z.looseObject({ + input_tokens: import_v42.z.number(), + cache_creation_input_tokens: import_v42.z.number().nullish(), +@@ -917,12 +931,18 @@ var anthropicLanguageModelOptions = import_v43.z.object({ + * - `"omitted"`: Thinking blocks are present but text is empty (default for Opus 4.7+). + * - `"summarized"`: Thinking content is returned. Required to see reasoning output. + */ +- display: import_v43.z.enum(["omitted", "summarized"]).optional() ++ display: import_v43.z.enum(["omitted", "summarized"]).optional(), ++ blockBinding: import_v43.z.object({ ++ prefixMismatchBehavior: import_v43.z.enum(["error", "drop_block"]) ++ }).optional() + }), + import_v43.z.object({ + /** for models before Opus 4.6, except Sonnet 4.6 still supports it */ + type: import_v43.z.literal("enabled"), +- budgetTokens: import_v43.z.number().optional() ++ budgetTokens: import_v43.z.number().optional(), ++ blockBinding: import_v43.z.object({ ++ prefixMismatchBehavior: import_v43.z.enum(["error", "drop_block"]) ++ }).optional() + }), + import_v43.z.object({ + type: import_v43.z.literal("disabled") +@@ -3562,6 +3582,7 @@ var AnthropicMessagesLanguageModel = class { + const sendThinking = isThinking || thinkingType === "disabled"; + let thinkingBudget = thinkingType === "enabled" ? (_g = anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : _g.budgetTokens : void 0; + const thinkingDisplay = thinkingType === "adaptive" ? (_h = anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : _h.display : void 0; ++ const thinkingBlockBinding = isThinking ? (anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : anthropicOptions.thinking.blockBinding : void 0; + const maxTokens = maxOutputTokens != null ? maxOutputTokens : maxOutputTokensForModel; + const baseArgs = { + // model id: +@@ -3577,7 +3598,12 @@ var AnthropicMessagesLanguageModel = class { + thinking: { + type: thinkingType, + ...thinkingBudget != null && { budget_tokens: thinkingBudget }, +- ...thinkingDisplay != null && { display: thinkingDisplay } ++ ...thinkingDisplay != null && { display: thinkingDisplay }, ++ ...thinkingBlockBinding != null && { ++ block_binding: { ++ prefix_mismatch_behavior: thinkingBlockBinding.prefixMismatchBehavior ++ } ++ } + } + }, + ...((anthropicOptions == null ? void 0 : anthropicOptions.effort) || (anthropicOptions == null ? void 0 : anthropicOptions.taskBudget) || useStructuredOutput && (responseFormat == null ? void 0 : responseFormat.type) === "json" && responseFormat.schema != null) && { +@@ -3792,6 +3818,9 @@ var AnthropicMessagesLanguageModel = class { + } else if ((anthropicOptions == null ? void 0 : anthropicOptions.fallbacks) && anthropicOptions.fallbacks.length > 0) { + betas.add("server-side-fallback-2026-06-01"); + } ++ if (thinkingBlockBinding != null) { ++ betas.add("thinking-binding-controls-2026-08-01"); ++ } + const defaultEagerInputStreaming = stream && ((_j = anthropicOptions == null ? void 0 : anthropicOptions.toolStreaming) != null ? _j : true); + const { + tools: anthropicTools2, +@@ -4358,6 +4387,7 @@ var AnthropicMessagesLanguageModel = class { + cacheCreationInputTokens: (_a2 = response.usage.cache_creation_input_tokens) != null ? _a2 : null, + stopSequence: (_b2 = response.stop_sequence) != null ? _b2 : null, + ...stopDetails != null ? { stopDetails } : {}, ++ ...response.input_transformations != null ? { inputTransformations: response.input_transformations } : {}, + iterations: response.usage.iterations ? response.usage.iterations.map( + (iter) => ({ + type: iter.type, +@@ -4447,6 +4477,7 @@ var AnthropicMessagesLanguageModel = class { + let cacheCreationInputTokens = null; + let stopSequence = null; + let stopDetails = void 0; ++ let inputTransformations = void 0; + let container = null; + let isJsonResponseFromTool = false; + let isMessageOpen = false; +@@ -5105,6 +5136,9 @@ var AnthropicMessagesLanguageModel = class { + isMessageOpen = true; + activeMessageId = value.message.id; + usage.input_tokens = value.message.usage.input_tokens; ++ if (value.message.input_transformations != null) { ++ inputTransformations = value.message.input_transformations; ++ } + usage.cache_read_input_tokens = (_e = value.message.usage.cache_read_input_tokens) != null ? _e : 0; + usage.cache_creation_input_tokens = (_f = value.message.usage.cache_creation_input_tokens) != null ? _f : 0; + rawUsage = { +@@ -5225,6 +5259,7 @@ var AnthropicMessagesLanguageModel = class { + cacheCreationInputTokens, + stopSequence, + ...stopDetails != null ? { stopDetails } : {}, ++ ...inputTransformations != null ? { inputTransformations } : {}, + iterations: usage.iterations ? usage.iterations.map( + (iter) => ({ + type: iter.type, +diff --git a/dist/internal/index.mjs b/dist/internal/index.mjs +index c11f29fa42a9ce6a5681d43c609020f1f4a616da..df7f7a01992a56826eb809e6cdfb1e50a87a1b90 100644 +--- a/dist/internal/index.mjs ++++ b/dist/internal/index.mjs +@@ -69,6 +69,13 @@ var anthropicMessagesResponseSchema = lazySchema2( + type: z2.literal("message"), + id: z2.string().nullish(), + model: z2.string().nullish(), ++ input_transformations: z2.array( ++ z2.looseObject({ ++ type: z2.string(), ++ path: z2.string().nullish(), ++ reason: z2.string().nullish() ++ }) ++ ).nullish(), + content: z2.array( + z2.discriminatedUnion("type", [ + z2.object({ +@@ -408,6 +415,13 @@ var anthropicMessagesChunkSchema = lazySchema2( + id: z2.string().nullish(), + model: z2.string().nullish(), + role: z2.string().nullish(), ++ input_transformations: z2.array( ++ z2.looseObject({ ++ type: z2.string(), ++ path: z2.string().nullish(), ++ reason: z2.string().nullish() ++ }) ++ ).nullish(), + usage: z2.looseObject({ + input_tokens: z2.number(), + cache_creation_input_tokens: z2.number().nullish(), +@@ -907,12 +921,18 @@ var anthropicLanguageModelOptions = z3.object({ + * - `"omitted"`: Thinking blocks are present but text is empty (default for Opus 4.7+). + * - `"summarized"`: Thinking content is returned. Required to see reasoning output. + */ +- display: z3.enum(["omitted", "summarized"]).optional() ++ display: z3.enum(["omitted", "summarized"]).optional(), ++ blockBinding: z3.object({ ++ prefixMismatchBehavior: z3.enum(["error", "drop_block"]) ++ }).optional() + }), + z3.object({ + /** for models before Opus 4.6, except Sonnet 4.6 still supports it */ + type: z3.literal("enabled"), +- budgetTokens: z3.number().optional() ++ budgetTokens: z3.number().optional(), ++ blockBinding: z3.object({ ++ prefixMismatchBehavior: z3.enum(["error", "drop_block"]) ++ }).optional() + }), + z3.object({ + type: z3.literal("disabled") +@@ -3604,6 +3624,7 @@ var AnthropicMessagesLanguageModel = class { + const sendThinking = isThinking || thinkingType === "disabled"; + let thinkingBudget = thinkingType === "enabled" ? (_g = anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : _g.budgetTokens : void 0; + const thinkingDisplay = thinkingType === "adaptive" ? (_h = anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : _h.display : void 0; ++ const thinkingBlockBinding = isThinking ? (anthropicOptions == null ? void 0 : anthropicOptions.thinking) == null ? void 0 : anthropicOptions.thinking.blockBinding : void 0; + const maxTokens = maxOutputTokens != null ? maxOutputTokens : maxOutputTokensForModel; + const baseArgs = { + // model id: +@@ -3619,7 +3640,12 @@ var AnthropicMessagesLanguageModel = class { + thinking: { + type: thinkingType, + ...thinkingBudget != null && { budget_tokens: thinkingBudget }, +- ...thinkingDisplay != null && { display: thinkingDisplay } ++ ...thinkingDisplay != null && { display: thinkingDisplay }, ++ ...thinkingBlockBinding != null && { ++ block_binding: { ++ prefix_mismatch_behavior: thinkingBlockBinding.prefixMismatchBehavior ++ } ++ } + } + }, + ...((anthropicOptions == null ? void 0 : anthropicOptions.effort) || (anthropicOptions == null ? void 0 : anthropicOptions.taskBudget) || useStructuredOutput && (responseFormat == null ? void 0 : responseFormat.type) === "json" && responseFormat.schema != null) && { +@@ -3834,6 +3860,9 @@ var AnthropicMessagesLanguageModel = class { + } else if ((anthropicOptions == null ? void 0 : anthropicOptions.fallbacks) && anthropicOptions.fallbacks.length > 0) { + betas.add("server-side-fallback-2026-06-01"); + } ++ if (thinkingBlockBinding != null) { ++ betas.add("thinking-binding-controls-2026-08-01"); ++ } + const defaultEagerInputStreaming = stream && ((_j = anthropicOptions == null ? void 0 : anthropicOptions.toolStreaming) != null ? _j : true); + const { + tools: anthropicTools2, +@@ -4400,6 +4429,7 @@ var AnthropicMessagesLanguageModel = class { + cacheCreationInputTokens: (_a2 = response.usage.cache_creation_input_tokens) != null ? _a2 : null, + stopSequence: (_b2 = response.stop_sequence) != null ? _b2 : null, + ...stopDetails != null ? { stopDetails } : {}, ++ ...response.input_transformations != null ? { inputTransformations: response.input_transformations } : {}, + iterations: response.usage.iterations ? response.usage.iterations.map( + (iter) => ({ + type: iter.type, +@@ -4489,6 +4519,7 @@ var AnthropicMessagesLanguageModel = class { + let cacheCreationInputTokens = null; + let stopSequence = null; + let stopDetails = void 0; ++ let inputTransformations = void 0; + let container = null; + let isJsonResponseFromTool = false; + let isMessageOpen = false; +@@ -5147,6 +5178,9 @@ var AnthropicMessagesLanguageModel = class { + isMessageOpen = true; + activeMessageId = value.message.id; + usage.input_tokens = value.message.usage.input_tokens; ++ if (value.message.input_transformations != null) { ++ inputTransformations = value.message.input_transformations; ++ } + usage.cache_read_input_tokens = (_e = value.message.usage.cache_read_input_tokens) != null ? _e : 0; + usage.cache_creation_input_tokens = (_f = value.message.usage.cache_creation_input_tokens) != null ? _f : 0; + rawUsage = { +@@ -5267,6 +5301,7 @@ var AnthropicMessagesLanguageModel = class { + cacheCreationInputTokens, + stopSequence, + ...stopDetails != null ? { stopDetails } : {}, ++ ...inputTransformations != null ? { inputTransformations } : {}, + iterations: usage.iterations ? usage.iterations.map( + (iter) => ({ + type: iter.type, From 2961956c7462a9a709a2b9979c1fb197fb4b3038 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Tue, 1 Sep 2026 19:53:04 +0000 Subject: [PATCH 216/271] chore: update nix node_modules hashes --- nix/hashes.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/hashes.json b/nix/hashes.json index 2d4e1dd3e..5f39124fe 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-6E/2HDZzT8lCFXDUWRfbD856aJgL9tmZBRkYMi63x5w=", - "aarch64-linux": "sha256-I0PTrqH6EIEbtNkS0+yVFk056maDR5iy2gtIHAv1Leg=", - "aarch64-darwin": "sha256-Uq8igYVnbU9X03ear64twODH2f8Hewl3MPdmsfCZjHI=", - "x86_64-darwin": "sha256-6yWfwZVOSiSxA3DxeDd5WAVlN5QBDIdyZXp3uQSN5Bk=" + "x86_64-linux": "sha256-SUPMcgdvUuLkQL3LKVTrQ+WshrJzDMJLpLIfHXWihmU=", + "aarch64-linux": "sha256-d72i9zY0wEB2vpndBxq6SXHktYquFUzKwxl5mXiJRwI=", + "aarch64-darwin": "sha256-zEJ9/hygXRBAH2GeBFdXtwQnd12K/0bBoptmLb6r7cU=", + "x86_64-darwin": "sha256-Wl9sB67IGuo3vpBCh7Ihsr9578NbqybERRIWTJkX1rw=" } } From af1f9e626989cdfc79fc5f230912425b5a3a3aa4 Mon Sep 17 00:00:00 2001 From: Filip <34747899+neriousy@users.noreply.github.com> Date: Tue, 1 Sep 2026 21:53:43 +0200 Subject: [PATCH 217/271] remove azure discovery stuff (#46666) --- packages/opencode/src/plugin/azure.ts | 141 +-------- packages/opencode/test/plugin/azure.test.ts | 316 ++------------------ packages/web/src/content/docs/providers.mdx | 6 +- 3 files changed, 24 insertions(+), 439 deletions(-) diff --git a/packages/opencode/src/plugin/azure.ts b/packages/opencode/src/plugin/azure.ts index 7a663093f..6916aaaf3 100644 --- a/packages/opencode/src/plugin/azure.ts +++ b/packages/opencode/src/plugin/azure.ts @@ -1,10 +1,6 @@ -import { readFile } from "node:fs/promises" -import { homedir } from "node:os" -import { join } from "node:path" import { InstallationVersion } from "@opencode-ai/core/installation/version" import { which } from "@opencode-ai/core/util/which" import type { Hooks } from "@opencode-ai/plugin" -import type { Provider } from "@opencode-ai/sdk/v2" import { Schema } from "effect" import { OAUTH_DUMMY_KEY } from "../auth" import { Process } from "../util/process" @@ -19,58 +15,16 @@ const AzureCliToken = Schema.Struct({ expiresOn: Schema.optional(Schema.NonEmptyString), }) const decodeAzureCliToken = Schema.decodeUnknownPromise(AzureCliToken) -const decodeAzureProfile = Schema.decodeUnknownPromise( - Schema.fromJsonString(Schema.Struct({ subscriptions: Schema.Array(Schema.Unknown) })), -) - -const decodeAzureAccounts = Schema.decodeUnknownPromise( - Schema.Array( - Schema.Struct({ - name: Schema.NonEmptyString, - resourceGroup: Schema.NonEmptyString, - }), - ), -) - -const decodeAzureDeployments = Schema.decodeUnknownPromise( - Schema.Array( - Schema.Struct({ - name: Schema.NonEmptyString, - properties: Schema.Struct({ - model: Schema.Struct({ - name: Schema.NonEmptyString, - }), - provisioningState: Schema.NonEmptyString, - }), - }), - ), -) - type AzureCommand = (args: string[]) => Promise -type AzureAccount = { readonly name: string; readonly resourceGroup: string } export async function AzureAuthPlugin(): Promise { const available = Boolean(which("az")) - // Avoid launching Azure CLI on unrelated commands just because the executable is installed. - const signedIn = available - ? await readFile(join(process.env.AZURE_CONFIG_DIR ?? join(homedir(), ".azure"), "azureProfile.json"), "utf8") - .then((text) => decodeAzureProfile(text.replace(/^\uFEFF/, ""))) - .then((profile) => profile.subscriptions.length > 0) - .catch(() => false) - : false - const accounts = - !process.env.AZURE_RESOURCE_NAME && !process.env.AZURE_RESOURCE_GROUP && signedIn - ? await runAzure(["cognitiveservices", "account", "list", "--output", "json", "--only-show-errors"]) - .then(decodeAzureAccounts) - .catch(() => []) - : [] - return createAzureAuthHooks(runAzure, fetch, accounts, available) + return createAzureAuthHooks(runAzure, fetch, available) } export function createAzureAuthHooks( run: AzureCommand, request: (input: RequestInfo | URL, init?: RequestInit) => Promise, - accounts: readonly AzureAccount[], available: boolean, ): Hooks { const tokens = new Map() @@ -97,46 +51,7 @@ export function createAzureAuthHooks( placeholder: "e.g. my-models", }) } - const oauthPrompts = - accounts.length > 0 && !process.env.AZURE_RESOURCE_NAME - ? [ - { - type: "select" as const, - key: "resourceSelection", - message: "Select Azure resource", - options: [ - ...accounts.map((account) => ({ - label: account.name, - value: account.name, - hint: account.resourceGroup, - })), - { label: "Enter another resource name", value: "__manual__" }, - ], - }, - { - type: "text" as const, - key: "resourceName", - message: "Enter Azure Resource Name", - placeholder: "e.g. my-models", - when: { key: "resourceSelection", op: "eq" as const, value: "__manual__" }, - }, - ] - : prompts - const hooks: Hooks = { - provider: { - id: "azure", - async models(provider, context) { - if (context.auth?.type !== "oauth") return provider.models - // Discovery shells out to the Azure CLI, so skip it when the CLI is missing. - if (!available) return provider.models - const resource = context.auth.accountId - if (!resource) return {} - // This hook runs outside the app's Effect runtime, so logging here would go to the - // console. Fall back to the configured models silently. - return discoverAzureModels(provider.models, resource, run).catch(() => provider.models) - }, - }, auth: { provider: "azure", async loader(getAuth) { @@ -164,17 +79,14 @@ export function createAzureAuthHooks( { type: "oauth", label: "Microsoft Entra ID (Azure CLI)", - prompts: oauthPrompts, + prompts, async authorize(inputs) { return { url: "", instructions: "Sign in with `az login` before continuing.", method: "auto", callback: async () => { - const resourceName = - inputs?.resourceName ?? - (inputs?.resourceSelection === "__manual__" ? undefined : inputs?.resourceSelection) ?? - process.env.AZURE_RESOURCE_NAME + const resourceName = inputs?.resourceName ?? process.env.AZURE_RESOURCE_NAME if (!resourceName) throw new Error("Azure Resource Name is required") await token(AZURE_COGNITIVE_SERVICES_SCOPE) @@ -201,53 +113,6 @@ async function runAzure(args: string[]): Promise { return JSON.parse(result.stdout.toString()) } -async function discoverAzureModels(models: Provider["models"], resourceName: string, run: AzureCommand) { - const resourceGroup = process.env.AZURE_RESOURCE_GROUP - const account = resourceGroup - ? { name: resourceName, resourceGroup } - : ( - await decodeAzureAccounts( - await run(["cognitiveservices", "account", "list", "--output", "json", "--only-show-errors"]), - ) - ).find((account) => account.name.toLowerCase() === resourceName.toLowerCase()) - if (!account) throw new Error(`Azure resource "${resourceName}" was not found in the active subscription`) - - const deployments = await decodeAzureDeployments( - await run([ - "cognitiveservices", - "account", - "deployment", - "list", - "--name", - account.name, - "--resource-group", - account.resourceGroup, - "--output", - "json", - "--only-show-errors", - ]), - ) - const found = new Map() - deployments.forEach((deployment) => { - if (deployment.properties.provisioningState !== "Succeeded") return - const modelID = Object.keys(models).find( - (modelID) => modelID.toLowerCase() === deployment.properties.model.name.toLowerCase(), - ) - if (!modelID) return - const id = found.has(modelID) ? deployment.name : modelID - found.set(id, { - ...models[modelID], - id, - name: id === modelID ? models[modelID].name : `${models[modelID].name} (${deployment.name})`, - api: { - ...models[modelID].api, - id: deployment.name, - }, - }) - }) - return Object.fromEntries(found) -} - function scopeForRequest(input: RequestInfo | URL) { const url = new URL(input instanceof Request ? input.url : input) if (url.hostname.endsWith(".services.ai.azure.com") && !url.pathname.startsWith("/models")) { diff --git a/packages/opencode/test/plugin/azure.test.ts b/packages/opencode/test/plugin/azure.test.ts index 66444965d..2dcdfb039 100644 --- a/packages/opencode/test/plugin/azure.test.ts +++ b/packages/opencode/test/plugin/azure.test.ts @@ -11,17 +11,11 @@ import { Process } from "../../src/util/process" import { which } from "@opencode-ai/core/util/which" const resourceName = process.env.AZURE_RESOURCE_NAME -const resourceGroup = process.env.AZURE_RESOURCE_GROUP -const azureConfig = process.env.AZURE_CONFIG_DIR const originalPath = process.env.PATH afterEach(() => { if (resourceName === undefined) delete process.env.AZURE_RESOURCE_NAME else process.env.AZURE_RESOURCE_NAME = resourceName - if (resourceGroup === undefined) delete process.env.AZURE_RESOURCE_GROUP - else process.env.AZURE_RESOURCE_GROUP = resourceGroup - if (azureConfig === undefined) delete process.env.AZURE_CONFIG_DIR - else process.env.AZURE_CONFIG_DIR = azureConfig if (originalPath === undefined) delete process.env.PATH else process.env.PATH = originalPath }) @@ -64,37 +58,6 @@ function customFetch(options: Record) { } } -function models(...ids: string[]): Provider["models"] { - return Object.fromEntries( - ids.map((id) => [ - id, - { - id, - providerID: "azure", - name: id, - family: "", - api: { id, url: "", npm: "@ai-sdk/azure" }, - status: "active", - headers: {}, - options: {}, - cost: { input: 0, output: 0, cache: { read: 0, write: 0 } }, - limit: { context: 0, output: 0 }, - capabilities: { - temperature: true, - reasoning: false, - attachment: false, - toolcall: true, - input: { text: true, audio: false, image: false, video: false, pdf: false }, - output: { text: true, audio: false, image: false, video: false, pdf: false }, - interleaved: false, - }, - release_date: "", - variants: {}, - }, - ]), - ) -} - function azureShell(scopes: string[]) { return async (args: string[]) => { const scope = args[args.indexOf("--scope") + 1] @@ -106,14 +69,6 @@ function azureShell(scopes: string[]) { } } -function discoveryShell(accounts: unknown, deployments: unknown, commands: string[]) { - return async (args: string[]) => { - const command = ["az", ...args].join(" ") - commands.push(command) - return command.includes("deployment list") ? deployments : accounts - } -} - async function azureCli(dir: string) { const bin = path.join(dir, "azure cli") const calls = path.join(dir, "calls.jsonl") @@ -127,7 +82,7 @@ async function azureCli(dir: string) { fs.appendFileSync(${JSON.stringify(calls)}, JSON.stringify(args) + "\\n") console.log(JSON.stringify(args.includes("get-access-token") ? { accessToken: "test-token", expires_on: Math.floor(Date.now() / 1000) + 3600 } - : args.includes("deployment") ? [] : [{ name: "test-resource", resourceGroup: "test group & value" }])) + : [])) `, ) const executable = path.join(bin, process.platform === "win32" ? "az.cmd" : "az") @@ -162,7 +117,6 @@ describe("plugin.azure", () => { const entry = path.join(tmp.path, "azure.mjs") await Bun.write(entry, bundle.outputs[0]) const cli = await azureCli(tmp.path) - await Bun.write(path.join(tmp.path, "azureProfile.json"), '\uFEFF{"subscriptions":[{}]}') for (const installed of [false, true]) { const result = await Process.run( [ @@ -174,23 +128,21 @@ describe("plugin.azure", () => { import { AzureAuthPlugin } from ${JSON.stringify(pathToFileURL(entry).href)} assert.equal(typeof Bun, "undefined") delete process.env.AZURE_RESOURCE_NAME - delete process.env.AZURE_RESOURCE_GROUP const hooks = await AzureAuthPlugin({ $: undefined }) assert.equal(hooks.auth.provider, "azure") assert.deepEqual(hooks.auth.methods.map((method) => method.type), ${JSON.stringify(installed ? ["api", "oauth"] : ["api"])}) if (${installed}) { const method = hooks.auth.methods.find((method) => method.type === "oauth") - assert.equal(method.prompts[0].type, "select") - const authorization = await method.authorize({ resourceSelection: "test-resource" }) + assert.equal(method.prompts[0].type, "text") + const authorization = await method.authorize({ resourceName: "test-resource" }) const auth = await authorization.callback() assert.equal(auth.type, "success") assert.equal(auth.accountId, "test-resource") - assert.deepEqual(await hooks.provider.models({ models: {} }, { auth: { ...auth, type: "oauth" } }), {}) } `, ], { - env: { PATH: installed ? cli.bin : tmp.path, XDG_DATA_HOME: tmp.path, AZURE_CONFIG_DIR: tmp.path }, + env: { PATH: installed ? cli.bin : tmp.path, XDG_DATA_HOME: tmp.path }, nothrow: true, }, ) @@ -198,53 +150,27 @@ describe("plugin.azure", () => { expect(result.code).toBe(0) } expect(await cli.calls()).toEqual([ - ["cognitiveservices", "account", "list", "--output", "json", "--only-show-errors"], ["account", "get-access-token", "--scope", "https://cognitiveservices.azure.com/.default", "--output", "json"], - ["cognitiveservices", "account", "list", "--output", "json", "--only-show-errors"], - [ - "cognitiveservices", - "account", - "deployment", - "list", - "--name", - "test-resource", - "--resource-group", - "test group & value", - "--output", - "json", - "--only-show-errors", - ], ]) }) - for (const profile of [ - { name: "missing", content: undefined, signedIn: false }, - { name: "logged out", content: '{"subscriptions":[]}', signedIn: false }, - { name: "signed in with BOM", content: '\uFEFF{"subscriptions":[{}]}', signedIn: true }, - ]) { - test(`only lists resources for a cached Azure login (${profile.name})`, async () => { - await using tmp = await tmpdir() - const cli = await azureCli(tmp.path) - process.env.PATH = cli.bin - process.env.AZURE_CONFIG_DIR = path.join(tmp.path, "azure-cli") - if (profile.content) - await Bun.write(path.join(process.env.AZURE_CONFIG_DIR, "azureProfile.json"), profile.content) - delete process.env.AZURE_RESOURCE_NAME - delete process.env.AZURE_RESOURCE_GROUP - const hooks = await AzureAuthPlugin() + test("does not invoke Azure CLI during initialization", async () => { + await using tmp = await tmpdir() + const cli = await azureCli(tmp.path) + process.env.PATH = cli.bin + delete process.env.AZURE_RESOURCE_NAME + + const hooks = await AzureAuthPlugin() - expect(await cli.calls()).toHaveLength(profile.signedIn ? 1 : 0) - expect(hooks.auth?.methods.some((method) => method.type === "oauth")).toBe(true) - if (profile.signedIn) expect(oauthMethod(hooks).prompts?.[0].type).toBe("select") - }) - } + expect(await cli.calls()).toEqual([]) + expect(oauthMethod(hooks).prompts?.[0].type).toBe("text") + }) test("keeps the existing API-key method and adds Entra ID", () => { delete process.env.AZURE_RESOURCE_NAME - const hooks = createAzureAuthHooks(azureShell([]), fetch, [], true) + const hooks = createAzureAuthHooks(azureShell([]), fetch, true) expect(hooks.auth?.provider).toBe("azure") - expect(hooks.provider?.id).toBe("azure") expect(hooks.auth?.methods.map((method) => [method.type, method.label])).toEqual([ ["api", "API key"], ["oauth", "Microsoft Entra ID (Azure CLI)"], @@ -265,76 +191,14 @@ describe("plugin.azure", () => { }) test("hides Azure CLI authentication when the Azure CLI is not installed", () => { - const hooks = createAzureAuthHooks(azureShell([]), fetch, [], false) + const hooks = createAzureAuthHooks(azureShell([]), fetch, false) expect(hooks.auth?.methods.map((method) => method.type)).toEqual(["api"]) }) - test("lists Azure CLI resources and allows entering another resource", () => { - delete process.env.AZURE_RESOURCE_NAME - const hooks = createAzureAuthHooks( - azureShell([]), - fetch, - [ - { name: "first-resource", resourceGroup: "first-group" }, - { name: "second-resource", resourceGroup: "second-group" }, - ], - true, - ) - - expect(oauthMethod(hooks).prompts).toEqual([ - { - type: "select", - key: "resourceSelection", - message: "Select Azure resource", - options: [ - { label: "first-resource", value: "first-resource", hint: "first-group" }, - { label: "second-resource", value: "second-resource", hint: "second-group" }, - { label: "Enter another resource name", value: "__manual__" }, - ], - }, - { - type: "text", - key: "resourceName", - message: "Enter Azure Resource Name", - placeholder: "e.g. my-models", - when: { key: "resourceSelection", op: "eq", value: "__manual__" }, - }, - ]) - }) - - test("uses the selected Azure CLI resource", async () => { - const hooks = createAzureAuthHooks( - azureShell([]), - fetch, - [{ name: "selected-resource", resourceGroup: "selected-group" }], - true, - ) - const authorization = await oauthMethod(hooks).authorize({ resourceSelection: "selected-resource" }) - if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") - - expect(await authorization.callback()).toMatchObject({ type: "success", accountId: "selected-resource" }) - }) - - test("uses a manually entered Azure resource that was not listed", async () => { - const hooks = createAzureAuthHooks( - azureShell([]), - fetch, - [{ name: "listed-resource", resourceGroup: "group" }], - true, - ) - const authorization = await oauthMethod(hooks).authorize({ - resourceSelection: "__manual__", - resourceName: "unlisted-resource", - }) - if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") - - expect(await authorization.callback()).toMatchObject({ type: "success", accountId: "unlisted-resource" }) - }) - test("checks Azure CLI and stores the resource name", async () => { const scopes: string[] = [] - const hooks = createAzureAuthHooks(azureShell(scopes), fetch, [], true) + const hooks = createAzureAuthHooks(azureShell(scopes), fetch, true) const authorization = await oauthMethod(hooks).authorize({ resourceName: "test-resource" }) if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") @@ -354,7 +218,6 @@ describe("plugin.azure", () => { expiresOn: new Date(Date.now() + 60 * 60 * 1000).toISOString(), }), fetch, - [], true, ) const authorization = await oauthMethod(hooks).authorize({ resourceName: "test-resource" }) @@ -364,158 +227,18 @@ describe("plugin.azure", () => { }) test("rejects Azure CLI tokens without a usable expiration", async () => { - const hooks = createAzureAuthHooks(async () => ({ accessToken: "invalid-token" }), fetch, [], true) + const hooks = createAzureAuthHooks(async () => ({ accessToken: "invalid-token" }), fetch, true) const authorization = await oauthMethod(hooks).authorize({ resourceName: "test-resource" }) if (authorization.method !== "auto") throw new Error("Unexpected Azure authorization method") await expect(authorization.callback()).rejects.toThrow("Azure CLI returned an invalid token expiration") }) - test("discovers deployed models through Azure CLI", async () => { - delete process.env.AZURE_RESOURCE_GROUP - const commands: string[] = [] - const hooks = createAzureAuthHooks( - discoveryShell( - [{ name: "test-resource", resourceGroup: "test-group" }], - [ - { - name: "gpt-production", - properties: { model: { name: "gpt-5-mini" }, provisioningState: "Succeeded" }, - }, - { - name: "DeepSeek-V4-Flash", - properties: { model: { name: "DeepSeek-V4-Flash" }, provisioningState: "Succeeded" }, - }, - { - name: "phi-production", - properties: { model: { name: "Phi-4-mini-instruct" }, provisioningState: "Succeeded" }, - }, - { - name: "gpt-5-nano", - properties: { model: { name: "gpt-5-nano" }, provisioningState: "Creating" }, - }, - ], - commands, - ), - fetch, - [], - true, - ) - const list = hooks.provider?.models - if (!list) throw new Error("Azure provider model hook is missing") - - const result = await list( - { - ...provider, - models: models("gpt-5-mini", "deepseek-v4-flash", "phi-4-mini", "phi-4-mini-instruct", "gpt-5-nano"), - }, - { auth: oauth }, - ) - - expect(Object.keys(result)).toEqual(["gpt-5-mini", "deepseek-v4-flash", "phi-4-mini-instruct"]) - expect(result["gpt-5-mini"].api.id).toBe("gpt-production") - expect(result["deepseek-v4-flash"].api.id).toBe("DeepSeek-V4-Flash") - expect(result["phi-4-mini-instruct"].api.id).toBe("phi-production") - expect(commands).toEqual([ - "az cognitiveservices account list --output json --only-show-errors", - "az cognitiveservices account deployment list --name test-resource --resource-group test-group --output json --only-show-errors", - ]) - }) - - test("discovers models directly when the resource group is configured", async () => { - process.env.AZURE_RESOURCE_GROUP = "restricted-group" - const commands: string[] = [] - const hooks = createAzureAuthHooks( - discoveryShell( - [], - [{ name: "gpt-production", properties: { model: { name: "gpt-5-mini" }, provisioningState: "Succeeded" } }], - commands, - ), - fetch, - [], - true, - ) - const list = hooks.provider?.models - if (!list) throw new Error("Azure provider model hook is missing") - - const result = await list({ ...provider, models: models("gpt-5-mini") }, { auth: oauth }) - - expect(result["gpt-5-mini"].api.id).toBe("gpt-production") - expect(commands).toEqual([ - "az cognitiveservices account deployment list --name test-resource --resource-group restricted-group --output json --only-show-errors", - ]) - }) - - test("preserves multiple deployments of the same model", async () => { - delete process.env.AZURE_RESOURCE_GROUP - const hooks = createAzureAuthHooks( - discoveryShell( - [{ name: "test-resource", resourceGroup: "test-group" }], - [ - { name: "gpt-production", properties: { model: { name: "gpt-5-mini" }, provisioningState: "Succeeded" } }, - { name: "gpt-staging", properties: { model: { name: "gpt-5-mini" }, provisioningState: "Succeeded" } }, - ], - [], - ), - fetch, - [], - true, - ) - const list = hooks.provider?.models - if (!list) throw new Error("Azure provider model hook is missing") - - const result = await list({ ...provider, models: models("gpt-5-mini") }, { auth: oauth }) - - expect(Object.keys(result)).toEqual(["gpt-5-mini", "gpt-staging"]) - expect(result["gpt-5-mini"].api.id).toBe("gpt-production") - expect(result["gpt-staging"].api.id).toBe("gpt-staging") - expect(result["gpt-staging"].name).toBe("gpt-5-mini (gpt-staging)") - }) - - test("keeps configured models available when Azure discovery fails", async () => { - const hooks = createAzureAuthHooks( - async () => { - throw new Error("Azure CLI failed") - }, - fetch, - [], - true, - ) - const list = hooks.provider?.models - if (!list) throw new Error("Azure provider model hook is missing") - - const catalog = models("gpt-5-mini") - expect(await list({ ...provider, models: catalog }, { auth: oauth })).toBe(catalog) - }) - - test("skips model discovery when the Azure CLI is unavailable", async () => { - const calls: string[][] = [] - const hooks = createAzureAuthHooks( - async (args) => { - calls.push(args) - throw new Error("spawn az ENOENT") - }, - fetch, - [], - false, - ) - const list = hooks.provider?.models - if (!list) throw new Error("Azure provider model hook is missing") - - const catalog = models("gpt-5-mini") - expect(await list({ ...provider, models: catalog }, { auth: oauth })).toBe(catalog) - expect(calls).toEqual([]) - }) - test("does not change API-key loading", async () => { const scopes: string[] = [] - const hooks = createAzureAuthHooks(azureShell(scopes), fetch, [], true) - const catalog = models("gpt-5-mini") - const list = hooks.provider?.models - if (!list) throw new Error("Azure provider model hook is missing") + const hooks = createAzureAuthHooks(azureShell(scopes), fetch, true) expect(await loader(hooks)(async () => ({ type: "api", key: "test-key" }), provider)).toEqual({}) - expect(await list({ ...provider, models: catalog }, { auth: { type: "api", key: "test-key" } })).toBe(catalog) expect(scopes).toEqual([]) }) @@ -528,7 +251,6 @@ describe("plugin.azure", () => { requests.push(new Headers(init?.headers)) return new Response(null, { status: 200 }) }, - [], true, ) const options = await loader(hooks)(async () => oauth, provider) diff --git a/packages/web/src/content/docs/providers.mdx b/packages/web/src/content/docs/providers.mdx index 877f91c4e..a1d01079f 100644 --- a/packages/web/src/content/docs/providers.mdx +++ b/packages/web/src/content/docs/providers.mdx @@ -459,7 +459,7 @@ If you encounter "I'm sorry, but I cannot assist with that request" errors, try #### Microsoft Entra ID (Azure CLI) -You can use your Azure CLI session instead of an API key. [Install the Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli), run `az login`, then run `/connect`, select **Azure**, and choose **Microsoft Entra ID (Azure CLI)**. OpenCode lists the Resources visible to your Azure CLI session and their Resource groups. Select a Resource, or choose **Enter another resource name** to enter one manually. If resource listing is unavailable, OpenCode asks for the name directly. Use `az login --tenant TENANT_ID` if the Resource belongs to a different tenant. +You can use your Azure CLI session instead of an API key. [Install the Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli), run `az login`, then run `/connect`, select **Azure**, and choose **Microsoft Entra ID (Azure CLI)**. Enter the Azure Resource name when prompted. Use `az login --tenant TENANT_ID` if the Resource belongs to a different tenant. Find the Resource name by opening your Azure OpenAI or Foundry Resource in the [Azure portal](https://portal.azure.com/) or [Microsoft Foundry](https://ai.azure.com/). It is also the first part of the endpoint: `my-models` in `https://my-models.openai.azure.com/` or `https://my-models.services.ai.azure.com/`. If your identity can list Resources, you can also find their names and Resource groups with: @@ -469,9 +469,7 @@ az cognitiveservices account list \ --output table ``` -OpenCode finds the Resource group and discovers its deployed models from the active Azure CLI subscription. Run `az account set --subscription NAME_OR_ID` first if the Resource is in a different subscription. Set `AZURE_RESOURCE_GROUP` to skip listing the subscription and query a known Resource directly. - -Model discovery requires Azure control-plane permissions, which are separate from inference permissions. If your identity cannot list deployments, OpenCode keeps the Azure model catalog available instead. Select a model whose name matches your deployment, or configure its deployment name explicitly: +OpenCode does not query Azure management APIs or discover deployments. Select a model whose catalog name matches your deployment, or configure its deployment name explicitly: ```json title="opencode.json" { From 1542195217be56f29f73cb10a852499f6ef2e688 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:57:55 -0500 Subject: [PATCH 218/271] fix(opencode): allow none reasoning effort in Bedrock SDK (#46671) --- .../opencode/test/provider/transform.test.ts | 38 +++++++++++++++++- .../@ai-sdk%2Famazon-bedrock@4.0.166.patch | 40 ++++++++++++++----- 2 files changed, 67 insertions(+), 11 deletions(-) diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index ed85f6920..4d346d887 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -6,7 +6,7 @@ import { ProviderV2 } from "@opencode-ai/core/provider" import { ModelV2 } from "@opencode-ai/core/model" import { ModelsDev } from "@opencode-ai/core/models-dev" import { generateText, jsonSchema, type ModelMessage } from "ai" -import { createAmazonBedrock } from "@ai-sdk/amazon-bedrock" +import { createAmazonBedrock, type AmazonBedrockLanguageModelOptions } from "@ai-sdk/amazon-bedrock" import { createAnthropic } from "@ai-sdk/anthropic" import { createVertexAnthropic } from "@ai-sdk/google-vertex/anthropic" @@ -3717,6 +3717,42 @@ describe("ProviderTransform.reasoningVariants", () => { ) }) + test.each(["luna", "sol", "terra"])("serializes Bedrock GPT-5.6 %s none effort", async (name) => { + const item = target("@ai-sdk/amazon-bedrock", `global.openai.gpt-5.6-${name}`) + const variants = ProviderTransform.reasoningVariants( + model([{ type: "effort", values: ["none", "low", "medium", "high", "xhigh", "max"] }]), + item, + ) + for (const effort of ["low", "medium", "high", "xhigh", "max"]) { + expect(variants?.[effort]).toEqual({ reasoningConfig: { type: "enabled", maxReasoningEffort: effort } }) + } + expect(variants?.none).toEqual({ + reasoningConfig: { type: "enabled", maxReasoningEffort: "none" }, + } satisfies AmazonBedrockLanguageModelOptions) + const sent: unknown[] = [] + const provider = createAmazonBedrock({ + apiKey: "test-key", + region: "us-east-1", + fetch: Object.assign( + async (...args: Parameters) => { + sent.push(JSON.parse(String(args[1]?.body))) + return Response.json({ + output: { message: { role: "assistant", content: [{ text: "ok" }] } }, + stopReason: "end_turn", + usage: { inputTokens: 1, outputTokens: 1, totalTokens: 2 }, + }) + }, + { preconnect: () => undefined }, + ), + }) + await generateText({ + model: provider(item.api.id), + prompt: "hi", + providerOptions: ProviderTransform.providerOptions(item, variants?.none ?? {}), + }) + expect(sent).toEqual([expect.objectContaining({ additionalModelRequestFields: { reasoning: { effort: "none" } } })]) + }) + test("combines effort with extended thinking for Claude Opus 4.5", () => { expect( ProviderTransform.reasoningVariants( diff --git a/patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch b/patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch index 96fd15106..388b306da 100644 --- a/patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch +++ b/patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch @@ -1,8 +1,16 @@ diff --git a/dist/index.d.mts b/dist/index.d.mts -index d194ae227fd1223ba44c8c5157b1bb72b1bab273..2e046db0a365c27659ffcec08782c7c26845c1fa 100644 +index d194ae227fd1223ba44c8c5157b1bb72b1bab273..db7fdb1b6f4e617baa40539ccef718735d2e9e81 100644 --- a/dist/index.d.mts +++ b/dist/index.d.mts -@@ -61,6 +61,12 @@ declare const amazonBedrockLanguageModelOptions: z.ZodObject<{ +@@ -51,6 +51,7 @@ declare const amazonBedrockLanguageModelOptions: z.ZodObject<{ + type: z.ZodOptional, z.ZodLiteral<"disabled">, z.ZodLiteral<"adaptive">]>>; + budgetTokens: z.ZodOptional; + maxReasoningEffort: z.ZodOptional>; @@ -16,10 +24,18 @@ index d194ae227fd1223ba44c8c5157b1bb72b1bab273..2e046db0a365c27659ffcec08782c7c2 anthropicBeta: z.ZodOptional>; serviceTier: z.ZodOptional, z.ZodLiteral<"disabled">, z.ZodLiteral<"adaptive">]>>; + budgetTokens: z.ZodOptional; + maxReasoningEffort: z.ZodOptional>; @@ -33,14 +49,16 @@ index d194ae227fd1223ba44c8c5157b1bb72b1bab273..2e046db0a365c27659ffcec08782c7c2 anthropicBeta: z.ZodOptional>; serviceTier: z.ZodOptional Date: Tue, 1 Sep 2026 14:59:45 -0500 Subject: [PATCH 219/271] test(opencode): guard patched dependency versions (#46673) --- package.json | 1 - .../test/patched-dependencies.test.ts | 29 +++++++++++++++++ patches/@ff-labs%2Ffff-bun@0.9.3.patch | 31 ------------------- 3 files changed, 29 insertions(+), 32 deletions(-) create mode 100644 packages/opencode/test/patched-dependencies.test.ts delete mode 100644 patches/@ff-labs%2Ffff-bun@0.9.3.patch diff --git a/package.json b/package.json index dc4a813c5..8d58ace1b 100644 --- a/package.json +++ b/package.json @@ -146,7 +146,6 @@ }, "patchedDependencies": { "@dnd-kit/dom@0.5.0": "patches/@dnd-kit%2Fdom@0.5.0.patch", - "@ff-labs/fff-bun@0.9.3": "patches/@ff-labs%2Ffff-bun@0.9.3.patch", "@npmcli/agent@4.0.2": "patches/@npmcli%2Fagent@4.0.2.patch", "@silvia-odwyer/photon-node@0.3.4": "patches/@silvia-odwyer%2Fphoton-node@0.3.4.patch", "@standard-community/standard-openapi@0.2.9": "patches/@standard-community%2Fstandard-openapi@0.2.9.patch", diff --git a/packages/opencode/test/patched-dependencies.test.ts b/packages/opencode/test/patched-dependencies.test.ts new file mode 100644 index 000000000..5405401bb --- /dev/null +++ b/packages/opencode/test/patched-dependencies.test.ts @@ -0,0 +1,29 @@ +import { describe, expect, test } from "bun:test" +import path from "path" + +// Bun applies a patch only to the exact `name@version` named in +// `patchedDependencies`. Bumping the dependency without regenerating the patch +// does not fail `bun install`; the patch just stops applying and the runtime +// silently loses whatever the patch fixed. This pins the two together for the +// packages that ship in the CLI. +const root = path.resolve(import.meta.dir, "../../..") +const workspaces = ["packages/opencode", "packages/core"] +const patched = (await Bun.file(path.join(root, "package.json")).json()).patchedDependencies as Record + +describe("patched dependencies", () => { + for (const key of Object.keys(patched)) { + const at = key.lastIndexOf("@") + const name = key.slice(0, at) + const version = key.slice(at + 1) + + test(`${key} matches the installed version`, async () => { + expect(await Bun.file(path.join(root, patched[key])).exists()).toBe(true) + for (const workspace of workspaces) { + const file = Bun.file(path.join(root, workspace, "node_modules", name, "package.json")) + if (!(await file.exists())) continue + const installed = (await file.json()).version as string + expect(installed, `${workspace} resolves ${name}@${installed}; patch is for ${version}`).toBe(version) + } + }) + } +}) diff --git a/patches/@ff-labs%2Ffff-bun@0.9.3.patch b/patches/@ff-labs%2Ffff-bun@0.9.3.patch deleted file mode 100644 index 23a7dd54f..000000000 --- a/patches/@ff-labs%2Ffff-bun@0.9.3.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/src/download.ts b/src/download.ts -index 3454256..6dca25a 100644 ---- a/src/download.ts -+++ b/src/download.ts -@@ -7,7 +7,7 @@ - */ - -+declare const FFF_LIBC: "gnu" | "musl"; - import { existsSync } from "node:fs"; --import { createRequire } from "node:module"; - import { dirname, join } from "node:path"; - import { fileURLToPath } from "node:url"; - import { getLibFilename, getNpmPackageName } from "./platform"; -@@ -54,14 +54,10 @@ export function binaryExists(): boolean { - * in the same directory. - */ - function resolveFromNpmPackage(): string | null { -- const packageName = getNpmPackageName(); -- - try { -- // Use createRequire to resolve the platform package's location -- const require = createRequire(join(getPackageDir(), "package.json")); -- const packageJsonPath = require.resolve(`${packageName}/package.json`); -- const packageDir = dirname(packageJsonPath); -- const binaryPath = join(packageDir, getLibFilename()); -+ const binaryPath = require( -+ `@ff-labs/fff-bin-${process.platform === "linux" ? `linux-${process.arch}-${typeof FFF_LIBC === "string" ? FFF_LIBC : getNpmPackageName().endsWith("musl") ? "musl" : "gnu"}` : `${process.platform}-${process.arch}`}/${process.platform === "win32" ? "fff_c.dll" : process.platform === "darwin" ? "libfff_c.dylib" : "libfff_c.so"}`, -+ ); - - if (existsSync(binaryPath)) { - return binaryPath; From 765ae641d765fa21b2a68e2ed9fd23e8247cdb85 Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Tue, 1 Sep 2026 16:17:03 -0400 Subject: [PATCH 220/271] fix(core): Fix for incorrect time.start reset in tool call logging (#32574) (#32596) --- packages/opencode/src/session/tools.ts | 2 +- packages/opencode/test/session/tools.test.ts | 163 +++++++++++++++++++ 2 files changed, 164 insertions(+), 1 deletion(-) create mode 100644 packages/opencode/test/session/tools.test.ts diff --git a/packages/opencode/src/session/tools.ts b/packages/opencode/src/session/tools.ts index 0f401c756..99f7aec4f 100644 --- a/packages/opencode/src/session/tools.ts +++ b/packages/opencode/src/session/tools.ts @@ -74,7 +74,7 @@ export const resolve = Effect.fn("SessionTools.resolve")(function* (input: { metadata: val.metadata, status: "running", input: args, - time: { start: Date.now() }, + time: match.state.status === "running" ? match.state.time : { start: Date.now() }, }, } }), diff --git a/packages/opencode/test/session/tools.test.ts b/packages/opencode/test/session/tools.test.ts new file mode 100644 index 000000000..53d28de16 --- /dev/null +++ b/packages/opencode/test/session/tools.test.ts @@ -0,0 +1,163 @@ +import { expect } from "bun:test" +import { ModelV2 } from "@opencode-ai/core/model" +import { ProviderV2 } from "@opencode-ai/core/provider" +import { SessionV1 } from "@opencode-ai/core/v1/session" +import { Agent } from "@/agent/agent" +import { MCP } from "@/mcp" +import { Permission } from "@/permission" +import { Provider } from "@/provider/provider" +import { Session } from "@/session/session" +import { MessageID, PartID, SessionID } from "@/session/schema" +import { SessionProcessor } from "@/session/processor" +import { SessionTools } from "@/session/tools" +import { Tool } from "@/tool/tool" +import { ToolRegistry } from "@/tool/registry" +import { Truncate } from "@/tool/truncate" +import { Plugin } from "@/plugin" +import { Effect, Layer, Schema } from "effect" +import { testEffect } from "../lib/effect" + +const callID = "call-test" +const sessionID = SessionID.make("ses_test") +const messageID = MessageID.ascending() +const partID = PartID.ascending() + +const agent: Agent.Info = { + name: "build", + mode: "primary", + options: {}, + permission: [{ permission: "*", pattern: "*", action: "allow" }], +} + +const model = { + providerID: ProviderV2.ID.make("test"), + api: { id: "test-model" }, +} as Provider.Model + +function fakeMcp() { + return MCP.Service.of({ + tools: () => Effect.succeed({}), + } as Partial as MCP.Interface) +} + +const fakePlugin = Plugin.Service.of({ + init: () => Effect.void, + list: () => Effect.succeed([]), + trigger: (_name, _input, output) => Effect.succeed(output), +} satisfies Plugin.Interface) + +const fakePermission = Permission.Service.of({ + ask: () => Effect.void, + reply: () => Effect.void, + list: () => Effect.succeed([]), +} satisfies Permission.Interface) + +const fakeTruncate = Truncate.Service.of({ + cleanup: () => Effect.void, + write: () => Effect.succeed("output.txt"), + output: (text: string) => Effect.succeed({ content: text, truncated: false }), + limits: () => Effect.succeed({ maxLines: 2000, maxBytes: 50 * 1024 }), +} satisfies Truncate.Interface) + +const layer = Layer.mergeAll( + Layer.succeed(Plugin.Service, fakePlugin), + Layer.succeed(Permission.Service, fakePermission), + Layer.succeed(MCP.Service, fakeMcp()), + Layer.succeed(Truncate.Service, fakeTruncate), + Layer.succeed( + ToolRegistry.Service, + ToolRegistry.Service.of({ + ids: () => Effect.succeed(["timing"]), + all: () => Effect.succeed([]), + named: () => Effect.die("unused"), + tools: () => + Effect.succeed([ + { + id: "timing", + description: "updates metadata more than once", + parameters: Schema.Struct({}), + jsonSchema: { type: "object", properties: {} }, + execute: (_args, ctx) => + Effect.gen(function* () { + yield* ctx.metadata({ metadata: { output: "first" } }) + yield* ctx.metadata({ metadata: { output: "second" } }) + return { title: "timing", metadata: {}, output: "done" } + }), + } satisfies Tool.Def, + ]), + }), + ), +) + +const it = testEffect(layer) + +it.effect("preserves running tool start time across metadata updates", () => + Effect.gen(function* () { + const state: SessionV1.ToolPart = { + id: partID, + sessionID, + messageID, + type: "tool", + tool: "timing", + callID, + state: { + status: "running", + input: {}, + time: { start: 100 }, + }, + } + const updates: number[] = [] + const processor = { + message: { + id: messageID, + sessionID, + role: "assistant", + parentID: MessageID.ascending(), + agent: "build", + mode: "build", + path: { cwd: "/tmp", root: "/tmp" }, + cost: 0, + tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } }, + modelID: ModelV2.ID.make("test-model"), + providerID: ProviderV2.ID.make("test"), + time: { created: 1 }, + } satisfies SessionV1.Assistant, + updateToolCall: (_toolCallID, update) => + Effect.sync(() => { + const next = update(state) + state.state = next.state + if (state.state.status === "running") updates.push(state.state.time.start) + return state + }), + completeToolCall: () => Effect.void, + } satisfies Pick + + const tools = yield* SessionTools.resolve({ + agent, + model, + session: { id: sessionID, permission: [] } as Session.Info, + processor, + bypassAgentCheck: false, + messages: [], + promptOps: {} as never, + }) + const execute = tools.timing.execute + if (!execute) throw new Error("timing tool is missing execute") + + yield* Effect.promise(() => + execute( + {}, + { + toolCallId: callID, + abortSignal: new AbortController().signal, + }, + ), + ) + + expect(updates).toEqual([100, 100]) + expect(state.state.status).toBe("running") + if (state.state.status === "running") { + expect(state.state.time.start).toBe(100) + } + }), +) From c10d6767c952615bd465373718087394cca82b92 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Tue, 1 Sep 2026 20:18:42 +0000 Subject: [PATCH 221/271] chore: update nix node_modules hashes --- nix/hashes.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/hashes.json b/nix/hashes.json index 5f39124fe..94526422c 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-SUPMcgdvUuLkQL3LKVTrQ+WshrJzDMJLpLIfHXWihmU=", - "aarch64-linux": "sha256-d72i9zY0wEB2vpndBxq6SXHktYquFUzKwxl5mXiJRwI=", - "aarch64-darwin": "sha256-zEJ9/hygXRBAH2GeBFdXtwQnd12K/0bBoptmLb6r7cU=", - "x86_64-darwin": "sha256-Wl9sB67IGuo3vpBCh7Ihsr9578NbqybERRIWTJkX1rw=" + "x86_64-linux": "sha256-xxfesqajP1GI/XdzCIM8hHHOdhWBrjfKkQxDpC2qRKE=", + "aarch64-linux": "sha256-T9HxvCNwt7St6VQsEqLMCSVu7jgTnQjdo824LRzi+t4=", + "aarch64-darwin": "sha256-vo0ALiy0tGnp8YVqNwGS8lsXKUmvkRiKPUacbQhZMHs=", + "x86_64-darwin": "sha256-cToGEEFCm4HX4xLfVNYEwugoUhCKVXAbH+uSI2cVo4w=" } } From 86387e90b28f76cde17674406fc99e19c063d5e1 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:24:30 -0500 Subject: [PATCH 222/271] test(opencode): fix session tools test typecheck and runtime (#46677) --- packages/opencode/test/session/tools.test.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/opencode/test/session/tools.test.ts b/packages/opencode/test/session/tools.test.ts index 53d28de16..f365f684e 100644 --- a/packages/opencode/test/session/tools.test.ts +++ b/packages/opencode/test/session/tools.test.ts @@ -14,6 +14,7 @@ import { Tool } from "@/tool/tool" import { ToolRegistry } from "@/tool/registry" import { Truncate } from "@/tool/truncate" import { Plugin } from "@/plugin" +import { RuntimeFlags } from "@/effect/runtime-flags" import { Effect, Layer, Schema } from "effect" import { testEffect } from "../lib/effect" @@ -37,6 +38,7 @@ const model = { function fakeMcp() { return MCP.Service.of({ tools: () => Effect.succeed({}), + clients: () => Effect.succeed({}), } as Partial as MCP.Interface) } @@ -64,6 +66,7 @@ const layer = Layer.mergeAll( Layer.succeed(Permission.Service, fakePermission), Layer.succeed(MCP.Service, fakeMcp()), Layer.succeed(Truncate.Service, fakeTruncate), + RuntimeFlags.layer(), Layer.succeed( ToolRegistry.Service, ToolRegistry.Service.of({ @@ -135,7 +138,7 @@ it.effect("preserves running tool start time across metadata updates", () => const tools = yield* SessionTools.resolve({ agent, model, - session: { id: sessionID, permission: [] } as Session.Info, + session: { id: sessionID, permission: [] } as unknown as Session.Info, processor, bypassAgentCheck: false, messages: [], @@ -150,6 +153,7 @@ it.effect("preserves running tool start time across metadata updates", () => { toolCallId: callID, abortSignal: new AbortController().signal, + messages: [], }, ), ) From 8100c68b507b53aac6b891edbc3040a6011d8969 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Tue, 1 Sep 2026 16:00:24 -0500 Subject: [PATCH 223/271] fix(app): bump happy-dom to fix GC-dependent MutationObserver flake (#46675) --- bun.lock | 8 +++++--- packages/app/package.json | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bun.lock b/bun.lock index 3d8037e6f..9249b5cc0 100644 --- a/bun.lock +++ b/bun.lock @@ -78,7 +78,7 @@ "tailwindcss": "catalog:", }, "devDependencies": { - "@happy-dom/global-registrator": "20.0.11", + "@happy-dom/global-registrator": "20.12.0", "@playwright/test": "catalog:", "@sentry/vite-plugin": "catalog:", "@tailwindcss/vite": "catalog:", @@ -1661,7 +1661,7 @@ "@graphql-typed-document-node/core": ["@graphql-typed-document-node/core@3.2.0", "", { "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ=="], - "@happy-dom/global-registrator": ["@happy-dom/global-registrator@20.0.11", "", { "dependencies": { "@types/node": "^20.0.0", "happy-dom": "^20.0.11" } }, "sha512-GqNqiShBT/lzkHTMC/slKBrvN0DsD4Di8ssBk4aDaVgEn+2WMzE6DXxq701ndSXj7/0cJ8mNT71pM7Bnrr6JRw=="], + "@happy-dom/global-registrator": ["@happy-dom/global-registrator@20.12.0", "", { "dependencies": { "@types/node": ">=20.0.0", "happy-dom": "^20.12.0" } }, "sha512-BUE55Rew3oMwBzwCwmUnV+Oxk51V3xolM39Ts6kGiBXNELjujiESwk9qc99JRr6cVrj3OTd9MJ5zQ2fpn+jy6g=="], "@hey-api/codegen-core": ["@hey-api/codegen-core@0.5.5", "", { "dependencies": { "@hey-api/types": "0.1.2", "ansi-colors": "4.1.3", "c12": "3.3.3", "color-support": "1.1.3" }, "peerDependencies": { "typescript": ">=5.5.3" } }, "sha512-f2ZHucnA2wBGAY8ipB4wn/mrEYW+WUxU2huJmUvfDO6AE2vfILSHeF3wCO39Pz4wUYPoAWZByaauftLrOfC12Q=="], @@ -3239,6 +3239,8 @@ "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], + "buffer-image-size": ["buffer-image-size@0.6.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ=="], + "buffers": ["buffers@0.1.1", "", {}, "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ=="], "builder-util": ["builder-util@26.15.0", "", { "dependencies": { "@types/debug": "^4.1.6", "builder-util-runtime": "9.7.0", "chalk": "^4.1.2", "cross-spawn": "^7.0.6", "debug": "^4.3.4", "fs-extra": "^10.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "js-yaml": "^4.1.0", "sanitize-filename": "^1.6.3", "source-map-support": "^0.5.19", "stat-mode": "^1.0.0", "temp-file": "^3.4.0", "tiny-async-pool": "1.3.0" } }, "sha512-dUx+HxVbiNsNQ4mGe1PyoC/tBmsHwBNDLdBuqWCj+rhHFE9lHgrXiGYKAM1uNlznhAaUSyMlms84VeSSr3gOBA=="], @@ -3877,7 +3879,7 @@ "h3": ["h3@2.0.1-rc.4", "", { "dependencies": { "rou3": "^0.7.8", "srvx": "^0.9.1" }, "peerDependencies": { "crossws": "^0.4.1" }, "optionalPeers": ["crossws"] }, "sha512-vZq8pEUp6THsXKXrUXX44eOqfChic2wVQ1GlSzQCBr7DeFBkfIZAo2WyNND4GSv54TAa0E4LYIK73WSPdgKUgw=="], - "happy-dom": ["happy-dom@20.9.0", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.18.3" } }, "sha512-GZZ9mKe8r646NUAf/zemnGbjYh4Bt8/MqASJY+pSm5ZDtc3YQox+4gsLI7yi1hba6o+eCsGxpHn5+iEVn31/FQ=="], + "happy-dom": ["happy-dom@20.12.0", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "buffer-image-size": "^0.6.4", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.21.0" } }, "sha512-7uMYJu2SEwwL8vVcKp0C0lnt6d2LSGGe+T+oY79PiCJNNSgFpbxW8n5KuzpDQvrU4mt+fYiK1+Jy7Z2v39YR6g=="], "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], diff --git a/packages/app/package.json b/packages/app/package.json index e0a1d076e..aa7cf38ce 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -32,7 +32,7 @@ }, "license": "MIT", "devDependencies": { - "@happy-dom/global-registrator": "20.0.11", + "@happy-dom/global-registrator": "20.12.0", "@playwright/test": "catalog:", "@sentry/vite-plugin": "catalog:", "@tailwindcss/vite": "catalog:", From 8ff796f13373394499378697002327e222dcc8fa Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Tue, 1 Sep 2026 21:18:22 +0000 Subject: [PATCH 224/271] chore: update nix node_modules hashes --- nix/hashes.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/hashes.json b/nix/hashes.json index 94526422c..7b7a6081a 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-xxfesqajP1GI/XdzCIM8hHHOdhWBrjfKkQxDpC2qRKE=", - "aarch64-linux": "sha256-T9HxvCNwt7St6VQsEqLMCSVu7jgTnQjdo824LRzi+t4=", - "aarch64-darwin": "sha256-vo0ALiy0tGnp8YVqNwGS8lsXKUmvkRiKPUacbQhZMHs=", - "x86_64-darwin": "sha256-cToGEEFCm4HX4xLfVNYEwugoUhCKVXAbH+uSI2cVo4w=" + "x86_64-linux": "sha256-SVvFPO+KuS67+6XGPhaB3cIuc3XUyM0XVccy5v8afS4=", + "aarch64-linux": "sha256-HJRrSu5u0TEg214d2RAbM1C+nmrxvIR/d7JlSBOGb9I=", + "aarch64-darwin": "sha256-ytmHSdC0PVGAJSbpt/+YwL5ySF3w6r/9uZpZACPppkI=", + "x86_64-darwin": "sha256-ma7K4K+xn7Jz3+YPA/n8ly1o308UNoM/DO9Z8yZSAKE=" } } From 8e0f1c253b6b7292b419505af849d06747c0e049 Mon Sep 17 00:00:00 2001 From: opencode Date: Tue, 1 Sep 2026 21:52:12 +0000 Subject: [PATCH 225/271] sync release versions for v1.18.26 --- bun.lock | 56 ++++++++++----------- packages/app/package.json | 2 +- packages/cli/package.json | 2 +- packages/codemode/package.json | 2 +- packages/console/app/package.json | 2 +- packages/console/core/package.json | 2 +- packages/console/function/package.json | 2 +- packages/console/mail/package.json | 2 +- packages/console/support/package.json | 2 +- packages/core/package.json | 2 +- packages/desktop/package.json | 2 +- packages/effect-drizzle-sqlite/package.json | 2 +- packages/effect-sqlite-node/package.json | 2 +- packages/enterprise/package.json | 2 +- packages/function/package.json | 2 +- packages/http-recorder/package.json | 2 +- packages/llm/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/server/package.json | 2 +- packages/session-ui/package.json | 2 +- packages/slack/package.json | 2 +- packages/stats/app/package.json | 2 +- packages/stats/core/package.json | 2 +- packages/stats/server/package.json | 2 +- packages/tui/package.json | 2 +- packages/ui/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 30 files changed, 57 insertions(+), 57 deletions(-) diff --git a/bun.lock b/bun.lock index 9249b5cc0..adce8d3bb 100644 --- a/bun.lock +++ b/bun.lock @@ -29,7 +29,7 @@ }, "packages/app": { "name": "@opencode-ai/app", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", @@ -96,7 +96,7 @@ }, "packages/cli": { "name": "@opencode-ai/cli", - "version": "1.18.25", + "version": "1.18.26", "bin": { "lildax": "./bin/lildax.cjs", }, @@ -144,7 +144,7 @@ }, "packages/codemode": { "name": "@opencode-ai/codemode", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "acorn": "8.15.0", "effect": "catalog:", @@ -158,7 +158,7 @@ }, "packages/console/app": { "name": "@opencode-ai/console-app", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@ibm/plex": "6.4.1", @@ -195,7 +195,7 @@ }, "packages/console/core": { "name": "@opencode-ai/console-core", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@jsx-email/render": "1.1.1", @@ -222,7 +222,7 @@ }, "packages/console/function": { "name": "@opencode-ai/console-function", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/openai": "3.0.48", @@ -245,7 +245,7 @@ }, "packages/console/mail": { "name": "@opencode-ai/console-mail", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", @@ -269,7 +269,7 @@ }, "packages/console/support": { "name": "@opencode-ai/console-support", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@opencode-ai/console-core": "workspace:*", @@ -289,7 +289,7 @@ }, "packages/core": { "name": "@opencode-ai/core", - "version": "1.18.25", + "version": "1.18.26", "bin": { "opencode": "./bin/opencode", }, @@ -383,7 +383,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@zip.js/zip.js": "2.7.62", "drizzle-orm": "catalog:", @@ -437,7 +437,7 @@ }, "packages/effect-drizzle-sqlite": { "name": "@opencode-ai/effect-drizzle-sqlite", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "drizzle-orm": "catalog:", "effect": "catalog:", @@ -451,7 +451,7 @@ }, "packages/effect-sqlite-node": { "name": "@opencode-ai/effect-sqlite-node", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "effect": "catalog:", }, @@ -463,7 +463,7 @@ }, "packages/enterprise": { "name": "@opencode-ai/enterprise", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@hono/standard-validator": "catalog:", "@opencode-ai/core": "workspace:*", @@ -495,7 +495,7 @@ }, "packages/function": { "name": "@opencode-ai/function", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "catalog:", @@ -511,7 +511,7 @@ }, "packages/http-recorder": { "name": "@opencode-ai/http-recorder", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@effect/platform-node": "4.0.0-beta.83", "@effect/platform-node-shared": "4.0.0-beta.83", @@ -542,7 +542,7 @@ }, "packages/llm": { "name": "@opencode-ai/llm", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@opencode-ai/schema": "workspace:*", "@smithy/eventstream-codec": "4.2.14", @@ -561,7 +561,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "1.18.25", + "version": "1.18.26", "bin": { "opencode": "./bin/opencode", }, @@ -692,7 +692,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@ai-sdk/provider": "3.0.8", "@opencode-ai/sdk": "workspace:*", @@ -768,7 +768,7 @@ }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "cross-spawn": "catalog:", }, @@ -783,7 +783,7 @@ }, "packages/server": { "name": "@opencode-ai/server", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", @@ -798,7 +798,7 @@ }, "packages/session-ui": { "name": "@opencode-ai/session-ui", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@kobalte/core": "catalog:", "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13-v2.tgz", @@ -838,7 +838,7 @@ }, "packages/slack": { "name": "@opencode-ai/slack", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@opencode-ai/sdk": "workspace:*", "@slack/bolt": "^3.17.1", @@ -851,7 +851,7 @@ }, "packages/stats/app": { "name": "@opencode-ai/stats-app", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@ibm/plex": "6.4.1", "@kobalte/core": "catalog:", @@ -878,7 +878,7 @@ }, "packages/stats/core": { "name": "@opencode-ai/stats-core", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@aws-sdk/client-athena": "3.933.0", "@planetscale/database": "1.19.0", @@ -897,7 +897,7 @@ }, "packages/stats/server": { "name": "@opencode-ai/stats-server", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@aws-sdk/client-firehose": "3.933.0", "@effect/platform-node": "catalog:", @@ -939,7 +939,7 @@ }, "packages/tui": { "name": "@opencode-ai/tui", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", @@ -966,7 +966,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@kobalte/core": "catalog:", "@pierre/diffs": "catalog:", @@ -1017,7 +1017,7 @@ }, "packages/web": { "name": "@opencode-ai/web", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", diff --git a/packages/app/package.json b/packages/app/package.json index aa7cf38ce..26dd36bcb 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "1.18.25", + "version": "1.18.26", "description": "", "type": "module", "exports": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 207967c19..dcc5b55ab 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/cli", - "version": "1.18.25", + "version": "1.18.26", "type": "module", "license": "MIT", "bin": { diff --git a/packages/codemode/package.json b/packages/codemode/package.json index 400451efc..23d9cf841 100644 --- a/packages/codemode/package.json +++ b/packages/codemode/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/codemode", - "version": "1.18.25", + "version": "1.18.26", "description": "Effect-native confined code execution over schema-described tools", "private": true, "type": "module", diff --git a/packages/console/app/package.json b/packages/console/app/package.json index 8e03034d6..19fdec859 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-app", - "version": "1.18.25", + "version": "1.18.26", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/console/core/package.json b/packages/console/core/package.json index 0ce0fa748..b1f79b25a 100644 --- a/packages/console/core/package.json +++ b/packages/console/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/console-core", - "version": "1.18.25", + "version": "1.18.26", "private": true, "type": "module", "license": "MIT", diff --git a/packages/console/function/package.json b/packages/console/function/package.json index 734a3efe3..702df201f 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-function", - "version": "1.18.25", + "version": "1.18.26", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json index a859c292f..a58ea7214 100644 --- a/packages/console/mail/package.json +++ b/packages/console/mail/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-mail", - "version": "1.18.25", + "version": "1.18.26", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", diff --git a/packages/console/support/package.json b/packages/console/support/package.json index c68e83fcd..1fe427465 100644 --- a/packages/console/support/package.json +++ b/packages/console/support/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-support", - "version": "1.18.25", + "version": "1.18.26", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/core/package.json b/packages/core/package.json index 7ba2346dd..ce620bc85 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.25", + "version": "1.18.26", "name": "@opencode-ai/core", "type": "module", "license": "MIT", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index d4d2532c5..27d16283e 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop", "private": true, - "version": "1.18.25", + "version": "1.18.26", "type": "module", "license": "MIT", "homepage": "https://opencode.ai", diff --git a/packages/effect-drizzle-sqlite/package.json b/packages/effect-drizzle-sqlite/package.json index eb8103695..904b305cc 100644 --- a/packages/effect-drizzle-sqlite/package.json +++ b/packages/effect-drizzle-sqlite/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.25", + "version": "1.18.26", "name": "@opencode-ai/effect-drizzle-sqlite", "type": "module", "license": "MIT", diff --git a/packages/effect-sqlite-node/package.json b/packages/effect-sqlite-node/package.json index 829aab45f..99e1f172b 100644 --- a/packages/effect-sqlite-node/package.json +++ b/packages/effect-sqlite-node/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.25", + "version": "1.18.26", "name": "@opencode-ai/effect-sqlite-node", "type": "module", "license": "MIT", diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json index 6e70986db..dde092a8b 100644 --- a/packages/enterprise/package.json +++ b/packages/enterprise/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/enterprise", - "version": "1.18.25", + "version": "1.18.26", "private": true, "type": "module", "license": "MIT", diff --git a/packages/function/package.json b/packages/function/package.json index 1c0931b39..4f3b6332c 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/function", - "version": "1.18.25", + "version": "1.18.26", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json index b7041f722..f4d119f19 100644 --- a/packages/http-recorder/package.json +++ b/packages/http-recorder/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.25", + "version": "1.18.26", "name": "@opencode-ai/http-recorder", "description": "Record and replay Effect HTTP client traffic with deterministic cassettes", "type": "module", diff --git a/packages/llm/package.json b/packages/llm/package.json index e7b93f1fd..9826e2a5d 100644 --- a/packages/llm/package.json +++ b/packages/llm/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.25", + "version": "1.18.26", "name": "@opencode-ai/llm", "type": "module", "license": "MIT", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index d81bbebae..00edea054 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.25", + "version": "1.18.26", "name": "opencode", "type": "module", "license": "MIT", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 60c3cad95..a822e45a2 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "1.18.25", + "version": "1.18.26", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 66b07a349..e808bcae5 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "1.18.25", + "version": "1.18.26", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index 7c65eedad..0ed32b1dd 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/server", - "version": "1.18.25", + "version": "1.18.26", "private": true, "type": "module", "license": "MIT", diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json index 16a2d8815..80f4cc5bc 100644 --- a/packages/session-ui/package.json +++ b/packages/session-ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/session-ui", - "version": "1.18.25", + "version": "1.18.26", "private": true, "type": "module", "license": "MIT", diff --git a/packages/slack/package.json b/packages/slack/package.json index ecaa750fd..c7c7a3455 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/slack", - "version": "1.18.25", + "version": "1.18.26", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index a53fca609..5ed324bf5 100644 --- a/packages/stats/app/package.json +++ b/packages/stats/app/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-app", - "version": "1.18.25", + "version": "1.18.26", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json index 5d333cfce..c21dc5b74 100644 --- a/packages/stats/core/package.json +++ b/packages/stats/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-core", - "version": "1.18.25", + "version": "1.18.26", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json index 0681be86c..ab9b7d140 100644 --- a/packages/stats/server/package.json +++ b/packages/stats/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-server", - "version": "1.18.25", + "version": "1.18.26", "private": true, "type": "module", "license": "MIT", diff --git a/packages/tui/package.json b/packages/tui/package.json index d208dfa62..2bfdaf4d3 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/tui", - "version": "1.18.25", + "version": "1.18.26", "private": true, "type": "module", "license": "MIT", diff --git a/packages/ui/package.json b/packages/ui/package.json index dc3052a6c..995e8be52 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/ui", - "version": "1.18.25", + "version": "1.18.26", "type": "module", "license": "MIT", "repository": { diff --git a/packages/web/package.json b/packages/web/package.json index 5552d1fff..135e663ab 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,7 +2,7 @@ "name": "@opencode-ai/web", "type": "module", "license": "MIT", - "version": "1.18.25", + "version": "1.18.26", "scripts": { "dev": "astro dev", "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index de3b012f3..1cd570242 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "1.18.25", + "version": "1.18.26", "publisher": "sst-dev", "repository": { "type": "git", From 82b665075b0c89e36938931087920e1b36b1c49e Mon Sep 17 00:00:00 2001 From: Jack Date: Wed, 2 Sep 2026 11:54:40 +0800 Subject: [PATCH 226/271] docs(zen): add Claude Fable 5.1 (#46728) --- packages/web/src/content/docs/ar/zen.mdx | 2 ++ packages/web/src/content/docs/bs/zen.mdx | 2 ++ packages/web/src/content/docs/da/zen.mdx | 2 ++ packages/web/src/content/docs/de/zen.mdx | 2 ++ packages/web/src/content/docs/es/zen.mdx | 2 ++ packages/web/src/content/docs/fr/zen.mdx | 2 ++ packages/web/src/content/docs/it/zen.mdx | 2 ++ packages/web/src/content/docs/ja/zen.mdx | 2 ++ packages/web/src/content/docs/ko/zen.mdx | 2 ++ packages/web/src/content/docs/nb/zen.mdx | 2 ++ packages/web/src/content/docs/pl/zen.mdx | 2 ++ packages/web/src/content/docs/pt-br/zen.mdx | 2 ++ packages/web/src/content/docs/ru/zen.mdx | 2 ++ packages/web/src/content/docs/th/zen.mdx | 2 ++ packages/web/src/content/docs/tr/zen.mdx | 2 ++ packages/web/src/content/docs/zen.mdx | 2 ++ packages/web/src/content/docs/zh-cn/zen.mdx | 2 ++ packages/web/src/content/docs/zh-tw/zen.mdx | 2 ++ 18 files changed, 36 insertions(+) diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index ff8c3d215..588fc5e2a 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -75,6 +75,7 @@ OpenCode Zen هي بوابة AI تتيح لك الوصول إلى هذه الن | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -162,6 +163,7 @@ https://opencode.ai/zen/v1/models | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index 5ed6bb9f8..2799c460f 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -80,6 +80,7 @@ Našim modelima možete pristupiti i preko sljedećih API endpointa. | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -169,6 +170,7 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index 3b07f92d3..6d7b92d8e 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -80,6 +80,7 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints. | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -169,6 +170,7 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index 6e4d611ea..775c1c4bf 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -71,6 +71,7 @@ Du kannst auch über die folgenden API-Endpunkte auf unsere Modelle zugreifen. | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -158,6 +159,7 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index 046afde6c..2be708275 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -80,6 +80,7 @@ También puedes acceder a nuestros modelos a través de los siguientes endpoints | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -169,6 +170,7 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index 2f6924fbe..25465cc1d 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -71,6 +71,7 @@ Vous pouvez également accéder à nos modèles via les points de terminaison AP | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -158,6 +159,7 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index a1bf4668d..6e9748a25 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -80,6 +80,7 @@ Puoi anche accedere ai nostri modelli tramite i seguenti endpoint API. | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -169,6 +170,7 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index 1bee36788..d13665c72 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -71,6 +71,7 @@ OpenCode Zen は、OpenCode のほかのプロバイダーと同じように動 | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -158,6 +159,7 @@ https://opencode.ai/zen/v1/models | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index 13bbed54a..20a7235b1 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -71,6 +71,7 @@ OpenCode Zen은 OpenCode의 다른 provider와 똑같이 작동합니다. | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -158,6 +159,7 @@ https://opencode.ai/zen/v1/models | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index 57ee59e75..b1737b9e3 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -80,6 +80,7 @@ Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter. | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -169,6 +170,7 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index 5ea4233d9..a9820e0e0 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -80,6 +80,7 @@ Możesz też uzyskać dostęp do naszych modeli przez poniższe endpointy API. | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -169,6 +170,7 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index 3ff1c7b8e..13e02615d 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -71,6 +71,7 @@ Você também pode acessar nossos modelos pelos seguintes endpoints de API. | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -158,6 +159,7 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index ddd2c29bc..df95a0425 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -80,6 +80,7 @@ OpenCode Zen работает как любой другой провайдер | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -169,6 +170,7 @@ https://opencode.ai/zen/v1/models | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index c58ae2db6..49f7968bc 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -73,6 +73,7 @@ OpenCode Zen ทำงานเหมือน provider อื่น ๆ ใน | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -160,6 +161,7 @@ https://opencode.ai/zen/v1/models | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index 13670c0f3..955206022 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -71,6 +71,7 @@ Modellerimize aşağıdaki API uç noktaları aracılığıyla da erişebilirsin | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -158,6 +159,7 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index cb737893a..afea76e62 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -80,6 +80,7 @@ You can also access our models through the following API endpoints. | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -169,6 +170,7 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index 518badf0f..d520d1f1b 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -71,6 +71,7 @@ OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -158,6 +159,7 @@ https://opencode.ai/zen/v1/models | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index eed177158..4c8ff7cb0 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -75,6 +75,7 @@ OpenCode Zen 的運作方式和 OpenCode 中的其他供應商一樣。 | GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | +| Claude Fable 5.1 | claude-fable-5-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Fable 5 | claude-fable-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 5 | claude-opus-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Opus 4.8 | claude-opus-4-8 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -163,6 +164,7 @@ https://opencode.ai/zen/v1/models | DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | | DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | | DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | +| Claude Fable 5.1 | $10.00 | $50.00 | $0.25 | $12.50 | | Claude Fable 5 | $10.00 | $50.00 | $1.00 | $12.50 | | Claude Opus 5 | $5.00 | $25.00 | $0.50 | $6.25 | | Claude Opus 4.8 | $5.00 | $25.00 | $0.50 | $6.25 | From 69c172e8a7c0086887b1f93ed5a162f14b6aa0c5 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 2 Sep 2026 06:28:47 +0200 Subject: [PATCH 227/271] fix(provider): handle SSE reader cancel rejections (#44944) --- packages/core/src/aisdk.ts | 2 +- packages/opencode/src/provider/provider.ts | 2 +- packages/opencode/test/server/httpapi-v2-pty.test.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core/src/aisdk.ts b/packages/core/src/aisdk.ts index b604dac66..a1a973b82 100644 --- a/packages/core/src/aisdk.ts +++ b/packages/core/src/aisdk.ts @@ -35,7 +35,7 @@ function wrapSSE(res: Response, ms: number, ctl: AbortController) { const id = setTimeout(() => { const err = new Error("SSE read timed out") ctl.abort(err) - void reader.cancel(err) + reader.cancel(err).catch(() => {}) reject(err) }, ms) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index b5980f158..2c69d8fba 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -46,7 +46,7 @@ function wrapSSE(res: Response, ms: number, ctl: AbortController) { const id = setTimeout(() => { const err = new ProviderError.ResponseStreamError("SSE read timed out") ctl.abort(err) - void reader.cancel(err) + reader.cancel(err).catch(() => {}) reject(err) }, ms) diff --git a/packages/opencode/test/server/httpapi-v2-pty.test.ts b/packages/opencode/test/server/httpapi-v2-pty.test.ts index ef05dfe1e..ea4b02dc8 100644 --- a/packages/opencode/test/server/httpapi-v2-pty.test.ts +++ b/packages/opencode/test/server/httpapi-v2-pty.test.ts @@ -81,7 +81,7 @@ describe("v2 pty HttpApi", () => { expect(body.data.title).toBe("v2") // The canonical surface keeps exited sessions observable with their exit code. - const deadline = Date.now() + 5_000 + const deadline = Date.now() + 20_000 let info: { status: string; exitCode?: number } | undefined while (Date.now() < deadline) { const found = await request(`/api/pty/${body.data.id}`, tmp.path) From 50efc055de282e0e54a87ccebb8e2054cc45efd2 Mon Sep 17 00:00:00 2001 From: Victor Navarro Date: Wed, 2 Sep 2026 17:52:15 +0200 Subject: [PATCH 228/271] feat(console): keep migrated teams on the new Console (#46830) --- infra/console.ts | 10 ++++ packages/console/app/src/context/auth.ts | 19 ++++++- .../console/app/src/lib/inference-proxy.ts | 55 +++++++++++++++++++ packages/console/app/src/middleware.ts | 10 +++- .../workspace/[id]/billing/reload-section.tsx | 34 +++++++----- .../routes/workspace/[id]/model-section.tsx | 2 +- 6 files changed, 112 insertions(+), 18 deletions(-) create mode 100644 packages/console/app/src/lib/inference-proxy.ts diff --git a/infra/console.ts b/infra/console.ts index 79556f5e0..764807d97 100644 --- a/infra/console.ts +++ b/infra/console.ts @@ -221,6 +221,15 @@ const STRIPE_PUBLISHABLE_KEY = new sst.Secret("STRIPE_PUBLISHABLE_KEY") const AUTH_API_URL = new sst.Linkable("AUTH_API_URL", { properties: { value: auth.url.apply((url) => url!) }, }) +// Preview branches have independent databases; do not send their workspaces to shared dev. +const migrationDomain = + $app.stage === "production" ? "opencode.ai" : $app.stage === "dev" ? "dev.opencode.ai" : undefined +const consoleMigration = new sst.Linkable("ConsoleMigration", { + properties: { + consoleUrl: migrationDomain ? `https://${migrationDomain}/console` : "", + inferenceUrl: migrationDomain ? `https://${migrationDomain}/inference` : "", + }, +}) const STRIPE_WEBHOOK_SECRET = new sst.Linkable("STRIPE_WEBHOOK_SECRET", { properties: { value: stripeWebhook.secret }, }) @@ -255,6 +264,7 @@ new sst.cloudflare.x.SolidStart("Console", { SECRET.UpstashRedisRestUrl, SECRET.UpstashRedisRestToken, AUTH_API_URL, + consoleMigration, STRIPE_WEBHOOK_SECRET, SECRET.SupportApiKey, DISCORD_INCIDENT_WEBHOOK_URL, diff --git a/packages/console/app/src/context/auth.ts b/packages/console/app/src/context/auth.ts index aed07a630..90669d764 100644 --- a/packages/console/app/src/context/auth.ts +++ b/packages/console/app/src/context/auth.ts @@ -1,6 +1,7 @@ import { getRequestEvent } from "solid-js/web" import { and, Database, eq, inArray, isNull, sql } from "@opencode-ai/console-core/drizzle/index.js" import { UserTable } from "@opencode-ai/console-core/schema/user.sql.js" +import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js" import { redirect } from "@solidjs/router" import { Actor } from "@opencode-ai/console-core/actor.js" @@ -79,8 +80,15 @@ export const getActor = async (workspace?: string): Promise => { if (accounts.length) { const user = await Database.use((tx) => tx - .select() + .select({ + id: UserTable.id, + workspaceID: UserTable.workspaceID, + accountID: UserTable.accountID, + role: UserTable.role, + migratedAt: WorkspaceTable.migrated_at, + }) .from(UserTable) + .innerJoin(WorkspaceTable, eq(WorkspaceTable.id, UserTable.workspaceID)) .where( and( eq(UserTable.workspaceID, workspace), @@ -93,6 +101,15 @@ export const getActor = async (workspace?: string): Promise => { .then((x) => x[0]), ) if (user) { + if (user.migratedAt) { + const destination = Resource.ConsoleMigration.consoleUrl + if (!destination) throw new Error("New Console URL is not configured") + evt.response.headers.set("Cache-Control", "no-store") + throw redirect(`${destination}/login`, { + status: evt.request.method === "GET" || evt.request.method === "HEAD" ? 302 : 303, + headers: { "Cache-Control": "no-store" }, + }) + } await Database.use((tx) => tx .update(UserTable) diff --git a/packages/console/app/src/lib/inference-proxy.ts b/packages/console/app/src/lib/inference-proxy.ts new file mode 100644 index 000000000..a6614e80f --- /dev/null +++ b/packages/console/app/src/lib/inference-proxy.ts @@ -0,0 +1,55 @@ +import { Resource } from "@opencode-ai/console-resource" +import { Database, eq } from "@opencode-ai/console-core/drizzle/index.js" +import { KeyTable } from "@opencode-ai/console-core/schema/key.sql.js" +import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js" + +const paths: Record = { + "GET /zen/v1/models": "/openai/v1/models", + "POST /zen/v1/chat/completions": "/openai/v1/chat/completions", + "POST /zen/v1/responses": "/openai/v1/responses", + "POST /zen/v1/messages": "/anthropic/v1/messages", +} + +export async function proxyInference(request: Request, clientIP?: string): Promise { + const url = new URL(request.url) + const path = + paths[`${request.method} ${url.pathname}`] ?? + (request.method === "POST" && + /^\/zen\/v1\/models\/[^/]+:(?:generateContent|streamGenerateContent)$/.test(url.pathname) + ? url.pathname.replace("/zen/v1/models/", "/google/v1beta/models/") + : undefined) + if (!path) return undefined + + const key = path.startsWith("/anthropic/") + ? request.headers.get("x-api-key") + : path.startsWith("/google/") + ? request.headers.get("x-goog-api-key") + : request.headers.get("authorization")?.split(" ")[1] + if (!key || key === "public") return undefined + + // Routing only; the destination owns authentication and revocation after cutover. + const workspace = await Database.use((tx) => + tx + .select({ migratedAt: WorkspaceTable.migrated_at }) + .from(KeyTable) + .innerJoin(WorkspaceTable, eq(WorkspaceTable.id, KeyTable.workspaceID)) + .where(eq(KeyTable.key, key)) + .limit(1) + .then((rows) => rows[0]), + ) + if (!workspace?.migratedAt) return undefined + + const destination = new URL(Resource.ConsoleMigration.inferenceUrl) + destination.pathname = `${destination.pathname.replace(/\/$/, "")}${path}` + destination.search = url.search + destination.hash = "" + + const forwarded = new Request(destination, request) + forwarded.headers.set("authorization", `Bearer ${key}`) + const ip = request.headers.get("cf-connecting-ip") ?? clientIP + if (ip) forwarded.headers.set("x-real-ip", ip) + const requestID = request.headers.get("x-opencode-request-id") ?? request.headers.get("x-opencode-request") + if (requestID) forwarded.headers.set("x-opencode-request-id", requestID) + + return fetch(forwarded, { redirect: "error" }) +} diff --git a/packages/console/app/src/middleware.ts b/packages/console/app/src/middleware.ts index d7b4f066c..e768afa4f 100644 --- a/packages/console/app/src/middleware.ts +++ b/packages/console/app/src/middleware.ts @@ -2,9 +2,10 @@ import { createMiddleware } from "@solidjs/start/middleware" import { LOCALE_HEADER, cookie, fromPathname, strip } from "~/lib/language" import { normalizeReferralCode, referralCookie } from "~/lib/referral-invite" import { sanitizeServerActionRequest } from "~/lib/server-action" +import { proxyInference } from "~/lib/inference-proxy" export default createMiddleware({ - onRequest(event) { + async onRequest(event) { event.request = sanitizeServerActionRequest(event.request) const url = new URL(event.request.url) @@ -19,5 +20,12 @@ export default createMiddleware({ const referralCode = normalizeReferralCode(url.searchParams.get("ref")) if (referralCode) event.response.headers.append("set-cookie", referralCookie(referralCode)) + + return proxyInference(event.request, event.clientAddress).catch(() => + Response.json( + { error: { type: "api_error", message: "Inference routing is unavailable. Please retry later." } }, + { status: 503, headers: { "Cache-Control": "no-store" } }, + ), + ) }, }) diff --git a/packages/console/app/src/routes/workspace/[id]/billing/reload-section.tsx b/packages/console/app/src/routes/workspace/[id]/billing/reload-section.tsx index c9a72c087..f1b9bb933 100644 --- a/packages/console/app/src/routes/workspace/[id]/billing/reload-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/billing/reload-section.tsx @@ -38,21 +38,25 @@ const setReload = action(async (form: FormData) => { } return json( - await Database.use((tx) => - tx - .update(BillingTable) - .set({ - reload: reloadValue, - ...(reloadAmount !== null ? { reloadAmount } : {}), - ...(reloadTrigger !== null ? { reloadTrigger } : {}), - ...(reloadValue - ? { - reloadError: null, - timeReloadError: null, - } - : {}), - }) - .where(eq(BillingTable.workspaceID, workspaceID)), + await withActor( + () => + Database.use((tx) => + tx + .update(BillingTable) + .set({ + reload: reloadValue, + ...(reloadAmount !== null ? { reloadAmount } : {}), + ...(reloadTrigger !== null ? { reloadTrigger } : {}), + ...(reloadValue + ? { + reloadError: null, + timeReloadError: null, + } + : {}), + }) + .where(eq(BillingTable.workspaceID, workspaceID)), + ), + workspaceID, ), { revalidate: queryBillingInfo.key }, ) diff --git a/packages/console/app/src/routes/workspace/[id]/model-section.tsx b/packages/console/app/src/routes/workspace/[id]/model-section.tsx index 96c91889c..433e0f986 100644 --- a/packages/console/app/src/routes/workspace/[id]/model-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/model-section.tsx @@ -88,7 +88,7 @@ const updateModel = action(async (form: FormData) => { if (!workspaceID) return { error: formError.workspaceRequired } const enabled = (form.get("enabled") as string | null) === "true" return json( - withActor(async () => { + await withActor(async () => { if (enabled) { await Model.disable({ model }) } else { From 77aec36da1a5fcd0e652f45aec2db49cbf1081f4 Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 3 Sep 2026 00:04:37 +0800 Subject: [PATCH 229/271] feat(console): add Muse Spark 1.3 and Gemini 3.8 Flash (#46836) --- .../app/src/component/limits-graph.tsx | 4 +-- .../console/app/src/lib/request-country.ts | 7 ++++- packages/console/app/src/routes/go/index.css | 2 +- packages/console/app/src/routes/go/index.tsx | 8 +++++ .../routes/workspace/[id]/go/lite-section.tsx | 1 + .../app/src/routes/zen/util/handler.ts | 3 +- .../src/routes/zen/util/trainingConsent.ts | 3 ++ .../console/app/test/museSparkPolicy.test.ts | 31 +++++++++++++++++++ packages/web/src/content/docs/ar/go.mdx | 7 +++++ packages/web/src/content/docs/ar/zen.mdx | 6 ++++ packages/web/src/content/docs/bs/go.mdx | 7 +++++ packages/web/src/content/docs/bs/zen.mdx | 6 ++++ packages/web/src/content/docs/da/go.mdx | 7 +++++ packages/web/src/content/docs/da/zen.mdx | 6 ++++ packages/web/src/content/docs/de/go.mdx | 7 +++++ packages/web/src/content/docs/de/zen.mdx | 6 ++++ packages/web/src/content/docs/es/go.mdx | 7 +++++ packages/web/src/content/docs/es/zen.mdx | 6 ++++ packages/web/src/content/docs/fr/go.mdx | 7 +++++ packages/web/src/content/docs/fr/zen.mdx | 6 ++++ packages/web/src/content/docs/go.mdx | 7 +++++ packages/web/src/content/docs/it/go.mdx | 7 +++++ packages/web/src/content/docs/it/zen.mdx | 6 ++++ packages/web/src/content/docs/ja/go.mdx | 7 +++++ packages/web/src/content/docs/ja/zen.mdx | 6 ++++ packages/web/src/content/docs/ko/go.mdx | 7 +++++ packages/web/src/content/docs/ko/zen.mdx | 6 ++++ packages/web/src/content/docs/nb/go.mdx | 7 +++++ packages/web/src/content/docs/nb/zen.mdx | 6 ++++ packages/web/src/content/docs/pl/go.mdx | 7 +++++ packages/web/src/content/docs/pl/zen.mdx | 6 ++++ packages/web/src/content/docs/pt-br/go.mdx | 7 +++++ packages/web/src/content/docs/pt-br/zen.mdx | 6 ++++ packages/web/src/content/docs/ru/go.mdx | 7 +++++ packages/web/src/content/docs/ru/zen.mdx | 6 ++++ packages/web/src/content/docs/th/go.mdx | 7 +++++ packages/web/src/content/docs/th/zen.mdx | 6 ++++ packages/web/src/content/docs/tr/go.mdx | 7 +++++ packages/web/src/content/docs/tr/zen.mdx | 6 ++++ packages/web/src/content/docs/zen.mdx | 6 ++++ packages/web/src/content/docs/zh-cn/go.mdx | 7 +++++ packages/web/src/content/docs/zh-cn/zen.mdx | 6 ++++ packages/web/src/content/docs/zh-tw/go.mdx | 7 +++++ packages/web/src/content/docs/zh-tw/zen.mdx | 6 ++++ 44 files changed, 288 insertions(+), 5 deletions(-) create mode 100644 packages/console/app/src/routes/zen/util/trainingConsent.ts create mode 100644 packages/console/app/test/museSparkPolicy.test.ts diff --git a/packages/console/app/src/component/limits-graph.tsx b/packages/console/app/src/component/limits-graph.tsx index 376e23f9c..9fc15b359 100644 --- a/packages/console/app/src/component/limits-graph.tsx +++ b/packages/console/app/src/component/limits-graph.tsx @@ -54,7 +54,7 @@ export function LimitsGraph(props: { href: string }) { { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", req: 7600 }, { id: "longcat-2.0", name: "LongCat-2.0", req: 11400 }, { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100 }, - { id: "muse-spark-1.2-contributor", name: "Muse Spark 1.2 Contributor", req: 45300, edge: true }, + { id: "muse-spark-1.3-contributor", name: "Muse Spark 1.3 Contributor", req: 45300, edge: true }, ].map((model, index) => ({ ...model, d: `${50 + index * 25}ms` })) const bonuses = graph.filter((model) => model.baseReq) @@ -232,7 +232,7 @@ export function LimitsGraph(props: { href: string }) { {"infinite" in m ? "\u221e" : m.req.toLocaleString()} )} {m.name} - {m.id === "muse-spark-1.2-contributor" && ( + {m.id === "muse-spark-1.3-contributor" && ( ( diff --git a/packages/console/app/src/lib/request-country.ts b/packages/console/app/src/lib/request-country.ts index 2eb2e22d6..5806fc2f6 100644 --- a/packages/console/app/src/lib/request-country.ts +++ b/packages/console/app/src/lib/request-country.ts @@ -31,7 +31,12 @@ export function countryFromRequest(request: Request | undefined) { export function isModelCountryRestricted(model: string, country: string | undefined) { return ( - ["muse-spark-1.2-contributor", "muse-spark-1.2-contributor-free"].includes(model) && + [ + "muse-spark-1.3-contributor", + "muse-spark-1.3-contributor-free", + "muse-spark-1.2-contributor", + "muse-spark-1.2-contributor-free", + ].includes(model) && country !== undefined && MUSE_SPARK_BLOCKED_COUNTRIES.has(country.toUpperCase()) ) diff --git a/packages/console/app/src/routes/go/index.css b/packages/console/app/src/routes/go/index.css index 724fa381e..8193441c9 100644 --- a/packages/console/app/src/routes/go/index.css +++ b/packages/console/app/src/routes/go/index.css @@ -1035,7 +1035,7 @@ body { gap: 3px 8px; } - &[data-model="muse-spark-1.2-contributor"] { + &[data-model="muse-spark-1.3-contributor"] { transform: translateY(11px); [data-regions] { diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index 6b356ccaf..72fc71a3b 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -43,6 +43,7 @@ const models = [ { name: "Qwen3.6 Plus", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "MiniMax M3", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "MiniMax M2.7", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, + { name: "Muse Spark 1.3 Contributor", training: "go.faq.a5.used", retention: "go.faq.a5.notZdr" }, { name: "Muse Spark 1.2 Contributor", training: "go.faq.a5.used", retention: "go.faq.a5.notZdr" }, { name: "DeepSeek V4 Pro", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "DeepSeek V4 Flash", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, @@ -331,6 +332,13 @@ export default function Home() { .

      +

      + Muse Spark 1.3 Contributor: {i18n.t("go.faq.a5.museRetention")}{" "} + + {i18n.t("go.faq.a5.learnMore")} + + . +

      Muse Spark 1.2 Contributor: {i18n.t("go.faq.a5.museRetention")}{" "} diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index 3a0ebe361..35cdd500c 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -652,6 +652,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {

    • LongCat-2.0
    • MiniMax M3
    • MiniMax M2.7
    • +
    • Muse Spark 1.3 Contributor
    • Muse Spark 1.2 Contributor
    • Qwen3.8 Max
    • Qwen3.8 Flash
    • diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index ae129018b..6f24c8e4b 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -49,6 +49,7 @@ import { Workspace } from "@opencode-ai/console-core/workspace.js" import { countryFromRequest, isModelCountryRestricted } from "~/lib/request-country" import { isPeakPricing } from "./pricing" import { prepareRequestBody } from "./requestBody" +import { requiresGoTrainingConsent } from "./trainingConsent" type ZenData = Awaited> type PreparedBody = Awaited> @@ -125,7 +126,7 @@ export async function handler( if ( authInfo && opts.modelList === "lite" && - modelInfo.id === "muse-spark-1.2-contributor" && + requiresGoTrainingConsent(modelInfo.id) && !authInfo.allowTraining ) throw new DataPolicyError( diff --git a/packages/console/app/src/routes/zen/util/trainingConsent.ts b/packages/console/app/src/routes/zen/util/trainingConsent.ts new file mode 100644 index 000000000..adb726f97 --- /dev/null +++ b/packages/console/app/src/routes/zen/util/trainingConsent.ts @@ -0,0 +1,3 @@ +export function requiresGoTrainingConsent(model: string) { + return ["muse-spark-1.3-contributor", "muse-spark-1.2-contributor"].includes(model) +} diff --git a/packages/console/app/test/museSparkPolicy.test.ts b/packages/console/app/test/museSparkPolicy.test.ts new file mode 100644 index 000000000..e1d92b704 --- /dev/null +++ b/packages/console/app/test/museSparkPolicy.test.ts @@ -0,0 +1,31 @@ +import { describe, expect, test } from "bun:test" +import { isModelCountryRestricted } from "../src/lib/request-country" +import { requiresGoTrainingConsent } from "../src/routes/zen/util/trainingConsent" + +describe("Muse Spark model policies", () => { + test.each([ + "muse-spark-1.3-contributor", + "muse-spark-1.3-contributor-free", + "muse-spark-1.2-contributor", + "muse-spark-1.2-contributor-free", + ])("restricts %s in blocked countries", (model) => { + expect(isModelCountryRestricted(model, "CN")).toBe(true) + expect(isModelCountryRestricted(model, "US")).toBe(false) + }) + + test("does not apply the country restriction to similar model IDs", () => { + expect(isModelCountryRestricted("muse-spark-1.3-contributor-preview", "CN")).toBe(false) + }) + + test.each(["muse-spark-1.3-contributor", "muse-spark-1.2-contributor"])( + "requires Go training consent for %s", + (model) => { + expect(requiresGoTrainingConsent(model)).toBe(true) + }, + ) + + test("does not require Go training consent for the free or similar model IDs", () => { + expect(requiresGoTrainingConsent("muse-spark-1.3-contributor-free")).toBe(false) + expect(requiresGoTrainingConsent("muse-spark-1.3-contributor-preview")).toBe(false) + }) +}) diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index f927fce25..fff712bd6 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -63,6 +63,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([مناطق محدودة](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([مناطق محدودة](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -107,6 +108,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -133,6 +135,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر - DeepSeek V4 Flash Vision Exp — ‏410 input، و71,300 cached، و310 output tokens لكل طلب - MiniMax M3 — ‏510 input، و56,000 cached، و190 output tokens لكل طلب - MiniMax M2.7 — ‏300 input، و55,000 cached، و125 output tokens لكل طلب +- Muse Spark 1.3 Contributor — ‏620 input، و71,400 cached، و300 output tokens لكل طلب - Muse Spark 1.2 Contributor — ‏620 input، و71,400 cached، و300 output tokens لكل طلب - Qwen3.8 Max — ‏420 input، و66,000 cached، و200 output tokens لكل طلب - Qwen3.8 Flash — ‏600 input، و58,000 cached، و200 output tokens لكل طلب @@ -165,6 +168,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -238,6 +242,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -284,6 +289,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | غير مستخدَمة | 0 أيام | | MiniMax M3 | غير مستخدَمة | 0 أيام | | MiniMax M2.7 | غير مستخدَمة | 0 أيام | +| Muse Spark 1.3 Contributor | نعم | ليست ZDR | | Muse Spark 1.2 Contributor | نعم | ليست ZDR | | DeepSeek V4 Pro | غير مستخدَمة | 0 أيام | | DeepSeek V4 Flash | غير مستخدَمة | 0 أيام | @@ -293,6 +299,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** تعطّل ZDR ميزات API مهمة تعتمد على البيانات المخزنة، بما في ذلك Responses API ذات الحالة، وFiles and Collections، وBatch API. [اعرف المزيد](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** تُنشأ سجلات مراقبة إساءة الاستخدام لكل استخدام لميزات API، ويُحتفظ بها لمدة تصل إلى 30 يومًا. [اعرف المزيد](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** أسعار توكنات مخفّضة للغاية مقابل منح الإذن باستخدام مطالباتك وإكمالات النموذج لتدريب نماذج Meta المستقبلية. يقتصر التوفر على المناطق التي تسمح بها [سياسة الاستخدام الجغرافي](https://ai.developer.meta.com/legal/geographic-use-policy) الخاصة بـ Meta. [اعرف المزيد](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** أسعار توكنات مخفّضة للغاية مقابل منح الإذن باستخدام مطالباتك وإكمالات النموذج لتدريب نماذج Meta المستقبلية. يقتصر التوفر على المناطق التي تسمح بها [سياسة الاستخدام الجغرافي](https://ai.developer.meta.com/legal/geographic-use-policy) الخاصة بـ Meta. [اعرف المزيد](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** تُجدَّد اتفاقية ZDR شهريًا. الاتفاقية الحالية سارية حتى 31 أغسطس 2026. diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index 588fc5e2a..0fc9c6f83 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -86,6 +86,7 @@ OpenCode Zen هي بوابة AI تتيح لك الوصول إلى هذه الن | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -117,6 +118,7 @@ OpenCode Zen هي بوابة AI تتيح لك الوصول إلى هذه الن | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | يستخدم [معرّف النموذج](/docs/config/#models) في إعدادات OpenCode الصيغة `opencode/`. على سبيل المثال، بالنسبة إلى GPT 5.5، ستستخدم `opencode/gpt-5.5` في إعداداتك. @@ -144,6 +146,7 @@ https://opencode.ai/zen/v1/models | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -175,6 +178,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -231,6 +235,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Nemotron 3.5 Lightning Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Big Pickle نموذج خفي ومتاح مجانا على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. +- Muse Spark 1.3 Contributor Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج. - Muse Spark 1.2 Contributor Free متاح على OpenCode لفترة محدودة. يستخدم الفريق هذه الفترة لجمع الملاحظات وتحسين النموذج.
      تواصل معنا إذا كانت لديك أي أسئلة. @@ -289,6 +294,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3.5 Lightning Free (نقاط نهاية NVIDIA المجانية): للاستخدام التجريبي فقط — لا ترسل بيانات شخصية أو سرية. يُسجَّل استخدامك لأغراض أمنية ولتحسين منتجات وخدمات NVIDIA. بيانات الجلسة المُسجَّلة لأغراض التحسين غير مرتبطة بهويتك أو بأي مُعرِّف دائم. لمزيد من المعلومات حول ممارسات معالجة البيانات لدينا، راجع [سياسة الخصوصية](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). بتفاعلك مع نقطة النهاية هذه، فإنك توافق على جمعنا لهذه المعلومات وتسجيلها واستخدامها وعلى [شروط خدمة النسخة التجريبية من واجهة NVIDIA API](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: يتم الاحتفاظ بالطلبات لمدة 30 يوما وفقا لـ [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: يتم الاحتفاظ بالطلبات لمدة 30 يوما وفقا لـ [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free: أسعار توكنات مخفّضة للغاية مقابل منح الإذن باستخدام مطالباتك وإكمالاتك لتدريب نماذج Meta المستقبلية. [اعرف المزيد](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: أسعار توكنات مخفّضة للغاية مقابل منح الإذن باستخدام مطالباتك وإكمالاتك لتدريب نماذج Meta المستقبلية. [اعرف المزيد](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index 08792e787..d6e8034bb 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -73,6 +73,7 @@ Trenutna lista modela uključuje: - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([ograničene regije](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([ograničene regije](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -117,6 +118,7 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -143,6 +145,7 @@ Procjene se zasnivaju na zapaženim obrascima zahtjeva: - DeepSeek V4 Flash Vision Exp — 410 ulaznih, 71,300 keširanih, 310 izlaznih tokena po zahtjevu - MiniMax M3 — 510 ulaznih, 56,000 keširanih, 190 izlaznih tokena po zahtjevu - MiniMax M2.7 — 300 ulaznih, 55,000 keširanih, 125 izlaznih tokena po zahtjevu +- Muse Spark 1.3 Contributor — 620 ulaznih, 71,400 keširanih, 300 izlaznih tokena po zahtjevu - Muse Spark 1.2 Contributor — 620 ulaznih, 71,400 keširanih, 300 izlaznih tokena po zahtjevu - Qwen3.8 Max — 420 ulaznih, 66,000 keširanih, 200 izlaznih tokena po zahtjevu - Qwen3.8 Flash — 600 ulaznih, 58,000 keširanih, 200 izlaznih tokena po zahtjevu @@ -175,6 +178,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -250,6 +254,7 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -298,6 +303,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Ne koristi se | 0 dana | | MiniMax M3 | Ne koristi se | 0 dana | | MiniMax M2.7 | Ne koristi se | 0 dana | +| Muse Spark 1.3 Contributor | Da | Nije ZDR | | Muse Spark 1.2 Contributor | Da | Nije ZDR | | DeepSeek V4 Pro | Ne koristi se | 0 dana | | DeepSeek V4 Flash | Ne koristi se | 0 dana | @@ -307,6 +313,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR onemogućava važne API funkcije koje zavise od pohranjenih podataka, uključujući Responses API s očuvanjem stanja, Files and Collections i Batch API. [Saznajte više](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Zapisi o nadzoru zloupotrebe generišu se za svako korištenje API funkcija i čuvaju do 30 dana. [Saznajte više](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** Znatno snižene cijene tokena u zamjenu za dopuštenje da se vaši promptovi i odgovori modela koriste za treniranje budućih Meta modela. Dostupnost je ograničena na regije dopuštene [Pravilima geografskog korištenja](https://ai.developer.meta.com/legal/geographic-use-policy) kompanije Meta. [Saznajte više](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** Znatno snižene cijene tokena u zamjenu za dopuštenje da se vaši promptovi i odgovori modela koriste za treniranje budućih Meta modela. Dostupnost je ograničena na regije dopuštene [Pravilima geografskog korištenja](https://ai.developer.meta.com/legal/geographic-use-policy) kompanije Meta. [Saznajte više](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** ZDR sporazum obnavlja se mjesečno. Trenutni sporazum važi do 31. augusta 2026. diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index 2799c460f..7d511c8e5 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -91,6 +91,7 @@ Našim modelima možete pristupiti i preko sljedećih API endpointa. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -122,6 +123,7 @@ Našim modelima možete pristupiti i preko sljedećih API endpointa. | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | [model id](/docs/config/#models) u vašoj OpenCode konfiguraciji koristi format @@ -151,6 +153,7 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -182,6 +185,7 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -238,6 +242,7 @@ Besplatni modeli: - Nemotron 3 Ultra Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Nemotron 3.5 Lightning Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Big Pickle je stealth model koji je besplatan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. +- Muse Spark 1.3 Contributor Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. - Muse Spark 1.2 Contributor Free je dostupan na OpenCode ograničeno vrijeme. Tim koristi ovo vrijeme da prikupi povratne informacije i poboljša model. Kontaktirajte nas ako imate bilo kakvih pitanja. @@ -301,6 +306,7 @@ i ne koriste vaše podatke za treniranje modela, uz sljedeće izuzetke: - Nemotron 3.5 Lightning Free (besplatni NVIDIA endpointi): Samo za probnu upotrebu — nemojte slati lične ili povjerljive podatke. Vaše korištenje se bilježi radi sigurnosti i poboljšanja NVIDIA proizvoda i usluga. Zabilježeni podaci sesije koji se koriste u svrhu poboljšanja nisu povezani s vašim identitetom niti bilo kojim trajnim identifikatorom. Za više informacija o našim praksama obrade podataka pogledajte našu [Politiku privatnosti](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interakcijom s ovim endpointom pristajete na naše prikupljanje, bilježenje i korištenje takvih informacija te na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Requests are retained for 30 days in accordance with [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: Requests are retained for 30 days in accordance with [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free: Znatno snižene cijene tokena u zamjenu za dozvolu da se vaši promptovi i odgovori koriste za treniranje budućih Meta modela. [Saznajte više](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: Znatno snižene cijene tokena u zamjenu za dozvolu da se vaši promptovi i odgovori koriste za treniranje budućih Meta modela. [Saznajte više](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index efcddab11..a4d33dd2e 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -73,6 +73,7 @@ Den nuværende liste over modeller inkluderer: - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([begrænsede regioner](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([begrænsede regioner](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -117,6 +118,7 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -143,6 +145,7 @@ Estimaterne er baseret på observerede anmodningsmønstre: - DeepSeek V4 Flash Vision Exp — 410 input, 71.300 cachelagrede, 310 output-tokens pr. anmodning - MiniMax M3 — 510 input, 56.000 cachelagrede, 190 output-tokens pr. anmodning - MiniMax M2.7 — 300 input, 55.000 cachelagrede, 125 output-tokens pr. anmodning +- Muse Spark 1.3 Contributor — 620 input, 71.400 cachelagrede, 300 output-tokens pr. anmodning - Muse Spark 1.2 Contributor — 620 input, 71.400 cachelagrede, 300 output-tokens pr. anmodning - Qwen3.8 Max — 420 input, 66.000 cachelagrede, 200 output-tokens pr. anmodning - Qwen3.8 Flash — 600 input, 58.000 cachelagrede, 200 output-tokens pr. anmodning @@ -175,6 +178,7 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -250,6 +254,7 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -298,6 +303,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Ikke brugt | 0 dage | | MiniMax M3 | Ikke brugt | 0 dage | | MiniMax M2.7 | Ikke brugt | 0 dage | +| Muse Spark 1.3 Contributor | Ja | Ikke ZDR | | Muse Spark 1.2 Contributor | Ja | Ikke ZDR | | DeepSeek V4 Pro | Ikke brugt | 0 dage | | DeepSeek V4 Flash | Ikke brugt | 0 dage | @@ -307,6 +313,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR deaktiverer vigtige API-funktioner, der afhænger af lagrede data, herunder den tilstandsbevarende Responses API, Files and Collections og Batch API. [Læs mere](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logfiler til overvågning af misbrug genereres ved al brug af API-funktioner og opbevares i op til 30 dage. [Læs mere](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** Kraftigt nedsatte tokenpriser til gengæld for tilladelse til at bruge dine prompts og modelsvar til at træne fremtidige Meta-modeller. Tilgængeligheden er begrænset til regioner, der er tilladt i henhold til [politikken for geografisk brug](https://ai.developer.meta.com/legal/geographic-use-policy) fra Meta. [Læs mere](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** Kraftigt nedsatte tokenpriser til gengæld for tilladelse til at bruge dine prompts og modelsvar til at træne fremtidige Meta-modeller. Tilgængeligheden er begrænset til regioner, der er tilladt i henhold til [politikken for geografisk brug](https://ai.developer.meta.com/legal/geographic-use-policy) fra Meta. [Læs mere](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** ZDR-aftalen fornyes månedligt. Den nuværende aftale er gyldig til og med 31. august 2026. diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index 6d7b92d8e..74d7b6fff 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -91,6 +91,7 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -122,6 +123,7 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints. | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | [model id](/docs/config/#models) i din OpenCode-konfiguration @@ -151,6 +153,7 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -182,6 +185,7 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -238,6 +242,7 @@ De gratis modeller: - Nemotron 3 Ultra Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Nemotron 3.5 Lightning Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Big Pickle er en stealth-model, som er gratis på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. +- Muse Spark 1.3 Contributor Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. - Muse Spark 1.2 Contributor Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at indsamle feedback og forbedre modellen. Kontakt os, hvis du har spørgsmål. @@ -299,6 +304,7 @@ Alle vores modeller hostes i US. Vores udbydere følger en nul-opbevaringspoliti - Nemotron 3.5 Lightning Free (gratis NVIDIA-endpoints): Kun til prøvebrug — indsend ikke personlige eller fortrolige data. Din brug logges af sikkerhedshensyn og for at forbedre NVIDIAs produkter og tjenester. De loggede sessionsdata, der bruges til forbedringsformål, er ikke knyttet til din identitet eller nogen vedvarende identifikator. For mere information om vores databehandlingspraksis, se vores [privatlivspolitik](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved at interagere med dette endpoint giver du samtykke til vores indsamling, registrering og brug af sådanne oplysninger samt [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Anmodninger opbevares i 30 dage i overensstemmelse med [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: Anmodninger opbevares i 30 dage i overensstemmelse med [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free: Kraftigt nedsatte tokenpriser til gengæld for tilladelse til at bruge dine prompts og svar til at træne fremtidige Meta-modeller. [Læs mere](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: Kraftigt nedsatte tokenpriser til gengæld for tilladelse til at bruge dine prompts og svar til at træne fremtidige Meta-modeller. [Læs mere](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index f15dfd411..fa284e851 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -65,6 +65,7 @@ Die aktuelle Liste der Modelle umfasst: - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([begrenzte Regionen](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([begrenzte Regionen](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -109,6 +110,7 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -135,6 +137,7 @@ Die Schätzungen basieren auf beobachteten Anfragemustern: - DeepSeek V4 Flash Vision Exp — 410 Input-, 71.300 Cached-, 310 Output-Tokens pro Anfrage - MiniMax M3 — 510 Input-, 56.000 Cached-, 190 Output-Tokens pro Anfrage - MiniMax M2.7 — 300 Input-, 55.000 Cached-, 125 Output-Tokens pro Anfrage +- Muse Spark 1.3 Contributor — 620 Input-, 71.400 Cached-, 300 Output-Tokens pro Anfrage - Muse Spark 1.2 Contributor — 620 Input-, 71.400 Cached-, 300 Output-Tokens pro Anfrage - Qwen3.8 Max — 420 Input-, 66.000 Cached-, 200 Output-Tokens pro Anfrage - Qwen3.8 Flash — 600 Input-, 58.000 Cached-, 200 Output-Tokens pro Anfrage @@ -167,6 +170,7 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -240,6 +244,7 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -286,6 +291,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Nicht verwendet | 0 Tage | | MiniMax M3 | Nicht verwendet | 0 Tage | | MiniMax M2.7 | Nicht verwendet | 0 Tage | +| Muse Spark 1.3 Contributor | Ja | Kein ZDR | | Muse Spark 1.2 Contributor | Ja | Kein ZDR | | DeepSeek V4 Pro | Nicht verwendet | 0 Tage | | DeepSeek V4 Flash | Nicht verwendet | 0 Tage | @@ -295,6 +301,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR deaktiviert wichtige API-Funktionen, die von gespeicherten Daten abhängen, einschließlich der zustandsbehafteten Responses API, Files and Collections und der Batch API. [Mehr erfahren](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Für die Nutzung aller API-Funktionen werden Protokolle zur Missbrauchsüberwachung erstellt und bis zu 30 Tage lang aufbewahrt. [Mehr erfahren](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** Stark vergünstigte Tokenpreise im Gegenzug für die Erlaubnis, deine Prompts und Vervollständigungen zum Trainieren zukünftiger Meta-Modelle zu verwenden. Die Verfügbarkeit ist auf Regionen beschränkt, die gemäß der [Richtlinie zur geografischen Nutzung](https://ai.developer.meta.com/legal/geographic-use-policy) von Meta zulässig sind. [Mehr erfahren](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** Stark vergünstigte Tokenpreise im Gegenzug für die Erlaubnis, deine Prompts und Vervollständigungen zum Trainieren zukünftiger Meta-Modelle zu verwenden. Die Verfügbarkeit ist auf Regionen beschränkt, die gemäß der [Richtlinie zur geografischen Nutzung](https://ai.developer.meta.com/legal/geographic-use-policy) von Meta zulässig sind. [Mehr erfahren](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** Die ZDR-Vereinbarung wird monatlich erneuert. Die aktuelle Vereinbarung gilt bis einschließlich 31. August 2026. diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index 775c1c4bf..c50fbac77 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -82,6 +82,7 @@ Du kannst auch über die folgenden API-Endpunkte auf unsere Modelle zugreifen. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -113,6 +114,7 @@ Du kannst auch über die folgenden API-Endpunkte auf unsere Modelle zugreifen. | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | Die [Model-ID](/docs/config/#models) in deiner OpenCode-Konfiguration verwendet das Format `opencode/`. Für GPT 5.5 würdest du zum Beispiel `opencode/gpt-5.5` in deiner Konfiguration verwenden. @@ -140,6 +142,7 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -171,6 +174,7 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -227,6 +231,7 @@ Die kostenlosen Modelle: - Nemotron 3 Ultra Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Nemotron 3.5 Lightning Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Big Pickle ist ein Stealth-Modell, das für begrenzte Zeit kostenlos auf OpenCode verfügbar ist. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. +- Muse Spark 1.3 Contributor Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. - Muse Spark 1.2 Contributor Free ist für begrenzte Zeit auf OpenCode verfügbar. Das Team nutzt diese Zeit, um Feedback zu sammeln und das Modell zu verbessern. Kontaktiere uns, wenn du Fragen hast. @@ -285,6 +290,7 @@ Alle unsere Modelle werden in den USA gehostet. Unsere Provider folgen einer Zer - Nemotron 3.5 Lightning Free (kostenlose NVIDIA-Endpunkte): Nur für Testzwecke — übermitteln Sie keine personenbezogenen oder vertraulichen Daten. Ihre Nutzung wird zu Sicherheitszwecken und zur Verbesserung der Produkte und Dienste von NVIDIA protokolliert. Die zu Verbesserungszwecken protokollierten Sitzungsdaten sind nicht mit Ihrer Identität oder einem dauerhaften Identifikator verknüpft. Weitere Informationen zu unseren Datenverarbeitungspraktiken finden Sie in unserer [Datenschutzrichtlinie](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Durch die Interaktion mit diesem Endpunkt stimmen Sie unserer Erhebung, Aufzeichnung und Nutzung solcher Informationen sowie den [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) zu. - OpenAI APIs: Anfragen werden in Übereinstimmung mit [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) 30 Tage lang gespeichert. - Anthropic APIs: Anfragen werden in Übereinstimmung mit [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage) 30 Tage lang gespeichert. +- Muse Spark 1.3 Contributor Free: Stark vergünstigte Token-Preise im Austausch für die Erlaubnis, deine Prompts und Completions zum Trainieren zukünftiger Meta-Modelle zu verwenden. [Mehr erfahren](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: Stark vergünstigte Token-Preise im Austausch für die Erlaubnis, deine Prompts und Completions zum Trainieren zukünftiger Meta-Modelle zu verwenden. [Mehr erfahren](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index e32c3038d..8df4fa1f6 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -73,6 +73,7 @@ La lista actual de modelos incluye: - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([regiones limitadas](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([regiones limitadas](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -117,6 +118,7 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -143,6 +145,7 @@ Las estimaciones se basan en los patrones de peticiones observados: - DeepSeek V4 Flash Vision Exp — 410 tokens de entrada, 71,300 en caché, 310 tokens de salida por petición - MiniMax M3 — 510 tokens de entrada, 56,000 en caché, 190 tokens de salida por petición - MiniMax M2.7 — 300 tokens de entrada, 55,000 en caché, 125 tokens de salida por petición +- Muse Spark 1.3 Contributor — 620 tokens de entrada, 71,400 en caché, 300 tokens de salida por petición - Muse Spark 1.2 Contributor — 620 tokens de entrada, 71,400 en caché, 300 tokens de salida por petición - Qwen3.8 Max — 420 tokens de entrada, 66,000 en caché, 200 tokens de salida por petición - Qwen3.8 Flash — 600 tokens de entrada, 58,000 en caché, 200 tokens de salida por petición @@ -175,6 +178,7 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -250,6 +254,7 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -298,6 +303,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | No utilizado | 0 días | | MiniMax M3 | No utilizado | 0 días | | MiniMax M2.7 | No utilizado | 0 días | +| Muse Spark 1.3 Contributor | Sí | Sin ZDR | | Muse Spark 1.2 Contributor | Sí | Sin ZDR | | DeepSeek V4 Pro | No utilizado | 0 días | | DeepSeek V4 Flash | No utilizado | 0 días | @@ -307,6 +313,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR deshabilita funciones importantes de la API que dependen de datos almacenados, incluidas la Responses API con estado, Files and Collections y la Batch API. [Más información](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Se generan registros de supervisión de abusos para todo el uso de funciones de la API y se conservan durante un máximo de 30 días. [Más información](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** Precios de tokens muy reducidos a cambio de permitir que tus prompts y las respuestas generadas se utilicen para entrenar futuros modelos de Meta. La disponibilidad está limitada a las regiones permitidas por la [Política de uso geográfico](https://ai.developer.meta.com/legal/geographic-use-policy) de Meta. [Más información](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** Precios de tokens muy reducidos a cambio de permitir que tus prompts y las respuestas generadas se utilicen para entrenar futuros modelos de Meta. La disponibilidad está limitada a las regiones permitidas por la [Política de uso geográfico](https://ai.developer.meta.com/legal/geographic-use-policy) de Meta. [Más información](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** El acuerdo de ZDR se renueva mensualmente. El acuerdo actual es válido hasta el 31 de agosto de 2026. diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index 2be708275..83f0ef13d 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -91,6 +91,7 @@ También puedes acceder a nuestros modelos a través de los siguientes endpoints | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -122,6 +123,7 @@ También puedes acceder a nuestros modelos a través de los siguientes endpoints | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | El [identificador del modelo](/docs/config/#models) en tu configuración de OpenCode @@ -151,6 +153,7 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -182,6 +185,7 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -238,6 +242,7 @@ Los modelos gratuitos: - Nemotron 3 Ultra Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Nemotron 3.5 Lightning Free está disponible en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. - Big Pickle es un modelo stealth que es gratuito en OpenCode por tiempo limitado. El equipo está usando este tiempo para recopilar comentarios y mejorar el modelo. +- Muse Spark 1.3 Contributor Free está disponible en OpenCode por tiempo limitado. El equipo está aprovechando este período para recopilar comentarios y mejorar el modelo. - Muse Spark 1.2 Contributor Free está disponible en OpenCode por tiempo limitado. El equipo está aprovechando este período para recopilar comentarios y mejorar el modelo. Contáctanos si tienes alguna pregunta. @@ -299,6 +304,7 @@ Todos nuestros modelos están alojados en US. Nuestros proveedores siguen una po - Nemotron 3.5 Lightning Free (endpoints gratuitos de NVIDIA): Solo para uso de prueba — no envíes datos personales ni confidenciales. Tu uso se registra con fines de seguridad y para mejorar los productos y servicios de NVIDIA. Los datos de sesión registrados con fines de mejora no están vinculados a tu identidad ni a ningún identificador persistente. Para obtener más información sobre nuestras prácticas de procesamiento de datos, consulta nuestra [Política de privacidad](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Al interactuar con este endpoint, aceptas que recopilemos, registremos y usemos dicha información, así como los [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Las solicitudes se conservan durante 30 días de acuerdo con [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: Las solicitudes se conservan durante 30 días de acuerdo con [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free: Tarifas de tokens con grandes descuentos a cambio de permiso para usar tus prompts y respuestas para entrenar futuros modelos de Meta. [Más información](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: Tarifas de tokens con grandes descuentos a cambio de permiso para usar tus prompts y respuestas para entrenar futuros modelos de Meta. [Más información](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 6f08343c4..b9770115d 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -63,6 +63,7 @@ La liste actuelle des modèles comprend : - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([régions limitées](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([régions limitées](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -107,6 +108,7 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -133,6 +135,7 @@ Les estimations sont basées sur les schémas de requêtes observés : - DeepSeek V4 Flash Vision Exp — 410 tokens en entrée, 71,300 en cache, 310 tokens en sortie par requête - MiniMax M3 — 510 tokens en entrée, 56,000 en cache, 190 tokens en sortie par requête - MiniMax M2.7 — 300 tokens en entrée, 55,000 en cache, 125 tokens en sortie par requête +- Muse Spark 1.3 Contributor — 620 tokens en entrée, 71,400 en cache, 300 tokens en sortie par requête - Muse Spark 1.2 Contributor — 620 tokens en entrée, 71,400 en cache, 300 tokens en sortie par requête - Qwen3.8 Max — 420 tokens en entrée, 66,000 en cache, 200 tokens en sortie par requête - Qwen3.8 Flash — 600 tokens en entrée, 58,000 en cache, 200 tokens en sortie par requête @@ -165,6 +168,7 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -238,6 +242,7 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -284,6 +289,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Non utilisé | 0 jour | | MiniMax M3 | Non utilisé | 0 jour | | MiniMax M2.7 | Non utilisé | 0 jour | +| Muse Spark 1.3 Contributor | Oui | Pas de ZDR | | Muse Spark 1.2 Contributor | Oui | Pas de ZDR | | DeepSeek V4 Pro | Non utilisé | 0 jour | | DeepSeek V4 Flash | Non utilisé | 0 jour | @@ -293,6 +299,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** Le ZDR désactive d’importantes fonctionnalités API qui dépendent des données stockées, notamment Responses API avec état, Files and Collections et Batch API. [En savoir plus](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Des journaux de surveillance des abus sont générés pour toute utilisation des fonctionnalités API et conservés pendant un maximum de 30 jours. [En savoir plus](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** Des tarifs de tokens fortement réduits en échange de l’autorisation d’utiliser vos prompts et vos complétions pour entraîner de futurs modèles Meta. La disponibilité est limitée aux régions autorisées par la [Politique d’utilisation géographique](https://ai.developer.meta.com/legal/geographic-use-policy) de Meta. [En savoir plus](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** Des tarifs de tokens fortement réduits en échange de l’autorisation d’utiliser vos prompts et vos complétions pour entraîner de futurs modèles Meta. La disponibilité est limitée aux régions autorisées par la [Politique d’utilisation géographique](https://ai.developer.meta.com/legal/geographic-use-policy) de Meta. [En savoir plus](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** L’accord ZDR est renouvelé chaque mois. L’accord actuel est valable jusqu’au 31 août 2026. diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index 25465cc1d..fb7312af3 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -82,6 +82,7 @@ Vous pouvez également accéder à nos modèles via les points de terminaison AP | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -113,6 +114,7 @@ Vous pouvez également accéder à nos modèles via les points de terminaison AP | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | Le [model id](/docs/config/#models) dans votre configuration OpenCode utilise le format `opencode/`. Par exemple, pour GPT 5.5, vous utiliseriez `opencode/gpt-5.5` dans votre configuration. @@ -140,6 +142,7 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -171,6 +174,7 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -227,6 +231,7 @@ Les modèles gratuits : - Nemotron 3 Ultra Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Nemotron 3.5 Lightning Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Big Pickle est un modèle stealth gratuit sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. +- Muse Spark 1.3 Contributor Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. - Muse Spark 1.2 Contributor Free est disponible sur OpenCode pour une durée limitée. L'équipe utilise cette période pour recueillir des retours et améliorer le modèle. Contactez-nous si vous avez des questions. @@ -285,6 +290,7 @@ Tous nos modèles sont hébergés aux US. Nos fournisseurs suivent une politique - Nemotron 3.5 Lightning Free (endpoints NVIDIA gratuits) : Réservé à un usage d'essai — n'envoyez pas de données personnelles ou confidentielles. Votre utilisation est journalisée à des fins de sécurité et pour améliorer les produits et services de NVIDIA. Les données de session journalisées à des fins d'amélioration ne sont pas liées à votre identité ni à un quelconque identifiant persistant. Pour plus d'informations sur nos pratiques de traitement des données, consultez notre [Politique de confidentialité](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). En interagissant avec cet endpoint, vous consentez à notre collecte, à notre enregistrement et à notre utilisation de ces informations ainsi qu'aux [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs : Les requêtes sont conservées pendant 30 jours conformément à [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs : Les requêtes sont conservées pendant 30 jours conformément à [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free : Tarification des tokens fortement réduite en échange de l'autorisation d'utiliser vos prompts et complétions pour entraîner les futurs modèles Meta. [En savoir plus](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free : Tarification des tokens fortement réduite en échange de l'autorisation d'utiliser vos prompts et complétions pour entraîner les futurs modèles Meta. [En savoir plus](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index f6430f0c4..58bb121b7 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -73,6 +73,7 @@ The current list of models includes: - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([limited regions](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([limited regions](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -129,6 +130,7 @@ The table below provides an estimated request count based on typical Go usage pa | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -155,6 +157,7 @@ The estimates are based on observed request patterns: - DeepSeek V4 Flash Vision Exp — 410 input, 71,300 cached, 310 output tokens per request - MiniMax M3 — 510 input, 56,000 cached, 190 output tokens per request - MiniMax M2.7 — 300 input, 55,000 cached, 125 output tokens per request +- Muse Spark 1.3 Contributor — 620 input, 71,400 cached, 300 output tokens per request - Muse Spark 1.2 Contributor — 620 input, 71,400 cached, 300 output tokens per request - MiMo-V2.5 — 830 input, 71,500 cached, 295 output tokens per request - MiMo-V2.5-Pro — 790 input, 86,000 cached, 305 output tokens per request @@ -187,6 +190,7 @@ The estimates are also based on the following prices per 1M tokens and the month | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -262,6 +266,7 @@ You can also access Go models through the following API endpoints. | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -310,6 +315,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Not used | 0 days | | MiniMax M3 | Not used | 0 days | | MiniMax M2.7 | Not used | 0 days | +| Muse Spark 1.3 Contributor | Yes | Not ZDR | | Muse Spark 1.2 Contributor | Yes | Not ZDR | | DeepSeek V4 Pro | Not used | 0 days\* | | DeepSeek V4 Flash | Not used | 0 days\* | @@ -319,6 +325,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR disables important API features that depend on stored data, including the stateful Responses API, Files and Collections, and the Batch API. [Learn more](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Abuse monitoring logs are generated for all API feature usage and retained for up to 30 days. [Learn more](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** Heavily discounted token pricing in exchange for permission to use your prompts and completions to train future Meta models. Availability is limited to regions permitted by Meta's [Geographic Use Policy](https://ai.developer.meta.com/legal/geographic-use-policy). [Learn more](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** Heavily discounted token pricing in exchange for permission to use your prompts and completions to train future Meta models. Availability is limited to regions permitted by Meta's [Geographic Use Policy](https://ai.developer.meta.com/legal/geographic-use-policy). [Learn more](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek:** ZDR agreement is renewed monthly. The current agreement is valid through August 31, 2026. diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 10697cfb9..b4e294369 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -71,6 +71,7 @@ L'elenco attuale dei modelli include: - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([regioni limitate](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([regioni limitate](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -115,6 +116,7 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -141,6 +143,7 @@ Le stime si basano sui pattern di richieste osservati: - DeepSeek V4 Flash Vision Exp — 410 di input, 71.300 in cache, 310 token di output per richiesta - MiniMax M3 — 510 di input, 56.000 in cache, 190 token di output per richiesta - MiniMax M2.7 — 300 di input, 55.000 in cache, 125 token di output per richiesta +- Muse Spark 1.3 Contributor — 620 di input, 71.400 in cache, 300 token di output per richiesta - Muse Spark 1.2 Contributor — 620 di input, 71.400 in cache, 300 token di output per richiesta - Qwen3.8 Max — 420 di input, 66.000 in cache, 200 token di output per richiesta - Qwen3.8 Flash — 600 di input, 58.000 in cache, 200 token di output per richiesta @@ -173,6 +176,7 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -248,6 +252,7 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -296,6 +301,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Non utilizzato | 0 giorni | | MiniMax M3 | Non utilizzato | 0 giorni | | MiniMax M2.7 | Non utilizzato | 0 giorni | +| Muse Spark 1.3 Contributor | Sì | Non ZDR | | Muse Spark 1.2 Contributor | Sì | Non ZDR | | DeepSeek V4 Pro | Non utilizzato | 0 giorni | | DeepSeek V4 Flash | Non utilizzato | 0 giorni | @@ -305,6 +311,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR disabilita importanti funzionalità API che dipendono dai dati archiviati, tra cui la Responses API con stato, Files and Collections e Batch API. [Scopri di più](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** I log di monitoraggio degli abusi vengono generati per l'utilizzo di tutte le funzionalità API e conservati per un massimo di 30 giorni. [Scopri di più](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** Prezzi dei token fortemente scontati in cambio dell'autorizzazione a utilizzare i tuoi prompt e completamenti per addestrare futuri modelli Meta. La disponibilità è limitata alle regioni consentite dalla [Politica sull'uso geografico](https://ai.developer.meta.com/legal/geographic-use-policy) di Meta. [Scopri di più](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** Prezzi dei token fortemente scontati in cambio dell'autorizzazione a utilizzare i tuoi prompt e completamenti per addestrare futuri modelli Meta. La disponibilità è limitata alle regioni consentite dalla [Politica sull'uso geografico](https://ai.developer.meta.com/legal/geographic-use-policy) di Meta. [Scopri di più](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** L'accordo ZDR viene rinnovato mensilmente. L'accordo attuale è valido fino al 31 agosto 2026. diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index 6e9748a25..b2b5ee75e 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -91,6 +91,7 @@ Puoi anche accedere ai nostri modelli tramite i seguenti endpoint API. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -122,6 +123,7 @@ Puoi anche accedere ai nostri modelli tramite i seguenti endpoint API. | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | Il [model id](/docs/config/#models) nella config di OpenCode @@ -151,6 +153,7 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -182,6 +185,7 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -238,6 +242,7 @@ I modelli gratuiti: - Nemotron 3 Ultra Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Nemotron 3.5 Lightning Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Big Pickle è un modello stealth che è gratuito su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. +- Muse Spark 1.3 Contributor Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. - Muse Spark 1.2 Contributor Free è disponibile su OpenCode per un periodo limitato. Il team usa questo periodo per raccogliere feedback e migliorare il modello. Contattaci se hai domande. @@ -299,6 +304,7 @@ Tutti i nostri modelli sono ospitati negli US. I nostri provider seguono una pol - Nemotron 3.5 Lightning Free (endpoint NVIDIA gratuiti): solo per uso di prova — non inviare dati personali o riservati. Il tuo utilizzo viene registrato per finalità di sicurezza e per migliorare i prodotti e i servizi di NVIDIA. I dati di sessione registrati a fini di miglioramento non sono collegati alla tua identità né ad alcun identificatore persistente. Per maggiori informazioni sulle nostre pratiche di trattamento dei dati, consulta la nostra [Informativa sulla privacy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Interagendo con questo endpoint, acconsenti alla nostra raccolta, registrazione e utilizzo di tali informazioni e ai [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: le richieste vengono conservate per 30 giorni in conformità con [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: le richieste vengono conservate per 30 giorni in conformità con [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free: prezzi dei token fortemente scontati in cambio dell'autorizzazione a utilizzare i tuoi prompt e completamenti per addestrare i futuri modelli Meta. [Scopri di più](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: prezzi dei token fortemente scontati in cambio dell'autorizzazione a utilizzare i tuoi prompt e completamenti per addestrare i futuri modelli Meta. [Scopri di più](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index e8e83effc..bb2c59bf0 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -63,6 +63,7 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([一部の地域に限定](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([一部の地域に限定](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -107,6 +108,7 @@ OpenCode Goには以下の制限が含まれています: | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -133,6 +135,7 @@ OpenCode Goには以下の制限が含まれています: - DeepSeek V4 Flash Vision Exp — リクエストあたり 入力 410トークン、キャッシュ 71,300トークン、出力 310トークン - MiniMax M3 — リクエストあたり 入力 510トークン、キャッシュ 56,000トークン、出力 190トークン - MiniMax M2.7 — リクエストあたり 入力 300トークン、キャッシュ 55,000トークン、出力 125トークン +- Muse Spark 1.3 Contributor — リクエストあたり 入力 620トークン、キャッシュ 71,400トークン、出力 300トークン - Muse Spark 1.2 Contributor — リクエストあたり 入力 620トークン、キャッシュ 71,400トークン、出力 300トークン - Qwen3.8 Max — リクエストあたり 入力 420トークン、キャッシュ 66,000トークン、出力 200トークン - Qwen3.8 Flash — リクエストあたり 入力 600トークン、キャッシュ 58,000トークン、出力 200トークン @@ -165,6 +168,7 @@ OpenCode Goには以下の制限が含まれています: | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -238,6 +242,7 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -284,6 +289,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | 使用なし | 0日 | | MiniMax M3 | 使用なし | 0日 | | MiniMax M2.7 | 使用なし | 0日 | +| Muse Spark 1.3 Contributor | はい | ZDRではない | | Muse Spark 1.2 Contributor | はい | ZDRではない | | DeepSeek V4 Pro | 使用なし | 0日 | | DeepSeek V4 Flash | 使用なし | 0日 | @@ -293,6 +299,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDRでは、保存データに依存する重要なAPI機能(ステートフルなResponses API、Files and Collections、Batch APIなど)が無効になります。[詳しく見る](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 不正使用監視ログはすべてのAPI機能の使用時に生成され、最大30日間保持されます。[詳しく見る](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 +- **Muse Spark 1.3 Contributor:** 将来のMetaモデルのトレーニングにプロンプトと生成結果を使用する許可と引き換えに、トークン料金が大幅に割引されます。利用できるのは、Metaの[地域別利用ポリシー](https://ai.developer.meta.com/legal/geographic-use-policy)で許可されている地域に限られます。[詳しく見る](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - **Muse Spark 1.2 Contributor:** 将来のMetaモデルのトレーニングにプロンプトと生成結果を使用する許可と引き換えに、トークン料金が大幅に割引されます。利用できるのは、Metaの[地域別利用ポリシー](https://ai.developer.meta.com/legal/geographic-use-policy)で許可されている地域に限られます。[詳しく見る](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - **DeepSeek V4 Flash:** ZDR契約は毎月更新されます。現在の契約は2026年8月31日まで有効です。 diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index d13665c72..65d06b019 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -82,6 +82,7 @@ OpenCode Zen は、OpenCode のほかのプロバイダーと同じように動 | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -113,6 +114,7 @@ OpenCode Zen は、OpenCode のほかのプロバイダーと同じように動 | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | OpenCode 設定で使う [model id](/docs/config/#models) は `opencode/` 形式です。たとえば、GPT 5.5 では設定に `opencode/gpt-5.5` を使用します。 @@ -140,6 +142,7 @@ https://opencode.ai/zen/v1/models | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -171,6 +174,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -227,6 +231,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Nemotron 3.5 Lightning Free は期間限定で OpenCode で利用できます。チームはこの期間中にフィードバックを集め、モデルを改善しています。 - Big Pickle はステルスモデルで、期間限定で OpenCode で無料提供されています。チームはこの期間中にフィードバックを集め、モデルを改善しています。 +- Muse Spark 1.3 Contributor Free は期間限定で OpenCode で利用できます。チームはこの期間を活用してフィードバックを収集し、モデルを改善しています。 - Muse Spark 1.2 Contributor Free は期間限定で OpenCode で利用できます。チームはこの期間を活用してフィードバックを収集し、モデルを改善しています。 ご不明な点があれば、お問い合わせください。 @@ -285,6 +290,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3.5 Lightning Free(NVIDIA の無料エンドポイント): 試用専用です — 個人情報や機密データは送信しないでください。お客様の利用は、セキュリティ目的および NVIDIA の製品とサービスの改善のために記録されます。改善目的で記録されたセッションデータは、お客様の身元や永続的な識別子とは関連付けられません。当社のデータ処理慣行の詳細については、[プライバシーポリシー](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)をご覧ください。このエンドポイントを利用することで、お客様はそのような情報の当社による収集、記録、利用、および [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) に同意したものとみなされます。 - OpenAI APIs: リクエストは [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) に従って 30 日間保持されます。 - Anthropic APIs: リクエストは [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage) に従って 30 日間保持されます。 +- Muse Spark 1.3 Contributor Free: 将来の Meta モデルのトレーニングにプロンプトと生成結果を使用する許可と引き換えに、トークン料金が大幅に割引されます。[詳しく見る](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - Muse Spark 1.2 Contributor Free: 将来の Meta モデルのトレーニングにプロンプトと生成結果を使用する許可と引き換えに、トークン料金が大幅に割引されます。[詳しく見る](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 --- diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 5e4857073..f020348bc 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -63,6 +63,7 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([일부 지역에서만 제공](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([일부 지역에서만 제공](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -107,6 +108,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -133,6 +135,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. - DeepSeek V4 Flash Vision Exp — 요청당 입력 410, 캐시 71,300, 출력 토큰 310 - MiniMax M3 — 요청당 입력 510, 캐시 56,000, 출력 토큰 190 - MiniMax M2.7 — 요청당 입력 300, 캐시 55,000, 출력 토큰 125 +- Muse Spark 1.3 Contributor — 요청당 입력 620, 캐시 71,400, 출력 토큰 300 - Muse Spark 1.2 Contributor — 요청당 입력 620, 캐시 71,400, 출력 토큰 300 - Qwen3.8 Max — 요청당 입력 420, 캐시 66,000, 출력 토큰 200 - Qwen3.8 Flash — 요청당 입력 600, 캐시 58,000, 출력 토큰 200 @@ -165,6 +168,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -238,6 +242,7 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -284,6 +289,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | 사용되지 않음 | 0일 | | MiniMax M3 | 사용되지 않음 | 0일 | | MiniMax M2.7 | 사용되지 않음 | 0일 | +| Muse Spark 1.3 Contributor | 예 | ZDR 아님 | | Muse Spark 1.2 Contributor | 예 | ZDR 아님 | | DeepSeek V4 Pro | 사용되지 않음 | 0일 | | DeepSeek V4 Flash | 사용되지 않음 | 0일 | @@ -293,6 +299,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR은 저장된 데이터에 의존하는 중요한 API 기능(상태 저장형 Responses API, Files and Collections, Batch API 포함)을 비활성화합니다. [자세히 알아보기](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** 모든 API 기능 사용에 대해 악용 모니터링 로그가 생성되며 최대 30일 동안 보존됩니다. [자세히 알아보기](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** 향후 Meta 모델 학습에 사용자의 프롬프트와 생성 결과를 사용할 수 있도록 허용하는 대신 토큰 가격이 대폭 할인됩니다. Meta의 [지역별 사용 정책](https://ai.developer.meta.com/legal/geographic-use-policy)에서 허용하는 지역에서만 이용할 수 있습니다. [자세히 알아보기](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** 향후 Meta 모델 학습에 사용자의 프롬프트와 생성 결과를 사용할 수 있도록 허용하는 대신 토큰 가격이 대폭 할인됩니다. Meta의 [지역별 사용 정책](https://ai.developer.meta.com/legal/geographic-use-policy)에서 허용하는 지역에서만 이용할 수 있습니다. [자세히 알아보기](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** ZDR 계약은 매월 갱신됩니다. 현재 계약은 2026년 8월 31일까지 유효합니다. diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index 20a7235b1..3f5ab69d8 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -82,6 +82,7 @@ OpenCode Zen은 OpenCode의 다른 provider와 똑같이 작동합니다. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -113,6 +114,7 @@ OpenCode Zen은 OpenCode의 다른 provider와 똑같이 작동합니다. | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | OpenCode config에서 사용하는 [모델 ID](/docs/config/#models)는 `opencode/` 형식입니다. 예를 들어 GPT 5.5를 사용하려면 config에서 `opencode/gpt-5.5`를 사용하면 됩니다. @@ -140,6 +142,7 @@ https://opencode.ai/zen/v1/models | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -171,6 +174,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -227,6 +231,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Nemotron 3.5 Lightning Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. - Big Pickle은 한정된 기간 동안 OpenCode에서 무료로 제공되는 stealth model입니다. 팀은 이 기간에 피드백을 수집하고 모델을 개선합니다. +- Muse Spark 1.3 Contributor Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간을 활용해 피드백을 수집하고 모델을 개선하고 있습니다. - Muse Spark 1.2 Contributor Free는 한정된 기간 동안 OpenCode에서 제공됩니다. 팀은 이 기간을 활용해 피드백을 수집하고 모델을 개선하고 있습니다. 궁금한 점이 있으면 Contact us로 문의해 주세요. @@ -285,6 +290,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3.5 Lightning Free(NVIDIA 무료 엔드포인트): 평가판 전용이며 — 개인 정보나 기밀 데이터는 제출하지 마세요. 사용 내역은 보안 목적과 NVIDIA 제품 및 서비스 개선을 위해 기록됩니다. 개선 목적으로 기록된 세션 데이터는 사용자의 신원이나 영구 식별자와 연결되지 않습니다. 당사의 데이터 처리 관행에 대한 자세한 내용은 [개인정보처리방침](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)을 참조하세요. 이 엔드포인트와 상호 작용함으로써 사용자는 당사가 이러한 정보를 수집, 기록, 사용하는 것과 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)에 동의하게 됩니다. - OpenAI APIs: 요청은 [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data)에 따라 30일 동안 보관됩니다. - Anthropic APIs: 요청은 [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage)에 따라 30일 동안 보관됩니다. +- Muse Spark 1.3 Contributor Free: 대폭 할인된 토큰 가격을 제공하는 대신, 사용자의 프롬프트와 생성 결과를 향후 Meta 모델 학습에 사용할 수 있도록 허용해야 합니다. [자세히 알아보기](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: 대폭 할인된 토큰 가격을 제공하는 대신, 사용자의 프롬프트와 생성 결과를 향후 Meta 모델 학습에 사용할 수 있도록 허용해야 합니다. [자세히 알아보기](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 6edf6c24e..6322a03dc 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -73,6 +73,7 @@ Den nåværende listen over modeller inkluderer: - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([begrensede regioner](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([begrensede regioner](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -117,6 +118,7 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -143,6 +145,7 @@ Estimatene er basert på observerte forespørselsmønstre: - DeepSeek V4 Flash Vision Exp — 410 input, 71 300 bufret, 310 output-tokens per forespørsel - MiniMax M3 — 510 input, 56 000 bufret, 190 output-tokens per forespørsel - MiniMax M2.7 — 300 input, 55 000 bufret, 125 output-tokens per forespørsel +- Muse Spark 1.3 Contributor — 620 input, 71 400 bufret, 300 output-tokens per forespørsel - Muse Spark 1.2 Contributor — 620 input, 71 400 bufret, 300 output-tokens per forespørsel - Qwen3.8 Max — 420 input, 66 000 bufret, 200 output-tokens per forespørsel - Qwen3.8 Flash — 600 input, 58 000 bufret, 200 output-tokens per forespørsel @@ -175,6 +178,7 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -250,6 +254,7 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -298,6 +303,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Brukes ikke | 0 dager | | MiniMax M3 | Brukes ikke | 0 dager | | MiniMax M2.7 | Brukes ikke | 0 dager | +| Muse Spark 1.3 Contributor | Ja | Ikke ZDR | | Muse Spark 1.2 Contributor | Ja | Ikke ZDR | | DeepSeek V4 Pro | Brukes ikke | 0 dager | | DeepSeek V4 Flash | Brukes ikke | 0 dager | @@ -307,6 +313,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR deaktiverer viktige API-funksjoner som er avhengige av lagrede data, inkludert den tilstandsbaserte Responses API, Files and Collections og Batch API. [Les mer](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logger for overvåking av misbruk genereres for all bruk av API-funksjoner og oppbevares i opptil 30 dager. [Les mer](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** Kraftig rabatterte tokenpriser i bytte mot tillatelse til å bruke ledetekstene og fullføringene dine til å trene fremtidige Meta-modeller. Tilgjengeligheten er begrenset til regioner som er tillatt i henhold til [retningslinjene for geografisk bruk](https://ai.developer.meta.com/legal/geographic-use-policy) fra Meta. [Les mer](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** Kraftig rabatterte tokenpriser i bytte mot tillatelse til å bruke ledetekstene og fullføringene dine til å trene fremtidige Meta-modeller. Tilgjengeligheten er begrenset til regioner som er tillatt i henhold til [retningslinjene for geografisk bruk](https://ai.developer.meta.com/legal/geographic-use-policy) fra Meta. [Les mer](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** ZDR-avtalen fornyes månedlig. Den gjeldende avtalen er gyldig til og med 31. august 2026. diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index b1737b9e3..8c5229040 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -91,6 +91,7 @@ Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -122,6 +123,7 @@ Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter. | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | [modell-id](/docs/config/#models) i OpenCode-konfigurasjonen din @@ -151,6 +153,7 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -182,6 +185,7 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -238,6 +242,7 @@ Gratis-modellene: - Nemotron 3 Ultra Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Nemotron 3.5 Lightning Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Big Pickle er en stealth-modell som er gratis på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. +- Muse Spark 1.3 Contributor Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. - Muse Spark 1.2 Contributor Free er tilgjengelig på OpenCode i en begrenset periode. Teamet bruker denne tiden til å samle inn tilbakemeldinger og forbedre modellen. Kontakt oss hvis du har spørsmål. @@ -299,6 +304,7 @@ Alle modellene våre hostes i US. Leverandørene våre følger en policy for zer - Nemotron 3.5 Lightning Free (gratis NVIDIA-endepunkter): Kun for prøvebruk — ikke send inn personopplysninger eller konfidensielle data. Bruken din logges av sikkerhetshensyn og for å forbedre NVIDIAs produkter og tjenester. Sesjonsdataene som logges for forbedringsformål, er ikke knyttet til identiteten din eller noen vedvarende identifikator. For mer informasjon om vår databehandlingspraksis, se vår [personvernerklæring](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ved å samhandle med dette endepunktet samtykker du til at vi samler inn, registrerer og bruker slik informasjon, samt til [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Forespørsler lagres i 30 dager i samsvar med [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: Forespørsler lagres i 30 dager i samsvar med [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free: Sterkt rabatterte tokenpriser mot tillatelse til å bruke ledetekstene og fullføringene dine til å trene fremtidige Meta-modeller. [Les mer](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: Sterkt rabatterte tokenpriser mot tillatelse til å bruke ledetekstene og fullføringene dine til å trene fremtidige Meta-modeller. [Les mer](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 7cd50ed39..0fc5d8936 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -67,6 +67,7 @@ Obecna lista modeli obejmuje: - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([ograniczone regiony](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([ograniczone regiony](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -111,6 +112,7 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -137,6 +139,7 @@ Szacunki te opierają się na zaobserwowanych wzorcach żądań: - DeepSeek V4 Flash Vision Exp — 410 tokenów wejściowych, 71 300 w pamięci podręcznej, 310 tokenów wyjściowych na żądanie - MiniMax M3 — 510 tokenów wejściowych, 56 000 w pamięci podręcznej, 190 tokenów wyjściowych na żądanie - MiniMax M2.7 — 300 tokenów wejściowych, 55 000 w pamięci podręcznej, 125 tokenów wyjściowych na żądanie +- Muse Spark 1.3 Contributor — 620 tokenów wejściowych, 71 400 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie - Muse Spark 1.2 Contributor — 620 tokenów wejściowych, 71 400 w pamięci podręcznej, 300 tokenów wyjściowych na żądanie - Qwen3.8 Max — 420 tokenów wejściowych, 66 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie - Qwen3.8 Flash — 600 tokenów wejściowych, 58 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie @@ -169,6 +172,7 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -242,6 +246,7 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -290,6 +295,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Niewykorzystywane | 0 dni | | MiniMax M3 | Niewykorzystywane | 0 dni | | MiniMax M2.7 | Niewykorzystywane | 0 dni | +| Muse Spark 1.3 Contributor | Tak | Nie ZDR | | Muse Spark 1.2 Contributor | Tak | Nie ZDR | | DeepSeek V4 Pro | Niewykorzystywane | 0 dni | | DeepSeek V4 Flash | Niewykorzystywane | 0 dni | @@ -299,6 +305,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR wyłącza ważne funkcje API zależne od przechowywanych danych, w tym stanowy Responses API, Files and Collections oraz Batch API. [Dowiedz się więcej](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Dzienniki monitorowania nadużyć są generowane dla każdego użycia funkcji API i przechowywane przez maksymalnie 30 dni. [Dowiedz się więcej](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** Znacznie obniżone ceny tokenów w zamian za zgodę na wykorzystanie Twoich promptów i odpowiedzi do trenowania przyszłych modeli Meta. Dostępność jest ograniczona do regionów dozwolonych przez [Zasady korzystania w poszczególnych regionach geograficznych](https://ai.developer.meta.com/legal/geographic-use-policy) firmy Meta. [Dowiedz się więcej](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** Znacznie obniżone ceny tokenów w zamian za zgodę na wykorzystanie Twoich promptów i odpowiedzi do trenowania przyszłych modeli Meta. Dostępność jest ograniczona do regionów dozwolonych przez [Zasady korzystania w poszczególnych regionach geograficznych](https://ai.developer.meta.com/legal/geographic-use-policy) firmy Meta. [Dowiedz się więcej](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** Umowa ZDR jest odnawiana co miesiąc. Obecna umowa obowiązuje do 31 sierpnia 2026 r. diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index a9820e0e0..c227b5b7c 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -91,6 +91,7 @@ Możesz też uzyskać dostęp do naszych modeli przez poniższe endpointy API. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -122,6 +123,7 @@ Możesz też uzyskać dostęp do naszych modeli przez poniższe endpointy API. | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | [ID modelu](/docs/config/#models) w Twojej konfiguracji OpenCode używa formatu @@ -151,6 +153,7 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -182,6 +185,7 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -238,6 +242,7 @@ Darmowe modele: - Nemotron 3 Ultra Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Nemotron 3.5 Lightning Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Big Pickle to stealth model, który jest darmowy w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. +- Muse Spark 1.3 Contributor Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. - Muse Spark 1.2 Contributor Free jest dostępny w OpenCode przez ograniczony czas. Zespół wykorzystuje ten czas do zbierania opinii i ulepszania modelu. Skontaktuj się z nami, jeśli masz pytania. @@ -299,6 +304,7 @@ Wszystkie nasze modele są hostowane w US. Nasi dostawcy stosują politykę zero - Nemotron 3.5 Lightning Free (darmowe endpointy NVIDIA): Tylko do użytku próbnego — nie przesyłaj danych osobowych ani poufnych. Twoje korzystanie jest rejestrowane w celach bezpieczeństwa oraz w celu ulepszania produktów i usług NVIDIA. Rejestrowane dane sesji wykorzystywane do celów ulepszania nie są powiązane z Twoją tożsamością ani żadnym trwałym identyfikatorem. Aby uzyskać więcej informacji o naszych praktykach przetwarzania danych, zapoznaj się z naszą [Polityką prywatności](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Korzystając z tego endpointu, wyrażasz zgodę na gromadzenie, rejestrowanie i wykorzystywanie przez nas takich informacji oraz na [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Żądania są przechowywane przez 30 dni zgodnie z [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: Żądania są przechowywane przez 30 dni zgodnie z [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free: Znacznie obniżone ceny tokenów w zamian za zgodę na wykorzystanie Twoich promptów i odpowiedzi do trenowania przyszłych modeli Meta. [Dowiedz się więcej](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: Znacznie obniżone ceny tokenów w zamian za zgodę na wykorzystanie Twoich promptów i odpowiedzi do trenowania przyszłych modeli Meta. [Dowiedz się więcej](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index cc0bd44cd..981a94dcc 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -73,6 +73,7 @@ A lista atual de modelos inclui: - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([regiões limitadas](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([regiões limitadas](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -117,6 +118,7 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -143,6 +145,7 @@ As estimativas se baseiam nos padrões de requisições observados: - DeepSeek V4 Flash Vision Exp — 410 tokens de entrada, 71.300 em cache, 310 tokens de saída por requisição - MiniMax M3 — 510 tokens de entrada, 56.000 em cache, 190 tokens de saída por requisição - MiniMax M2.7 — 300 tokens de entrada, 55.000 em cache, 125 tokens de saída por requisição +- Muse Spark 1.3 Contributor — 620 tokens de entrada, 71.400 em cache, 300 tokens de saída por requisição - Muse Spark 1.2 Contributor — 620 tokens de entrada, 71.400 em cache, 300 tokens de saída por requisição - Qwen3.8 Max — 420 tokens de entrada, 66.000 em cache, 200 tokens de saída por requisição - Qwen3.8 Flash — 600 tokens de entrada, 58.000 em cache, 200 tokens de saída por requisição @@ -175,6 +178,7 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -250,6 +254,7 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -298,6 +303,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Não usado | 0 dias | | MiniMax M3 | Não usado | 0 dias | | MiniMax M2.7 | Não usado | 0 dias | +| Muse Spark 1.3 Contributor | Sim | Não é ZDR | | Muse Spark 1.2 Contributor | Sim | Não é ZDR | | DeepSeek V4 Pro | Não usado | 0 dias | | DeepSeek V4 Flash | Não usado | 0 dias | @@ -307,6 +313,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** O ZDR desativa recursos importantes da API que dependem de dados armazenados, incluindo a Responses API com estado, Files and Collections e a Batch API. [Saiba mais](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logs de monitoramento de abuso são gerados para todo uso de recursos da API e retidos por até 30 dias. [Saiba mais](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** Preços de tokens com grandes descontos em troca da permissão para usar seus prompts e respostas geradas para treinar futuros modelos da Meta. A disponibilidade é limitada às regiões permitidas pela [Política de Uso Geográfico](https://ai.developer.meta.com/legal/geographic-use-policy) da Meta. [Saiba mais](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** Preços de tokens com grandes descontos em troca da permissão para usar seus prompts e respostas geradas para treinar futuros modelos da Meta. A disponibilidade é limitada às regiões permitidas pela [Política de Uso Geográfico](https://ai.developer.meta.com/legal/geographic-use-policy) da Meta. [Saiba mais](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** O acordo de ZDR é renovado mensalmente. O acordo atual é válido até 31 de agosto de 2026. diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index 13e02615d..dde406995 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -82,6 +82,7 @@ Você também pode acessar nossos modelos pelos seguintes endpoints de API. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -113,6 +114,7 @@ Você também pode acessar nossos modelos pelos seguintes endpoints de API. | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | O [model id](/docs/config/#models) na sua configuração do OpenCode usa o formato `opencode/`. Por exemplo, para GPT 5.5, você usaria `opencode/gpt-5.5` na sua configuração. @@ -140,6 +142,7 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -171,6 +174,7 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -227,6 +231,7 @@ Os modelos gratuitos: - Nemotron 3 Ultra Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Nemotron 3.5 Lightning Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Big Pickle é um modelo stealth que está gratuito no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. +- Muse Spark 1.3 Contributor Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. - Muse Spark 1.2 Contributor Free está disponível no OpenCode por tempo limitado. A equipe está usando esse período para coletar feedback e melhorar o modelo. Entre em contato se você tiver alguma dúvida. @@ -285,6 +290,7 @@ Todos os nossos modelos são hospedados nos US. Nossos provedores seguem uma pol - Nemotron 3.5 Lightning Free (endpoints gratuitos da NVIDIA): Apenas para uso de avaliação — não envie dados pessoais ou confidenciais. Seu uso é registrado para fins de segurança e para melhorar os produtos e serviços da NVIDIA. Os dados de sessão registrados para fins de melhoria não estão vinculados à sua identidade nem a qualquer identificador persistente. Para mais informações sobre nossas práticas de processamento de dados, consulte nossa [Política de Privacidade](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Ao interagir com este endpoint, você consente com a nossa coleta, registro e uso dessas informações e com os [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: As solicitações são retidas por 30 dias de acordo com [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: As solicitações são retidas por 30 dias de acordo com [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free: Preços de tokens com grandes descontos em troca da permissão para usar seus prompts e respostas para treinar futuros modelos da Meta. [Saiba mais](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: Preços de tokens com grandes descontos em troca da permissão para usar seus prompts e respostas para treinar futuros modelos da Meta. [Saiba mais](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index c8b7e6aba..58e4c00fe 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -73,6 +73,7 @@ OpenCode Go работает так же, как и любой другой пр - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([доступно в отдельных регионах](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([доступно в отдельных регионах](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -117,6 +118,7 @@ OpenCode Go включает следующие лимиты: | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -143,6 +145,7 @@ OpenCode Go включает следующие лимиты: - DeepSeek V4 Flash Vision Exp — 410 входных, 71,300 кешированных, 310 выходных токенов на запрос - MiniMax M3 — 510 входных, 56,000 кешированных, 190 выходных токенов на запрос - MiniMax M2.7 — 300 входных, 55,000 кешированных, 125 выходных токенов на запрос +- Muse Spark 1.3 Contributor — 620 входных, 71,400 кешированных, 300 выходных токенов на запрос - Muse Spark 1.2 Contributor — 620 входных, 71,400 кешированных, 300 выходных токенов на запрос - Qwen3.8 Max — 420 входных, 66,000 кешированных, 200 выходных токенов на запрос - Qwen3.8 Flash — 600 входных, 58,000 кешированных, 200 выходных токенов на запрос @@ -175,6 +178,7 @@ OpenCode Go включает следующие лимиты: | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -250,6 +254,7 @@ OpenCode Go включает следующие лимиты: | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -298,6 +303,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Не используется | 0 дней | | MiniMax M3 | Не используется | 0 дней | | MiniMax M2.7 | Не используется | 0 дней | +| Muse Spark 1.3 Contributor | Да | Не ZDR | | Muse Spark 1.2 Contributor | Да | Не ZDR | | DeepSeek V4 Pro | Не используется | 0 дней | | DeepSeek V4 Flash | Не используется | 0 дней | @@ -307,6 +313,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR отключает важные функции API, зависящие от сохраненных данных, включая Responses API с сохранением состояния, Files and Collections и Batch API. [Подробнее](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Журналы мониторинга злоупотреблений создаются при любом использовании функций API и хранятся до 30 дней. [Подробнее](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** Значительно сниженная стоимость токенов в обмен на разрешение использовать ваши промпты и ответы для обучения будущих моделей Meta. Доступность ограничена регионами, разрешёнными [Политикой географического использования](https://ai.developer.meta.com/legal/geographic-use-policy) компании Meta. [Подробнее](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** Значительно сниженная стоимость токенов в обмен на разрешение использовать ваши промпты и ответы для обучения будущих моделей Meta. Доступность ограничена регионами, разрешёнными [Политикой географического использования](https://ai.developer.meta.com/legal/geographic-use-policy) компании Meta. [Подробнее](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** Соглашение ZDR продлевается ежемесячно. Текущее соглашение действует до 31 августа 2026 года. diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index df95a0425..201229454 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -91,6 +91,7 @@ OpenCode Zen работает как любой другой провайдер | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -122,6 +123,7 @@ OpenCode Zen работает как любой другой провайдер | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | [идентификатор модели](/docs/config/#models) в вашей конфигурации OpenCode @@ -151,6 +153,7 @@ https://opencode.ai/zen/v1/models | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -182,6 +185,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -238,6 +242,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Nemotron 3.5 Lightning Free доступна в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. - Big Pickle — это скрытая модель, которая доступна бесплатно в OpenCode ограниченное время. Команда использует это время, чтобы собирать отзывы и улучшать модель. +- Muse Spark 1.3 Contributor Free доступна в OpenCode в течение ограниченного времени. Команда использует этот период для сбора отзывов и улучшения модели. - Muse Spark 1.2 Contributor Free доступна в OpenCode в течение ограниченного времени. Команда использует этот период для сбора отзывов и улучшения модели. Свяжитесь с нами, если у вас есть вопросы. @@ -299,6 +304,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3.5 Lightning Free (бесплатные эндпоинты NVIDIA): только для пробного использования — не отправляйте персональные или конфиденциальные данные. Использование логируется в целях безопасности и для улучшения продуктов и сервисов NVIDIA. Логируемые данные сессии, используемые в целях улучшения, не связаны с вашей личностью или каким-либо постоянным идентификатором. Подробнее о наших практиках обработки данных см. в нашей [Политике конфиденциальности](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). Взаимодействуя с этим эндпоинтом, вы соглашаетесь на сбор, запись и использование нами такой информации, а также с [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: запросы хранятся 30 дней в соответствии с [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: запросы хранятся 30 дней в соответствии с [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free: значительно сниженная стоимость токенов в обмен на разрешение использовать ваши запросы и ответы для обучения будущих моделей Meta. [Подробнее](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: значительно сниженная стоимость токенов в обмен на разрешение использовать ваши запросы и ответы для обучения будущих моделей Meta. [Подробнее](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 436c0339f..d75e6ce70 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -63,6 +63,7 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([เฉพาะบางภูมิภาค](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([เฉพาะบางภูมิภาค](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -107,6 +108,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -133,6 +135,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: - DeepSeek V4 Flash Vision Exp — 410 input, 71,300 cached, 310 output tokens ต่อ request - MiniMax M3 — 510 input, 56,000 cached, 190 output tokens ต่อ request - MiniMax M2.7 — 300 input, 55,000 cached, 125 output tokens ต่อ request +- Muse Spark 1.3 Contributor — 620 input, 71,400 cached, 300 output tokens ต่อ request - Muse Spark 1.2 Contributor — 620 input, 71,400 cached, 300 output tokens ต่อ request - Qwen3.8 Max — 420 input, 66,000 cached, 200 output tokens ต่อ request - Qwen3.8 Flash — 600 input, 58,000 cached, 200 output tokens ต่อ request @@ -165,6 +168,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -238,6 +242,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -284,6 +289,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | ไม่นำไปใช้ | 0 วัน | | MiniMax M3 | ไม่นำไปใช้ | 0 วัน | | MiniMax M2.7 | ไม่นำไปใช้ | 0 วัน | +| Muse Spark 1.3 Contributor | ใช่ | ไม่ใช่ ZDR | | Muse Spark 1.2 Contributor | ใช่ | ไม่ใช่ ZDR | | DeepSeek V4 Pro | ไม่นำไปใช้ | 0 วัน | | DeepSeek V4 Flash | ไม่นำไปใช้ | 0 วัน | @@ -293,6 +299,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR ปิดใช้งานฟีเจอร์ API สำคัญที่ต้องอาศัยข้อมูลที่จัดเก็บไว้ ซึ่งรวมถึง Responses API แบบมีสถานะ, Files and Collections และ Batch API [ดูข้อมูลเพิ่มเติม](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr) - **GPT 5.6 Luna:** ระบบจะสร้างบันทึกการตรวจสอบการใช้งานในทางที่ผิดสำหรับการใช้งานฟีเจอร์ API ทั้งหมด และเก็บรักษาไว้นานสูงสุด 30 วัน [ดูข้อมูลเพิ่มเติม](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring) +- **Muse Spark 1.3 Contributor:** ราคาของ token ลดลงอย่างมาก โดยแลกกับการอนุญาตให้นำพรอมต์และผลลัพธ์ที่สร้างขึ้นของคุณไปใช้ฝึกโมเดล Meta ในอนาคต การให้บริการจำกัดเฉพาะภูมิภาคที่ได้รับอนุญาตตาม[นโยบายการใช้งานตามพื้นที่ทางภูมิศาสตร์](https://ai.developer.meta.com/legal/geographic-use-policy)ของ Meta [ดูข้อมูลเพิ่มเติม](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier) - **Muse Spark 1.2 Contributor:** ราคาของ token ลดลงอย่างมาก โดยแลกกับการอนุญาตให้นำพรอมต์และผลลัพธ์ที่สร้างขึ้นของคุณไปใช้ฝึกโมเดล Meta ในอนาคต การให้บริการจำกัดเฉพาะภูมิภาคที่ได้รับอนุญาตตาม[นโยบายการใช้งานตามพื้นที่ทางภูมิศาสตร์](https://ai.developer.meta.com/legal/geographic-use-policy)ของ Meta [ดูข้อมูลเพิ่มเติม](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier) - **DeepSeek V4 Flash:** ข้อตกลง ZDR จะต่ออายุทุกเดือน ข้อตกลงปัจจุบันมีผลใช้ถึงวันที่ 31 สิงหาคม 2026 diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index 49f7968bc..507430232 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -84,6 +84,7 @@ OpenCode Zen ทำงานเหมือน provider อื่น ๆ ใน | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -115,6 +116,7 @@ OpenCode Zen ทำงานเหมือน provider อื่น ๆ ใน | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | [model id](/docs/config/#models) ใน OpenCode config ของคุณใช้รูปแบบ `opencode/` ตัวอย่างเช่น สำหรับ GPT 5.5 คุณจะใช้ `opencode/gpt-5.5` ใน config ของคุณ @@ -142,6 +144,7 @@ https://opencode.ai/zen/v1/models | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -173,6 +176,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -229,6 +233,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Nemotron 3.5 Lightning Free เปิดให้ใช้บน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล - Big Pickle เป็น stealth model ที่ใช้งานฟรีบน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อเก็บ feedback และปรับปรุงโมเดล +- Muse Spark 1.3 Contributor Free เปิดให้ใช้งานบน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อรวบรวมความคิดเห็นและปรับปรุงโมเดล - Muse Spark 1.2 Contributor Free เปิดให้ใช้งานบน OpenCode ในช่วงเวลาจำกัด ทีมกำลังใช้ช่วงเวลานี้เพื่อรวบรวมความคิดเห็นและปรับปรุงโมเดล ติดต่อเรา หากคุณมีคำถาม @@ -287,6 +292,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3.5 Lightning Free (endpoint ฟรีของ NVIDIA): ใช้สำหรับการทดลองเท่านั้น — โปรดอย่าส่งข้อมูลส่วนบุคคลหรือข้อมูลลับ การใช้งานของคุณจะถูกบันทึกเพื่อวัตถุประสงค์ด้านความปลอดภัยและเพื่อปรับปรุงผลิตภัณฑ์และบริการของ NVIDIA ข้อมูลเซสชันที่บันทึกไว้เพื่อวัตถุประสงค์ในการปรับปรุงจะไม่เชื่อมโยงกับตัวตนของคุณหรือตัวระบุถาวรใด ๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแนวปฏิบัติในการประมวลผลข้อมูลของเรา โปรดดู [นโยบายความเป็นส่วนตัว](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) ของเรา การโต้ตอบกับ endpoint นี้ถือว่าคุณยินยอมให้เราเก็บรวบรวม บันทึก และใช้ข้อมูลดังกล่าว รวมถึง [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) - OpenAI APIs: คำขอจะถูกเก็บไว้เป็นเวลา 30 วันตาม [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: คำขอจะถูกเก็บไว้เป็นเวลา 30 วันตาม [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free: ราคาของ token ที่ลดลงอย่างมาก แลกกับการอนุญาตให้นำ prompts และ completions ของคุณไปใช้ฝึกโมเดลของ Meta ในอนาคต [ดูข้อมูลเพิ่มเติม](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: ราคาของ token ที่ลดลงอย่างมาก แลกกับการอนุญาตให้นำ prompts และ completions ของคุณไปใช้ฝึกโมเดลของ Meta ในอนาคต [ดูข้อมูลเพิ่มเติม](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 7f9ae3746..3df4b3c33 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -63,6 +63,7 @@ Mevcut model listesi şunları içerir: - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([sınırlı bölgeler](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([sınırlı bölgeler](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -107,6 +108,7 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -133,6 +135,7 @@ Tahminler, gözlemlenen istek modellerine dayanır: - DeepSeek V4 Flash Vision Exp — İstek başına 410 girdi, 71.300 önbelleğe alınmış, 310 çıktı token'ı - MiniMax M3 — İstek başına 510 girdi, 56.000 önbelleğe alınmış, 190 çıktı token'ı - MiniMax M2.7 — İstek başına 300 girdi, 55.000 önbelleğe alınmış, 125 çıktı token'ı +- Muse Spark 1.3 Contributor — İstek başına 620 girdi, 71.400 önbelleğe alınmış, 300 çıktı token'ı - Muse Spark 1.2 Contributor — İstek başına 620 girdi, 71.400 önbelleğe alınmış, 300 çıktı token'ı - Qwen3.8 Max — İstek başına 420 girdi, 66.000 önbelleğe alınmış, 200 çıktı token'ı - Qwen3.8 Flash — İstek başına 600 girdi, 58.000 önbelleğe alınmış, 200 çıktı token'ı @@ -165,6 +168,7 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -238,6 +242,7 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -284,6 +289,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | Kullanılmaz | 0 gün | | MiniMax M3 | Kullanılmaz | 0 gün | | MiniMax M2.7 | Kullanılmaz | 0 gün | +| Muse Spark 1.3 Contributor | Evet | ZDR değil | | Muse Spark 1.2 Contributor | Evet | ZDR değil | | DeepSeek V4 Pro | Kullanılmaz | 0 gün | | DeepSeek V4 Flash | Kullanılmaz | 0 gün | @@ -293,6 +299,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR, durum bilgisi tutan Responses API, Files and Collections ve Batch API dahil olmak üzere saklanan verilere bağlı önemli API özelliklerini devre dışı bırakır. [Daha fazla bilgi](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Tüm API özelliklerinin kullanımı için kötüye kullanım izleme günlükleri oluşturulur ve 30 güne kadar saklanır. [Daha fazla bilgi](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). +- **Muse Spark 1.3 Contributor:** İstemlerinizi ve tamamlamalarınızı gelecekteki Meta modellerini eğitmek için kullanma izni karşılığında büyük ölçüde indirimli token fiyatları. Kullanılabilirlik, Meta'nın [Coğrafi Kullanım Politikası](https://ai.developer.meta.com/legal/geographic-use-policy) kapsamında izin verilen bölgelerle sınırlıdır. [Daha fazla bilgi](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **Muse Spark 1.2 Contributor:** İstemlerinizi ve tamamlamalarınızı gelecekteki Meta modellerini eğitmek için kullanma izni karşılığında büyük ölçüde indirimli token fiyatları. Kullanılabilirlik, Meta'nın [Coğrafi Kullanım Politikası](https://ai.developer.meta.com/legal/geographic-use-policy) kapsamında izin verilen bölgelerle sınırlıdır. [Daha fazla bilgi](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - **DeepSeek V4 Flash:** ZDR anlaşması aylık olarak yenilenir. Mevcut anlaşma 31 Ağustos 2026 tarihine kadar geçerlidir. diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index 955206022..98a58496d 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -82,6 +82,7 @@ Modellerimize aşağıdaki API uç noktaları aracılığıyla da erişebilirsin | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -113,6 +114,7 @@ Modellerimize aşağıdaki API uç noktaları aracılığıyla da erişebilirsin | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | OpenCode yapılandırmanızdaki [model id](/docs/config/#models) `opencode/` biçimini kullanır. Örneğin, GPT 5.5 için yapılandırmanızda `opencode/gpt-5.5` kullanırsınız. @@ -140,6 +142,7 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -171,6 +174,7 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -227,6 +231,7 @@ Kredi kartı ücretleri maliyet üzerinden yansıtılır (%4.4 + işlem başına - Nemotron 3 Ultra Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Nemotron 3.5 Lightning Free, sınırlı bir süre için OpenCode'da ücretsizdir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Big Pickle, sınırlı bir süre için OpenCode'da ücretsiz olan gizli bir modeldir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. +- Muse Spark 1.3 Contributor Free, sınırlı bir süre için OpenCode'da kullanılabilir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. - Muse Spark 1.2 Contributor Free, sınırlı bir süre için OpenCode'da kullanılabilir. Ekip bu süreyi geri bildirim toplamak ve modeli iyileştirmek için kullanıyor. Sorularınız varsa bizimle iletişime geçin. @@ -285,6 +290,7 @@ Tüm modellerimiz US'de barındırılıyor. Sağlayıcılarımız zero-retention - Nemotron 3.5 Lightning Free (ücretsiz NVIDIA uç noktaları): Yalnızca deneme amaçlıdır — kişisel veya gizli veri göndermeyin. Kullanımınız güvenlik amacıyla ve NVIDIA ürünlerini ve hizmetlerini geliştirmek için kaydedilir. Geliştirme amacıyla kaydedilen oturum verileri kimliğinizle veya herhangi bir kalıcı tanımlayıcıyla ilişkilendirilmez. Veri işleme uygulamalarımız hakkında daha fazla bilgi için [Gizlilik Politikamıza](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) bakın. Bu uç noktayla etkileşime geçerek, bu tür bilgileri toplamamıza, kaydetmemize ve kullanmamıza ve [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf) koşullarına onay vermiş olursunuz. - OpenAI APIs: İstekler [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) uyarınca 30 gün boyunca saklanır. - Anthropic APIs: İstekler [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage) uyarınca 30 gün boyunca saklanır. +- Muse Spark 1.3 Contributor Free: Gelecekteki Meta modellerini eğitmek için istemlerinizi ve tamamlamalarınızı kullanma izni karşılığında büyük ölçüde indirimli token fiyatlandırması. [Daha fazla bilgi](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: Gelecekteki Meta modellerini eğitmek için istemlerinizi ve tamamlamalarınızı kullanma izni karşılığında büyük ölçüde indirimli token fiyatlandırması. [Daha fazla bilgi](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index afea76e62..c14c2365b 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -91,6 +91,7 @@ You can also access our models through the following API endpoints. | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -122,6 +123,7 @@ You can also access our models through the following API endpoints. | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | The [model id](/docs/config/#models) in your OpenCode config @@ -151,6 +153,7 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -182,6 +185,7 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -238,6 +242,7 @@ The free models: - Nemotron 3 Ultra Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Nemotron 3.5 Lightning Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Big Pickle is a stealth model that's free on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. +- Muse Spark 1.3 Contributor Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. - Muse Spark 1.2 Contributor Free is available on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. Contact us if you have any questions. @@ -299,6 +304,7 @@ All our models are hosted in the US. Our providers follow a zero-retention polic - Nemotron 3.5 Lightning Free (NVIDIA free endpoints): Trial use only — do not submit personal or confidential data. Your use is logged for security purposes and to improve NVIDIA products and services. The logged session data for improvement purposes is not linked to your identity or any persistent identifier. For more information about our data processing practices, see our [Privacy Policy](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). By interacting with this endpoint, you consent to our collection, recording, and use of such information and the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf). - OpenAI APIs: Requests are retained for 30 days in accordance with [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). - Anthropic APIs: Requests are retained for 30 days in accordance with [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Muse Spark 1.3 Contributor Free: Heavily discounted token pricing in exchange for permission to use your prompts and completions to train future Meta models. [Learn more](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). - Muse Spark 1.2 Contributor Free: Heavily discounted token pricing in exchange for permission to use your prompts and completions to train future Meta models. [Learn more](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier). --- diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 35fe8356a..46c981c2a 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -63,6 +63,7 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([仅限部分地区](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([仅限部分地区](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -107,6 +108,7 @@ OpenCode Go 包含以下限制: | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -135,6 +137,7 @@ OpenCode Go 包含以下限制: - MiMo-V2.5-Pro — 每次请求 790 个输入 token,86,000 个缓存 token,305 个输出 token - MiniMax M3 — 每次请求 510 个输入 token,56,000 个缓存 token,190 个输出 token - MiniMax M2.7 — 每次请求 300 个输入 token,55,000 个缓存 token,125 个输出 token +- Muse Spark 1.3 Contributor — 每次请求 620 个输入 token,71,400 个缓存 token,300 个输出 token - Muse Spark 1.2 Contributor — 每次请求 620 个输入 token,71,400 个缓存 token,300 个输出 token - Qwen3.8 Max — 每次请求 420 个输入 token,66,000 个缓存 token,200 个输出 token - Qwen3.8 Flash — 每次请求 600 个输入 token,58,000 个缓存 token,200 个输出 token @@ -165,6 +168,7 @@ OpenCode Go 包含以下限制: | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -238,6 +242,7 @@ OpenCode Go 包含以下限制: | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -284,6 +289,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | 不使用 | 0 天 | | MiniMax M3 | 不使用 | 0 天 | | MiniMax M2.7 | 不使用 | 0 天 | +| Muse Spark 1.3 Contributor | 是 | 非 ZDR | | Muse Spark 1.2 Contributor | 是 | 非 ZDR | | DeepSeek V4 Pro | 不使用 | 0 天 | | DeepSeek V4 Flash | 不使用 | 0 天 | @@ -293,6 +299,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR 会禁用依赖所存储数据的重要 API 功能,包括有状态的 Responses API、Files and Collections 和 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 所有 API 功能的使用都会生成滥用监控日志,并最多保留 30 天。[了解更多](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 +- **Muse Spark 1.3 Contributor:** 以允许使用你的提示词和补全结果训练未来的 Meta 模型为交换,token 价格可获得大幅折扣。仅在 Meta 的[地理使用政策](https://ai.developer.meta.com/legal/geographic-use-policy)允许的地区提供。[了解更多](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - **Muse Spark 1.2 Contributor:** 以允许使用你的提示词和补全结果训练未来的 Meta 模型为交换,token 价格可获得大幅折扣。仅在 Meta 的[地理使用政策](https://ai.developer.meta.com/legal/geographic-use-policy)允许的地区提供。[了解更多](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - **DeepSeek V4 Flash:** ZDR 协议每月续签。当前协议有效期至 2026 年 8 月 31 日。 diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index d520d1f1b..bc59a7f32 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -82,6 +82,7 @@ OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -113,6 +114,7 @@ OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | 在你的 OpenCode 配置中,[模型 ID](/docs/config/#models) 使用 `opencode/` 格式。例如,对于 GPT 5.5,你需要在配置中使用 `opencode/gpt-5.5`。 @@ -140,6 +142,7 @@ https://opencode.ai/zen/v1/models | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -171,6 +174,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -227,6 +231,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Nemotron 3.5 Lightning Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Big Pickle 是一个隐身模型,目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 +- Muse Spark 1.3 Contributor Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 - Muse Spark 1.2 Contributor Free 目前在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 如果你有任何问题,请联系我们。 @@ -285,6 +290,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3.5 Lightning Free(NVIDIA 免费端点):仅供试用 — 请勿提交个人或机密数据。出于安全目的以及为改进 NVIDIA 产品和服务,系统会记录你的使用情况。出于改进目的而记录的会话数据不会与你的身份或任何持久标识符相关联。有关我们数据处理实践的更多信息,请参阅我们的[隐私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。与此端点进行交互,即表示你同意我们收集、记录和使用此类信息,并同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - OpenAI APIs:请求会根据 [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) 保留 30 天。 - Anthropic APIs:请求会根据 [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage) 保留 30 天。 +- Muse Spark 1.3 Contributor Free:以允许使用你的提示词和补全内容训练未来的 Meta 模型为条件,享受大幅折扣的 token 价格。[了解更多](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - Muse Spark 1.2 Contributor Free:以允许使用你的提示词和补全内容训练未来的 Meta 模型为条件,享受大幅折扣的 token 价格。[了解更多](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 --- diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index edf39e593..3846a5760 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -63,6 +63,7 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 - **MiMo-V2.5-Pro** - **MiniMax M3** - **MiniMax M2.7** +- **Muse Spark 1.3 Contributor** ([僅限部分地區](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Muse Spark 1.2 Contributor** ([僅限部分地區](https://ai.developer.meta.com/legal/geographic-use-policy)) - **Qwen3.8 Max** - **Qwen3.8 Flash** @@ -107,6 +108,7 @@ OpenCode Go 包含以下限制: | MiMo-V2.5-Pro | 3,250 | 8,150 | 16,300 | | MiniMax M3 | 3,200 | 8,000 | 16,000 | | MiniMax M2.7 | 3,400 | 8,500 | 17,000 | +| Muse Spark 1.3 Contributor | 45,300 | 113,300 | 226,600 | | Muse Spark 1.2 Contributor | 45,300 | 113,300 | 226,600 | | Qwen3.8 Max | 160 | 400 | 810 | | Qwen3.8 Flash | 5,400 | 13,500 | 27,000 | @@ -133,6 +135,7 @@ OpenCode Go 包含以下限制: - DeepSeek V4 Flash Vision Exp — 每次請求 410 個輸入 token、71,300 個快取 token、310 個輸出 token - MiniMax M3 — 每次請求 510 個輸入 token、56,000 個快取 token、190 個輸出 token - MiniMax M2.7 — 每次請求 300 個輸入 token、55,000 個快取 token、125 個輸出 token +- Muse Spark 1.3 Contributor — 每次請求 620 個輸入 token、71,400 個快取 token、300 個輸出 token - Muse Spark 1.2 Contributor — 每次請求 620 個輸入 token、71,400 個快取 token、300 個輸出 token - Qwen3.8 Max — 每次請求 420 個輸入 token、66,000 個快取 token、200 個輸出 token - Qwen3.8 Flash — 每次請求 600 個輸入 token、58,000 個快取 token、200 個輸出 token @@ -165,6 +168,7 @@ OpenCode Go 包含以下限制: | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | | MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | | Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | | Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | @@ -238,6 +242,7 @@ OpenCode Go 包含以下限制: | MiniMax M3 | minimax-m3 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.7 | minimax-m2.7 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | +| Muse Spark 1.3 Contributor | muse-spark-1.3-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor | muse-spark-1.2-contributor | `https://opencode.ai/zen/go/v1/responses` | `@ai-sdk/openai` | | Qwen3.8 Max | qwen3.8-max | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Qwen3.8 Flash | qwen3.8-flash | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | @@ -284,6 +289,7 @@ https://opencode.ai/zen/go/v1/models | Qwen3.6 Plus | 不使用 | 0 天 | | MiniMax M3 | 不使用 | 0 天 | | MiniMax M2.7 | 不使用 | 0 天 | +| Muse Spark 1.3 Contributor | 是 | 非 ZDR | | Muse Spark 1.2 Contributor | 是 | 非 ZDR | | DeepSeek V4 Pro | 不使用 | 0 天 | | DeepSeek V4 Flash | 不使用 | 0 天 | @@ -293,6 +299,7 @@ https://opencode.ai/zen/go/v1/models - **Grok 4.6:** ZDR 會停用依賴儲存資料的重要 API 功能,包括具狀態的 Responses API、Files and Collections 與 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 所有 API 功能的使用都會產生濫用監控日誌,並保留最多 30 天。[了解更多](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 +- **Muse Spark 1.3 Contributor:** 以允許使用您的提示詞和生成結果來訓練未來的 Meta 模型為交換,token 價格可享大幅折扣。僅在 Meta 的[地理使用政策](https://ai.developer.meta.com/legal/geographic-use-policy)允許的地區提供。[了解更多](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - **Muse Spark 1.2 Contributor:** 以允許使用您的提示詞和生成結果來訓練未來的 Meta 模型為交換,token 價格可享大幅折扣。僅在 Meta 的[地理使用政策](https://ai.developer.meta.com/legal/geographic-use-policy)允許的地區提供。[了解更多](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - **DeepSeek V4 Flash:** ZDR 協議每月續簽。目前的協議有效至 2026 年 8 月 31 日。 diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 4c8ff7cb0..fec2540d0 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -86,6 +86,7 @@ OpenCode Zen 的運作方式和 OpenCode 中的其他供應商一樣。 | Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| Gemini 3.8 Flash | gemini-3.8-flash | `https://opencode.ai/zen/v1/models/gemini-3.8-flash` | `@ai-sdk/google` | | Gemini 3.7 Flash | gemini-3.7-flash | `https://opencode.ai/zen/v1/models/gemini-3.7-flash` | `@ai-sdk/google` | | Gemini 3.6 Flash | gemini-3.6-flash | `https://opencode.ai/zen/v1/models/gemini-3.6-flash` | `@ai-sdk/google` | | Gemini 3.5 Flash | gemini-3.5-flash | `https://opencode.ai/zen/v1/models/gemini-3.5-flash` | `@ai-sdk/google` | @@ -117,6 +118,7 @@ OpenCode Zen 的運作方式和 OpenCode 中的其他供應商一樣。 | Ling 3.0 Flash Fin Free | ling-3.0-flash-fin-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3 Ultra Free | nemotron-3-ultra-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Nemotron 3.5 Lightning Free | nemotron-3.5-lightning-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Muse Spark 1.3 Contributor Free | muse-spark-1.3-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | Muse Spark 1.2 Contributor Free | muse-spark-1.2-contributor-free | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | OpenCode 設定中的 [模型 ID](/docs/config/#models) 會使用 `opencode/` @@ -145,6 +147,7 @@ https://opencode.ai/zen/v1/models | Ling 3.0 Flash Fin Free | Free | Free | Free | - | | Nemotron 3 Ultra Free | Free | Free | Free | - | | Nemotron 3.5 Lightning Free | Free | Free | Free | - | +| Muse Spark 1.3 Contributor Free | Free | Free | Free | - | | Muse Spark 1.2 Contributor Free | Free | Free | Free | - | | MiniMax M3 | $0.30 | $1.20 | $0.06 | - | | MiniMax M2.7 | $0.30 | $1.20 | $0.06 | - | @@ -176,6 +179,7 @@ https://opencode.ai/zen/v1/models | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 | | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 | | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Gemini 3.8 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.7 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.6 Flash | $1.50 | $7.50 | $0.15 | - | | Gemini 3.5 Flash | $1.50 | $9.00 | $0.15 | - | @@ -232,6 +236,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3 Ultra Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Nemotron 3.5 Lightning Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Big Pickle 是一個隱身模型,在 OpenCode 上限時免費提供。團隊正在利用這段時間收集回饋並改進模型。 +- Muse Spark 1.3 Contributor Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 - Muse Spark 1.2 Contributor Free 在 OpenCode 上限時提供。團隊正在利用這段時間收集回饋並改進模型。 如果你有任何問題,請聯絡我們。 @@ -291,6 +296,7 @@ https://opencode.ai/zen/v1/models - Nemotron 3.5 Lightning Free(NVIDIA 免費端點):僅供試用 — 請勿提交個人或機密資料。基於安全目的以及為了改進 NVIDIA 產品與服務,系統會記錄你的使用情況。基於改進目的而記錄的工作階段資料不會與你的身分或任何持久識別碼相關聯。有關我們資料處理實務的更多資訊,請參閱我們的[隱私政策](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。與此端點進行互動,即表示你同意我們收集、記錄與使用此類資訊,並同意 [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf)。 - OpenAI APIs: 請求會依據 [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data) 保留 30 天。 - Anthropic APIs: 請求會依據 [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage) 保留 30 天。 +- Muse Spark 1.3 Contributor Free: 以大幅折扣的 Token 價格,換取你同意讓提示詞與補全內容用於訓練未來的 Meta 模型。[了解更多](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 - Muse Spark 1.2 Contributor Free: 以大幅折扣的 Token 價格,換取你同意讓提示詞與補全內容用於訓練未來的 Meta 模型。[了解更多](https://dev.meta.ai/docs/pricing-rate-limits#contributor-tier)。 --- From ffbdee7b17412f0dc16e35555af95780091e050a Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Wed, 2 Sep 2026 16:06:24 +0000 Subject: [PATCH 230/271] chore: generate --- packages/console/app/src/routes/zen/util/handler.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 6f24c8e4b..b1aa6fe74 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -123,12 +123,7 @@ export async function handler( : createKeyRateLimiter(modelInfo.id, modelInfo.rateLimit, zenApiKey, input.request) await rateLimiter?.check() const authInfo = await authenticate(modelInfo, zenApiKey) - if ( - authInfo && - opts.modelList === "lite" && - requiresGoTrainingConsent(modelInfo.id) && - !authInfo.allowTraining - ) + if (authInfo && opts.modelList === "lite" && requiresGoTrainingConsent(modelInfo.id) && !authInfo.allowTraining) throw new DataPolicyError( t("zen.api.error.trainingNotAllowed", { consoleGoUrl: `https://opencode.ai/workspace/${authInfo.workspaceID}/go`, From 9a71624d2da22e5643b80b2fd78293b1fed63d4e Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 2 Sep 2026 11:30:28 -0500 Subject: [PATCH 231/271] fix(provider): scope thinking binding to Claude 5.1+ (#46848) --- packages/opencode/src/provider/transform.ts | 28 +-- .../opencode/test/provider/transform.test.ts | 174 ++++++++++++++++-- 2 files changed, 173 insertions(+), 29 deletions(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 1244963e8..56099effe 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -684,35 +684,39 @@ function anthropicOmitsThinking(apiId: string) { return anthropicUsesModernAdaptiveThinking(apiId) } -// Opus 5, Sonnet 5, Fable 5.x, and Mythos 5.x think without a `thinking` parameter. -function anthropicThinksByDefault(apiId: string) { - const version = /claude-(?:[a-z]+-)?(\d+)(?:[.-](\d{1,2}))?(?:[.@-]|$)/i.exec(apiId) +// Default to binding controls for Claude 5.1+ as enforcement expands to later models. +// Mythos 5.1 explicitly does not run the conversation-prefix check. +// https://platform.claude.com/docs/en/build-with-claude/thinking#preserved-in-conversation +function anthropicBindsThinking(apiId: string) { + // Capture either family/version order, without reading release dates as minor versions. + const version = /claude-(?:([a-z]+)-)?(\d+)(?:[.-](\d{1,2}))?(?:-([a-z]+))?(?:[.@-]|$)/i.exec(apiId) if (!version) return false - return Number(version[1]) >= 5 + const major = Number(version[2]) + const minor = Number(version[3] ?? 0) + if (major === 5 && minor === 1 && (version[1] ?? version[4])?.toLowerCase() === "mythos") return false + return major > 5 || (major === 5 && minor >= 1) } // Fable 5.1 binds each thinking signature to the system prompt, tool list, and // messages above it, and rejects the request when any of that changes. opencode // re-renders parts of that prefix between turns (system prompt, tools, compaction), // so ask the API to drop the affected blocks instead of failing the request. -// Models that do not run the check accept the field, so it is safe on every Claude. +// Older model deployments may reject this field, even with thinking enabled. // The patched AI SDK adds the thinking-binding-controls beta whenever it is set. const ANTHROPIC_BLOCK_BINDING = { prefixMismatchBehavior: "drop_block" } function anthropicBlockBinding(model: Provider.Model, options: { [x: string]: any }) { - if (!model.api.id.toLowerCase().includes("claude")) return options - const byDefault = anthropicThinksByDefault(model.api.id) + if (!anthropicBindsThinking(model.api.id)) return options switch (model.api.npm) { case "@ai-sdk/anthropic": case "@ai-sdk/google-vertex/anthropic": { - const thinking = options.thinking ?? (byDefault ? { type: "adaptive" } : undefined) - if (!thinking || (thinking.type !== "adaptive" && thinking.type !== "enabled")) return options + const thinking = options.thinking ?? { type: "adaptive" } + if (thinking.type !== "adaptive" && thinking.type !== "enabled") return options return { ...options, thinking: { ...thinking, blockBinding: ANTHROPIC_BLOCK_BINDING } } } case "@ai-sdk/amazon-bedrock": { - const reasoningConfig = options.reasoningConfig ?? (byDefault ? { type: "adaptive" } : undefined) - if (!reasoningConfig || (reasoningConfig.type !== "adaptive" && reasoningConfig.type !== "enabled")) - return options + const reasoningConfig = options.reasoningConfig ?? { type: "adaptive" } + if (reasoningConfig.type !== "adaptive" && reasoningConfig.type !== "enabled") return options return { ...options, reasoningConfig: { ...reasoningConfig, blockBinding: ANTHROPIC_BLOCK_BINDING } } } } diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index 4d346d887..bfe4a0aa9 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -851,39 +851,179 @@ describe("ProviderTransform.providerOptions", () => { const binding = { prefixMismatchBehavior: "drop_block" } const claude = (npm: string, id: string) => createModel({ providerID: "custom", api: { id, url: "https://example.com", npm } }) + const sdks = [ + { npm: "@ai-sdk/anthropic", key: "anthropic", option: "thinking" }, + { npm: "@ai-sdk/google-vertex/anthropic", key: "anthropic", option: "thinking" }, + { npm: "@ai-sdk/amazon-bedrock", key: "bedrock", option: "reasoningConfig" }, + ] test("adds blockBinding to explicit adaptive thinking on @ai-sdk/anthropic", () => { - const model = claude("@ai-sdk/anthropic", "claude-opus-4-7") + const model = claude("@ai-sdk/anthropic", "claude-fable-5-1") expect(ProviderTransform.providerOptions(model, { thinking: { type: "adaptive" }, effort: "high" })).toEqual({ anthropic: { thinking: { type: "adaptive", blockBinding: binding }, effort: "high" }, }) }) - test("adds blockBinding to explicit enabled thinking", () => { - const model = claude("@ai-sdk/anthropic", "claude-sonnet-4-5") + test("leaves explicit enabled thinking on older models alone", () => { + const model = claude("@ai-sdk/anthropic", "claude-haiku-4-5") expect(ProviderTransform.providerOptions(model, { thinking: { type: "enabled", budgetTokens: 4000 } })).toEqual({ - anthropic: { thinking: { type: "enabled", budgetTokens: 4000, blockBinding: binding } }, + anthropic: { thinking: { type: "enabled", budgetTokens: 4000 } }, }) }) - test("injects adaptive thinking for models that think by default when no variant is set", () => { - for (const id of ["claude-fable-5-1", "claude-mythos-5-1", "claude-opus-5", "claude-sonnet-5"]) { - const model = claude("@ai-sdk/anthropic", id) - expect(ProviderTransform.providerOptions(model, {})).toEqual({ - anthropic: { thinking: { type: "adaptive", blockBinding: binding } }, + sdks.forEach((sdk) => { + describe(sdk.npm, () => { + test.each([ + "claude-fable-5-1", + "claude-fable-5.1", + "claude-5.1-fable", + "global.anthropic.claude-fable-5-1", + "us.anthropic.claude-fable-5-1-v1:0", + "claude-fable-5-1@default", + "CLAUDE-FABLE-5-1", + "claude-opus-5-1", + "claude-sonnet-5-2", + "claude-mythos-5-2", + "claude-mythos-5-10", + "claude-opus-6", + "claude-6-opus", + "claude-mythos-6-20270901", + ])("adds binding for %s", (id) => { + const model = claude(sdk.npm, id) + expect(ProviderTransform.providerOptions(model, {})).toEqual({ + [sdk.key]: { [sdk.option]: { type: "adaptive", blockBinding: binding } }, + }) + expect( + ProviderTransform.providerOptions(model, { [sdk.option]: { type: "adaptive", display: "summarized" } }), + ).toEqual({ + [sdk.key]: { [sdk.option]: { type: "adaptive", display: "summarized", blockBinding: binding } }, + }) + expect( + ProviderTransform.providerOptions(model, { [sdk.option]: { type: "enabled", budgetTokens: 4000 } }), + ).toEqual({ + [sdk.key]: { [sdk.option]: { type: "enabled", budgetTokens: 4000, blockBinding: binding } }, + }) + expect(ProviderTransform.providerOptions(model, { [sdk.option]: { type: "disabled" } })).toEqual({ + [sdk.key]: { [sdk.option]: { type: "disabled" } }, + }) }) - } - }) - test("does not inject thinking for models that are off by default", () => { - for (const id of ["claude-opus-4-7", "claude-opus-4-5", "claude-sonnet-4-6", "claude-haiku-4-5"]) { - const model = claude("@ai-sdk/anthropic", id) - expect(ProviderTransform.providerOptions(model, {})).toEqual({ anthropic: {} }) - } + test.each([ + "claude-haiku-4-5", + "claude-opus-4-8", + "claude-sonnet-4-6", + "claude-opus-5", + "claude-sonnet-5", + "claude-fable-5", + "claude-opus-5-0", + "claude-opus-5-20260724", + "global.anthropic.claude-opus-5", + "us.anthropic.claude-opus-5", + "claude-sonnet-5@default", + "claude-mythos-5-1", + "claude-mythos-5.1", + "claude-5.1-mythos", + "global.anthropic.claude-mythos-5-1-v1:0", + "claude-mythos-5-1@default", + "CLAUDE-MYTHOS-5-1", + "claude-future", + ])("leaves thinking unchanged for %s", (id) => { + const model = claude(sdk.npm, id) + expect(ProviderTransform.providerOptions(model, {})).toEqual({ [sdk.key]: {} }) + expect( + ProviderTransform.providerOptions(model, { [sdk.option]: { type: "adaptive", display: "summarized" } }), + ).toEqual({ [sdk.key]: { [sdk.option]: { type: "adaptive", display: "summarized" } } }) + expect( + ProviderTransform.providerOptions(model, { [sdk.option]: { type: "enabled", budgetTokens: 4000 } }), + ).toEqual({ [sdk.key]: { [sdk.option]: { type: "enabled", budgetTokens: 4000 } } }) + }) + + test.each([ + ["claude-opus-5", "default"], + ["claude-opus-5", "high"], + ["claude-sonnet-5", "default"], + ["claude-sonnet-5", "high"], + ["claude-mythos-5-1", "default"], + ["claude-mythos-5-1", "high"], + ["claude-haiku-4-5", "title"], + ])("omits binding from the %s %s request body and betas", async (id, mode) => { + const requests: Request[] = [] + const capture = Object.assign( + async (...args: Parameters) => { + requests.push(new Request(...args)) + return Response.json( + sdk.key === "bedrock" + ? { + output: { message: { role: "assistant", content: [{ text: "ok" }] } }, + stopReason: "end_turn", + usage: { inputTokens: 1, outputTokens: 1, totalTokens: 2 }, + } + : { + type: "message", + id: "msg_1", + model: "test-model", + role: "assistant", + content: [{ type: "text", text: "ok" }], + stop_reason: "end_turn", + usage: { input_tokens: 1, output_tokens: 1 }, + }, + ) + }, + { preconnect: () => undefined }, + ) + const provider = + sdk.key === "bedrock" + ? createAmazonBedrock({ apiKey: "test-key", region: "ap-southeast-1", fetch: capture }) + : sdk.npm === "@ai-sdk/google-vertex/anthropic" + ? createVertexAnthropic({ + project: "test-project", + location: "global", + generateAuthToken: async () => "test-token", + fetch: capture, + }) + : createAnthropic({ apiKey: "test-key", fetch: capture }) + const model = claude( + sdk.npm, + sdk.key === "bedrock" + ? `global.anthropic.${id}` + : sdk.npm === "@ai-sdk/google-vertex/anthropic" + ? `${id}@default` + : id, + ) + const variants = ProviderTransform.variants(model) + const options = + mode === "title" + ? ProviderTransform.smallOptions({ ...model, variants }) + : mode === "high" + ? variants.high + : {} + await generateText({ + model: provider(model.api.id), + prompt: "hi", + maxOutputTokens: 32000, + providerOptions: ProviderTransform.providerOptions(model, options), + }) + expect(requests).toHaveLength(1) + const body = await requests[0].json() + const fields = sdk.key === "bedrock" ? (body.additionalModelRequestFields ?? {}) : body + expect(fields.thinking).toEqual( + mode === "title" + ? { type: "enabled", budget_tokens: 16000 } + : mode === "high" + ? { type: "adaptive", display: "summarized" } + : undefined, + ) + expect(fields.output_config).toEqual(mode === "high" ? { effort: "high" } : undefined) + expect(fields.anthropic_beta ?? []).not.toContain("thinking-binding-controls-2026-08-01") + expect(requests[0].headers.get("anthropic-beta")?.split(",") ?? []).not.toContain( + "thinking-binding-controls-2026-08-01", + ) + }) + }) }) test("leaves disabled thinking alone", () => { - const model = claude("@ai-sdk/anthropic", "claude-sonnet-5") + const model = claude("@ai-sdk/anthropic", "claude-fable-5-1") expect(ProviderTransform.providerOptions(model, { thinking: { type: "disabled" } })).toEqual({ anthropic: { thinking: { type: "disabled" } }, }) From ef2792511deb406f3b064e05a7cc1a01979260ee Mon Sep 17 00:00:00 2001 From: Victor Navarro Date: Wed, 2 Sep 2026 18:44:43 +0200 Subject: [PATCH 232/271] fix(console): restore migrated inference proxy requests (#46854) --- packages/console/app/src/lib/inference-proxy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/console/app/src/lib/inference-proxy.ts b/packages/console/app/src/lib/inference-proxy.ts index a6614e80f..a80db3b5e 100644 --- a/packages/console/app/src/lib/inference-proxy.ts +++ b/packages/console/app/src/lib/inference-proxy.ts @@ -51,5 +51,5 @@ export async function proxyInference(request: Request, clientIP?: string): Promi const requestID = request.headers.get("x-opencode-request-id") ?? request.headers.get("x-opencode-request") if (requestID) forwarded.headers.set("x-opencode-request-id", requestID) - return fetch(forwarded, { redirect: "error" }) + return fetch(forwarded, { redirect: "manual" }) } From 68abdce1a092e6302e99c2821a76071ee998d8f2 Mon Sep 17 00:00:00 2001 From: Darien Kindlund Date: Wed, 2 Sep 2026 15:15:39 -0400 Subject: [PATCH 233/271] fix(opencode): let config opt out of Anthropic thinking blockBinding (#46820) Co-authored-by: Aiden Cline --- packages/opencode/src/provider/transform.ts | 12 ++++++++++++ packages/opencode/test/provider/transform.test.ts | 15 +++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 56099effe..89b9c88ae 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -706,17 +706,29 @@ function anthropicBindsThinking(apiId: string) { const ANTHROPIC_BLOCK_BINDING = { prefixMismatchBehavior: "drop_block" } function anthropicBlockBinding(model: Provider.Model, options: { [x: string]: any }) { + const sdk = sdkKey(model.api.npm) + const key = sdk === "bedrock" ? "reasoningConfig" : sdk === "anthropic" ? "thinking" : undefined + // Consume the OpenCode-only opt-out even on models outside the default scope. + if (key && options[key]?.blockBinding === false) { + const result = { ...options, [key]: { ...options[key] } } + delete result[key].blockBinding + if (Object.keys(result[key]).length === 0) delete result[key] + return result + } + if (!anthropicBindsThinking(model.api.id)) return options switch (model.api.npm) { case "@ai-sdk/anthropic": case "@ai-sdk/google-vertex/anthropic": { const thinking = options.thinking ?? { type: "adaptive" } if (thinking.type !== "adaptive" && thinking.type !== "enabled") return options + if (thinking.blockBinding !== undefined) return options return { ...options, thinking: { ...thinking, blockBinding: ANTHROPIC_BLOCK_BINDING } } } case "@ai-sdk/amazon-bedrock": { const reasoningConfig = options.reasoningConfig ?? { type: "adaptive" } if (reasoningConfig.type !== "adaptive" && reasoningConfig.type !== "enabled") return options + if (reasoningConfig.blockBinding !== undefined) return options return { ...options, reasoningConfig: { ...reasoningConfig, blockBinding: ANTHROPIC_BLOCK_BINDING } } } } diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index bfe4a0aa9..9d767581b 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -938,6 +938,21 @@ describe("ProviderTransform.providerOptions", () => { ).toEqual({ [sdk.key]: { [sdk.option]: { type: "enabled", budgetTokens: 4000 } } }) }) + test.each(["claude-fable-5-1", "claude-opus-5"])("honors explicit binding controls for %s", (id) => { + const model = claude(sdk.npm, id) + const options = Object.freeze({ + [sdk.option]: Object.freeze({ type: "adaptive", blockBinding: false }), + }) + expect(ProviderTransform.providerOptions(model, options)).toEqual({ + [sdk.key]: { [sdk.option]: { type: "adaptive" } }, + }) + expect(ProviderTransform.providerOptions(model, { [sdk.option]: { blockBinding: false } })).toEqual({ + [sdk.key]: {}, + }) + const custom = { [sdk.option]: { type: "adaptive", blockBinding: { prefixMismatchBehavior: "error" } } } + expect(ProviderTransform.providerOptions(model, custom)).toEqual({ [sdk.key]: custom }) + }) + test.each([ ["claude-opus-5", "default"], ["claude-opus-5", "high"], From 4eb29a64f0054672950acf789f2b09487ebfbb20 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 2 Sep 2026 15:33:15 -0500 Subject: [PATCH 234/271] fix(opencode): default chunk timeout to five minutes (#46890) --- packages/core/src/v1/config/provider.ts | 9 ++- packages/opencode/src/provider/provider.ts | 2 +- .../test/provider/header-timeout.test.ts | 73 ++++++++++++++++++- packages/sdk/js/src/v2/gen/types.gen.ts | 7 +- packages/sdk/openapi.json | 13 +++- packages/web/src/content/docs/config.mdx | 2 +- 6 files changed, 95 insertions(+), 11 deletions(-) diff --git a/packages/core/src/v1/config/provider.ts b/packages/core/src/v1/config/provider.ts index f860a2b4a..2421e13de 100644 --- a/packages/core/src/v1/config/provider.ts +++ b/packages/core/src/v1/config/provider.ts @@ -114,9 +114,14 @@ export const Info = Schema.Struct({ description: "Timeout in milliseconds to wait for response headers. Provider integrations may set defaults. Set to false to disable timeout.", }), - chunkTimeout: Schema.optional(PositiveInt).annotate({ + chunkTimeout: Schema.optional( + Schema.Union([PositiveInt, Schema.Literal(false)]).annotate({ + description: + "Timeout in milliseconds between streamed SSE chunks for this provider (default: 300000). If no chunk arrives within this window, the request is aborted. Set to false to disable timeout.", + }), + ).annotate({ description: - "Timeout in milliseconds between streamed SSE chunks for this provider. If no chunk arrives within this window, the request is aborted.", + "Timeout in milliseconds between streamed SSE chunks for this provider (default: 300000). If no chunk arrives within this window, the request is aborted. Set to false to disable timeout.", }), }), [Schema.Record(Schema.String, Schema.Any)], diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 2c69d8fba..dc43fbfbd 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -1792,7 +1792,7 @@ const layer = Layer.effect( if (existing) return existing const customFetch = options["fetch"] - const chunkTimeout = options["chunkTimeout"] + const chunkTimeout = options["chunkTimeout"] ?? 300_000 const headerTimeout = options["headerTimeout"] delete options["chunkTimeout"] delete options["headerTimeout"] diff --git a/packages/opencode/test/provider/header-timeout.test.ts b/packages/opencode/test/provider/header-timeout.test.ts index fc5ab04e1..e0dd19e47 100644 --- a/packages/opencode/test/provider/header-timeout.test.ts +++ b/packages/opencode/test/provider/header-timeout.test.ts @@ -13,6 +13,8 @@ import { Env } from "@/env" import { Plugin } from "@/plugin" import { Provider } from "@/provider/provider" import { ProviderError } from "@/provider/error" +import { MessageV2 } from "@/session/message-v2" +import { SessionRetry } from "@/session/retry" afterEach(async () => { await disposeAllInstances() @@ -46,7 +48,42 @@ it.live("headerTimeout does not abort delayed SSE body after headers arrive", () }), ) -it.live("chunkTimeout raises a response stream error when SSE body stalls", () => +it.live("default chunkTimeout is applied at fetch without changing provider options", () => + Effect.gen(function* () { + const server = yield* Effect.acquireRelease( + Effect.promise(() => delayedBodyServer(250)), + (server) => Effect.sync(() => server.server.close()), + ) + + yield* provideTmpdirInstance( + () => + Effect.gen(function* () { + const provider = yield* Provider.Service + const configured = yield* provider.getProvider(ProviderV2.ID.make("test")) + const signals: (AbortSignal | null | undefined)[] = [] + configured.options.fetch = (input: RequestInfo | URL, init?: RequestInit) => { + signals.push(init?.signal) + return fetch(input, init) + } + const model = yield* provider.getModel(ProviderV2.ID.make("test"), ModelV2.ID.make("test-model")) + const language = yield* provider.getLanguage(model) + yield* Effect.acquireRelease( + Effect.promise(() => + language.doStream({ prompt: [{ role: "user", content: [{ type: "text", text: "hello" }] }] }), + ), + (result) => Effect.promise(() => result.stream.cancel()), + ) + + expect(signals).toHaveLength(1) + expect(signals[0]).toBeInstanceOf(AbortSignal) + expect(configured.options.chunkTimeout).toBeUndefined() + }), + { config: providerConfig(server.url) }, + ) + }), +) + +it.live("configured chunkTimeout raises a retryable response stream error when SSE body stalls", () => Effect.gen(function* () { const server = yield* Effect.acquireRelease( Effect.promise(() => delayedBodyServer(250)), @@ -74,12 +111,41 @@ it.live("chunkTimeout raises a response stream error when SSE body stalls", () = } }) expect(error).toBeInstanceOf(ProviderError.ResponseStreamError) + expect( + SessionRetry.retryable(MessageV2.fromError(error, { providerID: model.providerID }), model.providerID), + ).toEqual({ message: "SSE read timed out" }) }), { config: providerConfig(server.url, { chunkTimeout: 50 }) }, ) }), ) +it.live("chunkTimeout can be disabled with false", () => + Effect.gen(function* () { + const server = yield* Effect.acquireRelease( + Effect.promise(() => delayedBodyServer(250)), + (server) => Effect.sync(() => server.server.close()), + ) + + yield* provideTmpdirInstance( + () => + Effect.gen(function* () { + const provider = yield* Provider.Service + const configured = yield* provider.getProvider(ProviderV2.ID.make("test")) + expect(configured.options.chunkTimeout).toBe(false) + const model = yield* provider.getModel(ProviderV2.ID.make("test"), ModelV2.ID.make("test-model")) + const result = streamText({ + model: yield* provider.getLanguage(model), + messages: [{ role: "user", content: "hello" }], + }) + + expect(yield* Effect.promise(() => result.text)).toBe("late") + }), + { config: providerConfig(server.url, { chunkTimeout: false }) }, + ) + }), +) + it.live("headerTimeout aborts when response headers do not arrive", () => Effect.gen(function* () { const server = yield* Effect.acquireRelease( @@ -136,7 +202,7 @@ it.live("headerTimeout is opt-in for non-OpenAI providers", () => }), ) -it.live("OpenAI Codex headerTimeout default can be disabled by config", () => +it.live("OpenAI Codex header and chunk timeout defaults can be disabled by config", () => Effect.gen(function* () { yield* withAuthContent( Effect.gen(function* () { @@ -146,8 +212,9 @@ it.live("OpenAI Codex headerTimeout default can be disabled by config", () => const provider = yield* Provider.Service const openai = yield* provider.getProvider(ProviderV2.ID.openai) expect(openai.options.headerTimeout).toBe(false) + expect(openai.options.chunkTimeout).toBe(false) }), - { config: { provider: { openai: { options: { headerTimeout: false } } } } }, + { config: { provider: { openai: { options: { headerTimeout: false, chunkTimeout: false } } } } }, ) }), ) diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index 72b5e6f30..23d1b1964 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -1754,8 +1754,11 @@ export type ProviderConfig = { * Timeout in milliseconds to wait for response headers. Provider integrations may set defaults. Set to false to disable timeout. */ headerTimeout?: number | false - chunkTimeout?: number - [key: string]: unknown | string | boolean | number | false | number | false | number | undefined + /** + * Timeout in milliseconds between streamed SSE chunks for this provider (default: 300000). If no chunk arrives within this window, the request is aborted. Set to false to disable timeout. + */ + chunkTimeout?: number | false + [key: string]: unknown | string | boolean | number | false | number | false | number | false | undefined } models?: { [key: string]: { diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json index 5e372b6fb..d9f757993 100644 --- a/packages/sdk/openapi.json +++ b/packages/sdk/openapi.json @@ -20783,8 +20783,17 @@ "description": "Timeout in milliseconds to wait for response headers. Provider integrations may set defaults. Set to false to disable timeout." }, "chunkTimeout": { - "type": "integer", - "exclusiveMinimum": 0 + "anyOf": [ + { + "type": "integer", + "exclusiveMinimum": 0 + }, + { + "type": "boolean", + "enum": [false] + } + ], + "description": "Timeout in milliseconds between streamed SSE chunks for this provider (default: 300000). If no chunk arrives within this window, the request is aborted. Set to false to disable timeout." } }, "additionalProperties": {} diff --git a/packages/web/src/content/docs/config.mdx b/packages/web/src/content/docs/config.mdx index 318f013b4..70dc8851d 100644 --- a/packages/web/src/content/docs/config.mdx +++ b/packages/web/src/content/docs/config.mdx @@ -392,7 +392,7 @@ Provider options can include `timeout`, `chunkTimeout`, and `setCacheKey`: ``` - `timeout` - Request timeout in milliseconds (default: 300000). Set to `false` to disable. -- `chunkTimeout` - Timeout in milliseconds between streamed response chunks. If no chunk arrives in time, the request is aborted. +- `chunkTimeout` - Timeout in milliseconds between streamed response chunks (default: 300000, or 5 minutes). If no chunk arrives in time, the request is aborted. Set to `false` to disable. - `setCacheKey` - Ensure a cache key is always set for designated provider. You can also configure [local models](/docs/models#local). [Learn more](/docs/models). From b04697366f05419e9bd7a92f841813dd976161c9 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 2 Sep 2026 16:00:54 -0500 Subject: [PATCH 235/271] fix(opencode): default header timeout to five minutes (#46903) --- packages/core/src/v1/config/provider.ts | 4 +- packages/opencode/src/provider/provider.ts | 2 +- .../test/provider/header-timeout.test.ts | 74 ++++++++++--------- packages/sdk/js/src/v2/gen/types.gen.ts | 2 +- packages/sdk/openapi.json | 2 +- packages/web/src/content/docs/config.mdx | 3 +- 6 files changed, 47 insertions(+), 40 deletions(-) diff --git a/packages/core/src/v1/config/provider.ts b/packages/core/src/v1/config/provider.ts index 2421e13de..5b6a8133c 100644 --- a/packages/core/src/v1/config/provider.ts +++ b/packages/core/src/v1/config/provider.ts @@ -108,11 +108,11 @@ export const Info = Schema.Struct({ headerTimeout: Schema.optional( Schema.Union([PositiveInt, Schema.Literal(false)]).annotate({ description: - "Timeout in milliseconds to wait for response headers. Provider integrations may set defaults. Set to false to disable timeout.", + "Timeout in milliseconds to wait for response headers (default: 300000). Set to false to disable timeout.", }), ).annotate({ description: - "Timeout in milliseconds to wait for response headers. Provider integrations may set defaults. Set to false to disable timeout.", + "Timeout in milliseconds to wait for response headers (default: 300000). Set to false to disable timeout.", }), chunkTimeout: Schema.optional( Schema.Union([PositiveInt, Schema.Literal(false)]).annotate({ diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index dc43fbfbd..72d5a7a59 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -1793,7 +1793,7 @@ const layer = Layer.effect( const customFetch = options["fetch"] const chunkTimeout = options["chunkTimeout"] ?? 300_000 - const headerTimeout = options["headerTimeout"] + const headerTimeout = options["headerTimeout"] ?? 300_000 delete options["chunkTimeout"] delete options["headerTimeout"] diff --git a/packages/opencode/test/provider/header-timeout.test.ts b/packages/opencode/test/provider/header-timeout.test.ts index e0dd19e47..38b884dc7 100644 --- a/packages/opencode/test/provider/header-timeout.test.ts +++ b/packages/opencode/test/provider/header-timeout.test.ts @@ -48,40 +48,46 @@ it.live("headerTimeout does not abort delayed SSE body after headers arrive", () }), ) -it.live("default chunkTimeout is applied at fetch without changing provider options", () => - Effect.gen(function* () { - const server = yield* Effect.acquireRelease( - Effect.promise(() => delayedBodyServer(250)), - (server) => Effect.sync(() => server.server.close()), - ) +for (const timeout of ["chunkTimeout", "headerTimeout"] as const) { + it.live(`default ${timeout} is applied at fetch without changing provider options`, () => + Effect.gen(function* () { + const server = yield* Effect.acquireRelease( + Effect.promise(() => delayedBodyServer(250)), + (server) => Effect.sync(() => server.server.close()), + ) - yield* provideTmpdirInstance( - () => - Effect.gen(function* () { - const provider = yield* Provider.Service - const configured = yield* provider.getProvider(ProviderV2.ID.make("test")) - const signals: (AbortSignal | null | undefined)[] = [] - configured.options.fetch = (input: RequestInfo | URL, init?: RequestInit) => { - signals.push(init?.signal) - return fetch(input, init) - } - const model = yield* provider.getModel(ProviderV2.ID.make("test"), ModelV2.ID.make("test-model")) - const language = yield* provider.getLanguage(model) - yield* Effect.acquireRelease( - Effect.promise(() => - language.doStream({ prompt: [{ role: "user", content: [{ type: "text", text: "hello" }] }] }), - ), - (result) => Effect.promise(() => result.stream.cancel()), - ) + yield* provideTmpdirInstance( + () => + Effect.gen(function* () { + const provider = yield* Provider.Service + const configured = yield* provider.getProvider(ProviderV2.ID.make("test")) + const signals: (AbortSignal | null | undefined)[] = [] + configured.options.fetch = (input: RequestInfo | URL, init?: RequestInit) => { + signals.push(init?.signal) + return fetch(input, init) + } + const model = yield* provider.getModel(ProviderV2.ID.make("test"), ModelV2.ID.make("test-model")) + const language = yield* provider.getLanguage(model) + yield* Effect.acquireRelease( + Effect.promise(() => + language.doStream({ prompt: [{ role: "user", content: [{ type: "text", text: "hello" }] }] }), + ), + (result) => Effect.promise(() => result.stream.cancel()), + ) - expect(signals).toHaveLength(1) - expect(signals[0]).toBeInstanceOf(AbortSignal) - expect(configured.options.chunkTimeout).toBeUndefined() - }), - { config: providerConfig(server.url) }, - ) - }), -) + expect(signals).toHaveLength(1) + expect(signals[0]).toBeInstanceOf(AbortSignal) + expect(configured.options[timeout]).toBeUndefined() + }), + { + config: providerConfig(server.url, { + [timeout === "chunkTimeout" ? "headerTimeout" : "chunkTimeout"]: false, + }), + }, + ) + }), + ) +} it.live("configured chunkTimeout raises a retryable response stream error when SSE body stalls", () => Effect.gen(function* () { @@ -178,7 +184,7 @@ it.live("headerTimeout aborts when response headers do not arrive", () => }), ) -it.live("headerTimeout is opt-in for non-OpenAI providers", () => +it.live("headerTimeout can be disabled with false for non-OpenAI providers", () => Effect.gen(function* () { const server = yield* Effect.acquireRelease( Effect.promise(() => delayedHeaderServer(100)), @@ -197,7 +203,7 @@ it.live("headerTimeout is opt-in for non-OpenAI providers", () => expect(yield* Effect.promise(() => result.text)).toBe("ok") }), - { config: providerConfig(server.url) }, + { config: providerConfig(server.url, { headerTimeout: false }) }, ) }), ) diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index 23d1b1964..f06c20cc4 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -1751,7 +1751,7 @@ export type ProviderConfig = { */ timeout?: number | false /** - * Timeout in milliseconds to wait for response headers. Provider integrations may set defaults. Set to false to disable timeout. + * Timeout in milliseconds to wait for response headers (default: 300000). Set to false to disable timeout. */ headerTimeout?: number | false /** diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json index d9f757993..e66d14050 100644 --- a/packages/sdk/openapi.json +++ b/packages/sdk/openapi.json @@ -20780,7 +20780,7 @@ "enum": [false] } ], - "description": "Timeout in milliseconds to wait for response headers. Provider integrations may set defaults. Set to false to disable timeout." + "description": "Timeout in milliseconds to wait for response headers (default: 300000). Set to false to disable timeout." }, "chunkTimeout": { "anyOf": [ diff --git a/packages/web/src/content/docs/config.mdx b/packages/web/src/content/docs/config.mdx index 70dc8851d..22c0640f6 100644 --- a/packages/web/src/content/docs/config.mdx +++ b/packages/web/src/content/docs/config.mdx @@ -374,7 +374,7 @@ You can configure the providers and models you want to use in your OpenCode conf The `small_model` option configures a separate model for lightweight tasks like title generation. By default, OpenCode tries to use a cheaper model if one is available from your provider, otherwise it falls back to your main model. -Provider options can include `timeout`, `chunkTimeout`, and `setCacheKey`: +Provider options can include `timeout`, `headerTimeout`, `chunkTimeout`, and `setCacheKey`: ```json title="opencode.json" { @@ -392,6 +392,7 @@ Provider options can include `timeout`, `chunkTimeout`, and `setCacheKey`: ``` - `timeout` - Request timeout in milliseconds (default: 300000). Set to `false` to disable. +- `headerTimeout` - Timeout in milliseconds to wait for response headers (default: 300000, or 5 minutes). This timer stops once headers arrive and does not limit the streamed response body. Set to `false` to disable. - `chunkTimeout` - Timeout in milliseconds between streamed response chunks (default: 300000, or 5 minutes). If no chunk arrives in time, the request is aborted. Set to `false` to disable. - `setCacheKey` - Ensure a cache key is always set for designated provider. From 05028334b27b97c227f22bda50a53c8932f9a93c Mon Sep 17 00:00:00 2001 From: opencode Date: Wed, 2 Sep 2026 21:40:57 +0000 Subject: [PATCH 236/271] sync release versions for v1.18.27 --- bun.lock | 56 ++++++++++----------- packages/app/package.json | 2 +- packages/cli/package.json | 2 +- packages/codemode/package.json | 2 +- packages/console/app/package.json | 2 +- packages/console/core/package.json | 2 +- packages/console/function/package.json | 2 +- packages/console/mail/package.json | 2 +- packages/console/support/package.json | 2 +- packages/core/package.json | 2 +- packages/desktop/package.json | 2 +- packages/effect-drizzle-sqlite/package.json | 2 +- packages/effect-sqlite-node/package.json | 2 +- packages/enterprise/package.json | 2 +- packages/function/package.json | 2 +- packages/http-recorder/package.json | 2 +- packages/llm/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/server/package.json | 2 +- packages/session-ui/package.json | 2 +- packages/slack/package.json | 2 +- packages/stats/app/package.json | 2 +- packages/stats/core/package.json | 2 +- packages/stats/server/package.json | 2 +- packages/tui/package.json | 2 +- packages/ui/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 30 files changed, 57 insertions(+), 57 deletions(-) diff --git a/bun.lock b/bun.lock index adce8d3bb..3cccd0d12 100644 --- a/bun.lock +++ b/bun.lock @@ -29,7 +29,7 @@ }, "packages/app": { "name": "@opencode-ai/app", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", @@ -96,7 +96,7 @@ }, "packages/cli": { "name": "@opencode-ai/cli", - "version": "1.18.26", + "version": "1.18.27", "bin": { "lildax": "./bin/lildax.cjs", }, @@ -144,7 +144,7 @@ }, "packages/codemode": { "name": "@opencode-ai/codemode", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "acorn": "8.15.0", "effect": "catalog:", @@ -158,7 +158,7 @@ }, "packages/console/app": { "name": "@opencode-ai/console-app", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@ibm/plex": "6.4.1", @@ -195,7 +195,7 @@ }, "packages/console/core": { "name": "@opencode-ai/console-core", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@jsx-email/render": "1.1.1", @@ -222,7 +222,7 @@ }, "packages/console/function": { "name": "@opencode-ai/console-function", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/openai": "3.0.48", @@ -245,7 +245,7 @@ }, "packages/console/mail": { "name": "@opencode-ai/console-mail", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", @@ -269,7 +269,7 @@ }, "packages/console/support": { "name": "@opencode-ai/console-support", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@opencode-ai/console-core": "workspace:*", @@ -289,7 +289,7 @@ }, "packages/core": { "name": "@opencode-ai/core", - "version": "1.18.26", + "version": "1.18.27", "bin": { "opencode": "./bin/opencode", }, @@ -383,7 +383,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@zip.js/zip.js": "2.7.62", "drizzle-orm": "catalog:", @@ -437,7 +437,7 @@ }, "packages/effect-drizzle-sqlite": { "name": "@opencode-ai/effect-drizzle-sqlite", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "drizzle-orm": "catalog:", "effect": "catalog:", @@ -451,7 +451,7 @@ }, "packages/effect-sqlite-node": { "name": "@opencode-ai/effect-sqlite-node", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "effect": "catalog:", }, @@ -463,7 +463,7 @@ }, "packages/enterprise": { "name": "@opencode-ai/enterprise", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@hono/standard-validator": "catalog:", "@opencode-ai/core": "workspace:*", @@ -495,7 +495,7 @@ }, "packages/function": { "name": "@opencode-ai/function", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "catalog:", @@ -511,7 +511,7 @@ }, "packages/http-recorder": { "name": "@opencode-ai/http-recorder", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@effect/platform-node": "4.0.0-beta.83", "@effect/platform-node-shared": "4.0.0-beta.83", @@ -542,7 +542,7 @@ }, "packages/llm": { "name": "@opencode-ai/llm", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@opencode-ai/schema": "workspace:*", "@smithy/eventstream-codec": "4.2.14", @@ -561,7 +561,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "1.18.26", + "version": "1.18.27", "bin": { "opencode": "./bin/opencode", }, @@ -692,7 +692,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@ai-sdk/provider": "3.0.8", "@opencode-ai/sdk": "workspace:*", @@ -768,7 +768,7 @@ }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "cross-spawn": "catalog:", }, @@ -783,7 +783,7 @@ }, "packages/server": { "name": "@opencode-ai/server", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", @@ -798,7 +798,7 @@ }, "packages/session-ui": { "name": "@opencode-ai/session-ui", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@kobalte/core": "catalog:", "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13-v2.tgz", @@ -838,7 +838,7 @@ }, "packages/slack": { "name": "@opencode-ai/slack", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@opencode-ai/sdk": "workspace:*", "@slack/bolt": "^3.17.1", @@ -851,7 +851,7 @@ }, "packages/stats/app": { "name": "@opencode-ai/stats-app", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@ibm/plex": "6.4.1", "@kobalte/core": "catalog:", @@ -878,7 +878,7 @@ }, "packages/stats/core": { "name": "@opencode-ai/stats-core", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@aws-sdk/client-athena": "3.933.0", "@planetscale/database": "1.19.0", @@ -897,7 +897,7 @@ }, "packages/stats/server": { "name": "@opencode-ai/stats-server", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@aws-sdk/client-firehose": "3.933.0", "@effect/platform-node": "catalog:", @@ -939,7 +939,7 @@ }, "packages/tui": { "name": "@opencode-ai/tui", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", @@ -966,7 +966,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@kobalte/core": "catalog:", "@pierre/diffs": "catalog:", @@ -1017,7 +1017,7 @@ }, "packages/web": { "name": "@opencode-ai/web", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", diff --git a/packages/app/package.json b/packages/app/package.json index 26dd36bcb..15a689c0c 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "1.18.26", + "version": "1.18.27", "description": "", "type": "module", "exports": { diff --git a/packages/cli/package.json b/packages/cli/package.json index dcc5b55ab..887101bf1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/cli", - "version": "1.18.26", + "version": "1.18.27", "type": "module", "license": "MIT", "bin": { diff --git a/packages/codemode/package.json b/packages/codemode/package.json index 23d9cf841..1fa68a31d 100644 --- a/packages/codemode/package.json +++ b/packages/codemode/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/codemode", - "version": "1.18.26", + "version": "1.18.27", "description": "Effect-native confined code execution over schema-described tools", "private": true, "type": "module", diff --git a/packages/console/app/package.json b/packages/console/app/package.json index 19fdec859..64138086b 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-app", - "version": "1.18.26", + "version": "1.18.27", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/console/core/package.json b/packages/console/core/package.json index b1f79b25a..3409dbd25 100644 --- a/packages/console/core/package.json +++ b/packages/console/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/console-core", - "version": "1.18.26", + "version": "1.18.27", "private": true, "type": "module", "license": "MIT", diff --git a/packages/console/function/package.json b/packages/console/function/package.json index 702df201f..6f1e12c6b 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-function", - "version": "1.18.26", + "version": "1.18.27", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json index a58ea7214..997b1d89f 100644 --- a/packages/console/mail/package.json +++ b/packages/console/mail/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-mail", - "version": "1.18.26", + "version": "1.18.27", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", diff --git a/packages/console/support/package.json b/packages/console/support/package.json index 1fe427465..74511617d 100644 --- a/packages/console/support/package.json +++ b/packages/console/support/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/console-support", - "version": "1.18.26", + "version": "1.18.27", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/core/package.json b/packages/core/package.json index ce620bc85..8979120a9 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.26", + "version": "1.18.27", "name": "@opencode-ai/core", "type": "module", "license": "MIT", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 27d16283e..d134d4c53 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop", "private": true, - "version": "1.18.26", + "version": "1.18.27", "type": "module", "license": "MIT", "homepage": "https://opencode.ai", diff --git a/packages/effect-drizzle-sqlite/package.json b/packages/effect-drizzle-sqlite/package.json index 904b305cc..75dfd6e73 100644 --- a/packages/effect-drizzle-sqlite/package.json +++ b/packages/effect-drizzle-sqlite/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.26", + "version": "1.18.27", "name": "@opencode-ai/effect-drizzle-sqlite", "type": "module", "license": "MIT", diff --git a/packages/effect-sqlite-node/package.json b/packages/effect-sqlite-node/package.json index 99e1f172b..e60ad3db4 100644 --- a/packages/effect-sqlite-node/package.json +++ b/packages/effect-sqlite-node/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.26", + "version": "1.18.27", "name": "@opencode-ai/effect-sqlite-node", "type": "module", "license": "MIT", diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json index dde092a8b..3fccb804a 100644 --- a/packages/enterprise/package.json +++ b/packages/enterprise/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/enterprise", - "version": "1.18.26", + "version": "1.18.27", "private": true, "type": "module", "license": "MIT", diff --git a/packages/function/package.json b/packages/function/package.json index 4f3b6332c..eef35ddd9 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/function", - "version": "1.18.26", + "version": "1.18.27", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/http-recorder/package.json b/packages/http-recorder/package.json index f4d119f19..5cf36ff28 100644 --- a/packages/http-recorder/package.json +++ b/packages/http-recorder/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.26", + "version": "1.18.27", "name": "@opencode-ai/http-recorder", "description": "Record and replay Effect HTTP client traffic with deterministic cassettes", "type": "module", diff --git a/packages/llm/package.json b/packages/llm/package.json index 9826e2a5d..accb982ac 100644 --- a/packages/llm/package.json +++ b/packages/llm/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.26", + "version": "1.18.27", "name": "@opencode-ai/llm", "type": "module", "license": "MIT", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 00edea054..03f5e1731 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.18.26", + "version": "1.18.27", "name": "opencode", "type": "module", "license": "MIT", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index a822e45a2..87fefc959 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "1.18.26", + "version": "1.18.27", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index e808bcae5..3b4572544 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "1.18.26", + "version": "1.18.27", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index 0ed32b1dd..a379a5f06 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/server", - "version": "1.18.26", + "version": "1.18.27", "private": true, "type": "module", "license": "MIT", diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json index 80f4cc5bc..c9513628e 100644 --- a/packages/session-ui/package.json +++ b/packages/session-ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/session-ui", - "version": "1.18.26", + "version": "1.18.27", "private": true, "type": "module", "license": "MIT", diff --git a/packages/slack/package.json b/packages/slack/package.json index c7c7a3455..9f4c08c9a 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/slack", - "version": "1.18.26", + "version": "1.18.27", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index 5ed324bf5..2e71201a4 100644 --- a/packages/stats/app/package.json +++ b/packages/stats/app/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-app", - "version": "1.18.26", + "version": "1.18.27", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json index c21dc5b74..5d77e8262 100644 --- a/packages/stats/core/package.json +++ b/packages/stats/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-core", - "version": "1.18.26", + "version": "1.18.27", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json index ab9b7d140..8bd168d49 100644 --- a/packages/stats/server/package.json +++ b/packages/stats/server/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/stats-server", - "version": "1.18.26", + "version": "1.18.27", "private": true, "type": "module", "license": "MIT", diff --git a/packages/tui/package.json b/packages/tui/package.json index 2bfdaf4d3..9bcdc3f13 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/tui", - "version": "1.18.26", + "version": "1.18.27", "private": true, "type": "module", "license": "MIT", diff --git a/packages/ui/package.json b/packages/ui/package.json index 995e8be52..6bbdaa111 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/ui", - "version": "1.18.26", + "version": "1.18.27", "type": "module", "license": "MIT", "repository": { diff --git a/packages/web/package.json b/packages/web/package.json index 135e663ab..5c2d0acdf 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,7 +2,7 @@ "name": "@opencode-ai/web", "type": "module", "license": "MIT", - "version": "1.18.26", + "version": "1.18.27", "scripts": { "dev": "astro dev", "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index 1cd570242..7a9b63a3c 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "1.18.26", + "version": "1.18.27", "publisher": "sst-dev", "repository": { "type": "git", From 8d1f8916d30f4ea1c90012a5d63b64711527c67d Mon Sep 17 00:00:00 2001 From: Vladimir Glafirov Date: Thu, 3 Sep 2026 01:18:04 +0200 Subject: [PATCH 237/271] chore: bump gitlab-ai-provider to 6.13.0 (#46914) --- bun.lock | 6 +++--- packages/core/package.json | 2 +- packages/opencode/package.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bun.lock b/bun.lock index 3cccd0d12..72544b5bb 100644 --- a/bun.lock +++ b/bun.lock @@ -341,7 +341,7 @@ "drizzle-orm": "catalog:", "effect": "catalog:", "fuzzysort": "3.1.0", - "gitlab-ai-provider": "6.12.1", + "gitlab-ai-provider": "6.13.0", "glob": "13.0.5", "google-auth-library": "10.5.0", "gray-matter": "4.0.3", @@ -634,7 +634,7 @@ "drizzle-orm": "catalog:", "effect": "catalog:", "fuzzysort": "3.1.0", - "gitlab-ai-provider": "6.12.1", + "gitlab-ai-provider": "6.13.0", "glob": "13.0.5", "google-auth-library": "10.5.0", "gray-matter": "4.0.3", @@ -3845,7 +3845,7 @@ "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], - "gitlab-ai-provider": ["gitlab-ai-provider@6.12.1", "", { "dependencies": { "@anthropic-ai/sdk": "^0.71.0", "@anycable/core": "^0.9.2", "graphql-request": "^6.1.0", "isomorphic-ws": "^5.0.0", "openai": "^6.16.0", "socket.io-client": "^4.8.1", "vscode-jsonrpc": "^8.2.1", "zod": "^3.25.76" }, "peerDependencies": { "@ai-sdk/provider": ">=3.0.0", "@ai-sdk/provider-utils": ">=4.0.0" } }, "sha512-Qn5iHqvjG8yktI5MWaUgdRR94l7O4WtYW0CAbhsCh1Tj0Fei/DeprOYPVyf4Nht1Ix6U2PXSYM32QOHI6Z2TDw=="], + "gitlab-ai-provider": ["gitlab-ai-provider@6.13.0", "", { "dependencies": { "@anthropic-ai/sdk": "^0.71.0", "@anycable/core": "^0.9.2", "graphql-request": "^6.1.0", "isomorphic-ws": "^5.0.0", "openai": "^6.16.0", "socket.io-client": "^4.8.1", "vscode-jsonrpc": "^8.2.1", "zod": "^3.25.76" }, "peerDependencies": { "@ai-sdk/provider": ">=3.0.0", "@ai-sdk/provider-utils": ">=4.0.0" } }, "sha512-JDZhNjvoiB7xBfesNegXNDg6ItKf9M2l8/DifuIyuvYmGgaZnDDbl89QrOKSoIzAOpo/+3Om0qviBPm84nGEbg=="], "glob": ["glob@13.0.5", "", { "dependencies": { "minimatch": "^10.2.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-BzXxZg24Ibra1pbQ/zE7Kys4Ua1ks7Bn6pKLkVPZ9FZe4JQS6/Q7ef3LG1H+k7lUf5l4T3PLSyYyYJVYUvfgTw=="], diff --git a/packages/core/package.json b/packages/core/package.json index 8979120a9..0dbf20fc8 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -108,7 +108,7 @@ "drizzle-orm": "catalog:", "effect": "catalog:", "fuzzysort": "3.1.0", - "gitlab-ai-provider": "6.12.1", + "gitlab-ai-provider": "6.13.0", "glob": "13.0.5", "google-auth-library": "10.5.0", "gray-matter": "4.0.3", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 03f5e1731..9786bd0e5 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -120,7 +120,7 @@ "drizzle-orm": "catalog:", "effect": "catalog:", "fuzzysort": "3.1.0", - "gitlab-ai-provider": "6.12.1", + "gitlab-ai-provider": "6.13.0", "glob": "13.0.5", "google-auth-library": "10.5.0", "gray-matter": "4.0.3", From 3a9d4e78b6b4509c2f7e91812a735e568e7f3f84 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Wed, 2 Sep 2026 23:33:47 +0000 Subject: [PATCH 238/271] chore: update nix node_modules hashes --- nix/hashes.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/hashes.json b/nix/hashes.json index 7b7a6081a..b36141f40 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-SVvFPO+KuS67+6XGPhaB3cIuc3XUyM0XVccy5v8afS4=", - "aarch64-linux": "sha256-HJRrSu5u0TEg214d2RAbM1C+nmrxvIR/d7JlSBOGb9I=", - "aarch64-darwin": "sha256-ytmHSdC0PVGAJSbpt/+YwL5ySF3w6r/9uZpZACPppkI=", - "x86_64-darwin": "sha256-ma7K4K+xn7Jz3+YPA/n8ly1o308UNoM/DO9Z8yZSAKE=" + "x86_64-linux": "sha256-2kzFIn42mD7ZDu/+6lWctqjZ/lIVZZfjZhmF/ymhF54=", + "aarch64-linux": "sha256-4HlReGD3gYfyyfnY/FQ46Ov+g3ZGV3sBYQ9p1bS9YAY=", + "aarch64-darwin": "sha256-dkfCoH/sW9XBPZ7XhnUoE54TY1lcfNvZ5wQQLr7gKiQ=", + "x86_64-darwin": "sha256-32t1JEcibZ4OrornIgfWOGQA87FOXjrxrxlDrflh7Ss=" } } From bbe4c952d707bcb5436646de30a1ed8f0cc64b74 Mon Sep 17 00:00:00 2001 From: "Victor M. SMITH" <72023257+MVS-source@users.noreply.github.com> Date: Thu, 3 Sep 2026 03:35:18 +0200 Subject: [PATCH 239/271] docs: add Eden AI to the providers list (#43386) --- packages/web/src/content/docs/providers.mdx | 48 +++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/packages/web/src/content/docs/providers.mdx b/packages/web/src/content/docs/providers.mdx index a1d01079f..ff2e8cfee 100644 --- a/packages/web/src/content/docs/providers.mdx +++ b/packages/web/src/content/docs/providers.mdx @@ -874,6 +874,54 @@ Selecting a router model is a drop-in replacement for any other model — OpenCo --- +### Eden AI + +[Eden AI](https://www.edenai.co/) is an EU-based gateway that serves models from many vendors over a single OpenAI-compatible API, with a separate EU endpoint for teams that need inference to stay in the EU. + +1. Head over to the [Eden AI platform](https://app.edenai.run/user/register) to create an account and generate an API key. + +2. Run the `/connect` command and search for **Eden AI**. + + ```txt + /connect + ``` + +3. Enter your Eden AI API key. + + ```txt + ┌ API key + │ + │ + └ enter + ``` + +4. Run the `/models` command to select a model like _Mistral Large 3_ or _Claude Sonnet 5_. + + ```txt + /models + ``` + + Eden AI model ids are themselves in `vendor/model` form, so a full reference has three segments, for example `edenai/anthropic/claude-sonnet-5`. + +5. To keep requests on Eden AI's EU gateway, set its base URL. + + ```json title="opencode.json" + { + "$schema": "https://opencode.ai/config.json", + "provider": { + "edenai": { + "options": { + "baseURL": "https://api.eu.edenai.run/v3" + } + } + } + } + ``` + + The default is `https://api.edenai.run/v3`, so this swaps the global endpoint for the EU one. The EU endpoint serves the subset of the catalog that is available in the EU, so a model chosen in step 4 may not be reachable through it. + +--- + ### FrogBot 1. Head over to the [FrogBot dashboard](https://app.frogbot.ai/signup), create an account, and generate an API key. From b578b7261fc9ec4917fe272df5cc4bd8a056cd5d Mon Sep 17 00:00:00 2001 From: David Hill <1879069+iamdavidhill@users.noreply.github.com> Date: Wed, 2 Sep 2026 19:47:21 -0600 Subject: [PATCH 240/271] fix(app): increase open-in icon size (#46540) --- packages/app/src/components/session/open-in-app-v2.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/app/src/components/session/open-in-app-v2.tsx b/packages/app/src/components/session/open-in-app-v2.tsx index e26ff2e0e..b5291dcc3 100644 --- a/packages/app/src/components/session/open-in-app-v2.tsx +++ b/packages/app/src/components/session/open-in-app-v2.tsx @@ -31,7 +31,10 @@ export function OpenInAppV2(props: { directory: () => string }) { disabled={state.opening()} aria-label={language.t("session.header.open.ariaLabel", { app: state.current().label })} > - }> + } + > From f12e14cf1640cbf0dfb6b1ff425b2daaef459eec Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 11:01:59 +0200 Subject: [PATCH 241/271] fix(app): identify desktop in Console device auth (v1) (#47000) --- packages/app/src/components/dialog-connect-provider.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/app/src/components/dialog-connect-provider.tsx b/packages/app/src/components/dialog-connect-provider.tsx index aa1f51998..1081310e5 100644 --- a/packages/app/src/components/dialog-connect-provider.tsx +++ b/packages/app/src/components/dialog-connect-provider.tsx @@ -33,6 +33,7 @@ import { ExternalLink } from "@/components/external-link" import { useServerSDK } from "@/context/server-sdk" import { useServerSync } from "@/context/server-sync" import { useLanguage } from "@/context/language" +import { usePlatform } from "@/context/platform" import { useSettings } from "@/context/settings" import { popularProviders, useProviders } from "@/hooks/use-providers" import { CustomProviderForm } from "./dialog-custom-provider" @@ -386,6 +387,7 @@ function ProviderConnection(props: { const serverSDK = useServerSDK() const params = useParams() const language = useLanguage() + const platform = usePlatform() const settings = useSettings() const newLayout = settings.general.newLayoutDesigns const providers = useProviders(() => props.directory?.()) @@ -560,6 +562,11 @@ function ProviderConnection(props: { }) .then((x) => { if (!alive.value) return + if (props.provider === "opencode" && platform.platform === "desktop") { + const url = new URL(x.data.url) + url.searchParams.set("client_id", "opencode-desktop") + x.data.url = url.href + } dispatch({ type: "auth.complete", authorization: x.data }) }) .catch((e) => { From 79d503150ca22f151afe4ea543fac8a8eb8aef53 Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 3 Sep 2026 21:52:04 +0800 Subject: [PATCH 242/271] docs(web): translate Go usage requirements (#47057) --- packages/web/src/content/docs/ar/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/bs/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/da/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/de/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/es/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/fr/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/go.mdx | 3 ++- packages/web/src/content/docs/it/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/ja/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/ko/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/nb/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/pl/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/pt-br/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/ru/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/th/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/tr/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/zh-cn/go.mdx | 12 ++++++++++++ packages/web/src/content/docs/zh-tw/go.mdx | 12 ++++++++++++ 18 files changed, 206 insertions(+), 1 deletion(-) diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index fff712bd6..796e1dfa9 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -80,6 +80,18 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر --- +## أين يمكنني استخدامه؟ + +صُمّم OpenCode Go للاستخدام مع [OpenCode](https://opencode.ai) وغيره من وكلاء البرمجة الشائعين الذين ينشئون أنواعًا مماثلة من الطلبات. + +تتم مراقبة حركة المرور لرصد الاستخدام المسيء الذي يؤدي إلى تدهور تجربة المستخدمين الآخرين. + +لتجنب وضع علامة على حسابك، تأكد من أن الأداة التي تستخدمها + +1\. لا تنشئ حركة مرور مسيئة +2\. تعرّف عن نفسها بشكل صحيح (من دون معرّفات وكيل مستخدم عامة) +3\. تتضمن ترويسة `x-opencode-session` حتى نتمكن من تحسين التخزين المؤقت للمطالبات + ## حدود الاستخدام يتضمن OpenCode Go الحدود التالية: diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index d6e8034bb..c1de47ba9 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -90,6 +90,18 @@ Lista modela se može mijenjati dok testiramo i dodajemo nove. --- +## Gdje ga mogu koristiti? + +OpenCode Go je osmišljen za korištenje s [OpenCode-om](https://opencode.ai) i drugim popularnim agentima za programiranje koji generišu slične vrste zahtjeva. + +Saobraćaj se nadzire radi otkrivanja zloupotrebe koja narušava iskustvo drugih korisnika. + +Kako vaš račun ne bi bio označen, pobrinite se da alat koji koristite + +1\. ne generiše saobraćaj koji predstavlja zloupotrebu +2\. se ispravno identifikuje (bez generičkih User-Agent identifikatora) +3\. uključuje zaglavlje `x-opencode-session` kako bismo mogli optimizovati keširanje promptova + ## Ograničenja upotrebe OpenCode Go uključuje sljedeća ograničenja: diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index a4d33dd2e..864b56ef1 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -90,6 +90,18 @@ Listen over modeller kan ændre sig, efterhånden som vi tester og tilføjer nye --- +## Hvor kan jeg bruge det? + +OpenCode Go er designet til brug med [OpenCode](https://opencode.ai) og andre populære kodningsagenter, der genererer lignende typer anmodninger. + +Trafikken overvåges for misbrug, der forringer oplevelsen for andre brugere. + +For at sikre, at din konto ikke bliver markeret, skal du sørge for, at det værktøj, du bruger, + +1\. ikke genererer misbrugstrafik +2\. identificerer sig korrekt (ingen generiske User-Agent-identifikatorer) +3\. inkluderer `x-opencode-session`-headeren, så vi kan optimere prompt-caching + ## Forbrugsgrænser OpenCode Go inkluderer følgende grænser: diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index fa284e851..a2c33f8cf 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -82,6 +82,18 @@ Die Liste der Modelle kann sich ändern, während wir neue testen und hinzufüge --- +## Wo kann ich es verwenden? + +OpenCode Go wurde für die Verwendung mit [OpenCode](https://opencode.ai) und anderen beliebten Coding-Agenten entwickelt, die ähnliche Arten von Anfragen erzeugen. + +Der Datenverkehr wird auf missbräuchlichen Traffic überwacht, der das Nutzungserlebnis anderer beeinträchtigt. + +Damit dein Konto nicht markiert wird, stelle sicher, dass das von dir verwendete Tool + +1\. keinen missbräuchlichen Traffic erzeugt +2\. sich ordnungsgemäß identifiziert (keine allgemeinen User-Agents) +3\. den Header `x-opencode-session` enthält, damit wir das Prompt-Caching optimieren können + ## Nutzungslimits OpenCode Go beinhaltet die folgenden Limits: diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 8df4fa1f6..49de80c2f 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -90,6 +90,18 @@ La lista de modelos puede cambiar a medida que probamos y agregamos otros nuevos --- +## ¿Dónde puedo usarlo? + +OpenCode Go está diseñado para usarse con [OpenCode](https://opencode.ai) y otros agentes de programación populares que generan tipos de peticiones similares. + +El tráfico se supervisa para detectar tráfico abusivo que perjudique la experiencia de otros usuarios. + +Para evitar que tu cuenta sea marcada, asegúrate de que la herramienta que usas + +1\. no genere tráfico abusivo +2\. se identifique correctamente (sin agentes de usuario genéricos) +3\. incluya el encabezado `x-opencode-session` para que podamos optimizar el almacenamiento en caché de prompts + ## Límites de uso OpenCode Go incluye los siguientes límites: diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index b9770115d..6d3e36ed0 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -80,6 +80,18 @@ La liste des modèles peut changer au fur et à mesure que nous en testons et en --- +## Où puis-je l'utiliser ? + +OpenCode Go est conçu pour être utilisé avec [OpenCode](https://opencode.ai) et d'autres agents de codage populaires qui génèrent des types de requêtes similaires. + +Le trafic est surveillé afin de détecter tout trafic abusif qui dégrade l'expérience des autres utilisateurs. + +Pour éviter que votre compte ne soit signalé, assurez-vous que l'outil que vous utilisez + +1\. ne génère pas de trafic abusif +2\. s'identifie correctement (pas d'agents utilisateur génériques) +3\. inclut l'en-tête `x-opencode-session` afin que nous puissions optimiser la mise en cache des prompts + ## Limites d'utilisation OpenCode Go inclut les limites suivantes : diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 58bb121b7..6ec69aa04 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -100,7 +100,8 @@ Traffic is monitored for abusive traffic that degrades the experience for other To ensure your account does not get flagged, make sure the tool you're using 1\. does not generate abusive traffic -2\. properly identifies itself (no broad user agents) +2\. properly identifies itself (no broad user agents)
      +3\. includes the `x-opencode-session` header so we can optimize prompt caching ## Usage limits diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index b4e294369..7c6dfeb78 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -88,6 +88,18 @@ L'elenco dei modelli potrebbe cambiare man mano che ne testiamo e aggiungiamo di --- +## Dove posso usarlo? + +OpenCode Go è progettato per essere utilizzato con [OpenCode](https://opencode.ai) e altri agenti di programmazione popolari che generano tipi di richieste simili. + +Il traffico viene monitorato per rilevare traffico abusivo che compromette l'esperienza degli altri utenti. + +Per evitare che il tuo account venga segnalato, assicurati che lo strumento che utilizzi + +1\. non generi traffico abusivo +2\. si identifichi correttamente (senza user agent generici) +3\. includa l'header `x-opencode-session` in modo da consentirci di ottimizzare il caching dei prompt + ## Limiti di utilizzo OpenCode Go include i seguenti limiti: diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index bb2c59bf0..a1d09ca2b 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -80,6 +80,18 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー --- +## どこで使用できますか? + +OpenCode Goは、[OpenCode](https://opencode.ai)や、同様の種類のリクエストを生成するその他の一般的なコーディングエージェントで使用することを想定しています。 + +他のユーザーの利用体験を損なう不正なトラフィックがないか監視されています。 + +アカウントにフラグが付けられないよう、使用するツールが以下の条件を満たしていることを確認してください。 + +1\. 不正なトラフィックを生成しない +2\. 自身を適切に識別する(汎用的すぎるユーザーエージェントを使用しない) +3\. プロンプトキャッシュを最適化できるよう、`x-opencode-session`ヘッダーを含める + ## 利用制限 OpenCode Goには以下の制限が含まれています: diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index f020348bc..7202b4caf 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -80,6 +80,18 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. --- +## 어디에서 사용할 수 있나요? + +OpenCode Go는 [OpenCode](https://opencode.ai) 및 유사한 유형의 요청을 생성하는 다른 인기 코딩 에이전트와 함께 사용하도록 설계되었습니다. + +다른 사용자의 이용 경험을 저해하는 악성 트래픽이 있는지 모니터링합니다. + +계정에 플래그가 지정되지 않도록 사용 중인 도구가 다음 조건을 충족하는지 확인하세요. + +1\. 악성 트래픽을 생성하지 않음 +2\. 자체 정보를 올바르게 표시함(포괄적인 사용자 에이전트를 사용하지 않음) +3\. 프롬프트 캐싱을 최적화할 수 있도록 `x-opencode-session` 헤더를 포함함 + ## 사용 한도 OpenCode Go에는 다음과 같은 한도가 포함됩니다. diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index 6322a03dc..e11ce9673 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -90,6 +90,18 @@ Listen over modeller kan endres etter hvert som vi tester og legger til nye. --- +## Hvor kan jeg bruke det? + +OpenCode Go er utviklet for bruk med [OpenCode](https://opencode.ai) og andre populære kodeagenter som genererer lignende typer forespørsler. + +Trafikken overvåkes for misbruk som forringer opplevelsen for andre brukere. + +For å sikre at kontoen din ikke blir flagget, må du sørge for at verktøyet du bruker, + +1\. ikke genererer misbrukstrafikk +2\. identifiserer seg korrekt (ingen generiske User-Agent-identifikatorer) +3\. inkluderer `x-opencode-session`-headeren, slik at vi kan optimalisere promptbufring + ## Bruksgrenser OpenCode Go inkluderer følgende grenser: diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 0fc5d8936..9c2deb506 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -84,6 +84,18 @@ Lista modeli może ulec zmianie w miarę testowania i dodawania nowych. --- +## Gdzie można z tego korzystać? + +OpenCode Go jest przeznaczony do użytku z [OpenCode](https://opencode.ai) i innymi popularnymi agentami kodującymi, którzy generują podobne rodzaje żądań. + +Ruch jest monitorowany pod kątem nadużyć, które pogarszają komfort korzystania z usługi przez innych użytkowników. + +Aby Twoje konto nie zostało oznaczone, upewnij się, że używane przez Ciebie narzędzie + +1\. nie generuje ruchu stanowiącego nadużycie +2\. prawidłowo się identyfikuje (bez ogólnych identyfikatorów User-Agent) +3\. zawiera nagłówek `x-opencode-session`, abyśmy mogli zoptymalizować buforowanie promptów + ## Limity użycia OpenCode Go zawiera następujące limity: diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index 981a94dcc..c5272d2bb 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -90,6 +90,18 @@ A lista de modelos pode mudar conforme testamos e adicionamos novos. --- +## Onde posso usá-lo? + +O OpenCode Go foi projetado para ser usado com o [OpenCode](https://opencode.ai) e outros agentes de programação populares que geram tipos de requisições semelhantes. + +O tráfego é monitorado para detectar tráfego abusivo que prejudique a experiência de outros usuários. + +Para evitar que sua conta seja sinalizada, verifique se a ferramenta que você está usando + +1\. não gera tráfego abusivo +2\. se identifica corretamente (sem user agents genéricos) +3\. inclui o header `x-opencode-session` para que possamos otimizar o cache de prompts + ## Limites de uso O OpenCode Go inclui os seguintes limites: diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index 58e4c00fe..b532b9d04 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -90,6 +90,18 @@ OpenCode Go работает так же, как и любой другой пр --- +## Где можно использовать OpenCode Go? + +OpenCode Go предназначен для использования с [OpenCode](https://opencode.ai) и другими популярными агентами для программирования, которые создают запросы схожих типов. + +Трафик отслеживается для выявления злоупотреблений, ухудшающих работу сервиса для других пользователей. + +Чтобы ваша учетная запись не была отмечена, убедитесь, что используемый вами инструмент + +1\. не создает трафик, представляющий собой злоупотребление +2\. правильно идентифицирует себя (без универсальных значений User-Agent) +3\. включает заголовок `x-opencode-session`, чтобы мы могли оптимизировать кеширование промптов + ## Лимиты использования OpenCode Go включает следующие лимиты: diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index d75e6ce70..4462b847f 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -80,6 +80,18 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร --- +## ใช้งานได้ที่ไหน? + +OpenCode Go ออกแบบมาเพื่อใช้กับ [OpenCode](https://opencode.ai) และเอเจนต์เขียนโค้ดยอดนิยมอื่นๆ ที่สร้างคำขอในลักษณะเดียวกัน + +ระบบจะตรวจสอบการรับส่งข้อมูลเพื่อค้นหาการใช้งานในทางที่ผิดซึ่งส่งผลกระทบต่อประสบการณ์ของผู้ใช้รายอื่น + +เพื่อให้แน่ใจว่าบัญชีของคุณจะไม่ถูกตั้งค่าสถานะ โปรดตรวจสอบว่าเครื่องมือที่คุณใช้ + +1\. ไม่สร้างการรับส่งข้อมูลที่เป็นการใช้งานในทางที่ผิด +2\. ระบุตัวตนอย่างถูกต้อง (ไม่ใช้ข้อมูลระบุตัวแทนผู้ใช้แบบกว้างเกินไป) +3\. มีส่วนหัว `x-opencode-session` เพื่อให้เราสามารถปรับการแคชพรอมต์ให้เหมาะสมได้ + ## Usage limits OpenCode Go มีขีดจำกัดดังต่อไปนี้: diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 3df4b3c33..3d058ae45 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -80,6 +80,18 @@ Test edip yenilerini ekledikçe model listesi değişebilir. --- +## Nerede kullanabilirim? + +OpenCode Go, [OpenCode](https://opencode.ai) ve benzer türde istekler üreten diğer popüler kodlama aracılarıyla kullanılmak üzere tasarlanmıştır. + +Trafik, diğer kullanıcıların deneyimini olumsuz etkileyen kötüye kullanım amaçlı trafiğe karşı izlenir. + +Hesabınızın işaretlenmemesi için kullandığınız aracın + +1\. kötüye kullanım amaçlı trafik oluşturmadığından +2\. kendisini doğru şekilde tanıttığından (genel kapsamlı kullanıcı aracıları kullanmadığından) +3\. istem önbelleğe almayı optimize edebilmemiz için `x-opencode-session` başlığını içerdiğinden emin olun + ## Kullanım limitleri OpenCode Go aşağıdaki limitleri içerir: diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index 46c981c2a..bdfb25c74 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -80,6 +80,18 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 --- +## 可以在哪里使用? + +OpenCode Go 适用于 [OpenCode](https://opencode.ai) 以及其他会产生类似请求的主流编程 Agent。 + +我们会监控流量,以识别影响其他用户体验的滥用行为。 + +为避免你的账户被标记为异常,请确保你使用的工具: + +1\. 不产生滥用流量 +2\. 明确标识自身(不要使用过于笼统的 user agent 标识) +3\. 包含 `x-opencode-session` 请求头,以便我们优化提示词缓存 + ## 使用限制 OpenCode Go 包含以下限制: diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index 3846a5760..ab5aa97fa 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -80,6 +80,18 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 --- +## 可以在哪裡使用? + +OpenCode Go 適用於 [OpenCode](https://opencode.ai) 以及其他會產生類似請求的主流程式設計 Agent。 + +我們會監控流量,以識別影響其他使用者體驗的濫用行為。 + +為避免您的帳戶被標記為異常,請確保您使用的工具: + +1\. 不產生濫用流量 +2\. 明確標識自身(不要使用過於籠統的 user agent 識別資訊) +3\. 包含 `x-opencode-session` 請求標頭,以便我們最佳化提示詞快取 + ## 使用限制 OpenCode Go 包含以下限制: From d2efd81fb3e153a51165b8589c4658107002817e Mon Sep 17 00:00:00 2001 From: Victor Navarro Date: Thu, 3 Sep 2026 17:04:58 +0200 Subject: [PATCH 243/271] fix(console): proxy migrated model discovery to v1 endpoint (#47065) --- packages/console/app/src/lib/inference-proxy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/console/app/src/lib/inference-proxy.ts b/packages/console/app/src/lib/inference-proxy.ts index a80db3b5e..814cc9455 100644 --- a/packages/console/app/src/lib/inference-proxy.ts +++ b/packages/console/app/src/lib/inference-proxy.ts @@ -4,7 +4,7 @@ import { KeyTable } from "@opencode-ai/console-core/schema/key.sql.js" import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js" const paths: Record = { - "GET /zen/v1/models": "/openai/v1/models", + "GET /zen/v1/models": "/v1/models", "POST /zen/v1/chat/completions": "/openai/v1/chat/completions", "POST /zen/v1/responses": "/openai/v1/responses", "POST /zen/v1/messages": "/anthropic/v1/messages", From 08c483dc36951349b0d686b162685bdab2e805b1 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 3 Sep 2026 12:38:17 -0500 Subject: [PATCH 244/271] fix(stats): reduce database query load --- packages/console/app/src/lib/stats-proxy.ts | 45 +- .../src/component/model-compare-detail.tsx | 4 +- .../stats/app/src/routes/[lab]/[model].tsx | 4 +- packages/stats/app/src/routes/index.tsx | 2 +- .../migration.sql | 1 + .../snapshot.json | 2377 +++++++++++++++++ packages/stats/core/src/database/schema.ts | 10 + packages/stats/core/src/domain/home.ts | 185 +- 8 files changed, 2522 insertions(+), 106 deletions(-) create mode 100644 packages/stats/core/migrations/20260903161929_parched_patriot/migration.sql create mode 100644 packages/stats/core/migrations/20260903161929_parched_patriot/snapshot.json diff --git a/packages/console/app/src/lib/stats-proxy.ts b/packages/console/app/src/lib/stats-proxy.ts index 48e95bd74..b8db97c06 100644 --- a/packages/console/app/src/lib/stats-proxy.ts +++ b/packages/console/app/src/lib/stats-proxy.ts @@ -1,8 +1,9 @@ import type { APIEvent } from "@solidjs/start/server" -import { Resource } from "@opencode-ai/console-resource" +import { Resource, waitUntil } from "@opencode-ai/console-resource" import { LOCALE_HEADER, cookie, localeFromRequest, route, tag } from "~/lib/language" const dataPath = "/data" +const statsCacheParam = "__opencode_stats_locale" export async function statsProxy(evt: APIEvent) { const req = evt.request.clone() @@ -10,6 +11,13 @@ export async function statsProxy(evt: APIEvent) { const redirect = redirectToLocalizedData(req, new URL(req.url), locale) if (redirect) return redirect + const cache = defaultCache(caches) + const cacheKey = statsCacheKey(req, locale) + if (cacheKey) { + const cached = await cache.match(cacheKey) + if (cached) return withStatsCacheStatus(cached, "HIT") + } + const targetUrl = new URL(req.url) targetUrl.protocol = "https:" targetUrl.hostname = Resource.App.stage === "production" ? "stats.opencode.ai" : "stats.dev.opencode.ai" @@ -40,13 +48,18 @@ export async function statsProxy(evt: APIEvent) { headers.delete("content-encoding") headers.delete("content-length") headers.delete("etag") + headers.delete("set-cookie") appendVary(headers, "Accept-Language", "Cookie", LOCALE_HEADER) - return new Response(rewriteStatsHtml(await response.text()), { + const result = new Response(rewriteStatsHtml(await response.text()), { status: response.status, statusText: response.statusText, headers, }) + if (!cacheKey || !response.ok) return result + + void waitUntil(cache.put(cacheKey, result.clone())) + return withStatsCacheStatus(result, "MISS") } export function statsRedirect(evt: APIEvent) { @@ -64,6 +77,34 @@ function rewriteStatsHtml(html: string) { return html.replaceAll('"/_build/', `"${dataPath}/_build/`).replaceAll("'/_build/", `'${dataPath}/_build/`) } +function statsCacheKey(request: Request, locale: ReturnType): Request | undefined { + if (request.method !== "GET") return undefined + if (!acceptsHtml(request)) return undefined + if (isDataBypassPath(new URL(request.url).pathname)) return undefined + + const url = new URL(request.url) + const additionalModels = url.searchParams.get("add") + url.search = "" + if (additionalModels) url.searchParams.set("add", additionalModels) + url.searchParams.set(statsCacheParam, locale) + return new Request(url) +} + +function defaultCache(storage: CacheStorage) { + if (!isCloudflareCacheStorage(storage)) throw new Error("Cloudflare default cache is unavailable") + return storage.default +} + +function isCloudflareCacheStorage(storage: CacheStorage): storage is CacheStorage & { default: Cache } { + return "default" in storage +} + +function withStatsCacheStatus(response: Response, status: "HIT" | "MISS") { + const headers = new Headers(response.headers) + headers.set("x-opencode-stats-cache", status) + return new Response(response.body, { status: response.status, statusText: response.statusText, headers }) +} + function redirectToLocalizedData(request: Request, url: URL, locale: ReturnType) { if (locale === "en") return null if (request.headers.get(LOCALE_HEADER)) return null diff --git a/packages/stats/app/src/component/model-compare-detail.tsx b/packages/stats/app/src/component/model-compare-detail.tsx index 8fc61d1e9..4966d5d45 100644 --- a/packages/stats/app/src/component/model-compare-detail.tsx +++ b/packages/stats/app/src/component/model-compare-detail.tsx @@ -7,7 +7,6 @@ import { type StatsModelComparisonInput, type StatsModelComparisonEntry, } from "@opencode-ai/stats-core/domain/home" -import { runtime } from "@opencode-ai/stats-core/runtime" import { createAsync, query, useParams, useSearchParams } from "@solidjs/router" import { createEffect, createMemo, createSignal, For, onMount, Show } from "solid-js" import { getRequestEvent } from "solid-js/web" @@ -46,6 +45,7 @@ import { type ResolvedComparisonFamily, } from "../lib/comparison-pages" import { baseUrl } from "../lib/language" +import { runStatsEffect } from "../stats-runtime" const compareHeaderLinks: readonly HeaderLink[] = [ { href: `${import.meta.env.BASE_URL}#top-models`, label: "Top Models" }, @@ -110,7 +110,7 @@ export type ModelCompareDetailPageProps = { const getComparisonData = query(async (models: StatsModelComparisonInput[]) => { "use server" - return runtime.runPromise(getStatsModelsComparisonData(models)) + return runStatsEffect(getStatsModelsComparisonData(models)) }, "getStatsModelComparisonDetailData") export default function ModelCompareDetailPage(props: ModelCompareDetailPageProps = {}) { diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx index e1719807c..977660a83 100644 --- a/packages/stats/app/src/routes/[lab]/[model].tsx +++ b/packages/stats/app/src/routes/[lab]/[model].tsx @@ -52,7 +52,7 @@ type ModelPageCatalog = { labs: { id: string; name: string }[] labModels: ModelCatalogOption[] } -type StatsModelPageData = Omit & { country: CountryEntry[] } +type StatsModelPageData = StatsModelData type ModelPageData = { catalog: ModelPageCatalog; stats: StatsModelPageData | null } const countryNumericIds = new Map( @@ -75,7 +75,7 @@ const getModelPageData = query(async (labParam: string, modelParam: string) => { .find((item) => item.id === (entry?.lab ?? providerSlug(labParam))) ?.models.map((item) => ({ id: item.id, lab: item.lab, slug: item.slug, name: item.name })) ?? [], }, - stats: stats ? { ...stats, country: stats.country["2M"] } : null, + stats, } satisfies ModelPageData }, "getStatsModelPageData") diff --git a/packages/stats/app/src/routes/index.tsx b/packages/stats/app/src/routes/index.tsx index d6b83bcc4..5a08aa011 100644 --- a/packages/stats/app/src/routes/index.tsx +++ b/packages/stats/app/src/routes/index.tsx @@ -91,7 +91,7 @@ const getData = query(async () => { cacheRatio: stats.cacheRatio.Go, sessionCost: stats.sessionCost.Go, retention: stats.retention, - country: stats.country["2M"], + country: stats.country, } satisfies StatsHomePageData }, "getStatsHomeData") diff --git a/packages/stats/core/migrations/20260903161929_parched_patriot/migration.sql b/packages/stats/core/migrations/20260903161929_parched_patriot/migration.sql new file mode 100644 index 000000000..e80bd5d3c --- /dev/null +++ b/packages/stats/core/migrations/20260903161929_parched_patriot/migration.sql @@ -0,0 +1 @@ +CREATE INDEX `idx_country_model_range` ON `geo_stat` (`model`,`provider`,`grain`,`dataset`,`client`,`source`,`tier`,`period_key`); diff --git a/packages/stats/core/migrations/20260903161929_parched_patriot/snapshot.json b/packages/stats/core/migrations/20260903161929_parched_patriot/snapshot.json new file mode 100644 index 000000000..ae09db7b7 --- /dev/null +++ b/packages/stats/core/migrations/20260903161929_parched_patriot/snapshot.json @@ -0,0 +1,2377 @@ +{ + "version": "6", + "dialect": "mysql", + "id": "43e72697-1bf9-4df7-bc8e-5ca091bf2ff1", + "prevIds": [ + "9d4d1a06-7d28-4cb4-b0cd-3dfb7b481b8b" + ], + "ddl": [ + { + "name": "geo_stat", + "entityType": "tables" + }, + { + "name": "model_retention", + "entityType": "tables" + }, + { + "name": "model_stat", + "entityType": "tables" + }, + { + "name": "provider_stat", + "entityType": "tables" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": true, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "varchar(16)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "grain", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "varchar(32)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "period_key", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "dataset", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "tier", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "client", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "source", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "varchar(128)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "varchar(256)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "model", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "char(2)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "country", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "varchar(8)", + "notNull": true, + "autoIncrement": false, + "default": "''", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "continent", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "sessions", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "requests", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "unique_users", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "input_tokens", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "output_tokens", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reasoning_tokens", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cache_read_tokens", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "total_tokens", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "input_cost_microcents", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "output_cost_microcents", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "total_cost_microcents", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "decimal(12,2)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "avg_duration_ms", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p50_duration_ms", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p95_duration_ms", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "decimal(12,2)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "avg_ttfb_ms", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p50_ttfb_ms", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p95_ttfb_ms", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "decimal(12,4)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "avg_output_tps", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "success_count", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "error_count", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "sample_count", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "decimal(10,6)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "market_share_tokens", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "decimal(10,6)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "market_share_requests", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "decimal(10,6)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "market_share_sessions", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rank_by_tokens", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rank_by_requests", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rank_by_sessions", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rank_by_cost", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "datetime", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "created_at", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "datetime", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": true, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "updated_at", + "entityType": "columns", + "table": "geo_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": true, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "model_retention" + }, + { + "type": "char(10)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cohort_date", + "entityType": "columns", + "table": "model_retention" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "dataset", + "entityType": "columns", + "table": "model_retention" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "tier", + "entityType": "columns", + "table": "model_retention" + }, + { + "type": "varchar(128)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider", + "entityType": "columns", + "table": "model_retention" + }, + { + "type": "varchar(256)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "model", + "entityType": "columns", + "table": "model_retention" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "eligible_users", + "entityType": "columns", + "table": "model_retention" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "retained_users", + "entityType": "columns", + "table": "model_retention" + }, + { + "type": "datetime", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "created_at", + "entityType": "columns", + "table": "model_retention" + }, + { + "type": "datetime", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": true, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "updated_at", + "entityType": "columns", + "table": "model_retention" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": true, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "varchar(16)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "grain", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "varchar(32)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "period_key", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "dataset", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "tier", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "client", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "source", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "varchar(128)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "varchar(256)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "model", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "varchar(256)", + "notNull": true, + "autoIncrement": false, + "default": "''", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider_model", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "sessions", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "requests", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "unique_users", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "input_tokens", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "output_tokens", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reasoning_tokens", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cache_read_tokens", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "total_tokens", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "input_cost_microcents", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "output_cost_microcents", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "total_cost_microcents", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "decimal(12,2)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "avg_duration_ms", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p50_duration_ms", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p95_duration_ms", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "decimal(12,2)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "avg_ttfb_ms", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p50_ttfb_ms", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p95_ttfb_ms", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "decimal(12,4)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "avg_output_tps", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "success_count", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "error_count", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "sample_count", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rank_by_tokens", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rank_by_requests", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rank_by_cost", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "datetime", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "created_at", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "datetime", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": true, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "updated_at", + "entityType": "columns", + "table": "model_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": true, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "id", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "varchar(16)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "grain", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "varchar(32)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "period_key", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "dataset", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "tier", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "client", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "varchar(64)", + "notNull": true, + "autoIncrement": false, + "default": "'all'", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "source", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "varchar(128)", + "notNull": true, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "provider", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "sessions", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "requests", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "unique_users", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "input_tokens", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "output_tokens", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "reasoning_tokens", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "cache_read_tokens", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "total_tokens", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "input_cost_microcents", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "output_cost_microcents", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "total_cost_microcents", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "decimal(12,2)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "avg_duration_ms", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p50_duration_ms", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p95_duration_ms", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "decimal(12,2)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "avg_ttfb_ms", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p50_ttfb_ms", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "p95_ttfb_ms", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "decimal(12,4)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "avg_output_tps", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "success_count", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "error_count", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "bigint", + "notNull": true, + "autoIncrement": false, + "default": "0", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "sample_count", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "decimal(10,6)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "market_share_tokens", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "decimal(10,6)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "market_share_requests", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "decimal(10,6)", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "market_share_sessions", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rank_by_tokens", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rank_by_requests", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rank_by_sessions", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "int", + "notNull": false, + "autoIncrement": false, + "default": null, + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "rank_by_cost", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "datetime", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": false, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "created_at", + "entityType": "columns", + "table": "provider_stat" + }, + { + "type": "datetime", + "notNull": true, + "autoIncrement": false, + "default": "(now())", + "onUpdateNow": true, + "onUpdateNowFsp": null, + "charSet": null, + "collation": null, + "generated": null, + "name": "updated_at", + "entityType": "columns", + "table": "provider_stat" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "geo_stat", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "model_retention", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "model_stat", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "name": "PRIMARY", + "table": "provider_stat", + "entityType": "pks" + }, + { + "columns": [ + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + }, + { + "value": "dataset", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "client", + "isExpression": false + }, + { + "value": "source", + "isExpression": false + }, + { + "value": "provider", + "isExpression": false + }, + { + "value": "model", + "isExpression": false + }, + { + "value": "country", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "uniq_country_period", + "entityType": "indexes", + "table": "geo_stat" + }, + { + "columns": [ + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + }, + { + "value": "dataset", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "total_tokens", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_country_map_tokens", + "entityType": "indexes", + "table": "geo_stat" + }, + { + "columns": [ + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + }, + { + "value": "dataset", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "rank_by_tokens", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_country_rank", + "entityType": "indexes", + "table": "geo_stat" + }, + { + "columns": [ + { + "value": "country", + "isExpression": false + }, + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_country", + "entityType": "indexes", + "table": "geo_stat" + }, + { + "columns": [ + { + "value": "continent", + "isExpression": false + }, + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_continent", + "entityType": "indexes", + "table": "geo_stat" + }, + { + "columns": [ + { + "value": "model", + "isExpression": false + }, + { + "value": "country", + "isExpression": false + }, + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_country_model", + "entityType": "indexes", + "table": "geo_stat" + }, + { + "columns": [ + { + "value": "model", + "isExpression": false + }, + { + "value": "provider", + "isExpression": false + }, + { + "value": "grain", + "isExpression": false + }, + { + "value": "dataset", + "isExpression": false + }, + { + "value": "client", + "isExpression": false + }, + { + "value": "source", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_country_model_range", + "entityType": "indexes", + "table": "geo_stat" + }, + { + "columns": [ + { + "value": "cohort_date", + "isExpression": false + }, + { + "value": "dataset", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "provider", + "isExpression": false + }, + { + "value": "model", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "uniq_model_retention_cohort", + "entityType": "indexes", + "table": "model_retention" + }, + { + "columns": [ + { + "value": "dataset", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "cohort_date", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_model_retention_recent", + "entityType": "indexes", + "table": "model_retention" + }, + { + "columns": [ + { + "value": "model", + "isExpression": false + }, + { + "value": "cohort_date", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_model_retention_model", + "entityType": "indexes", + "table": "model_retention" + }, + { + "columns": [ + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + }, + { + "value": "dataset", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "client", + "isExpression": false + }, + { + "value": "source", + "isExpression": false + }, + { + "value": "provider", + "isExpression": false + }, + { + "value": "model", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "uniq_model_period", + "entityType": "indexes", + "table": "model_stat" + }, + { + "columns": [ + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + }, + { + "value": "dataset", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "total_tokens", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_leaderboard_tokens", + "entityType": "indexes", + "table": "model_stat" + }, + { + "columns": [ + { + "value": "model", + "isExpression": false + }, + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_model", + "entityType": "indexes", + "table": "model_stat" + }, + { + "columns": [ + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + }, + { + "value": "dataset", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "client", + "isExpression": false + }, + { + "value": "source", + "isExpression": false + }, + { + "value": "provider", + "isExpression": false + } + ], + "isUnique": true, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "uniq_provider_period", + "entityType": "indexes", + "table": "provider_stat" + }, + { + "columns": [ + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + }, + { + "value": "dataset", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "total_tokens", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_provider_leaderboard_tokens", + "entityType": "indexes", + "table": "provider_stat" + }, + { + "columns": [ + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + }, + { + "value": "dataset", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "market_share_tokens", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_provider_market_share", + "entityType": "indexes", + "table": "provider_stat" + }, + { + "columns": [ + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + }, + { + "value": "dataset", + "isExpression": false + }, + { + "value": "tier", + "isExpression": false + }, + { + "value": "rank_by_tokens", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_provider_rank", + "entityType": "indexes", + "table": "provider_stat" + }, + { + "columns": [ + { + "value": "provider", + "isExpression": false + }, + { + "value": "grain", + "isExpression": false + }, + { + "value": "period_key", + "isExpression": false + } + ], + "isUnique": false, + "using": null, + "algorithm": null, + "lock": null, + "nameExplicit": true, + "name": "idx_provider", + "entityType": "indexes", + "table": "provider_stat" + } + ], + "renames": [] +} \ No newline at end of file diff --git a/packages/stats/core/src/database/schema.ts b/packages/stats/core/src/database/schema.ts index dcf8d5233..c17b1aa93 100644 --- a/packages/stats/core/src/database/schema.ts +++ b/packages/stats/core/src/database/schema.ts @@ -104,6 +104,16 @@ export const geoStat = mysqlTable( index("idx_country").on(table.country, table.grain, table.period_key), index("idx_continent").on(table.continent, table.grain, table.period_key), index("idx_country_model").on(table.model, table.country, table.grain, table.period_key), + index("idx_country_model_range").on( + table.model, + table.provider, + table.grain, + table.dataset, + table.client, + table.source, + table.tier, + table.period_key, + ), ], ) diff --git a/packages/stats/core/src/domain/home.ts b/packages/stats/core/src/domain/home.ts index d5ce1b9c8..6df9315ac 100644 --- a/packages/stats/core/src/domain/home.ts +++ b/packages/stats/core/src/domain/home.ts @@ -1,9 +1,7 @@ import { Client } from "@planetscale/database" import { Effect } from "effect" import { Resource } from "sst/resource" -import { DatabaseError } from "../database" -import type { GeoStatMetric } from "./geo" -import { ModelStatRepo, type ModelStatMetric } from "./model" +import type { ModelStatMetric } from "./model" import { statProvider } from "./model-normalization" import { isMissingRetentionTable } from "./retention" import { DATA_SITE_TIERS, normalizeTier } from "./stat" @@ -77,7 +75,7 @@ export type StatsModelData = { } usage: ModelUsagePoint[] tokenMix: ModelMixEntry[] - country: Record + country: CountryEntry[] peers: ModelPeerEntry[] } export type StatsLabData = { @@ -127,7 +125,7 @@ export type StatsHomeData = { cacheRatio: Record sessionCost: Record retention: RetentionEntry[] - country: Record + country: CountryEntry[] } export class StatsDataError extends Error { @@ -146,6 +144,8 @@ const RETENTION_MODEL_LIMIT = 15 const RETENTION_MIN_ELIGIBLE_USER_WEEKS = 100 const RETENTION_COHORT_WEEKS = 7 const TOP_MODEL_SEGMENT_LIMIT = 9 +const QUERY_CACHE_TTL_MS = 5 * 60 * 1000 +const QUERY_CACHE_MAX_ENTRIES = 256 // Preserve the response shape while the public site presents Go and Free as one cohort. const SITE_PRODUCT = "Go" const SITE_TIER_PLACEHOLDERS = DATA_SITE_TIERS.map(() => "?").join(", ") @@ -156,8 +156,10 @@ type StatMetricRow = Omit & { periodStart: number updatedAt: number } -type GeoMetricRow = Omit & { - periodStart: number +type CountryTotalRow = { + country: string + continent: string + tokens: number updatedAt: number } export type RetentionMetricRow = { @@ -187,15 +189,16 @@ type ModelAggregate = { } type RawRow = Record +type CachedQuery = { expiresAt: number; value: Promise } + +const queryCache = new Map() export function getStatsHomeData(): Effect.Effect { return Effect.tryPromise({ try: async () => { - const [modelRows, geoRows, retentionRows] = await Promise.all([ - listModelDaily(), - listGeoDaily(), - listRetentionWeekly(), - ]) + const [modelRows, retentionRows] = await Promise.all([listModelDaily(), listRetentionWeekly()]) + const window = modelRowsWindow(modelRows, "2M") + const geoRows = window ? await listCountryTotals(window) : [] return buildStatsHomeData(modelRows, geoRows, retentionRows) }, catch: (cause) => new StatsDataError(cause), @@ -212,13 +215,12 @@ export function getStatsModelData( const normalized = modelRows.flatMap(normalizeStatRow) const resolvedModel = resolveModelName(model, normalized, provider) if (!resolvedModel) return null + const window = modelRowsWindow(modelRows, "2M") + const resolvedProvider = resolveModelProvider(resolvedModel, normalized, provider) return buildStatsModelData( resolvedModel, modelRows, - await listGeoDaily({ - model: resolvedModel, - provider: resolveModelProvider(resolvedModel, normalized, provider), - }), + window ? await listCountryTotals(window, { model: resolvedModel, provider: resolvedProvider }) : [], provider, retentionRows, ) @@ -239,8 +241,8 @@ async function listModelDaily(): Promise { await queryRows( `select period_key, updated_at, tier, provider, model, sessions, unique_users, input_tokens, output_tokens, reasoning_tokens, cache_read_tokens, total_tokens, input_cost_microcents, output_cost_microcents, - total_cost_microcents from model_stat where grain = 'day' and client = 'all' and source = 'all' - and tier in (${SITE_TIER_PLACEHOLDERS}) order by period_key`, + total_cost_microcents from model_stat where grain = 'day' and dataset = 'zen' and client = 'all' + and source = 'all' and tier in (${SITE_TIER_PLACEHOLDERS}) order by period_key`, DATA_SITE_TIERS, ) ).map((row) => ({ @@ -262,7 +264,10 @@ async function listModelDaily(): Promise { })) } -async function listGeoDaily(opts?: { provider?: string; model?: string }): Promise { +async function listCountryTotals( + window: DateWindow, + opts?: { provider?: string; model?: string }, +): Promise { const scope = opts?.model && opts.provider ? "and provider = ? and model = ?" @@ -272,20 +277,16 @@ async function listGeoDaily(opts?: { provider?: string; model?: string }): Promi const params = opts?.model && opts.provider ? [opts.provider, opts.model] : opts?.model ? [opts.model] : [] return ( await queryRows( - `select period_key, updated_at, tier, provider, model, country, continent, total_tokens from geo_stat - where grain = 'day' and client = 'all' and source = 'all' - and tier in (${SITE_TIER_PLACEHOLDERS}) ${scope} order by period_key`, - [...DATA_SITE_TIERS, ...params], + `select country, max(continent) as continent, sum(total_tokens) as total_tokens, max(updated_at) as updated_at + from geo_stat where grain = 'day' and dataset = 'zen' and client = 'all' and source = 'all' + and tier in (${SITE_TIER_PLACEHOLDERS}) ${scope} and period_key >= ? and period_key < ? group by country`, + [...DATA_SITE_TIERS, ...params, periodKey(window.start), periodKey(window.end)], ) ).map((row) => ({ - periodKey: stringValue(row.period_key), - updatedAt: dateValue(row.updated_at), - tier: stringValue(row.tier), - provider: stringValue(row.provider), - model: stringValue(row.model), - country: stringValue(row.country), + updatedAt: dateValue(row.updated_at).getTime(), + country: stringValue(row.country) || "ZZ", continent: stringValue(row.continent), - totalTokens: numberValue(row.total_tokens), + tokens: numberValue(row.total_tokens), })) } @@ -311,7 +312,21 @@ async function listRetentionWeekly(): Promise { } async function queryRows(query: string, params: string[] = []) { - return (await new Client({ url: databaseUrl() }).execute(query, params)).rows as RawRow[] + const key = JSON.stringify([query, params]) + const now = Date.now() + const cached = queryCache.get(key) + if (cached && cached.expiresAt > now) return cached.value + if (cached) queryCache.delete(key) + + const value = new Client({ url: databaseUrl() }).execute(query, params).then((result) => result.rows as RawRow[]) + const entry = { expiresAt: now + QUERY_CACHE_TTL_MS, value } + queryCache.set(key, entry) + if (queryCache.size > QUERY_CACHE_MAX_ENTRIES) queryCache.delete(queryCache.keys().next().value!) + + return value.catch((cause) => { + if (queryCache.get(key) === entry) queryCache.delete(key) + throw cause + }) } function databaseUrl() { @@ -330,31 +345,27 @@ function dateValue(value: unknown) { return value instanceof Date ? value : new Date(stringValue(value)) } -export const getStatsModelsComparisonData: ( +export function getStatsModelsComparisonData( models: readonly StatsModelComparisonInput[], -) => Effect.Effect = Effect.fn("StatsModelsComparison.getData")( - function* (models) { - const modelStats = yield* ModelStatRepo - const [rows, retentionRows] = yield* Effect.all([ - modelStats.listDaily(), - Effect.tryPromise({ - try: listRetentionWeekly, - catch: (cause) => DatabaseError.make({ cause }), - }), - ]) - const entries = models.map((model) => - toComparisonEntry(buildStatsModelData(model.model, rows, [], model.provider, retentionRows)), - ) - const latest = entries - .map((model) => model?.updatedAt) - .flatMap((value) => (value ? [dateTime(value)] : [])) - .toSorted((a, b) => b - a)[0] - return { - updatedAt: latest === undefined ? null : new Date(latest).toISOString(), - models: entries, - } - }, -) +): Effect.Effect { + return Effect.tryPromise({ + try: async () => { + const [rows, retentionRows] = await Promise.all([listModelDaily(), listRetentionWeekly()]) + const entries = models.map((model) => + toComparisonEntry(buildStatsModelData(model.model, rows, [], model.provider, retentionRows)), + ) + const latest = entries + .map((model) => model?.updatedAt) + .flatMap((value) => (value ? [dateTime(value)] : [])) + .toSorted((a, b) => b - a)[0] + return { + updatedAt: latest === undefined ? null : new Date(latest).toISOString(), + models: entries, + } + }, + catch: (cause) => new StatsDataError(cause), + }) +} export const getStatsModelComparisonData = ( firstProvider: string, @@ -369,17 +380,15 @@ export const getStatsModelComparisonData = ( function buildStatsHomeData( modelRows: ModelStatMetric[], - geoRows: GeoStatMetric[], + countryRows: CountryTotalRow[], retentionRows: RetentionMetricRow[], ): StatsHomeData { const normalized = modelRows.flatMap(normalizeStatRow) - const geo = geoRows.flatMap(normalizeGeoRow) - const periods = [...normalized, ...geo] - if (periods.length === 0) return emptyStatsHomeData() + if (normalized.length === 0) return emptyStatsHomeData() - const earliest = Math.min(...periods.map((row) => row.periodStart)) - const latest = Math.max(...periods.map((row) => row.periodStart)) - const latestUpdate = Math.max(...periods.map((row) => row.updatedAt)) + const earliest = Math.min(...normalized.map((row) => row.periodStart)) + const latest = Math.max(...normalized.map((row) => row.periodStart)) + const latestUpdate = Math.max(...normalized.map((row) => row.updatedAt), ...countryRows.map((row) => row.updatedAt)) return { updatedAt: new Date(latestUpdate).toISOString(), @@ -407,7 +416,7 @@ function buildStatsHomeData( ), ), leaderboard: createUsageProductRecord((product) => - createRangeRecord((range) => buildLeaderboard(normalized, product, getWindow("1W", earliest, latest))), + createRangeRecord((_range) => buildLeaderboard(normalized, product, getWindow("1W", earliest, latest))), ), market: createRangeRecord((range) => buildMarketShare(normalized, "Go", range, getWindow(range, earliest, latest))), tokenCost: createTokenProductRecord((product) => @@ -422,19 +431,18 @@ function buildStatsHomeData( retention: buildRetentionEntries(retentionRows) .filter((item) => item.rank !== null) .slice(0, RETENTION_MODEL_LIMIT), - country: createRangeRecord((range) => buildCountryStats(geo, getWindow(range, earliest, latest))), + country: buildCountryStats(countryRows), } } function buildStatsModelData( modelParam: string, modelRows: ModelStatMetric[], - geoRows: GeoStatMetric[], + countryRows: CountryTotalRow[], providerParam?: string, retentionRows: RetentionMetricRow[] = [], ): StatsModelData | null { const normalized = modelRows.flatMap(normalizeStatRow) - const geo = geoRows.flatMap(normalizeGeoRow) if (normalized.length === 0) return null const model = resolveModelName(modelParam, normalized, providerParam) @@ -497,7 +505,7 @@ function buildStatsModelData( }, usage: buildModelUsage(currentRows, window, "2M"), tokenMix: buildModelTokenMix(current), - country: createRangeRecord((range) => buildCountryStats(geo, getWindow(range, earliest, latest))), + country: buildCountryStats(countryRows), peers: buildModelPeers(rankPeers, peerRank, peerTokens), } } @@ -579,7 +587,7 @@ function emptyStatsHomeData(): StatsHomeData { cacheRatio: createTokenProductRecord(() => []), sessionCost: createTokenProductRecord(() => []), retention: [], - country: createRangeRecord(() => []), + country: [], } } @@ -707,8 +715,8 @@ function buildMarketShare(rows: StatMetricRow[], product: UsageProduct, range: U }) } -function buildCountryStats(rows: GeoMetricRow[], window: DateWindow) { - const countries = aggregateByCountry(rowsForProduct(rows, SITE_PRODUCT, window.start, window.end)) +function buildCountryStats(rows: CountryTotalRow[]) { + const countries = rows .filter((item) => item.tokens > 0 && item.country !== "AQ") .toSorted((a, b) => b.tokens - a.tokens) const totalTokens = countries.reduce((sum, item) => sum + item.tokens, 0) @@ -862,19 +870,6 @@ function aggregateByProvider(rows: { provider: string; totalTokens: number }[]) ) } -function aggregateByCountry(rows: GeoMetricRow[]) { - return Object.values( - rows.reduce>((result, row) => { - result[row.country] = { - country: row.country, - continent: result[row.country]?.continent || row.continent, - tokens: (result[row.country]?.tokens ?? 0) + row.totalTokens, - } - return result - }, {}), - ) -} - function combineRowsForModel(model: string, rows: StatMetricRow[]): ModelAggregate { const aggregate = rows.reduce( (result, row) => combineModelAggregate(result, row), @@ -1000,28 +995,20 @@ function normalizeStatRow(row: ModelStatMetric): StatMetricRow[] { ] } -function normalizeGeoRow(row: GeoStatMetric): GeoMetricRow[] { - const periodStart = periodKeyTime(row.periodKey) - const updatedAt = dateTime(row.updatedAt) - if (!Number.isFinite(periodStart) || !Number.isFinite(updatedAt)) return [] - return [ - { - ...row, - periodStart, - updatedAt, - tier: normalizeTier(row.tier), - provider: row.provider === "all" ? "all" : statProvider(row.model, undefined, row.provider) || "unknown", - model: row.model || "all", - country: row.country || "ZZ", - continent: row.continent || "", - }, - ] +function modelRowsWindow(rows: ModelStatMetric[], range: UsageRange): DateWindow | undefined { + const periods = rows.map((row) => periodKeyTime(row.periodKey)).filter(Number.isFinite) + if (periods.length === 0) return undefined + return getWindow(range, Math.min(...periods), Math.max(...periods)) } function dateTime(value: Date | string) { return (value instanceof Date ? value : new Date(value)).getTime() } +function periodKey(value: number) { + return new Date(value).toISOString().slice(0, 10) +} + function periodKeyTime(value: string) { const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value) if (!match) return Number.NaN From d8eb3b80fb1bd8235809d78b62474008fb7a2e46 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Thu, 3 Sep 2026 17:42:08 +0000 Subject: [PATCH 245/271] chore: generate --- .../snapshot.json | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/packages/stats/core/migrations/20260903161929_parched_patriot/snapshot.json b/packages/stats/core/migrations/20260903161929_parched_patriot/snapshot.json index ae09db7b7..1c2302f55 100644 --- a/packages/stats/core/migrations/20260903161929_parched_patriot/snapshot.json +++ b/packages/stats/core/migrations/20260903161929_parched_patriot/snapshot.json @@ -2,9 +2,7 @@ "version": "6", "dialect": "mysql", "id": "43e72697-1bf9-4df7-bc8e-5ca091bf2ff1", - "prevIds": [ - "9d4d1a06-7d28-4cb4-b0cd-3dfb7b481b8b" - ], + "prevIds": ["9d4d1a06-7d28-4cb4-b0cd-3dfb7b481b8b"], "ddl": [ { "name": "geo_stat", @@ -1773,33 +1771,25 @@ "table": "provider_stat" }, { - "columns": [ - "id" - ], + "columns": ["id"], "name": "PRIMARY", "table": "geo_stat", "entityType": "pks" }, { - "columns": [ - "id" - ], + "columns": ["id"], "name": "PRIMARY", "table": "model_retention", "entityType": "pks" }, { - "columns": [ - "id" - ], + "columns": ["id"], "name": "PRIMARY", "table": "model_stat", "entityType": "pks" }, { - "columns": [ - "id" - ], + "columns": ["id"], "name": "PRIMARY", "table": "provider_stat", "entityType": "pks" @@ -2374,4 +2364,4 @@ } ], "renames": [] -} \ No newline at end of file +} From 7561b4a050f6697a2ffc2ad9c188fe8d5935e919 Mon Sep 17 00:00:00 2001 From: David Hill <1879069+iamdavidhill@users.noreply.github.com> Date: Thu, 3 Sep 2026 13:56:40 -0600 Subject: [PATCH 246/271] fix(tui): use unicode ellipses in interface text (#45126) --- packages/tui/src/app.tsx | 4 +-- .../tui/src/component/dialog-console-org.tsx | 2 +- .../tui/src/component/dialog-move-session.tsx | 2 +- .../tui/src/component/dialog-provider.tsx | 2 +- packages/tui/src/component/dialog-skill.tsx | 2 +- .../src/component/dialog-workspace-list.tsx | 2 +- .../tui/src/component/error-component.tsx | 2 +- packages/tui/src/component/prompt/index.tsx | 6 ++-- .../tui/src/component/startup-loading.tsx | 2 +- .../feature-plugins/system/diff-viewer.tsx | 2 +- .../src/feature-plugins/system/plugins.tsx | 2 +- packages/tui/src/routes/session/index.tsx | 30 +++++++++---------- packages/tui/src/ui/dialog-prompt.tsx | 4 +-- .../cli/tui/diff-viewer-file-tree.test.tsx | 2 +- .../tui/inline-tool-wrap-snapshot.test.tsx | 4 +-- 15 files changed, 34 insertions(+), 34 deletions(-) diff --git a/packages/tui/src/app.tsx b/packages/tui/src/app.tsx index 57f372ef7..3f1da522b 100644 --- a/packages/tui/src/app.tsx +++ b/packages/tui/src/app.tsx @@ -465,7 +465,7 @@ function App(props: { onSnapshot?: () => Promise; pluginHost: TuiPlugi return } - const title = session.title.length > 40 ? session.title.slice(0, 37) + "..." : session.title + const title = session.title.length > 40 ? session.title.slice(0, 37) + "…" : session.title renderer.setTerminalTitle(`OC | ${title}`) return } @@ -1051,7 +1051,7 @@ function App(props: { onSnapshot?: () => Promise; pluginHost: TuiPlugi toast.show({ variant: "info", - message: `Updating to v${version}...`, + message: `Updating to v${version}…`, duration: 30000, }) diff --git a/packages/tui/src/component/dialog-console-org.tsx b/packages/tui/src/component/dialog-console-org.tsx index 1305a965c..1f6ef5c74 100644 --- a/packages/tui/src/component/dialog-console-org.tsx +++ b/packages/tui/src/component/dialog-console-org.tsx @@ -51,7 +51,7 @@ export function DialogConsoleOrg() { if (listed === undefined) { return [ { - title: "Loading orgs...", + title: "Loading orgs…", value: "loading", onSelect: () => {}, }, diff --git a/packages/tui/src/component/dialog-move-session.tsx b/packages/tui/src/component/dialog-move-session.tsx index e0d550873..21912b273 100644 --- a/packages/tui/src/component/dialog-move-session.tsx +++ b/packages/tui/src/component/dialog-move-session.tsx @@ -113,7 +113,7 @@ export function DialogMoveSession(props: DialogMoveSessionProps) { if (showError()) return [] const data = directoryData() const current = currentRoot()?.directory - if (directories.loading && !data && !current) return [{ title: "Loading project directories...", value: undefined }] + if (directories.loading && !data && !current) return [{ title: "Loading project directories…", value: undefined }] const roots = [...(data ?? [])] if (current && !roots.some((item) => item.directory === current)) roots.unshift({ directory: current }) roots.sort((a, b) => { diff --git a/packages/tui/src/component/dialog-provider.tsx b/packages/tui/src/component/dialog-provider.tsx index 0fd51e3c1..6b86a32e3 100644 --- a/packages/tui/src/component/dialog-provider.tsx +++ b/packages/tui/src/component/dialog-provider.tsx @@ -297,7 +297,7 @@ function AutoMethod(props: AutoMethodProps) { {props.authorization.instructions} - Waiting for authorization... + Waiting for authorization… c copy diff --git a/packages/tui/src/component/dialog-skill.tsx b/packages/tui/src/component/dialog-skill.tsx index e962a6e7c..1143890ba 100644 --- a/packages/tui/src/component/dialog-skill.tsx +++ b/packages/tui/src/component/dialog-skill.tsx @@ -51,7 +51,7 @@ export function DialogSkill(props: DialogSkillProps) { return ( url.searchParams.set("description", head + "```\n" + body + "\n```") diff --git a/packages/tui/src/component/prompt/index.tsx b/packages/tui/src/component/prompt/index.tsx index 0a3935ab2..c48c75173 100644 --- a/packages/tui/src/component/prompt/index.tsx +++ b/packages/tui/src/component/prompt/index.tsx @@ -1313,10 +1313,10 @@ export function Prompt(props: PromptProps) { if (store.mode === "shell") { if (!shell().length) return undefined const example = shell()[store.placeholder % shell().length] - return `Run a command... "${example}"` + return `Run a command… "${example}"` } if (!list().length) return undefined - return `Ask anything... "${list()[store.placeholder % list().length]}"` + return `Ask anything… "${list()[store.placeholder % list().length]}"` }) const spinnerDef = createMemo(() => { @@ -1537,7 +1537,7 @@ export function Prompt(props: PromptProps) { if (!r) return if (r.message.includes("exceeded your current quota") && r.message.includes("gemini")) return "gemini is way too hot right now" - if (r.message.length > 80) return r.message.slice(0, 80) + "..." + if (r.message.length > 80) return r.message.slice(0, 80) + "…" return r.message }) const isTruncated = createMemo(() => { diff --git a/packages/tui/src/component/startup-loading.tsx b/packages/tui/src/component/startup-loading.tsx index 6665c0c2e..4742c9cfa 100644 --- a/packages/tui/src/component/startup-loading.tsx +++ b/packages/tui/src/component/startup-loading.tsx @@ -5,7 +5,7 @@ import { Spinner } from "./spinner" export function StartupLoading(props: { ready: () => boolean }) { const theme = useTheme().theme const [show, setShow] = createSignal(false) - const text = createMemo(() => (props.ready() ? "Finishing startup..." : "Loading plugins...")) + const text = createMemo(() => (props.ready() ? "Finishing startup…" : "Loading plugins…")) let wait: NodeJS.Timeout | undefined let hold: NodeJS.Timeout | undefined let stamp = 0 diff --git a/packages/tui/src/feature-plugins/system/diff-viewer.tsx b/packages/tui/src/feature-plugins/system/diff-viewer.tsx index ed88a1107..c4c6aed64 100644 --- a/packages/tui/src/feature-plugins/system/diff-viewer.tsx +++ b/packages/tui/src/feature-plugins/system/diff-viewer.tsx @@ -766,7 +766,7 @@ function DiffViewer(props: { api: TuiPluginApi }) { - Loading diff... + Loading diff… diff --git a/packages/tui/src/feature-plugins/system/plugins.tsx b/packages/tui/src/feature-plugins/system/plugins.tsx index 78611e034..dd074786b 100644 --- a/packages/tui/src/feature-plugins/system/plugins.tsx +++ b/packages/tui/src/feature-plugins/system/plugins.tsx @@ -49,7 +49,7 @@ function Install(props: { api: TuiPluginApi }) { title="Install plugin" placeholder="npm package name" busy={busy()} - busyText="Installing plugin..." + busyText="Installing plugin…" description={() => ( scope: diff --git a/packages/tui/src/routes/session/index.tsx b/packages/tui/src/routes/session/index.tsx index 866a381f0..93639c9d7 100644 --- a/packages/tui/src/routes/session/index.tsx +++ b/packages/tui/src/routes/session/index.tsx @@ -1812,7 +1812,7 @@ function GenericTool(props: ToolProps) { + {props.tool} {input(props.input)} } @@ -2094,7 +2094,7 @@ function Shell(props: ToolProps) { - + {stringValue(props.input.command)} @@ -2128,7 +2128,7 @@ function Write(props: ToolProps) { @@ -2142,7 +2142,7 @@ function Write(props: ToolProps) { function Glob(props: ToolProps) { const pathFormatter = usePathFormatter() return ( - + Glob "{stringValue(props.input.pattern)}"{" "} in {pathFormatter.format(stringValue(props.input.path))} @@ -2167,7 +2167,7 @@ function Read(props: ToolProps) { <> + Grep "{stringValue(props.input.pattern)}"{" "} in {pathFormatter.format(stringValue(props.input.path))} @@ -2202,7 +2202,7 @@ function Grep(props: ToolProps) { function WebFetch(props: ToolProps) { return ( - + WebFetch {stringValue(props.input.url)} ) @@ -2210,7 +2210,7 @@ function WebFetch(props: ToolProps) { function WebSearch(props: ToolProps) { return ( - + {webSearchProviderLabel(props.metadata.provider)} "{stringValue(props.input.query)}"{" "} ({numberValue(props.metadata.numResults)} results) @@ -2300,7 +2300,7 @@ function Task(props: ToolProps) { color={retry() ? theme.error : undefined} spinner={isRunning()} complete={stringValue(props.input.description)} - pending="Delegating..." + pending="Delegating…" part={props.part} onClick={() => { if (sessionID()) { @@ -2437,7 +2437,7 @@ function Edit(props: ToolProps) { - + Edit {pathFormatter.format(stringValue(props.input.filePath))} {input({ replaceAll: props.input.replaceAll })} @@ -2513,7 +2513,7 @@ function ApplyPatch(props: ToolProps) {
      - + Patch @@ -2535,12 +2535,12 @@ function TodoWrite(props: ToolProps) { - Updating todos... + Updating todos… @@ -2575,7 +2575,7 @@ function Question(props: ToolProps) { - + Asked {count()} question{count() !== 1 ? "s" : ""} @@ -2585,7 +2585,7 @@ function Question(props: ToolProps) { function Skill(props: ToolProps) { return ( - + Skill "{stringValue(props.input.name)}" ) diff --git a/packages/tui/src/ui/dialog-prompt.tsx b/packages/tui/src/ui/dialog-prompt.tsx index 892b2b048..899a33869 100644 --- a/packages/tui/src/ui/dialog-prompt.tsx +++ b/packages/tui/src/ui/dialog-prompt.tsx @@ -99,11 +99,11 @@ export function DialogPrompt(props: DialogPromptProps) { cursorStyle={tuiConfig.cursor} /> - {props.busyText ?? "Working..."} + {props.busyText ?? "Working…"} - processing...}> + processing…}> {submitShortcut()} submit diff --git a/packages/tui/test/cli/tui/diff-viewer-file-tree.test.tsx b/packages/tui/test/cli/tui/diff-viewer-file-tree.test.tsx index 2a5a172f9..720436a0b 100644 --- a/packages/tui/test/cli/tui/diff-viewer-file-tree.test.tsx +++ b/packages/tui/test/cli/tui/diff-viewer-file-tree.test.tsx @@ -77,7 +77,7 @@ describe("DiffViewerFileTree", () => { )) - expect(loading).not.toContain("Loading diff...") + expect(loading).not.toContain("Loading diff…") expect(loading).not.toContain("No files") expect(failed).not.toContain("Failed to load diff") expect(failed).not.toContain("No files") diff --git a/packages/tui/test/cli/tui/inline-tool-wrap-snapshot.test.tsx b/packages/tui/test/cli/tui/inline-tool-wrap-snapshot.test.tsx index 8ba730906..6da90633c 100644 --- a/packages/tui/test/cli/tui/inline-tool-wrap-snapshot.test.tsx +++ b/packages/tui/test/cli/tui/inline-tool-wrap-snapshot.test.tsx @@ -195,7 +195,7 @@ function StickyScrollFixture(props: { separated: boolean; scroll: (scroll: Scrol function FailedPendingToolFixture() { return ( - + Patch ) @@ -203,7 +203,7 @@ function FailedPendingToolFixture() { function FailedCompleteToolFixture() { return ( - + Read src/index.ts ) From a935432b5ce337523dfc5014629a09bc16784c42 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Thu, 3 Sep 2026 19:58:32 +0000 Subject: [PATCH 247/271] chore: generate --- packages/tui/src/routes/session/index.tsx | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/packages/tui/src/routes/session/index.tsx b/packages/tui/src/routes/session/index.tsx index 93639c9d7..2b54f2167 100644 --- a/packages/tui/src/routes/session/index.tsx +++ b/packages/tui/src/routes/session/index.tsx @@ -2126,12 +2126,7 @@ function Write(props: ToolProps) { - + Write {pathFormatter.format(stringValue(props.input.filePath))} @@ -2533,13 +2528,7 @@ function TodoWrite(props: ToolProps) { - + Updating todos… From 8a6cf2c9aa1aa407129efc4e875a6ce6ab32ef72 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 3 Sep 2026 16:03:32 -0500 Subject: [PATCH 248/271] feat(stats): improve market share chart (#47115) --- packages/stats/app/src/routes/index.css | 125 ++++++++++++++++++++++++ packages/stats/app/src/routes/index.tsx | 101 +++++++++++++------ 2 files changed, 195 insertions(+), 31 deletions(-) diff --git a/packages/stats/app/src/routes/index.css b/packages/stats/app/src/routes/index.css index 2b8acb390..fc88132d2 100644 --- a/packages/stats/app/src/routes/index.css +++ b/packages/stats/app/src/routes/index.css @@ -2195,6 +2195,7 @@ body { [data-page="stats"] [data-component="market-share"] { --market-gap: 12px; + position: relative; display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 12px; @@ -2360,6 +2361,106 @@ body { font-weight: 500; } +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] { + top: 52px; + box-sizing: border-box; + display: flex; + flex-direction: column; + gap: 0; + width: 228px; + min-width: 228px; + padding: 0; + border: 0; + background: #fffffff2; + box-shadow: + 0 0 0 0.5px #00000024, + 0 8px 16px #0000000f, + 0 4px 8px #00000014; + color: var(--stats-text); +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"][data-placement="right"] { + right: auto; + left: calc(var(--market-tooltip-left) + 8px); +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"][data-placement="left"] { + right: calc(var(--market-tooltip-right) + 8px); + left: auto; +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] strong, +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] > span { + display: block; + font-size: 11px; + line-height: 12px; + white-space: nowrap; +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] strong { + padding: 8px 8px 0; + font-weight: 500; +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] > span { + padding: 4px 8px 8px; + color: var(--stats-muted); +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] [data-slot="tooltip-divider"] { + height: 0.5px; + margin: 0; +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] p { + grid-template-columns: minmax(0, 1fr) auto auto; + gap: 8px; + height: 16px; + margin: 4px 0 0; + padding: 0 8px; + font-size: 11px; + font-weight: 500; + line-height: 12px; +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] p[data-muted="true"] { + opacity: 0.46; +} + +[data-page="stats"] + [data-component="market-share"] + > [data-component="chart-tooltip"] + [data-slot="tooltip-divider"] + + p { + margin-top: 8px; +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] p:last-child { + margin-bottom: 8px; +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] [data-slot="tooltip-label"] { + grid-template-columns: 16px minmax(0, 1fr); + gap: 4px; +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] i { + width: 6px; + height: 6px; + justify-self: center; +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] em, +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] b { + font-style: normal; + font-weight: 500; + white-space: nowrap; +} + +[data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] em { + color: var(--stats-muted); +} + [data-page="stats"] [data-slot="market-footer"] { display: flex; align-items: center; @@ -7208,6 +7309,11 @@ body { [data-page="stats"][data-theme="dark"] :is([data-section="top-models"], [data-section="unique-users"]) [data-component="chart-tooltip"], +:root[data-stats-theme="dark"] + [data-page="stats"]:not([data-theme="light"]) + [data-component="market-share"] + > [data-component="chart-tooltip"], +[data-page="stats"][data-theme="dark"] [data-component="market-share"] > [data-component="chart-tooltip"], :root[data-stats-theme="dark"] [data-page="stats"]:not([data-theme="light"]) :is([data-section="top-models"], [data-section="unique-users"]) @@ -8560,6 +8666,25 @@ body { transform: none; } + [data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"] { + position: fixed; + top: auto; + right: 12px; + bottom: 12px; + left: 12px; + z-index: 40; + width: auto; + min-width: 0; + max-height: min(320px, 48vh); + overflow: auto; + transform: none; + } + + [data-page="stats"] [data-component="market-share"] > [data-component="chart-tooltip"][data-placement] { + right: 12px; + left: 12px; + } + [data-page="stats"] :is([data-section="top-models"], [data-section="unique-users"]) [data-component="chart-tooltip"][data-placement] { diff --git a/packages/stats/app/src/routes/index.tsx b/packages/stats/app/src/routes/index.tsx index 5a08aa011..a24f803e1 100644 --- a/packages/stats/app/src/routes/index.tsx +++ b/packages/stats/app/src/routes/index.tsx @@ -928,7 +928,7 @@ function MarketShareSection(props: { data: MarketDay[] }) { const [inspecting, setInspecting] = createSignal(false) const authorOrder = createMemo(() => getMarketAuthorOrder(props.data)) const selectedIndex = createMemo(() => Math.min(activeIndex(), Math.max(props.data.length - 1, 0))) - const activeDay = createMemo(() => props.data[selectedIndex()]) + const today = createMemo(() => props.data[props.data.length - 1]) return (
      } > {(day) => ( @@ -963,19 +963,14 @@ function MarketShareSection(props: { data: MarketDay[] }) { setActiveIndex(index) setInspecting(true) }} - onActiveAuthorChange={(author) => { - setActiveAuthor(author) - setInspecting(true) - }} + onActiveAuthorChange={setActiveAuthor} + onInspectingChange={setInspecting} /> { - setActiveAuthor(author) - setInspecting(true) - }} + onActiveAuthorChange={setActiveAuthor} /> )} @@ -983,11 +978,7 @@ function MarketShareSection(props: { data: MarketDay[] }) {

      [*] - - {inspecting() - ? formatMarketDate(activeDay(), i18n.t("home.noData")) - : formatMarketRange(props.data, i18n.t("home.noData"))} - + {formatMarketDate(today(), i18n.t("home.noData"))}

      @@ -1002,10 +993,15 @@ function MarketShare(props: { activeAuthor: string | undefined inspecting: boolean onActiveIndexChange: (index: number) => void - onActiveAuthorChange: (author: string) => void + onActiveAuthorChange: (author: string | undefined) => void + onInspectingChange: (inspecting: boolean) => void }) { const i18n = useI18n() let chartRef: HTMLDivElement | undefined + const inspectDay = (index: number) => { + props.onActiveIndexChange(index) + props.onActiveAuthorChange(undefined) + } createEffect(() => scrollDenseChartToEnd(chartRef, props.range, props.data.length)) @@ -1018,6 +1014,10 @@ function MarketShare(props: { role="img" aria-label={i18n.t("home.marketChart")} style={{ "--market-count": props.data.length } as JSX.CSSProperties} + onPointerLeave={(event) => { + if (event.pointerType === "touch") return + props.onInspectingChange(false) + }} >
      @@ -1028,8 +1028,11 @@ function MarketShare(props: { data-active={props.inspecting && props.activeIndex === index() ? "true" : undefined} data-label-hidden={isColumnLabelHidden(index(), props.data.length) ? "true" : undefined} data-mobile-hidden={isMarketMobileLabelHidden(index(), props.data.length) ? "true" : undefined} - onClick={() => props.onActiveIndexChange(index())} - onPointerEnter={() => props.onActiveIndexChange(index())} + aria-describedby={props.inspecting && props.activeIndex === index() ? "market-share-tooltip" : undefined} + onBlur={() => props.onInspectingChange(false)} + onClick={() => inspectDay(index())} + onFocus={() => inspectDay(index())} + onPointerEnter={() => inspectDay(index())} > {formatTrillions(day.total)} @@ -1049,8 +1052,11 @@ function MarketShare(props: { type="button" aria-label={`${day.date} ${formatTrillions(day.total)}`} data-active={props.inspecting && props.activeIndex === index() ? "true" : undefined} - onClick={() => props.onActiveIndexChange(index())} - onPointerEnter={() => props.onActiveIndexChange(index())} + aria-describedby={props.inspecting && props.activeIndex === index() ? "market-share-tooltip" : undefined} + onBlur={() => props.onInspectingChange(false)} + onClick={() => inspectDay(index())} + onFocus={() => inspectDay(index())} + onPointerEnter={() => inspectDay(index())} > {(item) => ( @@ -1090,6 +1096,45 @@ function MarketShare(props: { )}
      + + {(day) => ( +
      props.data.length * 0.62 ? "left" : "right"} + role="tooltip" + style={ + { + "--market-tooltip-left": `${((props.activeIndex + 0.5) / props.data.length) * 100}%`, + "--market-tooltip-right": `${100 - ((props.activeIndex + 0.5) / props.data.length) * 100}%`, + } as JSX.CSSProperties + } + > + {day.date} + + {formatTrillions(day.total)} {i18n.t("home.total")} + +
      + + {(item, index) => ( +

      + + + {item.author} + + {formatTrillions(item.tokens)} + {item.share.toFixed(1)}% +

      + )} +
      +
      + )} +
      ) } @@ -1248,6 +1293,10 @@ function getMarketSegmentColor(author: string, color: string, activeAuthor: stri return "var(--stats-bar-idle)" } +function rankedMarketAuthors(day: MarketDay) { + return day.authors.toSorted((a, b) => b.tokens - a.tokens || a.author.localeCompare(b.author)) +} + function stackedMarketAuthors(day: MarketDay, order: Map) { return day.authors .map((author, index) => ({ author, index })) @@ -1302,16 +1351,6 @@ function formatMarketDate(day: MarketDay | undefined, fallback: string) { return formatMarketDateLabel(day.date) } -function formatMarketRange(data: MarketDay[], fallback: string) { - const first = data[0]?.date - const last = data[data.length - 1]?.date - if (!first || !last) return fallback - const start = marketDateParts(first).start - const end = marketDateParts(last).end - if (start === end) return formatMarketDateLabel(start) - return `${start} ${new Date().getFullYear()} → ${end} ${new Date().getFullYear()}` -} - function formatMarketDateLabel(label: string) { const parts = marketDateParts(label) const year = new Date().getFullYear() From c0f09afef5056cfbebdf5123162267cb6efbd960 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 23:24:55 -0500 Subject: [PATCH 249/271] feat(copilot): send X-Interaction-Id header with session id (#47215) Co-authored-by: rekram1-node --- .../src/plugin/github-copilot/copilot.ts | 1 + .../test/plugin/github-copilot.test.ts | 56 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 packages/opencode/test/plugin/github-copilot.test.ts diff --git a/packages/opencode/src/plugin/github-copilot/copilot.ts b/packages/opencode/src/plugin/github-copilot/copilot.ts index 9c744db89..161bf859f 100644 --- a/packages/opencode/src/plugin/github-copilot/copilot.ts +++ b/packages/opencode/src/plugin/github-copilot/copilot.ts @@ -361,6 +361,7 @@ export async function CopilotAuthPlugin(input: PluginInput): Promise { if (!incoming.model.providerID.includes("github-copilot")) return output.headers["X-GitHub-Api-Version"] = API_VERSION + output.headers["X-Interaction-Id"] = incoming.sessionID if (incoming.agent === "title") { output.headers["X-Interaction-Type"] = "agent-session-name-generation" } diff --git a/packages/opencode/test/plugin/github-copilot.test.ts b/packages/opencode/test/plugin/github-copilot.test.ts new file mode 100644 index 000000000..cd1864b79 --- /dev/null +++ b/packages/opencode/test/plugin/github-copilot.test.ts @@ -0,0 +1,56 @@ +import { expect, test } from "bun:test" +import type { Hooks } from "@opencode-ai/plugin" +import { CopilotAuthPlugin } from "@/plugin/github-copilot/copilot" + +type ChatHeaders = NonNullable + +async function hook() { + const hooks = await CopilotAuthPlugin({ + directory: "", + project: {} as never, + worktree: "", + experimental_workspace: { register() {} }, + serverUrl: new URL("http://localhost"), + $: {} as never, + client: { + session: { + message: async () => ({ data: { parts: [] } }), + get: async () => ({ data: {} }), + }, + } as never, + }) + return hooks["chat.headers"]! +} + +function input(sessionID: string, providerID: string, npm: string) { + return { + sessionID, + agent: "build", + model: { providerID, api: { npm } }, + message: { id: "msg_test", sessionID }, + } as Parameters[0] +} + +test.each([ + ["github-copilot", "@ai-sdk/github-copilot"], + ["github-copilot", "@ai-sdk/anthropic"], + ["github-copilot-enterprise", "@ai-sdk/github-copilot"], + ["github-copilot-enterprise", "@ai-sdk/anthropic"], +])("uses the session ID for %s interaction headers with %s", async (providerID, npm) => { + const headers = await hook() + for (const sessionID of ["ses_one", "ses_one", "ses_two"]) { + const output = { headers: { "x-existing": "preserved" } } + await headers(input(sessionID, providerID, npm), output) + expect(output.headers).toMatchObject({ + "X-Interaction-Id": sessionID, + "x-existing": "preserved", + }) + } +}) + +test("does not add interaction headers to other providers", async () => { + const headers = await hook() + const output = { headers: { "x-existing": "preserved" } } + await headers(input("ses_one", "openai", "@ai-sdk/openai"), output) + expect(output.headers).toEqual({ "x-existing": "preserved" }) +}) From 8b9f89e7e8011dfe5b1350c92a6311e39b39d723 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 4 Sep 2026 13:07:43 +0800 Subject: [PATCH 250/271] docs(go): add Omen Alpha (#47220) --- .../console/app/src/component/limits-graph.tsx | 1 + packages/console/app/src/i18n/ar.ts | 2 +- packages/console/app/src/i18n/br.ts | 2 +- packages/console/app/src/i18n/da.ts | 2 +- packages/console/app/src/i18n/de.ts | 2 +- packages/console/app/src/i18n/en.ts | 2 +- packages/console/app/src/i18n/es.ts | 2 +- packages/console/app/src/i18n/fr.ts | 2 +- packages/console/app/src/i18n/it.ts | 2 +- packages/console/app/src/i18n/ja.ts | 2 +- packages/console/app/src/i18n/ko.ts | 2 +- packages/console/app/src/i18n/no.ts | 2 +- packages/console/app/src/i18n/pl.ts | 2 +- packages/console/app/src/i18n/ru.ts | 2 +- packages/console/app/src/i18n/th.ts | 2 +- packages/console/app/src/i18n/tr.ts | 2 +- packages/console/app/src/i18n/uk.ts | 2 +- packages/console/app/src/i18n/zh.ts | 2 +- packages/console/app/src/i18n/zht.ts | 2 +- packages/console/app/src/routes/go/index.tsx | 1 + .../src/routes/workspace/[id]/go/lite-section.tsx | 1 + packages/web/src/content/docs/ar/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/bs/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/da/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/de/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/es/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/fr/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/it/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/ja/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/ko/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/nb/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/pl/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/pt-br/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/ru/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/th/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/tr/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/zh-cn/go.mdx | 14 +++++++++++--- packages/web/src/content/docs/zh-tw/go.mdx | 14 +++++++++++--- 39 files changed, 219 insertions(+), 72 deletions(-) diff --git a/packages/console/app/src/component/limits-graph.tsx b/packages/console/app/src/component/limits-graph.tsx index 9fc15b359..63ffeafaa 100644 --- a/packages/console/app/src/component/limits-graph.tsx +++ b/packages/console/app/src/component/limits-graph.tsx @@ -53,6 +53,7 @@ export function LimitsGraph(props: { href: string }) { { id: "qwen3.8-flash", name: "Qwen3.8 Flash", req: 5400 }, { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", req: 7600 }, { id: "longcat-2.0", name: "LongCat-2.0", req: 11400 }, + { id: "omen-alpha", name: "Omen Alpha", req: 11600 }, { id: "mimo-v2.5", name: "MiMo-V2.5", req: 30100 }, { id: "muse-spark-1.3-contributor", name: "Muse Spark 1.3 Contributor", req: 45300, edge: true }, ].map((model, index) => ({ ...model, d: `${50 + index * 25}ms` })) diff --git a/packages/console/app/src/i18n/ar.ts b/packages/console/app/src/i18n/ar.ts index b1dfd4833..a9ca60311 100644 --- a/packages/console/app/src/i18n/ar.ts +++ b/packages/console/app/src/i18n/ar.ts @@ -362,7 +362,7 @@ export const dict = { "go.faq.q9": "ما الفرق بين النماذج المجانية وGo؟", "go.faq.a9": - "تشمل النماذج المجانية Big Pickle بالإضافة إلى النماذج الترويجية المتاحة في ذلك الوقت، مع حصة قدرها 200 طلب/يوم. يقدّم Go مجموعة منسقة من النماذج مع حصص طلبات أعلى مطبقة عبر نوافذ متجددة (5 ساعات، وأسبوعية، وشهرية)، تعادل تقريبًا $12 لكل 5 ساعات، و$30 في الأسبوع، و$60 في الشهر (تختلف أعداد الطلبات الفعلية حسب النموذج والاستخدام).", + "تشمل النماذج المجانية Big Pickle بالإضافة إلى النماذج الترويجية المتاحة في ذلك الوقت، مع حصة قدرها 200 طلب/يوم. يقدّم Go مجموعة منسقة من النماذج مع حصص طلبات أعلى مطبقة عبر نوافذ متجددة (5 ساعات، وأسبوعية، وشهرية)، تعادل الحصص الأساسية فيها تقريبًا $12 لكل 5 ساعات و$30 في الأسبوع و$60 في الشهر؛ وقد تختلف الحصص حسب النموذج (تختلف أعداد الطلبات الفعلية حسب النموذج والاستخدام).", "zen.api.error.rateLimitExceeded": "تم تجاوز حد الطلبات. يرجى المحاولة مرة أخرى لاحقًا.", "zen.api.error.modelNotSupported": "النموذج {{model}} غير مدعوم", diff --git a/packages/console/app/src/i18n/br.ts b/packages/console/app/src/i18n/br.ts index 12d1b87a5..2aa425607 100644 --- a/packages/console/app/src/i18n/br.ts +++ b/packages/console/app/src/i18n/br.ts @@ -372,7 +372,7 @@ export const dict = { "go.faq.q9": "Qual a diferença entre os modelos gratuitos e o Go?", "go.faq.a9": - "Os modelos gratuitos incluem Big Pickle e modelos promocionais disponíveis no momento, com uma cota de 200 requisições/dia. O Go oferece uma seleção de modelos com cotas de requisição mais altas aplicadas em janelas móveis (5 horas, semanal e mensal), aproximadamente equivalentes a $12 por 5 horas, $30 por semana e $60 por mês (as contagens reais de requisições variam de acordo com o modelo e o uso).", + "Os modelos gratuitos incluem Big Pickle e modelos promocionais disponíveis no momento, com uma cota de 200 requisições/dia. O Go oferece uma seleção de modelos com cotas de requisição mais altas aplicadas em janelas móveis (5 horas, semanal e mensal), aproximadamente equivalentes a cotas básicas de $12 por 5 horas, $30 por semana e $60 por mês; as cotas específicas podem variar por modelo (as contagens reais de requisições variam de acordo com o modelo e o uso).", "zen.api.error.rateLimitExceeded": "Limite de taxa excedido. Por favor, tente novamente mais tarde.", "zen.api.error.modelNotSupported": "Modelo {{model}} não suportado", diff --git a/packages/console/app/src/i18n/da.ts b/packages/console/app/src/i18n/da.ts index 8ed2a8f7c..86a672ffc 100644 --- a/packages/console/app/src/i18n/da.ts +++ b/packages/console/app/src/i18n/da.ts @@ -368,7 +368,7 @@ export const dict = { "go.faq.q9": "Hvad er forskellen på gratis modeller og Go?", "go.faq.a9": - "Gratis modeller inkluderer Big Pickle plus kampagnemodeller, der er tilgængelige på det pågældende tidspunkt, med en kvote på 200 forespørgsler/dag. Go tilbyder et kurateret modeludvalg med højere forespørgselskvoter håndhævet over rullende perioder (5 timer, ugentligt og månedligt), omtrent svarende til $12 pr. 5 timer, $30 pr. uge og $60 pr. måned (det faktiske antal forespørgsler varierer efter model og brug).", + "Gratis modeller inkluderer Big Pickle plus kampagnemodeller, der er tilgængelige på det pågældende tidspunkt, med en kvote på 200 forespørgsler/dag. Go tilbyder et kurateret modeludvalg med højere forespørgselskvoter håndhævet over rullende perioder (5 timer, ugentligt og månedligt), omtrent svarende til basiskvoter på $12 pr. 5 timer, $30 pr. uge og $60 pr. måned; modelspecifikke kvoter kan variere (det faktiske antal forespørgsler varierer efter model og brug).", "zen.api.error.rateLimitExceeded": "Hastighedsgrænse overskredet. Prøv venligst igen senere.", "zen.api.error.modelNotSupported": "Model {{model}} understøttes ikke", diff --git a/packages/console/app/src/i18n/de.ts b/packages/console/app/src/i18n/de.ts index dea829a39..9a7642bc0 100644 --- a/packages/console/app/src/i18n/de.ts +++ b/packages/console/app/src/i18n/de.ts @@ -370,7 +370,7 @@ export const dict = { "go.faq.q9": "Was ist der Unterschied zwischen kostenlosen Modellen und Go?", "go.faq.a9": - "Kostenlose Modelle beinhalten Big Pickle sowie Werbemodelle, die zum jeweiligen Zeitpunkt verfügbar sind, mit einem Kontingent von 200 Anfragen/Tag. Go bietet eine kuratierte Modellauswahl mit höheren Anfragekontingenten, die über rollierende Zeitfenster (5 Stunden, wöchentlich und monatlich) durchgesetzt werden, grob äquivalent zu $12 pro 5 Stunden, $30 pro Woche und $60 pro Monat (tatsächliche Anfragezahlen variieren je nach Modell und Nutzung).", + "Kostenlose Modelle beinhalten Big Pickle sowie Werbemodelle, die zum jeweiligen Zeitpunkt verfügbar sind, mit einem Kontingent von 200 Anfragen/Tag. Go bietet eine kuratierte Modellauswahl mit höheren Anfragekontingenten, die über rollierende Zeitfenster (5 Stunden, wöchentlich und monatlich) durchgesetzt werden, grob äquivalent zu Basiskontingenten von $12 pro 5 Stunden, $30 pro Woche und $60 pro Monat; modellspezifische Kontingente können abweichen (tatsächliche Anfragezahlen variieren je nach Modell und Nutzung).", "zen.api.error.rateLimitExceeded": "Ratenlimit überschritten. Bitte versuche es später erneut.", "zen.api.error.modelNotSupported": "Modell {{model}} wird nicht unterstützt", diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index a479f2642..8c2901c39 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -367,7 +367,7 @@ export const dict = { "go.faq.q9": "What is the difference between free models and Go?", "go.faq.a9": - "Free models include Big Pickle plus promotional models available at the time, with a quota of 200 requests/day. Go offers a curated model lineup with higher request quotas enforced across rolling windows (5-hour, weekly, and monthly), roughly equivalent to $12 per 5 hours, $30 per week, and $60 per month (actual request counts vary by model and usage).", + "Free models include Big Pickle plus promotional models available at the time, with a quota of 200 requests/day. Go offers a curated model lineup with higher request quotas enforced across rolling windows (5-hour, weekly, and monthly), roughly equivalent to base allowances of $12 per 5 hours, $30 per week, and $60 per month; model-specific allowances may differ (actual request counts vary by model and usage).", "zen.api.error.rateLimitExceeded": "Rate limit exceeded. Please try again later.", "zen.api.error.modelNotSupported": "Model {{model}} is not supported", diff --git a/packages/console/app/src/i18n/es.ts b/packages/console/app/src/i18n/es.ts index 534ac2eab..59aa3abbf 100644 --- a/packages/console/app/src/i18n/es.ts +++ b/packages/console/app/src/i18n/es.ts @@ -373,7 +373,7 @@ export const dict = { "go.faq.q9": "¿Cuál es la diferencia entre los modelos gratuitos y Go?", "go.faq.a9": - "Los modelos gratuitos incluyen Big Pickle y los modelos promocionales disponibles en ese momento, con una cuota de 200 solicitudes/día. Go ofrece una selección de modelos con cuotas de solicitudes más altas aplicadas en ventanas móviles (de 5 horas, semanales y mensuales), aproximadamente equivalentes a 12 $ por 5 horas, 30 $ por semana y 60 $ por mes (la cantidad real de solicitudes varía según el modelo y el uso).", + "Los modelos gratuitos incluyen Big Pickle y los modelos promocionales disponibles en ese momento, con una cuota de 200 solicitudes/día. Go ofrece una selección de modelos con cuotas de solicitudes más altas aplicadas en ventanas móviles (de 5 horas, semanales y mensuales), aproximadamente equivalentes a cuotas base de 12 $ por 5 horas, 30 $ por semana y 60 $ por mes; las cuotas específicas pueden variar según el modelo (la cantidad real de solicitudes varía según el modelo y el uso).", "zen.api.error.rateLimitExceeded": "Límite de tasa excedido. Por favor, inténtalo de nuevo más tarde.", "zen.api.error.modelNotSupported": "Modelo {{model}} no soportado", diff --git a/packages/console/app/src/i18n/fr.ts b/packages/console/app/src/i18n/fr.ts index 2b4ad95d0..4a14e0452 100644 --- a/packages/console/app/src/i18n/fr.ts +++ b/packages/console/app/src/i18n/fr.ts @@ -373,7 +373,7 @@ export const dict = { "Oui, vous pouvez utiliser Go avec n'importe quel agent. Suivez les instructions de configuration dans votre agent de code préféré.", "go.faq.q9": "Quelle est la différence entre les modèles gratuits et Go ?", "go.faq.a9": - "Les modèles gratuits incluent Big Pickle ainsi que les modèles promotionnels disponibles à ce moment-là, avec un quota de 200 requêtes/jour. Go propose une sélection de modèles avec des quotas de requêtes plus élevés appliqués sur des fenêtres glissantes (5 heures, hebdomadaire et mensuelle), à peu près équivalents à 12 $ par 5 heures, 30 $ par semaine et 60 $ par mois (le nombre réel de requêtes varie selon le modèle et l'utilisation).", + "Les modèles gratuits incluent Big Pickle ainsi que les modèles promotionnels disponibles à ce moment-là, avec un quota de 200 requêtes/jour. Go propose une sélection de modèles avec des quotas de requêtes plus élevés appliqués sur des fenêtres glissantes (5 heures, hebdomadaire et mensuelle), à peu près équivalents à des quotas de base de 12 $ par 5 heures, 30 $ par semaine et 60 $ par mois ; les quotas propres à chaque modèle peuvent varier (le nombre réel de requêtes varie selon le modèle et l'utilisation).", "zen.api.error.rateLimitExceeded": "Limite de débit dépassée. Veuillez réessayer plus tard.", "zen.api.error.modelNotSupported": "Modèle {{model}} non pris en charge", diff --git a/packages/console/app/src/i18n/it.ts b/packages/console/app/src/i18n/it.ts index 3abbaf7db..0bc34f90b 100644 --- a/packages/console/app/src/i18n/it.ts +++ b/packages/console/app/src/i18n/it.ts @@ -369,7 +369,7 @@ export const dict = { "go.faq.q9": "Qual è la differenza tra i modelli gratuiti e Go?", "go.faq.a9": - "I modelli gratuiti includono Big Pickle più i modelli promozionali disponibili al momento, con una quota di 200 richieste/giorno. Go offre una selezione curata di modelli con quote di richiesta più elevate applicate su finestre mobili (5 ore, settimanale e mensile), approssimativamente equivalenti a $12 ogni 5 ore, $30 a settimana e $60 al mese (il conteggio effettivo delle richieste varia in base al modello e all'utilizzo).", + "I modelli gratuiti includono Big Pickle più i modelli promozionali disponibili al momento, con una quota di 200 richieste/giorno. Go offre una selezione curata di modelli con quote di richiesta più elevate applicate su finestre mobili (5 ore, settimanale e mensile), approssimativamente equivalenti a quote base di $12 ogni 5 ore, $30 a settimana e $60 al mese; le quote specifiche possono variare in base al modello (il conteggio effettivo delle richieste varia in base al modello e all'utilizzo).", "zen.api.error.rateLimitExceeded": "Limite di richieste superato. Riprova più tardi.", "zen.api.error.modelNotSupported": "Modello {{model}} non supportato", diff --git a/packages/console/app/src/i18n/ja.ts b/packages/console/app/src/i18n/ja.ts index 5bb36e46f..55715333f 100644 --- a/packages/console/app/src/i18n/ja.ts +++ b/packages/console/app/src/i18n/ja.ts @@ -367,7 +367,7 @@ export const dict = { "go.faq.q9": "無料モデルとGoの違いは何ですか?", "go.faq.a9": - "無料モデルにはBig Pickleと、その時点で利用可能なプロモーションモデルが含まれ、1日200リクエストの制限があります。Goでは厳選されたモデルラインナップを利用でき、ローリングウィンドウ(5時間、週間、月間)全体でより高いリクエスト制限が適用されます。これは概算で5時間あたり$12、週間$30、月間$60相当です(実際のリクエスト数はモデルと使用状況により異なります)。", + "無料モデルにはBig Pickleと、その時点で利用可能なプロモーションモデルが含まれ、1日200リクエストの制限があります。Goでは厳選されたモデルラインナップを利用でき、ローリングウィンドウ(5時間、週間、月間)全体でより高いリクエスト制限が適用されます。基本利用枠では概算で5時間あたり$12、週間$30、月間$60相当ですが、モデル別の利用枠は異なる場合があります(実際のリクエスト数はモデルと使用状況により異なります)。", "zen.api.error.rateLimitExceeded": "レート制限を超えました。後でもう一度お試しください。", "zen.api.error.modelNotSupported": "モデル {{model}} はサポートされていません", diff --git a/packages/console/app/src/i18n/ko.ts b/packages/console/app/src/i18n/ko.ts index b57ab820b..6ad784dd9 100644 --- a/packages/console/app/src/i18n/ko.ts +++ b/packages/console/app/src/i18n/ko.ts @@ -361,7 +361,7 @@ export const dict = { "go.faq.q9": "무료 모델과 Go의 차이점은 무엇인가요?", "go.faq.a9": - "무료 모델에는 Big Pickle과 당시 사용 가능한 프로모션 모델이 포함되며, 하루 200회 요청 할당량이 적용됩니다. Go는 엄선된 모델 라인업을 제공하며, 롤링 윈도우(5시간, 주간, 월간)에 걸쳐 더 높은 요청 할당량을 적용합니다. 이는 대략 5시간당 $12, 주당 $30, 월 $60에 해당합니다(실제 요청 수는 모델 및 사용량에 따라 다름).", + "무료 모델에는 Big Pickle과 당시 사용 가능한 프로모션 모델이 포함되며, 하루 200회 요청 할당량이 적용됩니다. Go는 엄선된 모델 라인업을 제공하며, 롤링 윈도우(5시간, 주간, 월간)에 걸쳐 더 높은 요청 할당량을 적용합니다. 기본 할당량은 대략 5시간당 $12, 주당 $30, 월 $60에 해당하며 모델별 할당량은 다를 수 있습니다(실제 요청 수는 모델 및 사용량에 따라 다름).", "zen.api.error.rateLimitExceeded": "속도 제한을 초과했습니다. 나중에 다시 시도해 주세요.", "zen.api.error.modelNotSupported": "{{model}} 모델은 지원되지 않습니다", diff --git a/packages/console/app/src/i18n/no.ts b/packages/console/app/src/i18n/no.ts index 343e81e29..416e33bfc 100644 --- a/packages/console/app/src/i18n/no.ts +++ b/packages/console/app/src/i18n/no.ts @@ -369,7 +369,7 @@ export const dict = { "go.faq.q9": "Hva er forskjellen mellom gratis modeller og Go?", "go.faq.a9": - "Gratis modeller inkluderer Big Pickle pluss kampanjemodeller som er tilgjengelige på det tidspunktet, med en kvote på 200 forespørsler/dag. Go tilbyr et kuratert modellutvalg med høyere forespørselskvoter som håndheves over rullerende vinduer (5 timer, ukentlig og månedlig), omtrent tilsvarende $12 per 5 timer, $30 per uke og $60 per måned (faktiske forespørselsantall varierer etter modell og bruk).", + "Gratis modeller inkluderer Big Pickle pluss kampanjemodeller som er tilgjengelige på det tidspunktet, med en kvote på 200 forespørsler/dag. Go tilbyr et kuratert modellutvalg med høyere forespørselskvoter som håndheves over rullerende vinduer (5 timer, ukentlig og månedlig), omtrent tilsvarende basiskvoter på $12 per 5 timer, $30 per uke og $60 per måned; modellspesifikke kvoter kan variere (faktiske forespørselsantall varierer etter modell og bruk).", "zen.api.error.rateLimitExceeded": "Rate limit overskredet. Vennligst prøv igjen senere.", "zen.api.error.modelNotSupported": "Modell {{model}} støttes ikke", diff --git a/packages/console/app/src/i18n/pl.ts b/packages/console/app/src/i18n/pl.ts index f33ddf70f..88ae438aa 100644 --- a/packages/console/app/src/i18n/pl.ts +++ b/packages/console/app/src/i18n/pl.ts @@ -370,7 +370,7 @@ export const dict = { "go.faq.q9": "Jaka jest różnica między darmowymi modelami a Go?", "go.faq.a9": - "Darmowe modele obejmują Big Pickle oraz modele promocyjne dostępne w danym momencie, z limitem 200 zapytań/dzień. Go oferuje starannie dobrany zestaw modeli z wyższymi limitami zapytań egzekwowanymi w oknach kroczących (5-godzinnych, tygodniowych i miesięcznych), odpowiadającymi w przybliżeniu $12 na 5 godzin, $30 tygodniowo i $60 miesięcznie (rzeczywista liczba zapytań zależy od modelu i użycia).", + "Darmowe modele obejmują Big Pickle oraz modele promocyjne dostępne w danym momencie, z limitem 200 zapytań/dzień. Go oferuje starannie dobrany zestaw modeli z wyższymi limitami zapytań egzekwowanymi w oknach kroczących (5-godzinnych, tygodniowych i miesięcznych), odpowiadającymi w przybliżeniu bazowym limitom $12 na 5 godzin, $30 tygodniowo i $60 miesięcznie; limity mogą się różnić zależnie od modelu (rzeczywista liczba zapytań zależy od modelu i użycia).", "zen.api.error.rateLimitExceeded": "Przekroczono limit zapytań. Spróbuj ponownie później.", "zen.api.error.modelNotSupported": "Model {{model}} nie jest obsługiwany", diff --git a/packages/console/app/src/i18n/ru.ts b/packages/console/app/src/i18n/ru.ts index b285c9e85..a4884471e 100644 --- a/packages/console/app/src/i18n/ru.ts +++ b/packages/console/app/src/i18n/ru.ts @@ -375,7 +375,7 @@ export const dict = { "go.faq.q9": "В чем разница между бесплатными моделями и Go?", "go.faq.a9": - "Бесплатные модели включают Big Pickle и доступные на данный момент промо-модели с квотой 200 запросов/день. Go предлагает набор отобранных моделей с более высокими квотами запросов, применяемыми в скользящих окнах (5 часов, неделя и месяц), что примерно эквивалентно $12 за 5 часов, $30 в неделю и $60 в месяц (фактическое количество запросов зависит от модели и использования).", + "Бесплатные модели включают Big Pickle и доступные на данный момент промо-модели с квотой 200 запросов/день. Go предлагает набор отобранных моделей с более высокими квотами запросов, применяемыми в скользящих окнах (5 часов, неделя и месяц), что примерно эквивалентно базовым лимитам $12 за 5 часов, $30 в неделю и $60 в месяц; лимиты для отдельных моделей могут отличаться (фактическое количество запросов зависит от модели и использования).", "zen.api.error.rateLimitExceeded": "Превышен лимит запросов. Пожалуйста, попробуйте позже.", "zen.api.error.modelNotSupported": "Модель {{model}} не поддерживается", diff --git a/packages/console/app/src/i18n/th.ts b/packages/console/app/src/i18n/th.ts index 1302a3943..5821a67cc 100644 --- a/packages/console/app/src/i18n/th.ts +++ b/packages/console/app/src/i18n/th.ts @@ -366,7 +366,7 @@ export const dict = { "go.faq.q9": "ความแตกต่างระหว่างโมเดลฟรีและ Go คืออะไร?", "go.faq.a9": - "โมเดลฟรีประกอบด้วย Big Pickle และโมเดลโปรโมชันที่มีให้บริการในขณะนั้น โดยมีโควตา 200 คำขอ/วัน Go นำเสนอชุดโมเดลที่คัดสรร พร้อมโควตาคำขอที่สูงกว่าซึ่งบังคับใช้ตามกรอบเวลาแบบต่อเนื่อง (5 ชั่วโมง, รายสัปดาห์ และรายเดือน) เทียบเท่าประมาณ $12 ต่อ 5 ชั่วโมง, $30 ต่อสัปดาห์ และ $60 ต่อเดือน (จำนวนคำขอจริงแตกต่างกันไปตามโมเดลและการใช้งาน)", + "โมเดลฟรีประกอบด้วย Big Pickle และโมเดลโปรโมชันที่มีให้บริการในขณะนั้น โดยมีโควตา 200 คำขอ/วัน Go นำเสนอชุดโมเดลที่คัดสรร พร้อมโควตาคำขอที่สูงกว่าซึ่งบังคับใช้ตามกรอบเวลาแบบต่อเนื่อง (5 ชั่วโมง, รายสัปดาห์ และรายเดือน) เทียบเท่าโควตาพื้นฐานประมาณ $12 ต่อ 5 ชั่วโมง, $30 ต่อสัปดาห์ และ $60 ต่อเดือน โดยโควตาเฉพาะอาจแตกต่างกันไปตามโมเดล (จำนวนคำขอจริงแตกต่างกันไปตามโมเดลและการใช้งาน)", "zen.api.error.rateLimitExceeded": "เกินขีดจำกัดอัตราการใช้งาน กรุณาลองใหม่ในภายหลัง", "zen.api.error.modelNotSupported": "ไม่รองรับโมเดล {{model}}", diff --git a/packages/console/app/src/i18n/tr.ts b/packages/console/app/src/i18n/tr.ts index a78376c8b..479c67e8c 100644 --- a/packages/console/app/src/i18n/tr.ts +++ b/packages/console/app/src/i18n/tr.ts @@ -372,7 +372,7 @@ export const dict = { "go.faq.q9": "Ücretsiz modeller ve Go arasındaki fark nedir?", "go.faq.a9": - "Ücretsiz modeller, günlük 200 istek kotasıyla Big Pickle'ı ve o sırada mevcut olan promosyonel modelleri içerir. Go ise kayan zaman aralıklarında (5 saatlik, haftalık ve aylık) uygulanan daha yüksek istek kotalarıyla özenle seçilmiş model seçenekleri sunar. Bu kotalar kabaca her 5 saatte 12$, haftada 30$ ve ayda 60$ değerine eşdeğerdir (gerçek istek sayıları modele ve kullanıma göre değişir).", + "Ücretsiz modeller, günlük 200 istek kotasıyla Big Pickle'ı ve o sırada mevcut olan promosyonel modelleri içerir. Go ise kayan zaman aralıklarında (5 saatlik, haftalık ve aylık) uygulanan daha yüksek istek kotalarıyla özenle seçilmiş model seçenekleri sunar. Bu kotalar kabaca her 5 saatte 12$, haftada 30$ ve ayda 60$ değerindeki temel kullanım haklarına eşdeğerdir; modele özgü kullanım hakları farklılık gösterebilir (gerçek istek sayıları modele ve kullanıma göre değişir).", "zen.api.error.rateLimitExceeded": "İstek limiti aşıldı. Lütfen daha sonra tekrar deneyin.", "zen.api.error.modelNotSupported": "{{model}} modeli desteklenmiyor", diff --git a/packages/console/app/src/i18n/uk.ts b/packages/console/app/src/i18n/uk.ts index eaa3c6311..843a35a0e 100644 --- a/packages/console/app/src/i18n/uk.ts +++ b/packages/console/app/src/i18n/uk.ts @@ -368,7 +368,7 @@ export const dict = { "go.faq.q9": "Яка різниця між безкоштовними моделями та Go?", "go.faq.a9": - "Безкоштовні моделі включають Big Pickle та доступні на той момент акційні моделі з квотою 200 запитів/день. Go пропонує добірку моделей із вищими квотами запитів, що застосовуються протягом ковзних періодів (5 годин, тижня та місяця), приблизно еквівалентними $12 за 5 годин, $30 на тиждень і $60 на місяць (фактична кількість запитів залежить від моделі та використання).", + "Безкоштовні моделі включають Big Pickle та доступні на той момент акційні моделі з квотою 200 запитів/день. Go пропонує добірку моделей із вищими квотами запитів, що застосовуються протягом ковзних періодів (5 годин, тижня та місяця), приблизно еквівалентними базовим лімітам $12 за 5 годин, $30 на тиждень і $60 на місяць; ліміти для окремих моделей можуть відрізнятися (фактична кількість запитів залежить від моделі та використання).", "zen.api.error.rateLimitExceeded": "Перевищено ліміт запитів. Спробуйте пізніше.", "zen.api.error.modelNotSupported": "Модель {{model}} не підтримується", diff --git a/packages/console/app/src/i18n/zh.ts b/packages/console/app/src/i18n/zh.ts index 12f161238..1b5dd50e1 100644 --- a/packages/console/app/src/i18n/zh.ts +++ b/packages/console/app/src/i18n/zh.ts @@ -348,7 +348,7 @@ export const dict = { "go.faq.q9": "免费模型和 Go 之间的区别是什么?", "go.faq.a9": - "免费模型包含 Big Pickle 加上当时可用的促销模型,每天有 200 次请求的配额。Go 提供精选模型阵容,并在滚动窗口(5 小时、每周和每月)内执行更高的请求配额,大致相当于每 5 小时 $12、每周 $30 和每月 $60(实际请求计数因模型和使用情况而异)。", + "免费模型包含 Big Pickle 加上当时可用的促销模型,每天有 200 次请求的配额。Go 提供精选模型阵容,并在滚动窗口(5 小时、每周和每月)内执行更高的请求配额,大致相当于每 5 小时 $12、每周 $30 和每月 $60 的基础额度;具体额度可能因模型而异(实际请求计数因模型和使用情况而异)。", "zen.api.error.rateLimitExceeded": "超出速率限制。请稍后重试。", "zen.api.error.modelNotSupported": "不支持模型 {{model}}", diff --git a/packages/console/app/src/i18n/zht.ts b/packages/console/app/src/i18n/zht.ts index 149fbf7c2..6f5d12317 100644 --- a/packages/console/app/src/i18n/zht.ts +++ b/packages/console/app/src/i18n/zht.ts @@ -348,7 +348,7 @@ export const dict = { "go.faq.q9": "免費模型與 Go 有什麼區別?", "go.faq.a9": - "免費模型包括 Big Pickle 以及當時可用的促銷模型,配額為 200 次請求/天。Go 提供精選模型陣容,並在滾動視窗(5 小時、每週和每月)內提供更高的請求配額,大約相當於每 5 小時 $12、每週 $30 和每月 $60(實際請求數因模型和使用情況而異)。", + "免費模型包括 Big Pickle 以及當時可用的促銷模型,配額為 200 次請求/天。Go 提供精選模型陣容,並在滾動視窗(5 小時、每週和每月)內提供更高的請求配額,大約相當於每 5 小時 $12、每週 $30 和每月 $60 的基礎額度;具體額度可能因模型而異(實際請求數因模型和使用情況而異)。", "zen.api.error.rateLimitExceeded": "超出頻率限制。請稍後再試。", "zen.api.error.modelNotSupported": "不支援模型 {{model}}", diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index 72fc71a3b..3704e9634 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -49,6 +49,7 @@ const models = [ { name: "DeepSeek V4 Flash", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Hy4 preview", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, { name: "Hy3", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, + { name: "Omen Alpha", training: "go.faq.a5.notUsed", retention: "go.faq.a5.retention0" }, ] as const export default function Home() { diff --git a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx index 35cdd500c..868961777 100644 --- a/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx +++ b/packages/console/app/src/routes/workspace/[id]/go/lite-section.tsx @@ -666,6 +666,7 @@ export function LiteSection(props: { lite: LiteSubscription | undefined }) {
    • MiMo-V2.5-Pro
    • Hy4 preview
    • Hy3
    • +
    • Omen Alpha

    {i18n.t("workspace.lite.promo.footer")}

    diff --git a/packages/web/src/content/docs/ar/go.mdx b/packages/web/src/content/docs/ar/go.mdx index 796e1dfa9..2a432993f 100644 --- a/packages/web/src/content/docs/ar/go.mdx +++ b/packages/web/src/content/docs/ar/go.mdx @@ -75,6 +75,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** قد تتغير قائمة النماذج مع استمرارنا في اختبار نماذج جديدة وإضافتها. @@ -94,12 +95,14 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر ## حدود الاستخدام -يتضمن OpenCode Go الحدود التالية: +يتضمن OpenCode Go الحدود الأساسية التالية: - **حد 5 ساعات** — استخدام بقيمة $12 - **الحد الأسبوعي** — استخدام بقيمة $30 - **الحد الشهري** — استخدام بقيمة $60 +يختلف الحد الفعلي حسب النموذج؛ راجع الجدول أدناه. + تُحدَّد الحدود بالقيمة بالدولار. وهذا يعني أن عدد طلباتك الفعلي يعتمد على النموذج الذي تستخدمه. تتيح النماذج الأقل تكلفة مثل MiMo-V2.5 عددًا أكبر من الطلبات، بينما تتيح النماذج الأعلى تكلفة مثل GLM-5.2 عددًا أقل. يوضح الجدول أدناه عددًا تقديريًا للطلبات بناءً على أنماط استخدام Go المعتادة: @@ -132,8 +135,9 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -تستند التقديرات إلى أنماط الطلبات المرصودة: +تستخدم التقديرات أعداد tokens التالية لكل طلب؛ ويختلف الاستخدام الفعلي. - Grok 4.6 — ‏390 input، و32,500 cached، و120 output tokens لكل طلب - GLM-5.3-Flash — ‏1,000 input، و55,000 cached، و200 output tokens لكل طلب @@ -158,6 +162,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر - Hy3 — ‏830 input، و71,500 cached، و295 output tokens لكل طلب - MiMo-V2.5 — ‏830 input، و71,500 cached، و295 output tokens لكل طلب - MiMo-V2.5-Pro — ‏790 input، و86,000 cached، و305 output tokens لكل طلب +- Omen Alpha — ‏300 input، و40,000 cached، و100 output tokens لكل طلب تستند التقديرات أيضًا إلى الأسعار التالية لكل 1M tokens والاستخدام الشهري المتضمن مع كل نموذج: @@ -197,6 +202,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ساعات Peak هي 01:00-04:00 و06:00-10:00 UTC من الاثنين إلى الجمعة؛ وجميع الساعات الأخرى، بما في ذلك عطلات نهاية الأسبوع، Off-Peak. [اعرف المزيد](https://api-docs.deepseek.com/quick_start/pricing/). @@ -220,7 +226,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر ### لماذا يكون الاستخدام أقل لبعض النماذج -مع Go، تدفع $10 شهريًا، ونهدف إلى منحك استخدامًا بقيمة تعادل 6 أضعاف هذا المبلغ. +مع Go، تدفع $10 شهريًا، ونهدف لمعظم النماذج إلى منحك استخدامًا بقيمة تعادل 6 أضعاف هذا المبلغ. نحقق ذلك لمعظم النماذج من خلال الخصومات على الكميات الكبيرة وسعة GPU المحجوزة. ثم ننقل هذه الوفورات إليك من خلال معامل مضاعفة قدره 6. @@ -263,6 +269,7 @@ OpenCode Go هو اشتراك منخفض التكلفة بقيمة **$10/شهر | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | يستخدم [model id](/docs/config/#models) في إعدادات OpenCode لديك التنسيق `opencode-go/`. على سبيل المثال، بالنسبة إلى Kimi K3، ستستخدم `opencode-go/kimi-k3` في إعداداتك. @@ -308,6 +315,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | غير مستخدَمة | 0 أيام | | Hy4 preview | غير مستخدَمة | 0 أيام | | Hy3 | غير مستخدَمة | 0 أيام | +| Omen Alpha | غير مستخدَمة | 0 أيام | - **Grok 4.6:** تعطّل ZDR ميزات API مهمة تعتمد على البيانات المخزنة، بما في ذلك Responses API ذات الحالة، وFiles and Collections، وBatch API. [اعرف المزيد](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** تُنشأ سجلات مراقبة إساءة الاستخدام لكل استخدام لميزات API، ويُحتفظ بها لمدة تصل إلى 30 يومًا. [اعرف المزيد](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/bs/go.mdx b/packages/web/src/content/docs/bs/go.mdx index c1de47ba9..1baa4bc86 100644 --- a/packages/web/src/content/docs/bs/go.mdx +++ b/packages/web/src/content/docs/bs/go.mdx @@ -85,6 +85,7 @@ Trenutna lista modela uključuje: - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** Lista modela se može mijenjati dok testiramo i dodajemo nove. @@ -104,12 +105,14 @@ Kako vaš račun ne bi bio označen, pobrinite se da alat koji koristite ## Ograničenja upotrebe -OpenCode Go uključuje sljedeća ograničenja: +OpenCode Go uključuje sljedeća osnovna ograničenja: - **Ograničenje od 5 sati** — $12 potrošnje - **Sedmično ograničenje** — $30 potrošnje - **Mjesečno ograničenje** — $60 potrošnje +Efektivna potrošnja razlikuje se po modelu; pogledajte tabelu ispod. + Ograničenja su definisana u dolarskoj vrijednosti. To znači da vaš stvarni broj zahtjeva zavisi od modela koji koristite. Jeftiniji modeli poput MiMo-V2.5 omogućavaju više zahtjeva, dok skuplji modeli poput GLM-5.2 omogućavaju manje. Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca korištenja Go pretplate: @@ -142,8 +145,9 @@ Tabela ispod pruža procijenjeni broj zahtjeva na osnovu tipičnih obrazaca kori | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -Procjene se zasnivaju na zapaženim obrascima zahtjeva: +Procjene koriste sljedeći broj tokena po zahtjevu; stvarna potrošnja varira. - Grok 4.6 — 390 ulaznih, 32,500 keširanih, 120 izlaznih tokena po zahtjevu - GLM-5.3-Flash — 1,000 ulaznih (input), 55,000 keširanih, 200 izlaznih (output) tokena po zahtjevu @@ -168,6 +172,7 @@ Procjene se zasnivaju na zapaženim obrascima zahtjeva: - Hy3 — 830 ulaznih, 71,500 keširanih, 295 izlaznih tokena po zahtjevu - MiMo-V2.5 — 830 ulaznih, 71,500 keširanih, 295 izlaznih tokena po zahtjevu - MiMo-V2.5-Pro — 790 ulaznih, 86,000 keširanih, 305 izlaznih tokena po zahtjevu +- Omen Alpha — 300 ulaznih, 40.000 keširanih, 100 izlaznih tokena po zahtjevu Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj potrošnji uključenoj uz svaki model: @@ -207,6 +212,7 @@ Procjene se također zasnivaju na sljedećim cijenama po 1M tokena i mjesečnoj | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak sati su 01:00-04:00 i 06:00-10:00 UTC od ponedjeljka do petka; svi ostali sati, uključujući vikende, su Off-Peak. [Saznajte više](https://api-docs.deepseek.com/quick_start/pricing/). @@ -232,7 +238,7 @@ nakon što dostignete ograničenja upotrebe umjesto blokiranja zahtjeva. ### Zašto neki modeli imaju manju uključenu potrošnju -Uz Go plaćate $10 mjesečno, a cilj nam je omogućiti vam potrošnju šest puta veću od tog iznosa. +Uz Go plaćate $10 mjesečno, a za većinu modela cilj nam je omogućiti vam potrošnju šest puta veću od tog iznosa. Za većinu modela to postižemo količinskim popustima i rezervisanim GPU kapacitetom. Tu uštedu zatim prenosimo na vas primjenom faktora šest. @@ -275,6 +281,7 @@ Također možete pristupiti Go modelima putem sljedećih API endpointa. | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Model id](/docs/config/#models) u vašoj OpenCode konfiguraciji koristi format `opencode-go/`. Na primjer, za Kimi K3, koristili biste @@ -322,6 +329,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | Ne koristi se | 0 dana | | Hy4 preview | Ne koristi se | 0 dana | | Hy3 | Ne koristi se | 0 dana | +| Omen Alpha | Ne koristi se | 0 dana | - **Grok 4.6:** ZDR onemogućava važne API funkcije koje zavise od pohranjenih podataka, uključujući Responses API s očuvanjem stanja, Files and Collections i Batch API. [Saznajte više](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Zapisi o nadzoru zloupotrebe generišu se za svako korištenje API funkcija i čuvaju do 30 dana. [Saznajte više](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/da/go.mdx b/packages/web/src/content/docs/da/go.mdx index 864b56ef1..8af3fdbab 100644 --- a/packages/web/src/content/docs/da/go.mdx +++ b/packages/web/src/content/docs/da/go.mdx @@ -85,6 +85,7 @@ Den nuværende liste over modeller inkluderer: - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** Listen over modeller kan ændre sig, efterhånden som vi tester og tilføjer nye. @@ -104,12 +105,14 @@ For at sikre, at din konto ikke bliver markeret, skal du sørge for, at det vær ## Forbrugsgrænser -OpenCode Go inkluderer følgende grænser: +OpenCode Go inkluderer følgende basisgrænser: - **5-timers grænse** — forbrug for $12 - **Ugentlig grænse** — forbrug for $30 - **Månedlig grænse** — forbrug for $60 +Det effektive forbrug varierer efter model; se tabellen nedenfor. + Grænserne er defineret i dollarværdi. Det betyder, at dit faktiske antal anmodninger afhænger af den model, du bruger. Billigere modeller som MiMo-V2.5 tillader flere anmodninger, mens dyrere modeller som GLM-5.2 tillader færre. Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-forbrugsmønstre: @@ -142,8 +145,9 @@ Tabellen nedenfor giver et estimeret antal anmodninger baseret på typiske Go-fo | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -Estimaterne er baseret på observerede anmodningsmønstre: +Estimaterne bruger følgende antal tokens pr. anmodning; det faktiske forbrug varierer. - Grok 4.6 — 390 input, 32.500 cachelagrede, 120 output-tokens pr. anmodning - GLM-5.3-Flash — 1.000 input, 55.000 cachelagrede, 200 output-tokens pr. anmodning @@ -168,6 +172,7 @@ Estimaterne er baseret på observerede anmodningsmønstre: - Hy3 — 830 input, 71.500 cachelagrede, 295 output-tokens pr. anmodning - MiMo-V2.5 — 830 input, 71.500 cachelagrede, 295 output-tokens pr. anmodning - MiMo-V2.5-Pro — 790 input, 86.000 cachelagrede, 305 output-tokens pr. anmodning +- Omen Alpha — 300 input-, 40.000 cachede, 100 output-tokens pr. anmodning Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlige forbrug, der er inkluderet med hver model: @@ -207,6 +212,7 @@ Estimaterne er også baseret på følgende priser pr. 1M tokens og det månedlig | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tiderne er 01:00-04:00 og 06:00-10:00 UTC fra mandag til fredag; alle andre tider, herunder weekender, er Off-Peak. [Læs mere](https://api-docs.deepseek.com/quick_start/pricing/). @@ -232,7 +238,7 @@ når du har nået dine forbrugsgrænser, i stedet for at blokere anmodninger. ### Hvorfor nogle modeller har lavere forbrug -Med Go betaler du $10/måned, og vi sigter mod at give dig 6x så meget i forbrug. +Med Go betaler du $10/måned, og for de fleste modeller sigter vi mod at give dig 6x så meget i forbrug. For de fleste modeller gør vi dette muligt gennem mængderabatter og reserveret GPU-kapacitet. Vi giver dig derefter disse besparelser videre gennem 6x-multiplikatoren. @@ -275,6 +281,7 @@ Du kan også få adgang til Go-modeller gennem følgende API-endpoints. | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Dit [model id](/docs/config/#models) i din OpenCode config bruger formatet `opencode-go/`. For eksempel for Kimi K3, vil du @@ -322,6 +329,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | Ikke brugt | 0 dage | | Hy4 preview | Ikke brugt | 0 dage | | Hy3 | Ikke brugt | 0 dage | +| Omen Alpha | Ikke brugt | 0 dage | - **Grok 4.6:** ZDR deaktiverer vigtige API-funktioner, der afhænger af lagrede data, herunder den tilstandsbevarende Responses API, Files and Collections og Batch API. [Læs mere](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logfiler til overvågning af misbrug genereres ved al brug af API-funktioner og opbevares i op til 30 dage. [Læs mere](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/de/go.mdx b/packages/web/src/content/docs/de/go.mdx index a2c33f8cf..066bfb366 100644 --- a/packages/web/src/content/docs/de/go.mdx +++ b/packages/web/src/content/docs/de/go.mdx @@ -77,6 +77,7 @@ Die aktuelle Liste der Modelle umfasst: - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** Die Liste der Modelle kann sich ändern, während wir neue testen und hinzufügen. @@ -96,12 +97,14 @@ Damit dein Konto nicht markiert wird, stelle sicher, dass das von dir verwendete ## Nutzungslimits -OpenCode Go beinhaltet die folgenden Limits: +OpenCode Go beinhaltet die folgenden Basislimits: - **5-Stunden-Limit** — 12 $ Nutzung - **Wöchentliches Limit** — 30 $ Nutzung - **Monatliches Limit** — 60 $ Nutzung +Das effektive Kontingent variiert je nach Modell; siehe die Tabelle unten. + Limits sind in Dollarwerten definiert. Das bedeutet, dass die tatsächliche Anzahl deiner Anfragen von dem von dir genutzten Modell abhängt. Günstigere Modelle wie MiMo-V2.5 erlauben mehr Anfragen, während teurere Modelle wie GLM-5.2 weniger erlauben. Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf typischen Go-Nutzungsmustern: @@ -134,8 +137,9 @@ Die folgende Tabelle zeigt eine geschätzte Anzahl von Anfragen basierend auf ty | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -Die Schätzungen basieren auf beobachteten Anfragemustern: +Die Schätzungen verwenden die folgenden Token-Anzahlen pro Anfrage; die tatsächliche Nutzung variiert. - Grok 4.6 — 390 Input-, 32.500 Cached-, 120 Output-Tokens pro Anfrage - GLM-5.3-Flash — 1.000 Input-, 55.000 Cached-, 200 Output-Tokens pro Anfrage @@ -160,6 +164,7 @@ Die Schätzungen basieren auf beobachteten Anfragemustern: - Hy3 — 830 Input-, 71.500 Cached-, 295 Output-Tokens pro Anfrage - MiMo-V2.5 — 830 Input-, 71.500 Cached-, 295 Output-Tokens pro Anfrage - MiMo-V2.5-Pro — 790 Input-, 86.000 Cached-, 305 Output-Tokens pro Anfrage +- Omen Alpha — 300 Input-, 40.000 Cached-, 100 Output-Tokens pro Anfrage Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und der monatlichen Nutzung, die bei jedem Modell enthalten ist: @@ -199,6 +204,7 @@ Die Schätzungen basieren außerdem auf den folgenden Preisen pro 1M Tokens und | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Die Peak-Zeiten sind montags bis freitags von 01:00-04:00 und 06:00-10:00 UTC; alle anderen Zeiten, einschließlich der Wochenenden, sind Off-Peak. [Mehr erfahren](https://api-docs.deepseek.com/quick_start/pricing/). @@ -222,7 +228,7 @@ Wenn du auch Guthaben auf deinem Zen-Konto hast, kannst du in der Console die Op ### Warum einige Modelle weniger Nutzung bieten -Mit Go zahlst du $10/Monat, und unser Ziel ist, dir dafür das Sechsfache dieses Betrags als Nutzungsguthaben zu bieten. +Mit Go zahlst du $10/Monat, und bei den meisten Modellen ist unser Ziel, dir dafür das Sechsfache dieses Betrags als Nutzungsguthaben zu bieten. Bei den meisten Modellen ermöglichen wir dies durch Mengenrabatte und reservierte GPU-Kapazität. Diese Ersparnisse geben wir dann über den 6x-Multiplikator an dich weiter. @@ -265,6 +271,7 @@ Du kannst auf die Go-Modelle auch über die folgenden API-Endpunkte zugreifen. | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Die [Modell-ID](/docs/config/#models) in deiner OpenCode Config verwendet das Format `opencode-go/`. Für Kimi K3 würdest du beispielsweise `opencode-go/kimi-k3` in deiner Config verwenden. @@ -310,6 +317,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | Nicht verwendet | 0 Tage | | Hy4 preview | Nicht verwendet | 0 Tage | | Hy3 | Nicht verwendet | 0 Tage | +| Omen Alpha | Nicht verwendet | 0 Tage | - **Grok 4.6:** ZDR deaktiviert wichtige API-Funktionen, die von gespeicherten Daten abhängen, einschließlich der zustandsbehafteten Responses API, Files and Collections und der Batch API. [Mehr erfahren](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Für die Nutzung aller API-Funktionen werden Protokolle zur Missbrauchsüberwachung erstellt und bis zu 30 Tage lang aufbewahrt. [Mehr erfahren](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 49de80c2f..50e19568b 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -85,6 +85,7 @@ La lista actual de modelos incluye: - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** La lista de modelos puede cambiar a medida que probamos y agregamos otros nuevos. @@ -104,12 +105,14 @@ Para evitar que tu cuenta sea marcada, asegúrate de que la herramienta que usas ## Límites de uso -OpenCode Go incluye los siguientes límites: +OpenCode Go incluye los siguientes límites base: - **Límite de 5 horas** — $12 de uso - **Límite semanal** — $30 de uso - **Límite mensual** — $60 de uso +La asignación efectiva varía según el modelo; consulta la tabla siguiente. + Los límites se definen en valor en dólares. Esto significa que tu cantidad real de peticiones depende del modelo que uses. Los modelos más económicos como MiMo-V2.5 permiten más peticiones, mientras que los modelos de mayor costo como GLM-5.2 permiten menos. La siguiente tabla proporciona una cantidad estimada de peticiones basada en los patrones típicos de uso de Go: @@ -142,8 +145,9 @@ La siguiente tabla proporciona una cantidad estimada de peticiones basada en los | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -Las estimaciones se basan en los patrones de peticiones observados: +Las estimaciones usan las siguientes cantidades de tokens por petición; el uso real varía. - Grok 4.6 — 390 tokens de entrada, 32,500 en caché, 120 tokens de salida por petición - GLM-5.3-Flash — 1,000 tokens de entrada, 55,000 en caché, 200 tokens de salida por petición @@ -168,6 +172,7 @@ Las estimaciones se basan en los patrones de peticiones observados: - Hy3 — 830 tokens de entrada, 71,500 en caché, 295 tokens de salida por petición - MiMo-V2.5 — 830 tokens de entrada, 71,500 en caché, 295 tokens de salida por petición - MiMo-V2.5-Pro — 790 tokens de entrada, 86,000 en caché, 305 tokens de salida por petición +- Omen Alpha — 300 tokens de entrada, 40,000 en caché, 100 tokens de salida por petición Las estimaciones también se basan en los siguientes precios por 1M tokens y en el uso mensual incluido con cada modelo: @@ -207,6 +212,7 @@ Las estimaciones también se basan en los siguientes precios por 1M tokens y en | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC, de lunes a viernes; todas las demás horas, incluidos los fines de semana, son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). @@ -232,7 +238,7 @@ después de que hayas alcanzado tus límites de uso en lugar de bloquear las pet ### Por qué algunos modelos incluyen menos uso -Con Go, pagas $10/mes y nuestro objetivo es ofrecerte un uso equivalente a 6 veces esa cantidad. +Con Go, pagas $10/mes y, para la mayoría de los modelos, nuestro objetivo es ofrecerte un uso equivalente a 6 veces esa cantidad. Para la mayoría de los modelos, lo conseguimos mediante descuentos por volumen y capacidad de GPU reservada. Ese ahorro se traduce en un multiplicador de 6x para ti. @@ -275,6 +281,7 @@ También puedes acceder a los modelos de Go a través de los siguientes endpoint | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | El [ID del modelo](/docs/config/#models) en tu configuración de OpenCode usa el formato `opencode-go/`. Por ejemplo, para Kimi K3, usarías @@ -322,6 +329,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | No utilizado | 0 días | | Hy4 preview | No utilizado | 0 días | | Hy3 | No utilizado | 0 días | +| Omen Alpha | No utilizado | 0 días | - **Grok 4.6:** ZDR deshabilita funciones importantes de la API que dependen de datos almacenados, incluidas la Responses API con estado, Files and Collections y la Batch API. [Más información](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Se generan registros de supervisión de abusos para todo el uso de funciones de la API y se conservan durante un máximo de 30 días. [Más información](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/fr/go.mdx b/packages/web/src/content/docs/fr/go.mdx index 6d3e36ed0..243bb3bc9 100644 --- a/packages/web/src/content/docs/fr/go.mdx +++ b/packages/web/src/content/docs/fr/go.mdx @@ -75,6 +75,7 @@ La liste actuelle des modèles comprend : - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** La liste des modèles peut changer au fur et à mesure que nous en testons et en ajoutons de nouveaux. @@ -94,12 +95,14 @@ Pour éviter que votre compte ne soit signalé, assurez-vous que l'outil que vou ## Limites d'utilisation -OpenCode Go inclut les limites suivantes : +OpenCode Go inclut les limites de base suivantes : - **Limite de 5 heures** — 12 $ d'utilisation - **Limite hebdomadaire** — 30 $ d'utilisation - **Limite mensuelle** — 60 $ d'utilisation +L'allocation effective varie selon le modèle ; consultez le tableau ci-dessous. + Les limites sont définies en valeur monétaire (dollars). Cela signifie que votre nombre réel de requêtes dépend du modèle que vous utilisez. Les modèles moins chers comme MiMo-V2.5 permettent plus de requêtes, tandis que les modèles plus coûteux comme GLM-5.2 en permettent moins. Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur des modèles d'utilisation typiques de Go : @@ -132,8 +135,9 @@ Le tableau ci-dessous fournit une estimation du nombre de requêtes basée sur d | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -Les estimations sont basées sur les schémas de requêtes observés : +Les estimations utilisent les nombres de tokens suivants par requête ; l'utilisation réelle varie. - Grok 4.6 — 390 tokens en entrée, 32,500 en cache, 120 tokens en sortie par requête - GLM-5.3-Flash — 1,000 tokens en entrée, 55,000 en cache, 200 tokens en sortie par requête @@ -158,6 +162,7 @@ Les estimations sont basées sur les schémas de requêtes observés : - Hy3 — 830 tokens en entrée, 71,500 en cache, 295 tokens en sortie par requête - MiMo-V2.5 — 830 tokens en entrée, 71,500 en cache, 295 tokens en sortie par requête - MiMo-V2.5-Pro — 790 tokens en entrée, 86,000 en cache, 305 tokens en sortie par requête +- Omen Alpha — 300 tokens en entrée, 40 000 en cache, 100 tokens en sortie par requête Les estimations sont également basées sur les prix suivants par 1M tokens et sur l'utilisation mensuelle incluse avec chaque modèle : @@ -197,6 +202,7 @@ Les estimations sont également basées sur les prix suivants par 1M tokens et s | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Les heures Peak sont 01:00-04:00 et 06:00-10:00 UTC, du lundi au vendredi ; toutes les autres heures, y compris le week-end, sont Off-Peak. [En savoir plus](https://api-docs.deepseek.com/quick_start/pricing/). @@ -220,7 +226,7 @@ Si vous avez également des crédits sur votre solde Zen, vous pouvez activer l' ### Pourquoi certains modèles offrent un volume d'utilisation inférieur -Avec Go, vous payez 10 $/mois et nous cherchons à vous offrir un volume d'utilisation équivalant à 6 fois ce montant. +Avec Go, vous payez 10 $/mois et, pour la plupart des modèles, nous cherchons à vous offrir un volume d'utilisation équivalant à 6 fois ce montant. Pour la plupart des modèles, nous y parvenons grâce à des remises sur volume et à une capacité GPU réservée. Nous vous faisons ensuite bénéficier de ces économies grâce à un coefficient multiplicateur de 6. @@ -263,6 +269,7 @@ Vous pouvez également accéder aux modèles Go via les points de terminaison d' | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | L'[ID de modèle](/docs/config/#models) dans votre configuration OpenCode utilise le format `opencode-go/`. Par exemple, pour Kimi K3, vous utiliseriez `opencode-go/kimi-k3` dans votre configuration. @@ -308,6 +315,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | Non utilisé | 0 jour | | Hy4 preview | Non utilisé | 0 jour | | Hy3 | Non utilisé | 0 jour | +| Omen Alpha | Non utilisé | 0 jour | - **Grok 4.6:** Le ZDR désactive d’importantes fonctionnalités API qui dépendent des données stockées, notamment Responses API avec état, Files and Collections et Batch API. [En savoir plus](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Des journaux de surveillance des abus sont générés pour toute utilisation des fonctionnalités API et conservés pendant un maximum de 30 jours. [En savoir plus](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 6ec69aa04..31c646e3d 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -85,6 +85,7 @@ The current list of models includes: - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** The list of models may change as we test and add new ones. @@ -105,12 +106,14 @@ To ensure your account does not get flagged, make sure the tool you're using ## Usage limits -OpenCode Go includes the following limits: +OpenCode Go includes the following base limits: - **5 hour limit** — $12 of usage - **Weekly limit** — $30 of usage - **Monthly limit** — $60 of usage +Effective allowance varies by model; see the table below. + Limits are defined in dollar value. This means your actual request count depends on the model you use. Cheaper models like MiMo-V2.5 allow for more requests, while higher-cost models like GLM-5.2 allow for fewer. The table below provides an estimated request count based on typical Go usage patterns: @@ -143,8 +146,9 @@ The table below provides an estimated request count based on typical Go usage pa | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -The estimates are based on observed request patterns: +The estimates use the following token counts per request; actual usage varies. - Grok 4.6 — 390 input, 32,500 cached, 120 output tokens per request - GLM-5.3-Flash — 1,000 input, 55,000 cached, 200 output tokens per request @@ -169,6 +173,7 @@ The estimates are based on observed request patterns: - Qwen3.6 Plus — 500 input, 57,000 cached, 190 output tokens per request - Hy4 preview — 830 input, 71,500 cached, 295 output tokens per request - Hy3 — 830 input, 71,500 cached, 295 output tokens per request +- Omen Alpha — 300 input, 40,000 cached, 100 output tokens per request The estimates are also based on the following prices per 1M tokens and the monthly usage included with each model: @@ -208,6 +213,7 @@ The estimates are also based on the following prices per 1M tokens and the month | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak hours are 01:00-04:00 and 06:00-10:00 UTC, Monday through Friday; all other hours, including weekends, are Off-Peak. [Learn more](https://api-docs.deepseek.com/quick_start/pricing/). @@ -233,7 +239,7 @@ after you've reached your usage limits instead of blocking requests. ### Why some models have lower usage -With Go, you pay $10/month and we aim to give you 6x that in usage. +With Go, you pay $10/month and, for most models, we aim to give you 6x that in usage. For most models, we make this work through bulk discounts and reserved GPU capacity. We then pass those savings on to you through the 6x multiplier. @@ -276,6 +282,7 @@ You can also access Go models through the following API endpoints. | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | The [model id](/docs/config/#models) in your OpenCode config uses the format `opencode-go/`. For example, for Kimi K3, you would @@ -323,6 +330,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | Not used | 0 days\* | | Hy4 preview | Not used | 0 days | | Hy3 | Not used | 0 days | +| Omen Alpha | Not used | 0 days | - **Grok 4.6:** ZDR disables important API features that depend on stored data, including the stateful Responses API, Files and Collections, and the Batch API. [Learn more](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Abuse monitoring logs are generated for all API feature usage and retained for up to 30 days. [Learn more](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/it/go.mdx b/packages/web/src/content/docs/it/go.mdx index 7c6dfeb78..1b3f1fac4 100644 --- a/packages/web/src/content/docs/it/go.mdx +++ b/packages/web/src/content/docs/it/go.mdx @@ -83,6 +83,7 @@ L'elenco attuale dei modelli include: - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** L'elenco dei modelli potrebbe cambiare man mano che ne testiamo e aggiungiamo di nuovi. @@ -102,12 +103,14 @@ Per evitare che il tuo account venga segnalato, assicurati che lo strumento che ## Limiti di utilizzo -OpenCode Go include i seguenti limiti: +OpenCode Go include i seguenti limiti di base: - **Limite di 5 ore** — 12 $ di utilizzo - **Limite settimanale** — 30 $ di utilizzo - **Limite mensile** — 60 $ di utilizzo +La quota effettiva varia in base al modello; consulta la tabella seguente. + I limiti sono definiti in valore in dollari. Questo significa che il conteggio effettivo delle richieste dipende dal modello utilizzato. Modelli più economici come MiMo-V2.5 consentono più richieste, mentre modelli più costosi come GLM-5.2 ne consentono di meno. La tabella seguente fornisce una stima del conteggio delle richieste in base a pattern di utilizzo tipici di Go: @@ -140,8 +143,9 @@ La tabella seguente fornisce una stima del conteggio delle richieste in base a p | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -Le stime si basano sui pattern di richieste osservati: +Le stime utilizzano i seguenti conteggi di token per richiesta; l'utilizzo effettivo varia. - Grok 4.6 — 390 di input, 32.500 in cache, 120 token di output per richiesta - GLM-5.3-Flash — 1.000 di input, 55.000 in cache, 200 token di output per richiesta @@ -166,6 +170,7 @@ Le stime si basano sui pattern di richieste osservati: - Hy3 — 830 di input, 71.500 in cache, 295 token di output per richiesta - MiMo-V2.5 — 830 di input, 71.500 in cache, 295 token di output per richiesta - MiMo-V2.5-Pro — 790 di input, 86.000 in cache, 305 token di output per richiesta +- Omen Alpha — 300 token di input, 40.000 token in cache, 100 token di output per richiesta Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensile incluso con ciascun modello: @@ -205,6 +210,7 @@ Le stime si basano anche sui seguenti prezzi per 1M token e sull'utilizzo mensil | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Gli orari Peak sono 01:00-04:00 e 06:00-10:00 UTC, dal lunedì al venerdì; tutti gli altri orari, inclusi i fine settimana, sono Off-Peak. [Scopri di più](https://api-docs.deepseek.com/quick_start/pricing/). @@ -230,7 +236,7 @@ dopo che avrai raggiunto i limiti di utilizzo invece di bloccare le richieste. ### Perché alcuni modelli hanno un utilizzo inferiore -Con Go, paghi $10/mese e puntiamo a offrirti un utilizzo pari a 6 volte tale importo. +Con Go, paghi $10/mese e, per la maggior parte dei modelli, puntiamo a offrirti un utilizzo pari a 6 volte tale importo. Per la maggior parte dei modelli, ci riusciamo grazie a sconti sui volumi e capacità GPU riservata. Ti facciamo quindi beneficiare di questi risparmi tramite il moltiplicatore 6x. @@ -273,6 +279,7 @@ Puoi anche accedere ai modelli Go tramite i seguenti endpoint API. | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | Il [model id](/docs/config/#models) nella tua OpenCode config utilizza il formato `opencode-go/`. Ad esempio, per Kimi K3, useresti @@ -320,6 +327,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | Non utilizzato | 0 giorni | | Hy4 preview | Non utilizzato | 0 giorni | | Hy3 | Non utilizzato | 0 giorni | +| Omen Alpha | Non utilizzato | 0 giorni | - **Grok 4.6:** ZDR disabilita importanti funzionalità API che dipendono dai dati archiviati, tra cui la Responses API con stato, Files and Collections e Batch API. [Scopri di più](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** I log di monitoraggio degli abusi vengono generati per l'utilizzo di tutte le funzionalità API e conservati per un massimo di 30 giorni. [Scopri di più](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/ja/go.mdx b/packages/web/src/content/docs/ja/go.mdx index a1d09ca2b..5d8015abc 100644 --- a/packages/web/src/content/docs/ja/go.mdx +++ b/packages/web/src/content/docs/ja/go.mdx @@ -75,6 +75,7 @@ OpenCode Goをサブスクライブできるのは、1つのワークスペー - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** 新しいモデルをテストして追加するにつれて、モデルのリストは変更される場合があります。 @@ -94,12 +95,14 @@ OpenCode Goは、[OpenCode](https://opencode.ai)や、同様の種類のリク ## 利用制限 -OpenCode Goには以下の制限が含まれています: +OpenCode Goには以下の基本制限が含まれています: - **5時間の制限** — 12ドル分の利用 - **週間の制限** — 30ドル分の利用 - **月間の制限** — 60ドル分の利用 +有効な利用枠はモデルによって異なります。下の表をご覧ください。 + 制限はドル単位で定義されています。つまり、実際のリクエスト数は使用するモデルによって異なります。MiMo-V2.5のような安価なモデルではより多くのリクエストが可能ですが、GLM-5.2のような高コストのモデルではリクエスト数が少なくなります。 以下の表は、一般的なGoの利用パターンに基づいた推定リクエスト数を示しています: @@ -132,8 +135,9 @@ OpenCode Goには以下の制限が含まれています: | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -推定値は、観測されたリクエストパターンに基づいています: +推定値には、リクエストあたり以下のトークン数を使用しています。実際の使用量は異なります。 - Grok 4.6 — リクエストあたり 入力 390トークン、キャッシュ 32,500トークン、出力 120トークン - GLM-5.3-Flash — リクエストあたり 入力 1,000トークン、キャッシュ 55,000トークン、出力 200トークン @@ -158,6 +162,7 @@ OpenCode Goには以下の制限が含まれています: - Hy3 — リクエストあたり 入力 830トークン、キャッシュ 71,500トークン、出力 295トークン - MiMo-V2.5 — リクエストあたり 入力 830トークン、キャッシュ 71,500トークン、出力 295トークン - MiMo-V2.5-Pro — リクエストあたり 入力 790トークン、キャッシュ 86,000トークン、出力 305トークン +- Omen Alpha — リクエストあたり 入力 300トークン、キャッシュ 40,000トークン、出力 100トークン 推定値は、100万トークンあたりの以下の価格と、各モデルに含まれる月間利用枠にも基づいています: @@ -197,6 +202,7 @@ OpenCode Goには以下の制限が含まれています: | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak時間は月曜日から金曜日の01:00-04:00と06:00-10:00 UTCで、週末を含むそれ以外の時間はすべてOff-Peakです。[詳しく見る](https://api-docs.deepseek.com/quick_start/pricing/)。 @@ -220,7 +226,7 @@ Zen残高にクレジットがある場合は、コンソールで**Use balance* ### 一部のモデルの利用枠が少ない理由 -Goでは月額$10を支払い、その6倍の利用枠を提供することを目指しています。 +Goでは月額$10を支払い、ほとんどのモデルでその6倍の利用枠を提供することを目指しています。 ほとんどのモデルでは、ボリュームディスカウントと予約済みのGPUキャパシティによってこれを実現しています。そして、その節約分を6倍の倍率で還元しています。 @@ -263,6 +269,7 @@ Goでは月額$10を支払い、その6倍の利用枠を提供することを | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode設定の[model id](/docs/config/#models)は、`opencode-go/`という形式を使用します。たとえば、Kimi K3の場合は、設定で`opencode-go/kimi-k3`を使用します。 @@ -308,6 +315,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | 使用なし | 0日 | | Hy4 preview | 使用なし | 0日 | | Hy3 | 使用なし | 0日 | +| Omen Alpha | 使用なし | 0日 | - **Grok 4.6:** ZDRでは、保存データに依存する重要なAPI機能(ステートフルなResponses API、Files and Collections、Batch APIなど)が無効になります。[詳しく見る](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 不正使用監視ログはすべてのAPI機能の使用時に生成され、最大30日間保持されます。[詳しく見る](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 diff --git a/packages/web/src/content/docs/ko/go.mdx b/packages/web/src/content/docs/ko/go.mdx index 7202b4caf..d213862df 100644 --- a/packages/web/src/content/docs/ko/go.mdx +++ b/packages/web/src/content/docs/ko/go.mdx @@ -75,6 +75,7 @@ workspace당 한 명의 멤버만 OpenCode Go를 구독할 수 있습니다. - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** 새로운 모델을 테스트하고 추가함에 따라 이 목록은 변경될 수 있습니다. @@ -94,12 +95,14 @@ OpenCode Go는 [OpenCode](https://opencode.ai) 및 유사한 유형의 요청을 ## 사용 한도 -OpenCode Go에는 다음과 같은 한도가 포함됩니다. +OpenCode Go에는 다음과 같은 기본 한도가 포함됩니다. - **5시간 한도** — 사용량 $12 - **주간 한도** — 사용량 $30 - **월간 한도** — 사용량 $60 +실제 적용되는 할당량은 모델마다 다릅니다. 아래 표를 참조하세요. + 한도는 달러 금액 기준으로 정의됩니다. 즉, 실제 요청 횟수는 사용하는 모델에 따라 달라집니다. MiMo-V2.5처럼 저렴한 모델은 더 많은 요청이 가능하고, GLM-5.2처럼 비용이 더 높은 모델은 더 적은 요청이 가능합니다. 아래 표는 일반적인 Go 사용 패턴을 기준으로 한 예상 요청 횟수를 보여줍니다. @@ -132,8 +135,9 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -이 예상치는 관찰된 요청 패턴을 기준으로 합니다. +예상치에는 요청당 다음 토큰 수를 사용하며, 실제 사용량은 달라질 수 있습니다. - Grok 4.6 — 요청당 입력 390, 캐시 32,500, 출력 토큰 120 - GLM-5.3-Flash — 요청당 입력 1,000, 캐시 55,000, 출력 토큰 200 @@ -158,6 +162,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. - Hy3 — 요청당 입력 830, 캐시 71,500, 출력 토큰 295 - MiMo-V2.5 — 요청당 입력 830, 캐시 71,500, 출력 토큰 295 - MiMo-V2.5-Pro — 요청당 입력 790, 캐시 86,000, 출력 토큰 305 +- Omen Alpha — 요청당 입력 300, 캐시 40,000, 출력 토큰 100 이 예상치는 또한 1M tokens당 다음 가격과 각 모델에 포함된 월간 사용량을 기준으로 합니다. @@ -197,6 +202,7 @@ OpenCode Go에는 다음과 같은 한도가 포함됩니다. | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 시간은 월요일부터 금요일까지 01:00-04:00 및 06:00-10:00 UTC이며, 주말을 포함한 그 외 모든 시간은 Off-Peak입니다. [자세히 알아보기](https://api-docs.deepseek.com/quick_start/pricing/). @@ -220,7 +226,7 @@ Zen 잔액에 크레딧도 있다면, console에서 **Use balance** 옵션을 ### 일부 모델의 사용량이 더 적은 이유 -Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공하는 것을 목표로 합니다. +Go에서는 월 $10를 지불하며, 대부분의 모델에 대해 그 6배의 사용량을 제공하는 것을 목표로 합니다. 대부분의 모델은 대량 할인과 예약된 GPU 용량을 통해 이를 실현합니다. 그런 다음 6배의 사용량 배율을 통해 절감 혜택을 사용자에게 돌려드립니다. @@ -263,6 +269,7 @@ Go에서는 월 $10를 지불하며, 저희는 그 6배의 사용량을 제공 | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode config의 [model id](/docs/config/#models)는 `opencode-go/` 형식을 사용합니다. 예를 들어 Kimi K3의 경우 config에서 `opencode-go/kimi-k3`를 사용하면 됩니다. @@ -308,6 +315,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | 사용되지 않음 | 0일 | | Hy4 preview | 사용되지 않음 | 0일 | | Hy3 | 사용되지 않음 | 0일 | +| Omen Alpha | 사용되지 않음 | 0일 | - **Grok 4.6:** ZDR은 저장된 데이터에 의존하는 중요한 API 기능(상태 저장형 Responses API, Files and Collections, Batch API 포함)을 비활성화합니다. [자세히 알아보기](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** 모든 API 기능 사용에 대해 악용 모니터링 로그가 생성되며 최대 30일 동안 보존됩니다. [자세히 알아보기](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/nb/go.mdx b/packages/web/src/content/docs/nb/go.mdx index e11ce9673..28d804ccb 100644 --- a/packages/web/src/content/docs/nb/go.mdx +++ b/packages/web/src/content/docs/nb/go.mdx @@ -85,6 +85,7 @@ Den nåværende listen over modeller inkluderer: - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** Listen over modeller kan endres etter hvert som vi tester og legger til nye. @@ -104,12 +105,14 @@ For å sikre at kontoen din ikke blir flagget, må du sørge for at verktøyet d ## Bruksgrenser -OpenCode Go inkluderer følgende grenser: +OpenCode Go inkluderer følgende basisgrenser: - **5-timers grense** — $12 i bruk - **Ukentlig grense** — $30 i bruk - **Månedlig grense** — $60 i bruk +Den effektive bruken varierer etter modell; se tabellen nedenfor. + Grensene er definert i dollarverdi. Dette betyr at ditt faktiske antall forespørsler avhenger av modellen du bruker. Billigere modeller som MiMo-V2.5 tillater flere forespørsler, mens dyrere modeller som GLM-5.2 tillater færre. Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksmønstre for Go: @@ -142,8 +145,9 @@ Tabellen nedenfor gir et estimert antall forespørsler basert på typiske bruksm | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -Estimatene er basert på observerte forespørselsmønstre: +Estimatene bruker følgende antall tokens per forespørsel; faktisk bruk varierer. - Grok 4.6 — 390 input, 32 500 bufret, 120 output-tokens per forespørsel - GLM-5.3-Flash — 1 000 input, 55 000 bufret, 200 output-tokens per forespørsel @@ -168,6 +172,7 @@ Estimatene er basert på observerte forespørselsmønstre: - Hy3 — 830 input, 71 500 bufret, 295 output-tokens per forespørsel - MiMo-V2.5 — 830 input, 71 500 bufret, 295 output-tokens per forespørsel - MiMo-V2.5-Pro — 790 input, 86 000 bufret, 305 output-tokens per forespørsel +- Omen Alpha — 300 input-, 40 000 bufrede, 100 output-tokens per forespørsel Estimatene er også basert på følgende priser per 1M tokens og den månedlige bruken som er inkludert med hver modell: @@ -207,6 +212,7 @@ Estimatene er også basert på følgende priser per 1M tokens og den månedlige | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak-tidene er 01:00-04:00 og 06:00-10:00 UTC fra mandag til fredag; alle andre tider, inkludert helger, er Off-Peak. [Les mer](https://api-docs.deepseek.com/quick_start/pricing/). @@ -232,7 +238,7 @@ etter at du har nådd bruksgrensene dine, i stedet for å blokkere forespørsler ### Hvorfor noen modeller har lavere bruk -Med Go betaler du $10/måned, og vi har som mål å gi deg seks ganger så mye bruk. +Med Go betaler du $10/måned, og for de fleste modeller har vi som mål å gi deg seks ganger så mye bruk. For de fleste modeller får vi dette til gjennom volumrabatter og reservert GPU-kapasitet. Deretter gir vi disse besparelsene videre til deg gjennom 6x-multiplikatoren. @@ -275,6 +281,7 @@ Du kan også få tilgang til Go-modeller gjennom følgende API-endepunkter. | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [Modell-ID-en](/docs/config/#models) i din OpenCode-konfigurasjon bruker formatet `opencode-go/`. For eksempel, for Kimi K3, vil du @@ -322,6 +329,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | Brukes ikke | 0 dager | | Hy4 preview | Brukes ikke | 0 dager | | Hy3 | Brukes ikke | 0 dager | +| Omen Alpha | Brukes ikke | 0 dager | - **Grok 4.6:** ZDR deaktiverer viktige API-funksjoner som er avhengige av lagrede data, inkludert den tilstandsbaserte Responses API, Files and Collections og Batch API. [Les mer](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logger for overvåking av misbruk genereres for all bruk av API-funksjoner og oppbevares i opptil 30 dager. [Les mer](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/pl/go.mdx b/packages/web/src/content/docs/pl/go.mdx index 9c2deb506..81a8124e4 100644 --- a/packages/web/src/content/docs/pl/go.mdx +++ b/packages/web/src/content/docs/pl/go.mdx @@ -79,6 +79,7 @@ Obecna lista modeli obejmuje: - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** Lista modeli może ulec zmianie w miarę testowania i dodawania nowych. @@ -98,12 +99,14 @@ Aby Twoje konto nie zostało oznaczone, upewnij się, że używane przez Ciebie ## Limity użycia -OpenCode Go zawiera następujące limity: +OpenCode Go zawiera następujące limity bazowe: - **Limit 5-godzinny** — użycie o wartości 12 $ - **Limit tygodniowy** — użycie o wartości 30 $ - **Limit miesięczny** — użycie o wartości 60 $ +Efektywny limit różni się w zależności od modelu; zobacz tabelę poniżej. + Limity są zdefiniowane w wartości w dolarach. Oznacza to, że rzeczywista liczba żądań zależy od używanego modelu. Tańsze modele, takie jak MiMo-V2.5, pozwalają na więcej żądań, podczas gdy modele o wyższym koszcie, takie jak GLM-5.2, pozwalają na mniej. Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych wzorców korzystania z Go: @@ -136,8 +139,9 @@ Poniższa tabela przedstawia szacunkową liczbę żądań na podstawie typowych | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -Szacunki te opierają się na zaobserwowanych wzorcach żądań: +Szacunki wykorzystują następującą liczbę tokenów na żądanie; rzeczywiste użycie jest zmienne. - Grok 4.6 — 390 tokenów wejściowych, 32 500 w pamięci podręcznej, 120 tokenów wyjściowych na żądanie - GLM-5.3-Flash — 1 000 tokenów wejściowych, 55 000 w pamięci podręcznej, 200 tokenów wyjściowych na żądanie @@ -162,6 +166,7 @@ Szacunki te opierają się na zaobserwowanych wzorcach żądań: - Hy3 — 830 tokenów wejściowych, 71 500 w pamięci podręcznej, 295 tokenów wyjściowych na żądanie - MiMo-V2.5 — 830 tokenów wejściowych, 71 500 w pamięci podręcznej, 295 tokenów wyjściowych na żądanie - MiMo-V2.5-Pro — 790 tokenów wejściowych, 86 000 w pamięci podręcznej, 305 tokenów wyjściowych na żądanie +- Omen Alpha — 300 tokenów wejściowych, 40 000 w pamięci podręcznej, 100 tokenów wyjściowych na żądanie Szacunki opierają się również na następujących cenach za 1M tokenów oraz miesięcznym użyciu dostępnym dla każdego modelu: @@ -201,6 +206,7 @@ Szacunki opierają się również na następujących cenach za 1M tokenów oraz | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Godziny Peak to 01:00-04:00 i 06:00-10:00 UTC od poniedziałku do piątku; wszystkie pozostałe godziny, w tym weekendy, to Off-Peak. [Dowiedz się więcej](https://api-docs.deepseek.com/quick_start/pricing/). @@ -224,7 +230,7 @@ Jeśli masz również środki na swoim saldzie Zen, możesz włączyć opcję ** ### Dlaczego niektóre modele mają niższe limity użycia -Go kosztuje $10/miesiąc, a naszym celem jest zapewnienie Ci użycia o wartości 6x większej niż ta kwota. +Go kosztuje $10/miesiąc, a w przypadku większości modeli naszym celem jest zapewnienie Ci użycia o wartości 6x większej niż ta kwota. W przypadku większości modeli jest to możliwe dzięki rabatom hurtowym i zarezerwowanej mocy obliczeniowej GPU. Uzyskane w ten sposób oszczędności przekazujemy Tobie w postaci mnożnika 6x. @@ -267,6 +273,7 @@ Możesz również uzyskać dostęp do modeli Go za pośrednictwem następującyc | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID modelu](/docs/config/#models) w Twojej konfiguracji OpenCode używa formatu `opencode-go/`. Na przykład dla Kimi K3 należy użyć @@ -314,6 +321,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | Niewykorzystywane | 0 dni | | Hy4 preview | Niewykorzystywane | 0 dni | | Hy3 | Niewykorzystywane | 0 dni | +| Omen Alpha | Niewykorzystywane | 0 dni | - **Grok 4.6:** ZDR wyłącza ważne funkcje API zależne od przechowywanych danych, w tym stanowy Responses API, Files and Collections oraz Batch API. [Dowiedz się więcej](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Dzienniki monitorowania nadużyć są generowane dla każdego użycia funkcji API i przechowywane przez maksymalnie 30 dni. [Dowiedz się więcej](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index c5272d2bb..e0f7a27dd 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -85,6 +85,7 @@ A lista atual de modelos inclui: - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** A lista de modelos pode mudar conforme testamos e adicionamos novos. @@ -104,12 +105,14 @@ Para evitar que sua conta seja sinalizada, verifique se a ferramenta que você e ## Limites de uso -O OpenCode Go inclui os seguintes limites: +O OpenCode Go inclui os seguintes limites base: - **Limite de 5 horas** — US$ 12 de uso - **Limite semanal** — US$ 30 de uso - **Limite mensal** — US$ 60 de uso +A cota efetiva varia conforme o modelo; consulte a tabela abaixo. + Os limites são definidos em valor em dólares. Isso significa que a sua contagem real de requisições depende do modelo que você usa. Modelos mais baratos como o MiMo-V2.5 permitem mais requisições, enquanto modelos de custo mais alto como o GLM-5.2 permitem menos. A tabela abaixo fornece uma contagem estimada de requisições com base nos padrões típicos de uso do Go: @@ -142,8 +145,9 @@ A tabela abaixo fornece uma contagem estimada de requisições com base nos padr | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -As estimativas se baseiam nos padrões de requisições observados: +As estimativas usam as seguintes quantidades de tokens por requisição; o uso real varia. - Grok 4.6 — 390 tokens de entrada, 32.500 em cache, 120 tokens de saída por requisição - GLM-5.3-Flash — 1.000 tokens de entrada, 55.000 em cache, 200 tokens de saída por requisição @@ -168,6 +172,7 @@ As estimativas se baseiam nos padrões de requisições observados: - Hy3 — 830 tokens de entrada, 71.500 em cache, 295 tokens de saída por requisição - MiMo-V2.5 — 830 tokens de entrada, 71.500 em cache, 295 tokens de saída por requisição - MiMo-V2.5-Pro — 790 tokens de entrada, 86.000 em cache, 305 tokens de saída por requisição +- Omen Alpha — 300 tokens de entrada, 40.000 em cache, 100 tokens de saída por requisição As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso mensal incluído com cada modelo: @@ -207,6 +212,7 @@ As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso m | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC, de segunda a sexta-feira; todos os demais horários, incluindo os fins de semana, são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). @@ -232,7 +238,7 @@ após você atingir os seus limites de uso em vez de bloquear as requisições. ### Por que alguns modelos têm um uso menor -Com o Go, você paga $10/mês, e nosso objetivo é oferecer 6x esse valor em uso. +Com o Go, você paga $10/mês e, para a maioria dos modelos, nosso objetivo é oferecer 6x esse valor em uso. Para a maioria dos modelos, conseguimos fazer isso por meio de descontos por volume e capacidade reservada de GPU. Repassamos essa economia a você por meio do multiplicador de 6x. @@ -275,6 +281,7 @@ Você também pode acessar os modelos do Go através dos seguintes endpoints de | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | O [ID do modelo](/docs/config/#models) na sua configuração do OpenCode usa o formato `opencode-go/`. Por exemplo, para o Kimi K3, você usaria @@ -322,6 +329,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | Não usado | 0 dias | | Hy4 preview | Não usado | 0 dias | | Hy3 | Não usado | 0 dias | +| Omen Alpha | Não usado | 0 dias | - **Grok 4.6:** O ZDR desativa recursos importantes da API que dependem de dados armazenados, incluindo a Responses API com estado, Files and Collections e a Batch API. [Saiba mais](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Logs de monitoramento de abuso são gerados para todo uso de recursos da API e retidos por até 30 dias. [Saiba mais](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/ru/go.mdx b/packages/web/src/content/docs/ru/go.mdx index b532b9d04..640e82877 100644 --- a/packages/web/src/content/docs/ru/go.mdx +++ b/packages/web/src/content/docs/ru/go.mdx @@ -85,6 +85,7 @@ OpenCode Go работает так же, как и любой другой пр - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** Список моделей может меняться по мере того, как мы тестируем и добавляем новые. @@ -104,12 +105,14 @@ OpenCode Go предназначен для использования с [OpenC ## Лимиты использования -OpenCode Go включает следующие лимиты: +OpenCode Go включает следующие базовые лимиты: - **Лимит на 5 часов** — $12 использования - **Недельный лимит** — $30 использования - **Месячный лимит** — $60 использования +Эффективный лимит зависит от модели; см. таблицу ниже. + Лимиты определены в долларовом эквиваленте. Это означает, что ваше фактическое количество запросов зависит от используемой модели. Более дешевые модели, такие как MiMo-V2.5, позволяют делать больше запросов, в то время как более дорогие, такие как GLM-5.2, — меньше. В таблице ниже приведено примерное количество запросов на основе типичных сценариев использования Go: @@ -142,8 +145,9 @@ OpenCode Go включает следующие лимиты: | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -Эти оценки основаны на наблюдаемых показателях запросов: +В оценках используются следующие количества токенов на запрос; фактическое использование может отличаться. - Grok 4.6 — 390 входных, 32,500 кешированных, 120 выходных токенов на запрос - GLM-5.3-Flash — 1,000 входных, 55,000 кешированных, 200 выходных токенов на запрос @@ -168,6 +172,7 @@ OpenCode Go включает следующие лимиты: - Hy3 — 830 входных, 71,500 кешированных, 295 выходных токенов на запрос - MiMo-V2.5 — 830 входных, 71,500 кешированных, 295 выходных токенов на запрос - MiMo-V2.5-Pro — 790 входных, 86,000 кешированных, 305 выходных токенов на запрос +- Omen Alpha — 300 входных, 40 000 кешированных, 100 выходных токенов на запрос Эти оценки также основаны на следующих ценах за 1M токенов и месячном объеме использования, включенном для каждой модели: @@ -207,6 +212,7 @@ OpenCode Go включает следующие лимиты: | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Часы Peak с понедельника по пятницу: 01:00-04:00 и 06:00-10:00 UTC; все остальные часы, включая выходные, относятся к Off-Peak. [Подробнее](https://api-docs.deepseek.com/quick_start/pricing/). @@ -232,7 +238,7 @@ OpenCode Go включает следующие лимиты: ### Почему для некоторых моделей доступен меньший объем использования -С Go вы платите $10 в месяц, а мы стремимся предоставить вам объем использования моделей стоимостью в шесть раз больше этой суммы. +С Go вы платите $10 в месяц, а для большинства моделей мы стремимся предоставить вам объем использования стоимостью в шесть раз больше этой суммы. Для большинства моделей это возможно благодаря оптовым скидкам и зарезервированным мощностям GPU. Полученную экономию мы передаем вам за счет шестикратного множителя. @@ -275,6 +281,7 @@ OpenCode Go включает следующие лимиты: | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [ID модели](/docs/config/#models) в вашем конфиге OpenCode использует формат `opencode-go/`. Например, для Kimi K3 вам нужно @@ -322,6 +329,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | Не используется | 0 дней | | Hy4 preview | Не используется | 0 дней | | Hy3 | Не используется | 0 дней | +| Omen Alpha | Не используется | 0 дней | - **Grok 4.6:** ZDR отключает важные функции API, зависящие от сохраненных данных, включая Responses API с сохранением состояния, Files and Collections и Batch API. [Подробнее](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Журналы мониторинга злоупотреблений создаются при любом использовании функций API и хранятся до 30 дней. [Подробнее](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/th/go.mdx b/packages/web/src/content/docs/th/go.mdx index 4462b847f..8cb32b698 100644 --- a/packages/web/src/content/docs/th/go.mdx +++ b/packages/web/src/content/docs/th/go.mdx @@ -75,6 +75,7 @@ OpenCode Go ทำงานเหมือนกับผู้ให้บร - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** รายชื่อโมเดลอาจมีการเปลี่ยนแปลงเมื่อเราทำการทดสอบและเพิ่มโมเดลใหม่ๆ @@ -94,12 +95,14 @@ OpenCode Go ออกแบบมาเพื่อใช้กับ [OpenCode] ## Usage limits -OpenCode Go มีขีดจำกัดดังต่อไปนี้: +OpenCode Go มีขีดจำกัดพื้นฐานดังต่อไปนี้: - **ขีดจำกัดต่อ 5 ชั่วโมง** — การใช้งานมูลค่า $12 - **ขีดจำกัดรายสัปดาห์** — การใช้งานมูลค่า $30 - **ขีดจำกัดรายเดือน** — การใช้งานมูลค่า $60 +ขีดจำกัดการใช้งานที่มีผลแตกต่างกันไปตามโมเดล โปรดดูตารางด้านล่าง + ขีดจำกัดถูกกำหนดเป็นมูลค่าดอลลาร์ ซึ่งหมายความว่าจำนวน request จริงของคุณจะขึ้นอยู่กับโมเดลที่คุณใช้งาน โมเดลที่ราคาถูกกว่าอย่าง MiMo-V2.5 จะสามารถส่ง request ได้มากกว่า ในขณะที่โมเดลที่มีราคาสูงกว่าอย่าง GLM-5.2 จะส่งได้น้อยกว่า ตารางด้านล่างแสดงจำนวน request โดยประมาณตามรูปแบบการใช้งานปกติของ Go: @@ -132,8 +135,9 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -การประมาณการนี้อ้างอิงจากรูปแบบการใช้งาน request ที่สังเกตพบ: +การประมาณการใช้จำนวน token ต่อ request ดังต่อไปนี้ การใช้งานจริงอาจแตกต่างกัน - Grok 4.6 — 390 input, 32,500 cached, 120 output tokens ต่อ request - GLM-5.3-Flash — 1,000 input, 55,000 cached, 200 output tokens ต่อ request @@ -158,6 +162,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: - Hy3 — 830 input, 71,500 cached, 295 output tokens ต่อ request - MiMo-V2.5 — 830 input, 71,500 cached, 295 output tokens ต่อ request - MiMo-V2.5-Pro — 790 input, 86,000 cached, 305 output tokens ต่อ request +- Omen Alpha — 300 input, 40,000 cached, 100 output tokens ต่อ request การประมาณการนี้ยังอ้างอิงจากราคาต่อ 1M tokens และปริมาณการใช้งานรายเดือนที่รวมอยู่ในแต่ละโมเดลดังต่อไปนี้: @@ -197,6 +202,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** ช่วงเวลา Peak คือ 01:00-04:00 และ 06:00-10:00 UTC ตั้งแต่วันจันทร์ถึงวันศุกร์ ส่วนเวลาอื่นทั้งหมด รวมถึงวันหยุดสุดสัปดาห์ เป็น Off-Peak [ดูข้อมูลเพิ่มเติม](https://api-docs.deepseek.com/quick_start/pricing/) @@ -220,7 +226,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: ### เหตุใดบางโมเดลจึงมีปริมาณการใช้งานต่ำกว่า -สำหรับ Go คุณจ่าย $10/เดือน และเราตั้งเป้าที่จะมอบปริมาณการใช้งานให้คุณ 6 เท่าของจำนวนดังกล่าว +สำหรับ Go คุณจ่าย $10/เดือน และสำหรับโมเดลส่วนใหญ่ เราตั้งเป้าที่จะมอบปริมาณการใช้งานให้คุณ 6 เท่าของจำนวนดังกล่าว สำหรับโมเดลส่วนใหญ่ เราทำเช่นนี้ได้ผ่านส่วนลดสำหรับการซื้อจำนวนมากและความจุ GPU ที่จองไว้ จากนั้นเราจะส่งต่อส่วนลดเหล่านั้นให้คุณผ่านตัวคูณ 6 เท่า @@ -263,6 +269,7 @@ OpenCode Go มีขีดจำกัดดังต่อไปนี้: | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | [model id](/docs/config/#models) ใน OpenCode config ของคุณจะใช้รูปแบบ `opencode-go/` ตัวอย่างเช่น สำหรับ Kimi K3 คุณจะใช้ `opencode-go/kimi-k3` ใน config ของคุณ @@ -308,6 +315,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | ไม่นำไปใช้ | 0 วัน | | Hy4 preview | ไม่นำไปใช้ | 0 วัน | | Hy3 | ไม่นำไปใช้ | 0 วัน | +| Omen Alpha | ไม่นำไปใช้ | 0 วัน | - **Grok 4.6:** ZDR ปิดใช้งานฟีเจอร์ API สำคัญที่ต้องอาศัยข้อมูลที่จัดเก็บไว้ ซึ่งรวมถึง Responses API แบบมีสถานะ, Files and Collections และ Batch API [ดูข้อมูลเพิ่มเติม](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr) - **GPT 5.6 Luna:** ระบบจะสร้างบันทึกการตรวจสอบการใช้งานในทางที่ผิดสำหรับการใช้งานฟีเจอร์ API ทั้งหมด และเก็บรักษาไว้นานสูงสุด 30 วัน [ดูข้อมูลเพิ่มเติม](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring) diff --git a/packages/web/src/content/docs/tr/go.mdx b/packages/web/src/content/docs/tr/go.mdx index 3d058ae45..38322ec36 100644 --- a/packages/web/src/content/docs/tr/go.mdx +++ b/packages/web/src/content/docs/tr/go.mdx @@ -75,6 +75,7 @@ Mevcut model listesi şunları içerir: - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** Test edip yenilerini ekledikçe model listesi değişebilir. @@ -94,12 +95,14 @@ Hesabınızın işaretlenmemesi için kullandığınız aracın ## Kullanım limitleri -OpenCode Go aşağıdaki limitleri içerir: +OpenCode Go aşağıdaki temel limitleri içerir: - **5 saatlik limit** — 12$ kullanım - **Haftalık limit** — 30$ kullanım - **Aylık limit** — 60$ kullanım +Etkin kullanım limiti modele göre değişir; aşağıdaki tabloya bakın. + Limitler dolar değeri üzerinden belirlenmiştir. Bu, gerçek istek sayınızın kullandığınız modele bağlı olduğu anlamına gelir. MiMo-V2.5 gibi daha ucuz modeller daha fazla isteğe izin verirken, GLM-5.2 gibi yüksek maliyetli modeller daha azına izin verir. Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek sayısı sunmaktadır: @@ -132,8 +135,9 @@ Aşağıdaki tablo, tipik Go kullanım modellerine dayalı tahmini bir istek say | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -Tahminler, gözlemlenen istek modellerine dayanır: +Tahminler istek başına aşağıdaki token sayılarını kullanır; gerçek kullanım değişir. - Grok 4.6 — İstek başına 390 girdi, 32.500 önbelleğe alınmış, 120 çıktı token'ı - GLM-5.3-Flash — İstek başına 1.000 girdi, 55.000 önbelleğe alınmış, 200 çıktı token'ı @@ -158,6 +162,7 @@ Tahminler, gözlemlenen istek modellerine dayanır: - Hy3 — İstek başına 830 girdi, 71.500 önbelleğe alınmış, 295 çıktı token'ı - MiMo-V2.5 — İstek başına 830 girdi, 71.500 önbelleğe alınmış, 295 çıktı token'ı - MiMo-V2.5-Pro — İstek başına 790 girdi, 86.000 önbelleğe alınmış, 305 çıktı token'ı +- Omen Alpha — İstek başına 300 girdi, 40.000 önbelleğe alınmış, 100 çıktı token'ı Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlikte sunulan aylık kullanıma dayanır: @@ -197,6 +202,7 @@ Tahminler ayrıca 1M token başına aşağıdaki fiyatlara ve her modelle birlik | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak saatleri pazartesiden cumaya 01:00-04:00 ve 06:00-10:00 UTC'dir; hafta sonları dahil diğer tüm saatler Off-Peak'tir. [Daha fazla bilgi](https://api-docs.deepseek.com/quick_start/pricing/). @@ -220,7 +226,7 @@ Eğer Zen bakiyenizde kredileriniz varsa, konsoldan **Bakiye kullan (Use balance ### Bazı modellerin kullanımı neden daha düşük? -Go ile aylık 10$ ödersiniz ve size bunun 6 katı değerinde kullanım sunmayı hedefleriz. +Go ile aylık 10$ ödersiniz ve çoğu model için size bunun 6 katı değerinde kullanım sunmayı hedefleriz. Çoğu modelde bunu toplu indirimler ve ayrılmış GPU kapasitesi sayesinde mümkün kılıyoruz. Ardından bu tasarrufları 6 katlık çarpanla size aktarıyoruz. @@ -263,6 +269,7 @@ Go modellerine aşağıdaki API uç noktaları aracılığıyla da erişebilirsi | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | OpenCode yapılandırmanızdaki [model id](/docs/config/#models) formatı `opencode-go/` şeklindedir. Örneğin, Kimi K3 için yapılandırmanızda `opencode-go/kimi-k3` kullanmalısınız. @@ -308,6 +315,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | Kullanılmaz | 0 gün | | Hy4 preview | Kullanılmaz | 0 gün | | Hy3 | Kullanılmaz | 0 gün | +| Omen Alpha | Kullanılmaz | 0 gün | - **Grok 4.6:** ZDR, durum bilgisi tutan Responses API, Files and Collections ve Batch API dahil olmak üzere saklanan verilere bağlı önemli API özelliklerini devre dışı bırakır. [Daha fazla bilgi](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr). - **GPT 5.6 Luna:** Tüm API özelliklerinin kullanımı için kötüye kullanım izleme günlükleri oluşturulur ve 30 güne kadar saklanır. [Daha fazla bilgi](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring). diff --git a/packages/web/src/content/docs/zh-cn/go.mdx b/packages/web/src/content/docs/zh-cn/go.mdx index bdfb25c74..3fe0c4d49 100644 --- a/packages/web/src/content/docs/zh-cn/go.mdx +++ b/packages/web/src/content/docs/zh-cn/go.mdx @@ -75,6 +75,7 @@ OpenCode Go 的工作方式与 OpenCode 中的其他提供商一样。 - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** 随着我们进行测试和添加新模型,该列表可能会发生变化。 @@ -94,12 +95,14 @@ OpenCode Go 适用于 [OpenCode](https://opencode.ai) 以及其他会产生类 ## 使用限制 -OpenCode Go 包含以下限制: +OpenCode Go 包含以下基础限制: - **5 小时限制** — 12 美元使用额度 - **每周限制** — 30 美元使用额度 - **每月限制** — 60 美元使用额度 +有效使用额度因模型而异;请参见下表。 + 限制以美元价值定义。这意味着你的实际请求数取决于你所使用的模型。较便宜的模型(如 MiMo-V2.5)允许更多请求,而较高成本的模型(如 GLM-5.2)允许较少请求。 下表提供了基于典型 Go 使用模式的预估请求数: @@ -132,8 +135,9 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -预估值基于观察到的请求模式: +预估值采用以下每次请求的 token 数量;实际使用情况会有所不同。 - Grok 4.6 — 每次请求 390 个输入 token,32,500 个缓存 token,120 个输出 token - GLM-5.3-Flash — 每次请求 1,000 个输入 token,55,000 个缓存 token,200 个输出 token @@ -158,6 +162,7 @@ OpenCode Go 包含以下限制: - Qwen3.6 Plus — 每次请求 500 个输入 token,57,000 个缓存 token,190 个输出 token - Hy4 preview — 每次请求 830 个输入 token,71,500 个缓存 token,295 个输出 token - Hy3 — 每次请求 830 个输入 token,71,500 个缓存 token,295 个输出 token +- Omen Alpha — 每次请求 300 个输入 token,40,000 个缓存 token,100 个输出 token 预估值还基于以下每 1M tokens 的价格以及每个模型包含的每月使用额度: @@ -197,6 +202,7 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 时段为周一至周五的 01:00-04:00 和 06:00-10:00 UTC;其他所有时段(包括周末)均为 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 @@ -220,7 +226,7 @@ OpenCode Go 包含以下限制: ### 为什么某些模型的使用额度较低 -使用 Go 时,你每月支付 $10,而我们的目标是为你提供 6 倍于此的使用额度。 +使用 Go 时,你每月支付 $10;对于大多数模型,我们的目标是提供 6 倍于此的使用额度。 对于大多数模型,我们通过批量折扣和预留 GPU 容量来实现这一目标。然后,我们通过 6 倍乘数将这些节省的成本回馈给你。 @@ -263,6 +269,7 @@ OpenCode Go 包含以下限制: | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 你的 OpenCode 配置中的 [模型 ID](/docs/config/#models) 使用 `opencode-go/` 格式。例如,对于 Kimi K3,你将在配置中使用 `opencode-go/kimi-k3`。 @@ -308,6 +315,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | | Hy4 preview | 不使用 | 0 天 | | Hy3 | 不使用 | 0 天 | +| Omen Alpha | 不使用 | 0 天 | - **Grok 4.6:** ZDR 会禁用依赖所存储数据的重要 API 功能,包括有状态的 Responses API、Files and Collections 和 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 所有 API 功能的使用都会生成滥用监控日志,并最多保留 30 天。[了解更多](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 diff --git a/packages/web/src/content/docs/zh-tw/go.mdx b/packages/web/src/content/docs/zh-tw/go.mdx index ab5aa97fa..4ecbfda86 100644 --- a/packages/web/src/content/docs/zh-tw/go.mdx +++ b/packages/web/src/content/docs/zh-tw/go.mdx @@ -75,6 +75,7 @@ OpenCode Go 的運作方式與 OpenCode 中的任何其他供應商相同。 - **DeepSeek V4 Flash Vision Exp** - **Hy4 preview** - **Hy3** +- **Omen Alpha** 隨著我們測試並加入新模型,模型清單可能會有所變動。 @@ -94,12 +95,14 @@ OpenCode Go 適用於 [OpenCode](https://opencode.ai) 以及其他會產生類 ## 使用限制 -OpenCode Go 包含以下限制: +OpenCode Go 包含以下基準限制: - **5 小時限制** — $12 美元的使用量 - **每週限制** — $30 美元的使用量 - **每月限制** — $60 美元的使用量 +有效使用額度因模型而異;請參閱下表。 + 限制是以美元價值來定義。這意味著您的實際請求次數取決於您使用的模型。像 MiMo-V2.5 這樣較便宜的模型允許更多的請求次數,而像 GLM-5.2 這樣成本較高的模型則允許較少次數。 下表提供了基於典型 Go 使用模式的預估請求次數: @@ -132,8 +135,9 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Flash Vision Exp | 3,800 | 9,450 | 18,900 | | Hy4 preview | 1,350 | 3,380 | 6,770 | | Hy3 | 4,300 | 10,750 | 21,500 | +| Omen Alpha | 11,600 | 29,000 | 57,900 | -這些預估值是基於觀察到的請求模式: +這些預估值採用以下每次請求的 token 數量;實際使用情況會有所不同。 - Grok 4.6 — 每次請求 390 個輸入 token、32,500 個快取 token、120 個輸出 token - GLM-5.3-Flash — 每次請求 1,000 個輸入 token、55,000 個快取 token、200 個輸出 token @@ -158,6 +162,7 @@ OpenCode Go 包含以下限制: - Hy3 — 每次請求 830 個輸入 token、71,500 個快取 token、295 個輸出 token - MiMo-V2.5 — 每次請求 830 個輸入 token、71,500 個快取 token、295 個輸出 token - MiMo-V2.5-Pro — 每次請求 790 個輸入 token、86,000 個快取 token、305 個輸出 token +- Omen Alpha — 每次請求 300 個輸入 token、40,000 個快取 token、100 個輸出 token 這些預估值也基於以下每 1M tokens 的價格,以及每個模型所包含的每月使用量: @@ -197,6 +202,7 @@ OpenCode Go 包含以下限制: | DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | | Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | | Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Peak 時段為週一至週五的 01:00-04:00 和 06:00-10:00 UTC;其他所有時段(包括週末)均為 Off-Peak。[了解更多](https://api-docs.deepseek.com/quick_start/pricing/)。 @@ -220,7 +226,7 @@ OpenCode Go 包含以下限制: ### 為什麼部分模型的使用量較低 -使用 Go 時,您每月支付 $10,而我們的目標是提供相當於 6 倍費用的使用量。 +使用 Go 時,您每月支付 $10;對大多數模型而言,我們的目標是提供相當於 6 倍費用的使用量。 對大多數模型而言,我們透過大量採購折扣和預留 GPU 容量來達成此目標,再以 6 倍乘數將節省的成本回饋給您。 @@ -263,6 +269,7 @@ OpenCode Go 包含以下限制: | Qwen3.6 Plus | qwen3.6-plus | `https://opencode.ai/zen/go/v1/messages` | `@ai-sdk/anthropic` | | Hy4 preview | hy4-preview | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Hy3 | hy3 | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| Omen Alpha | omen-alpha | `https://opencode.ai/zen/go/v1/chat/completions` | `@ai-sdk/openai-compatible` | 您的 OpenCode 設定中的 [model id](/docs/config/#models) 使用 `opencode-go/` 格式。例如,Kimi K3 在設定中應使用 `opencode-go/kimi-k3`。 @@ -308,6 +315,7 @@ https://opencode.ai/zen/go/v1/models | DeepSeek V4 Flash Vision Exp | 不使用 | 0 天 | | Hy4 preview | 不使用 | 0 天 | | Hy3 | 不使用 | 0 天 | +| Omen Alpha | 不使用 | 0 天 | - **Grok 4.6:** ZDR 會停用依賴儲存資料的重要 API 功能,包括具狀態的 Responses API、Files and Collections 與 Batch API。[了解更多](https://docs.x.ai/developers/faq/security#what-is-zero-data-retention-zdr)。 - **GPT 5.6 Luna:** 所有 API 功能的使用都會產生濫用監控日誌,並保留最多 30 天。[了解更多](https://developers.openai.com/api/docs/guides/your-data#data-retention-controls-for-abuse-monitoring)。 From dd417f1a6b9264a2e70ffd16ccfce41dcd3bb86f Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Fri, 4 Sep 2026 05:09:10 +0000 Subject: [PATCH 251/271] chore: generate --- packages/web/src/content/docs/es/go.mdx | 72 +++++++++++----------- packages/web/src/content/docs/pt-br/go.mdx | 72 +++++++++++----------- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/packages/web/src/content/docs/es/go.mdx b/packages/web/src/content/docs/es/go.mdx index 50e19568b..1d8e543dc 100644 --- a/packages/web/src/content/docs/es/go.mdx +++ b/packages/web/src/content/docs/es/go.mdx @@ -176,42 +176,42 @@ Las estimaciones usan las siguientes cantidades de tokens por petición; el uso Las estimaciones también se basan en los siguientes precios por 1M tokens y en el uso mensual incluido con cada modelo: -| Modelo | Entrada | Salida | Lectura en caché | Escritura en caché | Uso | -| --------------------------------------- | ------- | ------ | ---------------- | ------------------ | --- | -| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | -| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | -| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Modelo | Entrada | Salida | Lectura en caché | Escritura en caché | Uso | +| --------------------------------------- | ------- | ------ | ---------------- | ------------------ | ---- | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Las horas Peak son 01:00-04:00 y 06:00-10:00 UTC, de lunes a viernes; todas las demás horas, incluidos los fines de semana, son Off-Peak. [Más información](https://api-docs.deepseek.com/quick_start/pricing/). diff --git a/packages/web/src/content/docs/pt-br/go.mdx b/packages/web/src/content/docs/pt-br/go.mdx index e0f7a27dd..197216174 100644 --- a/packages/web/src/content/docs/pt-br/go.mdx +++ b/packages/web/src/content/docs/pt-br/go.mdx @@ -176,42 +176,42 @@ As estimativas usam as seguintes quantidades de tokens por requisição; o uso r As estimativas também se baseiam nos seguintes preços por 1M tokens e no uso mensal incluído com cada modelo: -| Modelo | Entrada | Saída | Leitura em cache | Escrita em cache | Uso | -| --------------------------------------- | ------- | ------ | ---------------- | ---------------- | --- | -| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | -| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | -| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | -| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | -| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | -| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | -| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | -| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | -| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | -| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | -| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | -| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | -| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | -| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | -| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | -| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | -| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | -| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | -| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | -| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | -| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | -| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | -| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | -| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | -| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | -| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | -| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | -| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | -| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | -| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | -| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | -| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | +| Modelo | Entrada | Saída | Leitura em cache | Escrita em cache | Uso | +| --------------------------------------- | ------- | ------ | ---------------- | ---------------- | ---- | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | $15 | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | $15 | +| GPT 5.6 Luna (≤ 272K tokens) | $0.20 | $1.20 | $0.02 | $0.25 | $15 | +| GPT 5.6 Luna (> 272K tokens) | $0.40 | $1.80 | $0.04 | $0.50 | $15 | +| GLM-5.3-Flash | $0.15 | $0.50 | $0.03 | - | $15 | +| GLM-5.3 | $1.40 | $4.40 | $0.26 | - | $15 | +| GLM-5.2 | $1.40 | $4.40 | $0.26 | - | $60 | +| GLM-5.1 | $1.40 | $4.40 | $0.26 | - | $60 | +| Kimi K3 | $3.00 | $15.00 | $0.30 | - | $15 | +| Kimi K2.7 Code | $0.95 | $4.00 | $0.19 | - | $60 | +| Kimi K2.6 | $0.95 | $4.00 | $0.16 | - | $60 | +| LongCat-2.0 | $0.30 | $1.20 | $0.006 | - | $60 | +| MiMo V2.5 | $0.14 | $0.28 | $0.0028 | - | $60 | +| MiMo V2.5 Pro | $0.435 | $0.87 | $0.003625 | - | $15 | +| MiniMax M3 | $0.30 | $1.20 | $0.06 | - | $60 | +| MiniMax M2.7 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | $0.375 | $60 | +| Muse Spark 1.3 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Muse Spark 1.2 Contributor | $0.10 | $0.20 | $0.002 | - | $60 | +| Qwen3.8 Max | $2.00 | $6.00 | $0.25 | $2.50 | $15 | +| Qwen3.8 Flash | $0.15 | $0.47 | $0.016 | $0.20 | $30 | +| Qwen3.7 Max | $2.50 | $7.50 | $0.50 | $3.125 | $30 | +| Qwen3.7 Plus (≤ 256K tokens) | $0.40 | $1.60 | $0.04 | $0.50 | $60 | +| Qwen3.7 Plus (> 256K tokens) | $1.20 | $4.80 | $0.12 | $1.50 | $60 | +| Qwen3.6 Plus (≤ 256K tokens) | $0.50 | $3.00 | $0.05 | $0.625 | $60 | +| Qwen3.6 Plus (> 256K tokens) | $2.00 | $6.00 | $0.20 | $2.50 | $60 | +| DeepSeek V4 Pro (Off-Peak) | $0.66 | $1.98 | $0.022 | - | $15 | +| DeepSeek V4 Pro (Peak) | $1.32 | $3.96 | $0.044 | - | $15 | +| DeepSeek V4 Flash (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $30 | +| DeepSeek V4 Flash (Peak) | $0.44 | $1.32 | $0.014 | - | $30 | +| DeepSeek V4 Flash Vision Exp (Off-Peak) | $0.22 | $0.66 | $0.007 | - | $15 | +| DeepSeek V4 Flash Vision Exp (Peak) | $0.44 | $1.32 | $0.014 | - | $15 | +| Hy4 preview | $0.834 | $2.501 | $0.042 | - | $30 | +| Hy3 | $0.14 | $0.58 | $0.035 | - | $60 | | Omen Alpha | $0.20 | $0.66 | $0.04 | - | $100 | **DeepSeek V4 Flash / V4 Flash Vision Exp / V4 Pro:** Os horários Peak são 01:00-04:00 e 06:00-10:00 UTC, de segunda a sexta-feira; todos os demais horários, incluindo os fins de semana, são Off-Peak. [Saiba mais](https://api-docs.deepseek.com/quick_start/pricing/). From 03cb6324352b5e09477e56324aaaefb9e149b298 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2026 00:34:37 -0500 Subject: [PATCH 252/271] test(core): disable npm audits in the test preload (#47222) Co-authored-by: rekram1-node --- packages/core/test/preload.test.ts | 5 +++++ packages/core/test/preload.ts | 1 + 2 files changed, 6 insertions(+) create mode 100644 packages/core/test/preload.test.ts diff --git a/packages/core/test/preload.test.ts b/packages/core/test/preload.test.ts new file mode 100644 index 000000000..cd3130788 --- /dev/null +++ b/packages/core/test/preload.test.ts @@ -0,0 +1,5 @@ +import { expect, test } from "bun:test" + +test("disables public npm security audits", () => { + expect(process.env.NPM_CONFIG_AUDIT).toBe("false") +}) diff --git a/packages/core/test/preload.ts b/packages/core/test/preload.ts index 39b237d70..7a2a3d2bd 100644 --- a/packages/core/test/preload.ts +++ b/packages/core/test/preload.ts @@ -1,5 +1,6 @@ import path from "path" process.env.OPENCODE_DB = ":memory:" +process.env.NPM_CONFIG_AUDIT = "false" process.env.OPENCODE_MODELS_PATH = path.join(import.meta.dir, "plugin", "fixtures", "models-dev.json") process.env.OPENCODE_DISABLE_MODELS_FETCH = "true" From 70f74112e3f4a33ea1af8209c979a5060d7d2a36 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2026 04:22:48 -0400 Subject: [PATCH 253/271] fix(stats): keep omen-alpha under unknown provider (#47248) Co-authored-by: fwang <83515+fwang@users.noreply.github.com> --- .../stats/core/src/domain/inference.test.ts | 24 +++++++++++++++++++ packages/stats/core/src/domain/inference.ts | 2 ++ .../core/src/domain/model-normalization.ts | 6 ++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index 20dbe8620..4f51599d7 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -36,6 +36,8 @@ describe("inference stat normalization", () => { expect(modelAuthor("nemotron-3-super-free")).toBe("nvidia") expect(modelAuthor("qwen3.7-max")).toBe("qwen") expect(modelAuthor("alpha-gpt-next")).toBeUndefined() + expect(modelAuthor("omen-alpha")).toBe("unknown") + expect(modelAuthor("OMEN-ALPHA-free:global")).toBe("unknown") }) test("uses provider.model to resolve opencode route providers", () => { @@ -49,6 +51,22 @@ describe("inference stat normalization", () => { expect(statProvider("unknown", "", "custom-provider")).toBe("custom-provider") }) + test("keeps stealth model usage without exposing the route provider", () => { + expect(statProvider("omen-alpha", "gpt-test-model", "test-provider")).toBe("unknown") + expect(statProvider("OMEN-ALPHA-free:global", "gpt-test-model", "test-provider")).toBe("unknown") + expect(statProvider("omen-alpha", "", "test-provider")).toBe("unknown") + + const row = { ...aggregate("omen-alpha", "test-provider"), provider_model: "gpt-test-model" } + expect(toModelAggregate(row)).toMatchObject([{ model: "omen-alpha", provider: "unknown", requests: 1 }]) + expect(toProviderAggregate(row)).toMatchObject([{ provider: "unknown", requests: 1 }]) + expect(toGeoAggregate({ ...row, country: "US" })).toMatchObject([ + { model: "omen-alpha", provider: "unknown", country: "US", requests: 1 }, + ]) + expect(toRetentionAggregate({ ...row, cohort_date: "2026-08-10", eligible_users: "12" })).toMatchObject([ + { model: "omen-alpha", provider: "unknown", eligibleUsers: 12 }, + ]) + }) + test("merges renamed models under their current name", () => { expect(statModel("deepseek-v4-flash-0731", "")).toBe("deepseek-v4-flash") expect(statModel("deepseek-v4-flash-0731-free", "")).toBe("deepseek-v4-flash") @@ -124,6 +142,10 @@ describe("inference stat normalization", () => { }) expect(queries).toHaveLength(8) + queries.forEach((query) => { + expect(query).toContain("WHERE lower(model) NOT IN ('alpha-gpt-next')") + expect(query).toContain("CASE\n WHEN lower(model) IN ('omen-alpha') THEN 'unknown'\n") + }) expect(queries[0]).toContain("'week' AS grain") expect(queries[0]).toContain("'2026-W33' AS period_key") expect(queries[2]).toContain("'2026-08-10' AS period_key") @@ -186,6 +208,8 @@ describe("inference stat normalization", () => { expect(queries).toHaveLength(1) expect(queries[0]?.cohortDates).toEqual(["2026-08-10", "2026-08-17"]) expect(queries[0]?.query).toContain("AND product = 'go'") + expect(queries[0]?.query).toContain("AND lower(model) NOT IN ('alpha-gpt-next')") + expect(queries[0]?.query).toContain("CASE\n WHEN lower(model) IN ('omen-alpha') THEN 'unknown'\n") expect(queries[0]?.query).toContain("COUNT(*) AS model_requests") expect(queries[0]?.query).toContain("SUM(model_requests) AS total_requests") expect(queries[0]?.query).toContain("MAX(model_requests) AS max_model_requests") diff --git a/packages/stats/core/src/domain/inference.ts b/packages/stats/core/src/domain/inference.ts index 3767b7ba4..bdba90b11 100644 --- a/packages/stats/core/src/domain/inference.ts +++ b/packages/stats/core/src/domain/inference.ts @@ -8,6 +8,7 @@ import { MODEL_AUTHOR_RULES, MODEL_NAME_ALIASES, RETIRED_STAT_PROVIDERS, + STEALTH_MODELS, statModel, statProvider, } from "./model-normalization" @@ -483,6 +484,7 @@ function freeTierSql(tier: string, model: string) { function statProviderSql(model: string, providerModel: string, provider: string) { return `CASE + WHEN lower(${model}) IN (${[...STEALTH_MODELS].map(sqlString).join(", ")}) THEN 'unknown' ${MODEL_AUTHOR_RULES.map((item) => ` WHEN strpos(lower(${providerModel}), ${sqlString(item.match)}) > 0 THEN ${sqlString(item.author)}`).join("\n")} ${MODEL_AUTHOR_RULES.map((item) => ` WHEN strpos(lower(${model}), ${sqlString(item.match)}) > 0 THEN ${sqlString(item.author)}`).join("\n")} WHEN ${provider} <> '' AND lower(${provider}) NOT IN (${RETIRED_STAT_PROVIDERS.map(sqlString).join(", ")}) THEN ${provider} diff --git a/packages/stats/core/src/domain/model-normalization.ts b/packages/stats/core/src/domain/model-normalization.ts index 6f2edb117..cbceca348 100644 --- a/packages/stats/core/src/domain/model-normalization.ts +++ b/packages/stats/core/src/domain/model-normalization.ts @@ -14,6 +14,7 @@ export const MODEL_AUTHOR_RULES = [ { match: "qwen", author: "qwen" }, ] as const export const EXCLUDED_MODELS = new Set(["alpha-gpt-next"]) +export const STEALTH_MODELS = new Set(["omen-alpha"]) export const FREE_MODELS = new Set(["gpt-5-nano", "grok-code", "big-pickle"]) export const MODEL_NAME_ALIASES: Record = { "deepseek-v4-flash-0731": "deepseek-v4-flash", @@ -47,7 +48,10 @@ export function statProvider( providerModel: string | undefined, provider: string | undefined, ) { - const modelAuthorValue = modelAuthor(statModel(model, providerModel)) + const normalized = statModel(model, providerModel) + if (STEALTH_MODELS.has(normalized)) return "unknown" + + const modelAuthorValue = modelAuthor(normalized) if (!modelAuthorValue) return undefined const providerModelAuthor = modelAuthor(providerModel) From 475b408119fc1dad4ecabbc37ed9e0fe45d00df3 Mon Sep 17 00:00:00 2001 From: Jack Date: Fri, 4 Sep 2026 18:41:12 +0800 Subject: [PATCH 254/271] fix(console): backport usage reset boundary fix to dev (#47267) --- .../app/src/routes/zen/util/handler.ts | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index b1aa6fe74..87fc93e7a 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -1078,6 +1078,8 @@ export async function handler( authInfo = authInfo! const cost = centsToMicroCents(totalCostInCent) + // Keep period bounds and persisted timestamps on one snapshot when a queued write crosses a reset boundary. + const trackedAt = new Date() // For hot workspaces, batch balance/usage updates through Redis to avoid // row-level lock contention on BillingTable/UserTable. Returns the amount @@ -1118,7 +1120,7 @@ export async function handler( if (billingSource === "subscription") { const plan = authInfo.billing.subscription!.plan const black = BlackData.getLimits({ plan }) - const week = getWeekBounds(new Date()) + const week = getWeekBounds(trackedAt) const rollingWindowSeconds = black.rollingWindow * 3600 return [ db @@ -1126,11 +1128,17 @@ export async function handler( .set({ fixedUsage: sql` CASE + WHEN ${SubscriptionTable.timeFixedUpdated} >= ${week.end} THEN ${SubscriptionTable.fixedUsage} WHEN ${SubscriptionTable.timeFixedUpdated} >= ${week.start} THEN ${SubscriptionTable.fixedUsage} + ${cost} ELSE ${cost} END `, - timeFixedUpdated: sql`now()`, + timeFixedUpdated: sql` + CASE + WHEN ${SubscriptionTable.timeFixedUpdated} > ${trackedAt} THEN ${SubscriptionTable.timeFixedUpdated} + ELSE ${trackedAt} + END + `, rollingUsage: sql` CASE WHEN UNIX_TIMESTAMP(${SubscriptionTable.timeRollingUpdated}) >= UNIX_TIMESTAMP(now()) - ${rollingWindowSeconds} THEN ${SubscriptionTable.rollingUsage} + ${cost} @@ -1154,8 +1162,8 @@ export async function handler( } if (billingSource === "lite") { const lite = LiteData.getLimits() - const week = getWeekBounds(new Date()) - const month = getMonthlyBounds(new Date(), authInfo.lite!.timeCreated) + const week = getWeekBounds(trackedAt) + const month = getMonthlyBounds(trackedAt, authInfo.lite!.timeCreated) const rollingWindowSeconds = lite.rollingWindow * 3600 const quotaCost = Math.round(cost * modelInfo.costMultiplier) return [ @@ -1164,18 +1172,30 @@ export async function handler( .set({ monthlyUsage: sql` CASE + WHEN ${LiteTable.timeMonthlyUpdated} >= ${month.end} THEN ${LiteTable.monthlyUsage} WHEN ${LiteTable.timeMonthlyUpdated} >= ${month.start} THEN ${LiteTable.monthlyUsage} + ${quotaCost} ELSE ${quotaCost} END `, - timeMonthlyUpdated: sql`now()`, + timeMonthlyUpdated: sql` + CASE + WHEN ${LiteTable.timeMonthlyUpdated} > ${trackedAt} THEN ${LiteTable.timeMonthlyUpdated} + ELSE ${trackedAt} + END + `, weeklyUsage: sql` CASE + WHEN ${LiteTable.timeWeeklyUpdated} >= ${week.end} THEN ${LiteTable.weeklyUsage} WHEN ${LiteTable.timeWeeklyUpdated} >= ${week.start} THEN ${LiteTable.weeklyUsage} + ${quotaCost} ELSE ${quotaCost} END `, - timeWeeklyUpdated: sql`now()`, + timeWeeklyUpdated: sql` + CASE + WHEN ${LiteTable.timeWeeklyUpdated} > ${trackedAt} THEN ${LiteTable.timeWeeklyUpdated} + ELSE ${trackedAt} + END + `, rollingUsage: sql` CASE WHEN UNIX_TIMESTAMP(${LiteTable.timeRollingUpdated}) >= UNIX_TIMESTAMP(now()) - ${rollingWindowSeconds} THEN ${LiteTable.rollingUsage} + ${quotaCost} From 3f311390647337d0ddaeeb9be45ede8e5f468209 Mon Sep 17 00:00:00 2001 From: Victor Navarro Date: Fri, 4 Sep 2026 12:42:58 +0200 Subject: [PATCH 255/271] feat(console): route migrated BYOK through provider connections (#47266) --- .../console/app/src/lib/inference-proxy.ts | 51 ++++++++++++++++--- packages/console/app/src/middleware.ts | 8 --- .../app/src/routes/zen/util/handler.ts | 22 +++++++- .../console/app/src/routes/zen/v1/models.ts | 36 ++++++++++++- 4 files changed, 100 insertions(+), 17 deletions(-) diff --git a/packages/console/app/src/lib/inference-proxy.ts b/packages/console/app/src/lib/inference-proxy.ts index 814cc9455..7de73a961 100644 --- a/packages/console/app/src/lib/inference-proxy.ts +++ b/packages/console/app/src/lib/inference-proxy.ts @@ -1,16 +1,24 @@ import { Resource } from "@opencode-ai/console-resource" -import { Database, eq } from "@opencode-ai/console-core/drizzle/index.js" +import { and, Database, eq, isNull, sql } from "@opencode-ai/console-core/drizzle/index.js" import { KeyTable } from "@opencode-ai/console-core/schema/key.sql.js" +import { ProviderTable } from "@opencode-ai/console-core/schema/provider.sql.js" import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js" const paths: Record = { - "GET /zen/v1/models": "/v1/models", "POST /zen/v1/chat/completions": "/openai/v1/chat/completions", "POST /zen/v1/responses": "/openai/v1/responses", "POST /zen/v1/messages": "/anthropic/v1/messages", } -export async function proxyInference(request: Request, clientIP?: string): Promise { +export async function proxyInference( + request: Request, + generation: { + provider?: "openai" | "anthropic" | "google" + /** The provider's native model ID, not the public Zen alias. */ + model?: string + body: (model?: string) => ReadableStream + }, +): Promise { const url = new URL(request.url) const path = paths[`${request.method} ${url.pathname}`] ?? @@ -30,23 +38,52 @@ export async function proxyInference(request: Request, clientIP?: string): Promi // Routing only; the destination owns authentication and revocation after cutover. const workspace = await Database.use((tx) => tx - .select({ migratedAt: WorkspaceTable.migrated_at }) + .select({ + id: WorkspaceTable.id, + migratedAt: WorkspaceTable.migrated_at, + provider: ProviderTable.provider, + }) .from(KeyTable) .innerJoin(WorkspaceTable, eq(WorkspaceTable.id, KeyTable.workspaceID)) + .leftJoin( + ProviderTable, + generation.provider + ? and( + eq(ProviderTable.workspaceID, KeyTable.workspaceID), + eq(ProviderTable.provider, generation.provider), + isNull(ProviderTable.timeDeleted), + sql`length(${ProviderTable.credentials}) > 0`, + ) + : sql`false`, + ) .where(eq(KeyTable.key, key)) .limit(1) .then((rows) => rows[0]), ) if (!workspace?.migratedAt) return undefined + const model = workspace.provider ? generation.model : undefined + if (workspace.provider && !model) throw new Error("Legacy BYOK model mapping is unavailable") const destination = new URL(Resource.ConsoleMigration.inferenceUrl) - destination.pathname = `${destination.pathname.replace(/\/$/, "")}${path}` + // Imported connections must use this same workspace/provider-derived ID. + const target = model + ? `/custom/conn_${workspace.id.slice(4)}_${workspace.provider}${ + path.startsWith("/google/") + ? `/models/${encodeURIComponent(model)}${url.pathname.slice(url.pathname.lastIndexOf(":"))}` + : url.pathname.slice("/zen/v1".length) + }` + : path + destination.pathname = `${destination.pathname.replace(/\/$/, "")}${target}` destination.search = url.search destination.hash = "" - const forwarded = new Request(destination, request) + // Model extraction has already read part of the body; forward its replay stream. + const forwarded = new Request( + destination, + new Request(request, { method: request.method, body: generation.body(model) }), + ) forwarded.headers.set("authorization", `Bearer ${key}`) - const ip = request.headers.get("cf-connecting-ip") ?? clientIP + const ip = request.headers.get("cf-connecting-ip") if (ip) forwarded.headers.set("x-real-ip", ip) const requestID = request.headers.get("x-opencode-request-id") ?? request.headers.get("x-opencode-request") if (requestID) forwarded.headers.set("x-opencode-request-id", requestID) diff --git a/packages/console/app/src/middleware.ts b/packages/console/app/src/middleware.ts index e768afa4f..614cc87bc 100644 --- a/packages/console/app/src/middleware.ts +++ b/packages/console/app/src/middleware.ts @@ -2,7 +2,6 @@ import { createMiddleware } from "@solidjs/start/middleware" import { LOCALE_HEADER, cookie, fromPathname, strip } from "~/lib/language" import { normalizeReferralCode, referralCookie } from "~/lib/referral-invite" import { sanitizeServerActionRequest } from "~/lib/server-action" -import { proxyInference } from "~/lib/inference-proxy" export default createMiddleware({ async onRequest(event) { @@ -20,12 +19,5 @@ export default createMiddleware({ const referralCode = normalizeReferralCode(url.searchParams.get("ref")) if (referralCode) event.response.headers.append("set-cookie", referralCookie(referralCode)) - - return proxyInference(event.request, event.clientAddress).catch(() => - Response.json( - { error: { type: "api_error", message: "Inference routing is unavailable. Please retry later." } }, - { status: 503, headers: { "Cache-Control": "no-store" } }, - ), - ) }, }) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 87fc93e7a..adbfdecc8 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -50,6 +50,7 @@ import { countryFromRequest, isModelCountryRestricted } from "~/lib/request-coun import { isPeakPricing } from "./pricing" import { prepareRequestBody } from "./requestBody" import { requiresGoTrainingConsent } from "./trainingConsent" +import { proxyInference } from "~/lib/inference-proxy" type ZenData = Awaited> type PreparedBody = Awaited> @@ -100,6 +101,26 @@ export async function handler( const ip = rawIp.includes(":") ? rawIp.split(":").slice(0, 4).join(":") : rawIp const rawZenApiKey = opts.parseApiKey(input.request.headers) const zenApiKey = rawZenApiKey === "public" ? undefined : rawZenApiKey + const zenData = ZenData.list(opts.modelList) + if (opts.modelList === "full" && model) { + // Read routing metadata without running legacy model, auth, or balance checks. + const configured = zenData.models[model] + const entry = Array.isArray(configured) + ? configured.find((entry) => entry.formatFilter === opts.format) + : configured + const response = await proxyInference(input.request, { + provider: entry?.byokProvider, + model: entry?.providers.find((provider) => provider.id === entry.byokProvider)?.model, + body: (providerModel) => requestBody?.stream(providerModel ?? model, false) ?? body, + }).catch(() => { + void (requestBody ? requestBody.cancel() : body.cancel()).catch(() => {}) + return Response.json( + { error: { type: "api_error", message: "Inference routing is unavailable. Please retry later." } }, + { status: 503, headers: { "Cache-Control": "no-store" } }, + ) + }) + if (response) return response + } const sessionId = input.request.headers.get("x-opencode-session") ?? "" const requestId = input.request.headers.get("x-opencode-request") ?? "" const ocClient = input.request.headers.get("x-opencode-client") ?? "" @@ -112,7 +133,6 @@ export async function handler( user_agent: userAgent, "model.tier": opts.modelList === "full" ? "zen" : "go", }) - const zenData = ZenData.list(opts.modelList) const modelInfo = validateModel(zenData, model) const country = countryFromRequest(input.request) if (isModelCountryRestricted(modelInfo.id, country)) throw new RegionError(t("zen.api.error.countryNotAllowed")) diff --git a/packages/console/app/src/routes/zen/v1/models.ts b/packages/console/app/src/routes/zen/v1/models.ts index 68c3cac69..262a1bb34 100644 --- a/packages/console/app/src/routes/zen/v1/models.ts +++ b/packages/console/app/src/routes/zen/v1/models.ts @@ -5,14 +5,25 @@ import { KeyTable } from "@opencode-ai/console-core/schema/key.sql.js" import { WorkspaceTable } from "@opencode-ai/console-core/schema/workspace.sql.js" import { ModelTable } from "@opencode-ai/console-core/schema/model.sql.js" import { buildOptionsResponse, buildModelsResponse } from "~/routes/zen/util/modelsHandler" +import { Resource } from "@opencode-ai/console-resource" export async function OPTIONS(_input: APIEvent) { return buildOptionsResponse() } export async function GET(input: APIEvent) { + const apiKey = input.request.headers.get("authorization")?.split(" ")[1] + if (apiKey && apiKey !== "public") { + const response = await proxyModels(input, apiKey).catch(() => + Response.json( + { error: { type: "api_error", message: "Inference routing is unavailable. Please retry later." } }, + { status: 503, headers: { "Cache-Control": "no-store" } }, + ), + ) + if (response) return response + } + const disabledModels = await (() => { - const apiKey = input.request.headers.get("authorization")?.split(" ")[1] if (!apiKey) return [] as string[] return Database.use((tx) => @@ -34,3 +45,26 @@ export async function GET(input: APIEvent) { return buildModelsResponse(models) } + +async function proxyModels(input: APIEvent, apiKey: string) { + // No legacy revocation or model-policy checks before destination authentication. + const workspace = await Database.use((tx) => + tx + .select({ migratedAt: WorkspaceTable.migrated_at }) + .from(KeyTable) + .innerJoin(WorkspaceTable, eq(WorkspaceTable.id, KeyTable.workspaceID)) + .where(eq(KeyTable.key, apiKey)) + .limit(1) + .then((rows) => rows[0]), + ) + if (!workspace?.migratedAt) return undefined + + const destination = new URL(Resource.ConsoleMigration.inferenceUrl) + destination.pathname = `${destination.pathname.replace(/\/$/, "")}/v1/models` + destination.search = new URL(input.request.url).search + destination.hash = "" + const headers = new Headers({ authorization: `Bearer ${apiKey}` }) + const ip = input.request.headers.get("cf-connecting-ip") + if (ip) headers.set("x-real-ip", ip) + return fetch(destination, { headers, signal: input.request.signal, redirect: "manual" }) +} From 4178fd74f126ce791bcf8fc8c73d6e5de947ae6a Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Fri, 4 Sep 2026 07:32:58 -0500 Subject: [PATCH 256/271] fix(stats): hide stealth model providers --- .../src/component/model-compare-detail.tsx | 50 ++++++--- .../stats/app/src/routes/[lab]/[model].tsx | 103 +++++++++++------- .../stats/app/src/routes/compare-cards.tsx | 35 +++--- .../stats/app/src/routes/compare-radar.tsx | 4 +- packages/stats/app/src/routes/index.css | 8 ++ packages/stats/app/src/routes/index.tsx | 49 +++++++-- .../stats/app/src/routes/model-catalog.ts | 10 ++ 7 files changed, 176 insertions(+), 83 deletions(-) diff --git a/packages/stats/app/src/component/model-compare-detail.tsx b/packages/stats/app/src/component/model-compare-detail.tsx index 4966d5d45..fa82ea495 100644 --- a/packages/stats/app/src/component/model-compare-detail.tsx +++ b/packages/stats/app/src/component/model-compare-detail.tsx @@ -24,6 +24,8 @@ import { findModelCatalogEntry, formatCatalogLabName, getModelCatalog, + isKnownCatalogLab, + isProviderlessLab, type ModelCatalog, type ModelCatalogEntry, } from "../routes/model-catalog" @@ -71,7 +73,7 @@ const comparisonModelLimit = 6 type ComparisonModel = { name: string lab: string - labName: string + labName?: string slug: string catalog: ModelCatalogEntry | null stats: StatsModelComparisonEntry | null @@ -159,13 +161,19 @@ export default function ModelCompareDetailPage(props: ModelCompareDetailPageProp let comparisonBodyScroll: HTMLDivElement | undefined const models = createMemo(() => modelSelections().map((model, index) => - buildComparisonModel(model.lab, model.slug, model.catalog ?? null, stats()?.models[index] ?? null), + buildComparisonModel( + model.lab, + model.slug, + model.catalog ?? null, + stats()?.models[index] ?? null, + catalog()?.labs.map((lab) => lab.id) ?? [], + ), ), ) const title = createMemo(() => `${models()[0].name} vs ${models()[1].name} - AI Model Comparison`) const description = createMemo( () => - `Compare ${models()[0].name} from ${models()[0].labName} and ${models()[1].name} from ${models()[1].labName} on key metrics including benchmarks, price, context length, usage, and model features.`, + `Compare ${comparisonModelLabel(models()[0])} and ${comparisonModelLabel(models()[1])} on key metrics including benchmarks, price, context length, usage, and model features.`, ) const canonicalPath = createMemo(() => { if (props.family) return canonicalFamilyComparisonPath(props.family.first, props.family.second) @@ -206,7 +214,7 @@ export default function ModelCompareDetailPage(props: ModelCompareDetailPageProp "@type": "SoftwareApplication", name: model.name, applicationCategory: "AI model", - provider: model.labName, + ...(model.labName ? { provider: model.labName } : {}), })), }), ) @@ -459,7 +467,9 @@ function CompareDetailSelectButton(props: { aria-expanded={props.expanded} onClick={props.onOpen} > - + + {(labName) => } + {props.model.name} @@ -581,8 +591,7 @@ function CompareModelDetail(props: { model: ModelCatalogEntry }) {

    - {props.model.description ?? - `${props.model.name} is an AI model from ${formatCatalogLabName(props.model.lab)}.`} + {props.model.description ?? `${props.model.name} is an AI model.`}

    @@ -789,9 +798,11 @@ function LabLogo(props: { lab: string; label: string; size: "large" | "small" | const iconId = () => getProviderIconId(props.lab) return ( - - + + + + ) } @@ -832,11 +843,13 @@ function buildComparisonModel( modelParam: string, catalog: ModelCatalogEntry | null, stats: StatsModelComparisonEntry | null, + catalogLabs: readonly string[], ): ComparisonModel { + const lab = catalog?.lab ?? stats?.provider ?? catalogSlug(labParam) return { name: catalog?.name ?? stats?.model ?? formatParamName(modelParam), - lab: catalog?.lab ?? stats?.provider ?? catalogSlug(labParam), - labName: formatCatalogLabName(catalog?.lab ?? stats?.provider ?? labParam), + lab, + labName: isKnownCatalogLab(lab, catalogLabs) ? formatCatalogLabName(lab) : undefined, slug: catalog?.slug ?? stats?.slug ?? catalogSlug(modelParam), catalog, stats, @@ -877,7 +890,7 @@ function buildComparisonDetailSections(models: readonly ComparisonModel[]): Comp rows: [ comparisonDetailRow( "Author", - models.map((model) => linkedTextCell(model.stats?.author ?? model.labName, labHref(model.lab))), + models.map(providerDetailCell), ), comparisonDetailRow( "Context length", @@ -899,7 +912,7 @@ function buildComparisonDetailSections(models: readonly ComparisonModel[]): Comp ), comparisonDetailRow( "Providers", - models.map((model) => linkedTextCell(model.labName, labHref(model.lab))), + models.map(providerDetailCell), ), ], }, @@ -1013,6 +1026,15 @@ function comparisonRef(model: ComparisonModel): ComparisonModelRef { } } +function comparisonModelLabel(model: ComparisonModel) { + return model.labName ? `${model.name} from ${model.labName}` : model.name +} + +function providerDetailCell(model: ComparisonModel): ComparisonDetailCell { + if (!model.labName) return textCell("") + return linkedTextCell(model.stats?.author ?? model.labName ?? "", labHref(model.lab)) +} + function textCell(value: string): ComparisonDetailCell { return { value } } diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx index 977660a83..24cba8c08 100644 --- a/packages/stats/app/src/routes/[lab]/[model].tsx +++ b/packages/stats/app/src/routes/[lab]/[model].tsx @@ -17,7 +17,13 @@ import { LocaleLinks } from "../../component/locale-links" import { useI18n } from "../../context/i18n" import { useLanguage } from "../../context/language" import { localizedUrl } from "../../lib/language" -import { findModelCatalogEntry, formatCatalogLabName, loadModelCatalog, type ModelCatalogEntry } from "../model-catalog" +import { + findModelCatalogEntry, + formatCatalogLabName, + isKnownCatalogLab, + loadModelCatalog, + type ModelCatalogEntry, +} from "../model-catalog" import { SectionHeading } from "../section-heading" import { runStatsEffect } from "../../stats-runtime" import { setStatsPageCacheHeaders } from "../stats-cache" @@ -96,7 +102,9 @@ export default function StatsModel() { const modelName = createMemo( () => catalogEntry()?.name ?? publicModelName(canonicalModel()) ?? i18n.t("model.fallback"), ) - const labName = createMemo(() => formatCatalogLabName(catalogEntry()?.lab ?? stats()?.provider ?? labParam())) + const lab = createMemo(() => catalogEntry()?.lab ?? stats()?.provider ?? labParam()) + const catalogLabs = createMemo(() => page()?.catalog.labs.map((item) => item.id) ?? []) + const labName = createMemo(() => (isKnownCatalogLab(lab(), catalogLabs()) ? formatCatalogLabName(lab()) : undefined)) const formerName = createMemo(() => formerModelName(canonicalModel())) const searchModelName = createMemo(() => (formerName() ? `${modelName()} (formerly ${formerName()})` : modelName())) const modelTitle = createMemo(() => i18n.t("model.title", { model: searchModelName() })) @@ -185,9 +193,14 @@ export default function StatsModel() { - + props.catalog?.lab ?? props.data?.provider ?? props.labName + const labId = () => props.catalog?.lab ?? props.data?.provider + const hasLab = () => props.labName !== undefined const modelName = () => props.catalog?.name ?? props.data?.model ?? i18n.t("model.fallback") const weights = () => props.catalog?.weights[0] const labs = () => props.catalogData?.labs ?? [] @@ -281,35 +295,31 @@ function ModelHero(props: { Data - / - 0} - fallback={ - - {props.labName} - - - } - > - ({ - href: language.route(`${import.meta.env.BASE_URL}${lab.id}`), - label: lab.name, - value: lab.id, - }))} - value={providerSlug(labId())} - variant="model" - /> + + / + 0} + fallback={{props.labName}} + > + ({ + href: language.route(`${import.meta.env.BASE_URL}${lab.id}`), + label: lab.name, + value: lab.id, + }))} + value={providerSlug(labId() ?? "")} + variant="model" + /> + / 0} fallback={ - - {modelName()} - + + {modelName()} } > @@ -328,9 +338,11 @@ function ModelHero(props: {
    - - + + + +

    {modelName()}

    @@ -980,7 +992,7 @@ function GeoCountryList(props: { ) } -function ModelPeersSection(props: { data: StatsModelPageData | null }) { +function ModelPeersSection(props: { data: StatsModelPageData | null; catalogLabs: readonly string[] }) { const i18n = useI18n() return (
    @@ -993,7 +1005,7 @@ function ModelPeersSection(props: { data: StatsModelPageData | null }) { >
      - {(peer) => } + {(peer) => }
    @@ -1011,23 +1023,29 @@ function MetricCard(props: { label: string; value: string; detail?: string; stat ) } -function PeerRow(props: { peer: ModelPeerEntry; active: boolean }) { +function PeerRow(props: { peer: ModelPeerEntry; active: boolean; catalogLabs: readonly string[] }) { const language = useLanguage() + const hasProvider = () => isKnownCatalogLab(props.peer.provider, props.catalogLabs) return (
  • {String(props.peer.rank).padStart(2, "0")} - - + + + + {props.peer.model} - {props.peer.author} + + {props.peer.author} + {formatTokens(props.peer.tokens)} @@ -1050,6 +1068,7 @@ function ModelEmptyState(props: { title: string; description: string; compact?: function modelComparisonPairs( catalogModels: ModelCatalogOption[] | undefined, + catalogLabs: readonly string[], catalogEntry: ModelCatalogEntry | null, data: StatsModelPageData | null, ) { @@ -1064,7 +1083,7 @@ function modelComparisonPairs( name: peer.model, lab: peer.provider, slug: peer.slug, - labName: peer.author, + labName: isKnownCatalogLab(peer.provider, catalogLabs) ? peer.author : undefined, metric: `#${peer.rank} / ${formatTokens(peer.tokens)}`, }, detail: "Usage peer", @@ -1090,7 +1109,7 @@ function modelComparisonRef( name: data.model, lab: data.provider, slug: data.slug, - labName: data.author, + labName: undefined, metric: `#${data.rank}`, } } diff --git a/packages/stats/app/src/routes/compare-cards.tsx b/packages/stats/app/src/routes/compare-cards.tsx index 24077bc3b..50a0a3800 100644 --- a/packages/stats/app/src/routes/compare-cards.tsx +++ b/packages/stats/app/src/routes/compare-cards.tsx @@ -119,17 +119,24 @@ function ComparisonCardIcon() { } function ComparisonPanelCard(props: { pair: ComparisonPair }) { + const firstLabName = () => props.pair.first.labName + const secondLabName = () => props.pair.second.labName + return ( {props.pair.detail} {props.pair.first.name} vs {props.pair.second.name} -

    - {props.pair.first.labName ?? formatCatalogLabName(props.pair.first.lab)} - - {props.pair.second.labName ?? formatCatalogLabName(props.pair.second.lab)} -

    + +

    + {(name) => {name()}} + + + + {(name) => {name()}} +

    +
    {props.pair.first.metric ?? "Listed"} / {props.pair.second.metric ?? "Listed"} @@ -143,14 +150,16 @@ function ComparisonLabLogo(props: { model: ComparisonModelRef }) { const iconId = () => providerIconId(props.model.lab) return ( - - + + + + ) } diff --git a/packages/stats/app/src/routes/compare-radar.tsx b/packages/stats/app/src/routes/compare-radar.tsx index d7403809a..35ada1288 100644 --- a/packages/stats/app/src/routes/compare-radar.tsx +++ b/packages/stats/app/src/routes/compare-radar.tsx @@ -9,7 +9,7 @@ const toolUseBenchmarkPattern = /(terminal bench|claw eval|tau ?(?:bench|2|3))/ export type ComparisonRadarModel = { name: string - labName: string + labName?: string catalog: ModelCatalogEntry | null } @@ -61,7 +61,7 @@ export function ComparisonRadar(props: ComparisonRadarProps) {