From 46a14e685a1f07f5b5eed13223f4480e8270595f Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 12 Aug 2026 09:49:10 -0500 Subject: [PATCH 001/200] feat(stats): query r2 data catalog --- infra/stats.ts | 14 +- packages/stats/core/package.json | 1 + .../stats/core/src/domain/inference.test.ts | 23 +- packages/stats/core/src/domain/inference.ts | 243 ++++++++++-------- packages/stats/core/src/r2-sql.ts | 105 ++++++++ packages/stats/core/src/resource.d.ts | 11 + packages/stats/core/src/stat-sync.ts | 27 +- packages/stats/server/src/stat-sync.ts | 10 +- 8 files changed, 310 insertions(+), 124 deletions(-) create mode 100644 packages/stats/core/src/r2-sql.ts diff --git a/infra/stats.ts b/infra/stats.ts index 10d37119f0d7..29c9537daf88 100644 --- a/infra/stats.ts +++ b/infra/stats.ts @@ -181,6 +181,16 @@ const statsSyncConfig = new sst.Linkable("StatsSyncConfig", { }, }) +const r2SqlAuthToken = new sst.Secret("R2SqlAuthToken") +const r2Sql = new sst.Linkable("R2Sql", { + properties: { + accountId: "15d29c8639fd3733b1b5486a2acfd968", + bucket: `platform-${$app.stage}-lake`, + namespace: "inference", + table: "generation", + }, +}) + export const statSync = new sst.aws.Service("StatsSyncService", { cluster: lakeCluster, architecture: "arm64", @@ -193,7 +203,9 @@ export const statSync = new sst.aws.Service("StatsSyncService", { dockerfile: "packages/stats/server/Dockerfile", }, command: ["bun", "src/stat-sync.ts"], - link: [database, inferenceEvent, statsSyncConfig], + // Keep the legacy Athena link and IAM permissions during the first R2-backed + // release so reverting the application code remains a one-deploy rollback. + link: [database, inferenceEvent, r2Sql, r2SqlAuthToken, statsSyncConfig], permissions: lakeQueryPermissions, scaling: { min: 1, diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json index ffedc71d4292..92e8ab0e262a 100644 --- a/packages/stats/core/package.json +++ b/packages/stats/core/package.json @@ -12,6 +12,7 @@ "./database": "./src/database.ts", "./database/*": "./src/database/*.ts", "./domain/*": "./src/domain/*.ts", + "./r2-sql": "./src/r2-sql.ts", "./runtime": "./src/runtime.ts", "./stat-sync": "./src/stat-sync.ts" }, diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index fa71fb51e60e..f58e7deab6a7 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test" -import { toGeoAggregate, toModelAggregate, toProviderAggregate } from "./inference" +import { buildStatsQueries, toGeoAggregate, toModelAggregate, toProviderAggregate } from "./inference" import { modelAuthor, normalizeInferenceModel, statModel, statProvider } from "./model-normalization" describe("inference stat normalization", () => { @@ -82,6 +82,27 @@ describe("inference stat normalization", () => { }), ).toMatchObject([{ period_key: "2026-W20" }]) }) + + test("builds bounded R2 SQL queries for each day and week", () => { + const queries = buildStatsQueries(new Date("2026-08-10T00:00:00.000Z"), new Date("2026-08-12T12:00:00.000Z"), { + namespace: "inference", + table: "generation", + dataset: "zen", + }) + + expect(queries).toHaveLength(8) + 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") + expect(queries[6]).toContain("'2026-08-12' AS period_key") + expect(queries[0]).toContain('FROM "inference"."generation"') + expect(queries[0]).toContain("event_type = 'generation.completed'") + expect(queries[0]).toContain("product = 'go'") + expect(queries[0]).toContain("LIMIT 10000") + expect(queries[0]).toContain("approx_distinct(session) AS sessions") + expect(queries[1]).toContain("'geo_model' ELSE 'geo'") + expect(queries[1]).toContain("0 AS sessions") + }) }) 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 558832f99536..ad2460530548 100644 --- a/packages/stats/core/src/domain/inference.ts +++ b/packages/stats/core/src/domain/inference.ts @@ -1,5 +1,5 @@ import { Resource } from "sst/resource" -import type { AthenaData } from "../athena" +import type { R2SqlData } from "../r2-sql" import type { GeoStatAggregate } from "./geo" import type { ModelStatAggregate } from "./model" import { @@ -13,22 +13,66 @@ import type { ProviderStatAggregate } from "./provider" import { normalizeCountry, normalizeTier, type StatBaseAggregate } from "./stat" export type StatDimension = "model" | "provider" | "geo" | "geo_model" +export type StatsQuerySource = { namespace: string; table: string; dataset: string } +type StatsQueryFamily = "usage" | "geo" -// All stat dimensions and both grains are computed in one query via GROUPING SETS so -// the source table is scanned once per sync pass; separate queries per dimension (and -// the previous weekly/daily UNION ALL) each re-scanned the same events. -export function buildStatsQuery(periodStart: Date, periodEnd: Date) { - const periodStartValue = sqlString(periodStart.toISOString()) - const periodEndValue = sqlString(periodEnd.toISOString()) - const periodStartDateValue = sqlString(periodStart.toISOString().slice(0, 10)) - const periodEndDateValue = sqlString(periodEnd.toISOString().slice(0, 10)) - const sourceTable = [Resource.InferenceEvent.catalog, Resource.InferenceEvent.database, Resource.InferenceEvent.table] - .map(sqlIdentifier) - .join(".") +const DAY_MS = 86_400_000 +const WEEK_MS = 7 * DAY_MS + +// R2 SQL limits result sets to 10,000 rows and does not support OFFSET. Two +// queries per day/week keep each result bounded and avoid combining the costly +// distinct user/session aggregates with the high-cardinality geo dimensions. +export function buildStatsQueries(periodStart: Date, periodEnd: Date, input?: StatsQuerySource) { + const source = input ?? { + namespace: Resource.R2Sql.namespace, + table: Resource.R2Sql.table, + dataset: Resource.StatsSyncConfig.dataset, + } + return [...statPeriods("week", periodStart, periodEnd), ...statPeriods("day", periodStart, periodEnd)].flatMap( + (period) => [buildStatsQuery(period, source, "usage"), buildStatsQuery(period, source, "geo")], + ) +} + +function buildStatsQuery( + period: { grain: "day" | "week"; key: string; start: Date; end: Date }, + source: StatsQuerySource, + family: StatsQueryFamily, +) { + const periodStartValue = sqlString(period.start.toISOString()) + const periodEndValue = sqlString(period.end.toISOString()) + const ingestEndValue = sqlString(new Date(period.end.getTime() + DAY_MS).toISOString()) + const sourceTable = [source.namespace, source.table].map(sqlIdentifier).join(".") + const dimensions = + family === "usage" + ? `CASE WHEN grouping(model) = 0 THEN 'model' ELSE 'provider' END AS dimension, + tier, + provider, + CASE WHEN grouping(model) = 0 THEN model END AS model, + CASE WHEN grouping(model) = 0 THEN COALESCE(MAX(NULLIF(provider_model, '')), '') END AS provider_model, + null AS country, + null AS continent` + : `CASE WHEN grouping(model) = 0 THEN 'geo_model' ELSE 'geo' END AS dimension, + tier, + CASE WHEN grouping(model) = 0 THEN provider ELSE 'all' END AS provider, + CASE WHEN grouping(model) = 0 THEN model ELSE 'all' END AS model, + null AS provider_model, + country, + COALESCE(MAX(NULLIF(continent, '')), '') AS continent` + const distinctColumns = + family === "usage" + ? `approx_distinct(session) AS sessions, + approx_distinct(user_key) AS unique_users` + : `0 AS sessions, + 0 AS unique_users` + const groupingSets = + family === "usage" + ? `(tier, provider, model), + (tier, provider)` + : `(tier, country), + (tier, provider, model, country)` const aggregateColumns = ` - COUNT(DISTINCT session) AS sessions, + ${distinctColumns}, COUNT(*) AS requests, - COUNT(DISTINCT user_key) AS unique_users, COALESCE(SUM(tokens_input), 0) AS input_tokens, COALESCE(SUM(tokens_output), 0) AS output_tokens, COALESCE(SUM(tokens_reasoning), 0) AS reasoning_tokens, @@ -38,65 +82,57 @@ export function buildStatsQuery(periodStart: Date, periodEnd: Date) { COALESCE(SUM(cost_output_microcents), 0) AS output_cost_microcents, COALESCE(SUM(cost_total_microcents), 0) AS total_cost_microcents, AVG(duration_ms) AS avg_duration_ms, - approx_percentile(CAST(duration_ms AS double), 0.5) AS p50_duration_ms, - approx_percentile(CAST(duration_ms AS double), 0.95) AS p95_duration_ms, + null AS p50_duration_ms, + null AS p95_duration_ms, AVG(ttfb_ms) AS avg_ttfb_ms, - approx_percentile(CAST(ttfb_ms AS double), 0.5) AS p50_ttfb_ms, - approx_percentile(CAST(ttfb_ms AS double), 0.95) AS p95_ttfb_ms, + null AS p50_ttfb_ms, + null AS p95_ttfb_ms, AVG(output_tps) AS avg_output_tps, - SUM(CASE WHEN status >= 200 AND status < 400 THEN 1 ELSE 0 END) AS success_count, - SUM(CASE WHEN status >= 400 THEN 1 ELSE 0 END) AS error_count, + SUM(CASE WHEN outcome = 'succeeded' THEN 1 ELSE 0 END) AS success_count, + SUM(CASE WHEN outcome = 'failed' THEN 1 ELSE 0 END) AS error_count, COUNT(*) AS sample_count` return ` WITH normalized AS ( SELECT - from_iso8601_timestamp(event_timestamp) AS event_time, - model AS raw_model, - ${statModelSql("model", "provider_model")} AS model, - COALESCE(NULLIF(provider_model, ''), '') AS provider_model, - COALESCE(NULLIF(provider, ''), '') AS raw_provider, - UPPER(COALESCE(NULLIF(cf_country, ''), 'ZZ')) AS country, - COALESCE(NULLIF(cf_continent, ''), '') AS continent, - session, - COALESCE(NULLIF(workspace, ''), '') AS workspace, - COALESCE(NULLIF(api_key, ''), '') AS api_key, + model_requested AS raw_model, + ${statModelSql("model_requested", "route_model")} AS model, + COALESCE(NULLIF(route_model, ''), '') AS provider_model, + COALESCE(NULLIF(provider_id, ''), '') AS raw_provider, + UPPER(COALESCE(NULLIF(country, ''), 'ZZ')) AS country, + COALESCE(NULLIF(continent, ''), '') AS continent, + session_id AS session, + COALESCE(NULLIF(workspace_id, ''), '') AS workspace, + COALESCE(NULLIF(service_api_key_id, ''), '') AS api_key, COALESCE(NULLIF(user_id, ''), '') AS user_id, - status, - duration AS duration_ms, - time_to_first_byte AS ttfb_ms, - timestamp_first_byte, - timestamp_last_byte, + outcome, + duration_ms, + time_to_first_token_ms AS ttfb_ms, + CASE + WHEN first_token_at IS NULL OR last_token_at IS NULL THEN null + ELSE date_part('epoch', last_token_at) - date_part('epoch', first_token_at) + END AS output_seconds, tokens_input, tokens_output, tokens_reasoning, tokens_cache_read, - tokens_cache_write_5m, - tokens_cache_write_1h, - cost_input_microcents, - cost_output_microcents, - cost_total_microcents, - cost_input, - cost_output, - cost_total, - source + tokens_cache_write, + cost_input AS cost_input_microcents, + cost_output AS cost_output_microcents, + cost_total AS cost_total_microcents FROM ${sourceTable} - WHERE event_type = 'completions' - AND model IS NOT NULL - AND model <> '' - AND source = 'lite' - AND event_date >= ${periodStartDateValue} - AND event_date <= ${periodEndDateValue} - AND event_timestamp >= ${periodStartValue} - AND event_timestamp < ${periodEndValue} + WHERE event_type = 'generation.completed' + AND source IN ('inference', 'inference-legacy') + AND product = 'go' + AND model_requested IS NOT NULL + AND model_requested <> '' + AND __ingest_ts >= ${periodStartValue} + AND __ingest_ts < ${ingestEndValue} + AND started_at >= ${periodStartValue} + AND started_at < ${periodEndValue} ), filtered AS ( SELECT - event_time, - CASE - WHEN source = 'lite' THEN 'Go' - WHEN raw_model IN ('gpt-5-nano', 'grok-code', 'big-pickle') OR regexp_like(raw_model, '-free(:global)?$') THEN 'Free' - ELSE 'Paid' - END AS tier, + 'Go' AS tier, ${statProviderSql("model", "provider_model", "raw_provider")} AS provider, provider_model, model, @@ -104,63 +140,39 @@ WITH normalized AS ( continent, session, COALESCE(NULLIF(user_id, ''), NULLIF(workspace, ''), NULLIF(api_key, '')) AS user_key, - status, + outcome, duration_ms, ttfb_ms, CASE - WHEN timestamp_last_byte - timestamp_first_byte < 100 THEN null - ELSE CAST(tokens_output AS double) / (timestamp_last_byte - timestamp_first_byte) * 1000 + WHEN output_seconds < 0.1 THEN null + ELSE CAST(tokens_output AS double) / output_seconds END AS output_tps, tokens_input, tokens_output, tokens_reasoning, tokens_cache_read, - COALESCE(tokens_cache_read, 0) + COALESCE(tokens_cache_write_5m, 0) + COALESCE(tokens_cache_write_1h, 0) + COALESCE(tokens_input, 0) + COALESCE(tokens_output, 0) AS tokens_total, - COALESCE(cost_input_microcents, cost_input * 1000000) AS cost_input_microcents, - COALESCE(cost_output_microcents, cost_output * 1000000) AS cost_output_microcents, - COALESCE(cost_total_microcents, cost_total * 1000000) AS cost_total_microcents + COALESCE(tokens_cache_read, 0) + COALESCE(tokens_cache_write, 0) + COALESCE(tokens_input, 0) + COALESCE(tokens_output, 0) AS tokens_total, + cost_input_microcents, + cost_output_microcents, + cost_total_microcents FROM normalized WHERE lower(model) NOT IN (${[...EXCLUDED_MODELS].map(sqlString).join(", ")}) -), periods AS ( - SELECT - concat(CAST(year_of_week(event_time) AS varchar), '-W', lpad(CAST(week(event_time) AS varchar), 2, '0')) AS week_key, - substr(to_iso8601(date_trunc('day', event_time)), 1, 10) AS day_key, - * - FROM filtered ) SELECT - CASE WHEN grouping(week_key) = 0 THEN 'week' ELSE 'day' END AS grain, - COALESCE(week_key, day_key) AS period_key, - ${sqlString(Resource.StatsSyncConfig.dataset)} AS dataset, - CASE - WHEN grouping(country) = 0 AND grouping(model) = 0 THEN 'geo_model' - WHEN grouping(country) = 0 THEN 'geo' - WHEN grouping(model) = 0 THEN 'model' - ELSE 'provider' - END AS dimension, - tier, - CASE WHEN grouping(provider) = 0 THEN provider ELSE 'all' END AS provider, - CASE WHEN grouping(model) = 0 THEN model WHEN grouping(country) = 0 THEN 'all' END AS model, - CASE WHEN grouping(model) = 0 AND grouping(country) = 1 THEN COALESCE(MAX(NULLIF(provider_model, '')), '') END AS provider_model, - CASE WHEN grouping(country) = 0 THEN country END AS country, - CASE WHEN grouping(country) = 0 THEN COALESCE(MAX(NULLIF(continent, '')), '') END AS continent, + ${sqlString(period.grain)} AS grain, + ${sqlString(period.key)} AS period_key, + ${sqlString(source.dataset)} AS dataset, + ${dimensions}, ${aggregateColumns} -FROM periods +FROM filtered GROUP BY GROUPING SETS ( - (week_key, tier, provider, model), - (week_key, tier, provider), - (week_key, tier, country), - (week_key, tier, provider, model, country), - (day_key, tier, provider, model), - (day_key, tier, provider), - (day_key, tier, country), - (day_key, tier, provider, model, country) + ${groupingSets} ) -ORDER BY grain, period_key, total_tokens DESC +LIMIT 10000 ` } -export function toModelAggregate(data: AthenaData): ModelStatAggregate[] { +export function toModelAggregate(data: R2SqlData): ModelStatAggregate[] { const model = statModel(data.model, data.provider_model) const provider = statProvider(model, data.provider_model, data.provider) if (!provider) return [] @@ -170,13 +182,13 @@ export function toModelAggregate(data: AthenaData): ModelStatAggregate[] { ]) } -export function toProviderAggregate(data: AthenaData): ProviderStatAggregate[] { +export function toProviderAggregate(data: R2SqlData): ProviderStatAggregate[] { return toStatBaseAggregate(data).flatMap((base) => [ { ...base, provider: statProvider(data.model, data.provider_model, data.provider) || "unknown" }, ]) } -export function toGeoAggregate(data: AthenaData): GeoStatAggregate[] { +export function toGeoAggregate(data: R2SqlData): GeoStatAggregate[] { return toStatBaseAggregate(data).flatMap((base) => [ { ...base, @@ -188,7 +200,7 @@ export function toGeoAggregate(data: AthenaData): GeoStatAggregate[] { ]) } -function toStatBaseAggregate(data: AthenaData): StatBaseAggregate[] { +function toStatBaseAggregate(data: R2SqlData): StatBaseAggregate[] { const grain = data.grain === "day" || data.grain === "week" ? data.grain : undefined if (!grain || !data.period_key) return [] @@ -223,21 +235,21 @@ function toStatBaseAggregate(data: AthenaData): StatBaseAggregate[] { ] } -function integer(data: AthenaData, key: string) { +function integer(data: R2SqlData, key: string) { return Math.round(number(data, key)) } -function nullableNumber(data: AthenaData, key: string) { +function nullableNumber(data: R2SqlData, key: string) { if (data[key] === undefined || data[key] === "") return null return Number(number(data, key).toFixed(2)) } -function nullableInteger(data: AthenaData, key: string) { +function nullableInteger(data: R2SqlData, key: string) { if (data[key] === undefined || data[key] === "") return null return Math.round(number(data, key)) } -function number(data: AthenaData, key: string) { +function number(data: R2SqlData, key: string) { const value = Number(data[key]) return Number.isFinite(value) ? value : 0 } @@ -250,6 +262,29 @@ function sqlString(value: string) { return `'${value.replace(/'/g, "''")}'` } +function statPeriods(grain: "day" | "week", periodStart: Date, periodEnd: Date) { + const interval = grain === "day" ? DAY_MS : WEEK_MS + const count = Math.max(0, Math.ceil((periodEnd.getTime() - periodStart.getTime()) / interval)) + return Array.from({ length: count }, (_, index) => { + const start = new Date(periodStart.getTime() + index * interval) + return { + grain, + key: grain === "day" ? start.toISOString().slice(0, 10) : isoWeekKey(start), + start, + end: new Date(Math.min(start.getTime() + interval, periodEnd.getTime())), + } + }) +} + +function isoWeekKey(date: Date) { + const thursday = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate())) + const day = thursday.getUTCDay() || 7 + thursday.setUTCDate(thursday.getUTCDate() + 4 - day) + const year = thursday.getUTCFullYear() + const week = Math.ceil((thursday.getTime() - Date.UTC(year, 0, 1) + DAY_MS) / WEEK_MS) + return `${year}-W${String(week).padStart(2, "0")}` +} + function statModelSql(model: string, providerModel: string) { return `COALESCE(NULLIF(regexp_replace(CASE WHEN lower(${model}) = 'big-pickle' THEN NULLIF(${providerModel}, '') diff --git a/packages/stats/core/src/r2-sql.ts b/packages/stats/core/src/r2-sql.ts new file mode 100644 index 000000000000..91093643c0e2 --- /dev/null +++ b/packages/stats/core/src/r2-sql.ts @@ -0,0 +1,105 @@ +import { Context, Effect, Layer, Schema } from "effect" +import { Resource } from "sst/resource" + +const R2_SQL_MAX_ROWS = 10_000 +const R2SqlValue = Schema.Union([Schema.String, Schema.Number, Schema.Boolean, Schema.Null]) +const R2SqlResponse = Schema.Struct({ + success: Schema.Boolean, + result: Schema.optional( + Schema.NullOr( + Schema.Struct({ + request_id: Schema.String, + rows: Schema.Array(Schema.Record(Schema.String, R2SqlValue)), + }), + ), + ), + errors: Schema.Array(Schema.Unknown), +}) +const decodeResponse = Schema.decodeUnknownEffect(Schema.fromJsonString(R2SqlResponse)) + +export type R2SqlData = Record + +export class R2SqlQueryError extends Error { + readonly _tag = "R2SqlQueryError" + readonly requestId?: string + readonly status?: number + + constructor(input: { message: string; requestId?: string; status?: number; cause?: unknown }) { + super(input.message, { cause: input.cause }) + this.name = "R2SqlQueryError" + this.requestId = input.requestId + this.status = input.status + } +} + +export declare namespace R2Sql { + export interface Service { + readonly query: (query: string) => Effect.Effect + } +} + +export class R2Sql extends Context.Service()("@opencode/stats/R2Sql") { + static readonly layer: Layer.Layer = Layer.succeed( + R2Sql, + R2Sql.of({ + query: Effect.fn("R2Sql.query")(function* (query: string) { + const response = yield* Effect.tryPromise({ + try: () => + Bun.fetch( + `https://api.sql.cloudflarestorage.com/api/v1/accounts/${Resource.R2Sql.accountId}/r2-sql/query/${Resource.R2Sql.bucket}`, + { + method: "POST", + headers: { + Authorization: `Bearer ${Resource.R2SqlAuthToken.value}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ query }), + }, + ), + catch: (cause) => new R2SqlQueryError({ message: "Failed to run R2 SQL stats query", cause }), + }) + const body = yield* Effect.tryPromise({ + try: () => response.text(), + catch: (cause) => + new R2SqlQueryError({ message: "Failed to read R2 SQL stats response", status: response.status, cause }), + }) + const decoded = yield* decodeResponse(body).pipe( + Effect.mapError( + (cause) => + new R2SqlQueryError({ + message: "R2 SQL returned an invalid stats response", + status: response.status, + cause, + }), + ), + ) + if (!response.ok || !decoded.success || !decoded.result) + return yield* Effect.fail( + new R2SqlQueryError({ + message: `R2 SQL stats query failed: ${JSON.stringify(decoded.errors)}`, + requestId: decoded.result?.request_id, + status: response.status, + }), + ) + + // R2 SQL has no OFFSET support and caps LIMIT at 10,000. Each stats + // query is scoped to one day or week, and reaching the cap is treated as + // an error so a newly high-cardinality period can never be truncated. + if (decoded.result.rows.length >= R2_SQL_MAX_ROWS) + return yield* Effect.fail( + new R2SqlQueryError({ + message: `R2 SQL stats query reached the ${R2_SQL_MAX_ROWS} row limit`, + requestId: decoded.result.request_id, + status: response.status, + }), + ) + + return decoded.result.rows.map((row) => + Object.fromEntries( + Object.entries(row).flatMap(([key, value]) => (value === null ? [] : [[key, String(value)]])), + ), + ) + }), + }), + ) +} diff --git a/packages/stats/core/src/resource.d.ts b/packages/stats/core/src/resource.d.ts index 8343f7baa63d..b8017777971e 100644 --- a/packages/stats/core/src/resource.d.ts +++ b/packages/stats/core/src/resource.d.ts @@ -11,6 +11,17 @@ declare module "sst/resource" { type: "sst.sst.Linkable" workgroup: string } + R2Sql: { + accountId: string + bucket: string + namespace: string + table: string + type: "sst.sst.Linkable" + } + R2SqlAuthToken: { + type: "sst.sst.Secret" + value: string + } StatsSyncConfig: { dataset: string type: "sst.sst.Linkable" diff --git a/packages/stats/core/src/stat-sync.ts b/packages/stats/core/src/stat-sync.ts index 736ca852f3f4..ceec6f7e6dcc 100644 --- a/packages/stats/core/src/stat-sync.ts +++ b/packages/stats/core/src/stat-sync.ts @@ -1,12 +1,12 @@ import { DateTime, Effect } from "effect" import { Resource } from "sst/resource" -import { Athena, AthenaQueryError, AthenaQueryTimeoutError } from "./athena" import { DatabaseError } from "./database" import { GeoStatRepo, rowsFromAggregates as geoRowsFromAggregates } from "./domain/geo" -import { buildStatsQuery, toGeoAggregate, toModelAggregate, toProviderAggregate } from "./domain/inference" +import { buildStatsQueries, toGeoAggregate, toModelAggregate, toProviderAggregate } 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 { 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() @@ -18,23 +18,25 @@ const DISPLAY_WINDOW_MS = 56 * 86_400_000 const INCREMENTAL_LOOKBACK_MS = 2 * 3_600_000 export type SyncStatsResult = { ok: true; rows: number; startedAt: string; periodStart: string; periodEnd: string } -export type SyncStatsError = AthenaQueryError | AthenaQueryTimeoutError | DatabaseError +export type SyncStatsError = R2SqlQueryError | DatabaseError export const syncStats: (options?: { full?: boolean -}) => Effect.Effect = +}) => 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) - const athena = yield* Athena + const r2Sql = yield* R2Sql const modelStats = yield* ModelStatRepo const providerStats = yield* ProviderStatRepo const geoStats = yield* GeoStatRepo yield* logRuntimeCheck() - const rows = yield* athena.query(buildStatsQuery(periodStart, periodEnd)) + const rows = yield* Effect.forEach(buildStatsQueries(periodStart, periodEnd), r2Sql.query, { + concurrency: 4, + }).pipe(Effect.map((batches) => batches.flat())) const modelRows = modelRowsFromAggregates(rows.filter((row) => row.dimension === "model").flatMap(toModelAggregate)) const providerRows = providerRowsFromAggregates( rows.filter((row) => row.dimension === "provider").flatMap(toProviderAggregate), @@ -77,7 +79,7 @@ export const syncStats: (options?: { } }) -// May 27 was partial, so keep Athena stats anchored at the first complete day. +// May 27 was partial, so keep stats anchored at the first complete day. function fullPeriodStart(periodEnd: Date) { return new Date( Math.max( @@ -99,13 +101,12 @@ function incrementalPeriodStart(periodEnd: Date) { function logRuntimeCheck() { return Effect.logInfo( - `athena stats runtime check ${JSON.stringify({ - catalog: Resource.InferenceEvent.catalog, - database: Resource.InferenceEvent.database, + `r2 sql stats runtime check ${JSON.stringify({ + accountId: Resource.R2Sql.accountId, + bucket: Resource.R2Sql.bucket, dataset: Resource.StatsSyncConfig.dataset, - table: Resource.InferenceEvent.table, - workgroup: Resource.InferenceEvent.workgroup, - region: Resource.InferenceEvent.region, + namespace: Resource.R2Sql.namespace, + table: Resource.R2Sql.table, stage: Resource.App.stage, })}`, ) diff --git a/packages/stats/server/src/stat-sync.ts b/packages/stats/server/src/stat-sync.ts index 613fbec5b7d4..797660963267 100644 --- a/packages/stats/server/src/stat-sync.ts +++ b/packages/stats/server/src/stat-sync.ts @@ -1,6 +1,6 @@ import * as NodeRuntime from "@effect/platform-node/NodeRuntime" -import { Athena } from "@opencode-ai/stats-core/athena" import { ModelStatRepo } from "@opencode-ai/stats-core/domain/model" +import { R2Sql } from "@opencode-ai/stats-core/r2-sql" import { layer as statsLayer } from "@opencode-ai/stats-core/runtime" import { syncStats } from "@opencode-ai/stats-core/stat-sync" import { Cause, Duration, Effect, Layer, Schedule } from "effect" @@ -8,7 +8,7 @@ import { Cause, Duration, Effect, Layer, Schedule } from "effect" const SYNC_INTERVAL = "1 hour" const SYNC_INTERVAL_MS = 3_600_000 -const runtimeLayer = Layer.mergeAll(statsLayer, Athena.layer) +const runtimeLayer = Layer.mergeAll(statsLayer, R2Sql.layer) const daemon = Effect.gen(function* () { yield* Effect.logInfo("stats sync daemon started") @@ -40,9 +40,9 @@ const daemon = Effect.gen(function* () { yield* pass.pipe(Effect.repeat(Schedule.fixed(SYNC_INTERVAL))) }).pipe(Effect.forkScoped) -// A restarted daemon must not immediately re-run the expensive Athena pass; resume -// the hourly cadence from the last completed sync instead. This caps the Athena -// spend of a crash loop at one pass per interval. +// A restarted daemon must not immediately re-run the R2 SQL pass; resume the +// hourly cadence from the last completed sync instead. This caps the query spend +// of a crash loop at one pass per interval. const initialDelay = Effect.fnUntraced(function* () { const modelStats = yield* ModelStatRepo const lastSynced = yield* modelStats.lastSyncedAt().pipe(Effect.catchCause(() => Effect.succeed(null))) From d92d1e654bd1aa8ccb972b3059825314c1633eb8 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 12 Aug 2026 10:51:52 -0400 Subject: [PATCH 002/200] docs(zen): add Grok 4.6 --- packages/web/src/content/docs/ar/zen.mdx | 3 +++ packages/web/src/content/docs/bs/zen.mdx | 3 +++ packages/web/src/content/docs/da/zen.mdx | 3 +++ packages/web/src/content/docs/de/zen.mdx | 3 +++ packages/web/src/content/docs/es/zen.mdx | 3 +++ packages/web/src/content/docs/fr/zen.mdx | 3 +++ packages/web/src/content/docs/it/zen.mdx | 3 +++ packages/web/src/content/docs/ja/zen.mdx | 3 +++ packages/web/src/content/docs/ko/zen.mdx | 3 +++ packages/web/src/content/docs/nb/zen.mdx | 3 +++ packages/web/src/content/docs/pl/zen.mdx | 3 +++ packages/web/src/content/docs/pt-br/zen.mdx | 3 +++ packages/web/src/content/docs/ru/zen.mdx | 3 +++ packages/web/src/content/docs/th/zen.mdx | 3 +++ packages/web/src/content/docs/tr/zen.mdx | 3 +++ packages/web/src/content/docs/zen.mdx | 3 +++ packages/web/src/content/docs/zh-cn/zen.mdx | 3 +++ packages/web/src/content/docs/zh-tw/zen.mdx | 3 +++ 18 files changed, 54 insertions(+) diff --git a/packages/web/src/content/docs/ar/zen.mdx b/packages/web/src/content/docs/ar/zen.mdx index 709ddd4eca16..5c3b4b04c4e6 100644 --- a/packages/web/src/content/docs/ar/zen.mdx +++ b/packages/web/src/content/docs/ar/zen.mdx @@ -90,6 +90,7 @@ OpenCode Zen هي بوابة AI تتيح لك الوصول إلى هذه الن | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -178,6 +179,8 @@ https://opencode.ai/zen/v1/models | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/bs/zen.mdx b/packages/web/src/content/docs/bs/zen.mdx index 84ff2270f5a2..8c315d508d12 100644 --- a/packages/web/src/content/docs/bs/zen.mdx +++ b/packages/web/src/content/docs/bs/zen.mdx @@ -95,6 +95,7 @@ Našim modelima možete pristupiti i preko sljedećih API endpointa. | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -185,6 +186,8 @@ Podržavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**. | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/da/zen.mdx b/packages/web/src/content/docs/da/zen.mdx index ad869d1f8cb8..fb5b85b77255 100644 --- a/packages/web/src/content/docs/da/zen.mdx +++ b/packages/web/src/content/docs/da/zen.mdx @@ -95,6 +95,7 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints. | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -185,6 +186,8 @@ Vi understøtter en pay-as-you-go-model. Nedenfor er priserne **pr. 1M tokens**. | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/de/zen.mdx b/packages/web/src/content/docs/de/zen.mdx index b836a1764c00..c7e1ad687847 100644 --- a/packages/web/src/content/docs/de/zen.mdx +++ b/packages/web/src/content/docs/de/zen.mdx @@ -86,6 +86,7 @@ Du kannst auch über die folgenden API-Endpunkte auf unsere Modelle zugreifen. | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -174,6 +175,8 @@ Wir unterstützen ein Pay-as-you-go-Modell. Unten findest du die Preise **pro 1M | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/es/zen.mdx b/packages/web/src/content/docs/es/zen.mdx index 1685cbbf07e6..f325c7f124ce 100644 --- a/packages/web/src/content/docs/es/zen.mdx +++ b/packages/web/src/content/docs/es/zen.mdx @@ -95,6 +95,7 @@ También puedes acceder a nuestros modelos a través de los siguientes endpoints | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -185,6 +186,8 @@ Admitimos un modelo de pago por uso. A continuación se muestran los precios **p | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/fr/zen.mdx b/packages/web/src/content/docs/fr/zen.mdx index 85414c4410dc..536224829028 100644 --- a/packages/web/src/content/docs/fr/zen.mdx +++ b/packages/web/src/content/docs/fr/zen.mdx @@ -86,6 +86,7 @@ Vous pouvez également accéder à nos modèles via les points de terminaison AP | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -174,6 +175,8 @@ Nous prenons en charge un modèle de paiement à l'utilisation. Vous trouverez c | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/it/zen.mdx b/packages/web/src/content/docs/it/zen.mdx index 7620ee13b072..8b9c50e0f735 100644 --- a/packages/web/src/content/docs/it/zen.mdx +++ b/packages/web/src/content/docs/it/zen.mdx @@ -95,6 +95,7 @@ Puoi anche accedere ai nostri modelli tramite i seguenti endpoint API. | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -185,6 +186,8 @@ Supportiamo un modello pay-as-you-go. Qui sotto trovi i prezzi **per 1M token**. | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/ja/zen.mdx b/packages/web/src/content/docs/ja/zen.mdx index cb72bab04c2e..0f8b9005befc 100644 --- a/packages/web/src/content/docs/ja/zen.mdx +++ b/packages/web/src/content/docs/ja/zen.mdx @@ -86,6 +86,7 @@ OpenCode Zen は、OpenCode のほかのプロバイダーと同じように動 | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -174,6 +175,8 @@ https://opencode.ai/zen/v1/models | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/ko/zen.mdx b/packages/web/src/content/docs/ko/zen.mdx index 1369c8ab7aa2..2e8129b8329c 100644 --- a/packages/web/src/content/docs/ko/zen.mdx +++ b/packages/web/src/content/docs/ko/zen.mdx @@ -86,6 +86,7 @@ OpenCode Zen은 OpenCode의 다른 provider와 똑같이 작동합니다. | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -174,6 +175,8 @@ https://opencode.ai/zen/v1/models | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/nb/zen.mdx b/packages/web/src/content/docs/nb/zen.mdx index de0d15ee6dd0..9afef5334842 100644 --- a/packages/web/src/content/docs/nb/zen.mdx +++ b/packages/web/src/content/docs/nb/zen.mdx @@ -95,6 +95,7 @@ Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter. | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -185,6 +186,8 @@ Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1M tokens**. | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/pl/zen.mdx b/packages/web/src/content/docs/pl/zen.mdx index cc52f21def6d..70dabc77e3cd 100644 --- a/packages/web/src/content/docs/pl/zen.mdx +++ b/packages/web/src/content/docs/pl/zen.mdx @@ -95,6 +95,7 @@ Możesz też uzyskać dostęp do naszych modeli przez poniższe endpointy API. | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -185,6 +186,8 @@ Obsługujemy model pay-as-you-go. Poniżej znajdują się ceny **za 1M tokenów* | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/pt-br/zen.mdx b/packages/web/src/content/docs/pt-br/zen.mdx index 3364fb61d1c3..95b153962a44 100644 --- a/packages/web/src/content/docs/pt-br/zen.mdx +++ b/packages/web/src/content/docs/pt-br/zen.mdx @@ -86,6 +86,7 @@ Você também pode acessar nossos modelos pelos seguintes endpoints de API. | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -174,6 +175,8 @@ Oferecemos um modelo pay-as-you-go. Abaixo estão os preços **por 1M tokens**. | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/ru/zen.mdx b/packages/web/src/content/docs/ru/zen.mdx index 7fb3d06e0ed3..1bd3afa34233 100644 --- a/packages/web/src/content/docs/ru/zen.mdx +++ b/packages/web/src/content/docs/ru/zen.mdx @@ -95,6 +95,7 @@ OpenCode Zen работает как любой другой провайдер | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -185,6 +186,8 @@ https://opencode.ai/zen/v1/models | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/th/zen.mdx b/packages/web/src/content/docs/th/zen.mdx index 8ec2945a9049..83b785136a8a 100644 --- a/packages/web/src/content/docs/th/zen.mdx +++ b/packages/web/src/content/docs/th/zen.mdx @@ -88,6 +88,7 @@ OpenCode Zen ทำงานเหมือน provider อื่น ๆ ใน | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -176,6 +177,8 @@ https://opencode.ai/zen/v1/models | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/tr/zen.mdx b/packages/web/src/content/docs/tr/zen.mdx index d15490cc7d71..ec9cd41d509d 100644 --- a/packages/web/src/content/docs/tr/zen.mdx +++ b/packages/web/src/content/docs/tr/zen.mdx @@ -86,6 +86,7 @@ Modellerimize aşağıdaki API uç noktaları aracılığıyla da erişebilirsin | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -174,6 +175,8 @@ Kullandıkça öde modelini destekliyoruz. Aşağıda **1M token başına** fiya | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index 668ba29b23ff..3fa6c16fa24d 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -95,6 +95,7 @@ You can also access our models through the following API endpoints. | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -185,6 +186,8 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index f1e12f3e8031..064bd76b5a05 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -86,6 +86,7 @@ OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -174,6 +175,8 @@ https://opencode.ai/zen/v1/models | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | diff --git a/packages/web/src/content/docs/zh-tw/zen.mdx b/packages/web/src/content/docs/zh-tw/zen.mdx index 47795d2cde1c..4bb836112dd8 100644 --- a/packages/web/src/content/docs/zh-tw/zen.mdx +++ b/packages/web/src/content/docs/zh-tw/zen.mdx @@ -90,6 +90,7 @@ OpenCode Zen 的運作方式和 OpenCode 中的其他供應商一樣。 | 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` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| 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` | | Qwen3.7 Max | qwen3.7-max | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | @@ -179,6 +180,8 @@ https://opencode.ai/zen/v1/models | Gemini 3.1 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - | | Gemini 3.1 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - | | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| Grok 4.6 (≤ 200K tokens) | $2.00 | $6.00 | $0.50 | - | +| Grok 4.6 (> 200K tokens) | $4.00 | $12.00 | $1.00 | - | | 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 | - | From 8571a922dbb3d8d72f6b743607fafdd82954ac91 Mon Sep 17 00:00:00 2001 From: Matthew Feroz <136640686+MatthewFeroz@users.noreply.github.com> Date: Wed, 12 Aug 2026 11:31:19 -0400 Subject: [PATCH 003/200] fix(provider): add Merge Gateway reasoning variants (#41867) --- packages/opencode/src/provider/transform.ts | 3 +++ .../opencode/test/provider/provider.test.ts | 27 +++++++++++++++++++ .../opencode/test/provider/transform.test.ts | 20 ++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 4a2738e875ee..fdd03d520566 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -84,6 +84,8 @@ function sdkKey(npm: string): string | undefined { return "gateway" case "@openrouter/ai-sdk-provider": return "openrouter" + case "merge-gateway-ai-sdk-provider": + return "mergeGateway" case "ai-gateway-provider": // ai-gateway-provider/unified wraps createOpenAICompatible({ name: "Unified" }), // and @ai-sdk/openai-compatible parses compatibleOptions from one of @@ -1772,6 +1774,7 @@ function reasoningEffort(model: Provider.Model, effort: string) { case "@ai-sdk/togetherai": case "venice-ai-sdk-provider": case "ai-gateway-provider": + case "merge-gateway-ai-sdk-provider": return { reasoningEffort: effort } case "@ai-sdk/cohere": case "@ai-sdk/perplexity": diff --git a/packages/opencode/test/provider/provider.test.ts b/packages/opencode/test/provider/provider.test.ts index 44e82c7e1f44..df23a5c4963e 100644 --- a/packages/opencode/test/provider/provider.test.ts +++ b/packages/opencode/test/provider/provider.test.ts @@ -1548,6 +1548,33 @@ test("models.dev reasoning options replace generated variants and unsupported to expect(models["gemini-3-pro-fast"].variants).toEqual(models.override.variants) }) +test("MERGE Gateway exposes declared effort variants without model-specific handling", () => { + const provider = { + id: "merge-gateway", + name: "MERGE Gateway", + env: ["MERGE_GATEWAY_API_KEY"], + npm: "merge-gateway-ai-sdk-provider", + models: { + "openai/gpt-5.6-sol": { + id: "openai/gpt-5.6-sol", + name: "GPT-5.6 Sol", + reasoning: true, + reasoning_options: [{ type: "effort", values: ["none", "low", "medium", "high", "xhigh", "max"] }], + limit: { context: 128_000, output: 64_000 }, + }, + }, + } as unknown as ModelsDev.Provider + + expect(Provider.fromModelsDevProvider(provider).models["openai/gpt-5.6-sol"].variants).toEqual({ + none: { reasoningEffort: "none" }, + low: { reasoningEffort: "low" }, + medium: { reasoningEffort: "medium" }, + high: { reasoningEffort: "high" }, + xhigh: { reasoningEffort: "xhigh" }, + max: { reasoningEffort: "max" }, + }) +}) + test("public provider info omits invalid models", () => { const provider = Provider.fromModelsDevProvider({ id: "test", diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index d1e437642e65..701658987402 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -3370,6 +3370,7 @@ describe("ProviderTransform.reasoningVariants", () => { ["@ai-sdk/togetherai", { reasoningEffort: "high" }], ["venice-ai-sdk-provider", { reasoningEffort: "high" }], ["ai-gateway-provider", { reasoningEffort: "high" }], + ["merge-gateway-ai-sdk-provider", { reasoningEffort: "high" }], ["@ai-sdk/amazon-bedrock", { reasoningConfig: { type: "enabled", maxReasoningEffort: "high" } }], ])("converts effort for %s", (npm, expected, ...args) => { const id = args[0] as string | undefined @@ -5555,6 +5556,25 @@ describe("ProviderTransform.providerOptions - ai-gateway-provider", () => { }) }) +describe("ProviderTransform.providerOptions - merge-gateway-ai-sdk-provider", () => { + const model = { + id: "merge-gateway/openai/gpt-5.6-sol", + providerID: "merge-gateway", + api: { + id: "openai/gpt-5.6-sol", + url: "https://api-gateway.merge.dev/v1/ai-sdk", + npm: "merge-gateway-ai-sdk-provider", + }, + capabilities: { reasoning: true }, + } as any + + test("routes normalized effort under the adapter's mergeGateway key", () => { + expect(ProviderTransform.providerOptions(model, { reasoningEffort: "high" })).toEqual({ + mergeGateway: { reasoningEffort: "high" }, + }) + }) +}) + describe("ProviderTransform.options - kimi family adaptive thinking", () => { const createModel = (overrides: Record = {}) => ({ From ca3df21b7f8c2fa0adc07fdf3b7f33f29f5e1385 Mon Sep 17 00:00:00 2001 From: SKY ZHAO Date: Wed, 12 Aug 2026 23:31:47 +0800 Subject: [PATCH 004/200] docs: fix broken DigitalOcean and Daytona links (#42048) Co-authored-by: skyzhao1223 --- packages/web/src/content/docs/ecosystem.mdx | 2 +- packages/web/src/content/docs/providers.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web/src/content/docs/ecosystem.mdx b/packages/web/src/content/docs/ecosystem.mdx index ce4f3100afb5..6c13b3004caf 100644 --- a/packages/web/src/content/docs/ecosystem.mdx +++ b/packages/web/src/content/docs/ecosystem.mdx @@ -17,7 +17,7 @@ You can also check out [awesome-opencode](https://github.com/awesome-opencode/aw | Name | Description | | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| [opencode-daytona](https://github.com/daytonaio/daytona/tree/main/libs/opencode-plugin) | Automatically run OpenCode sessions in isolated Daytona sandboxes with git sync and live previews | +| [opencode-daytona](https://github.com/daytona/integrations/tree/main/packages/opencode-plugin) | Automatically run OpenCode sessions in isolated Daytona sandboxes with git sync and live previews | | [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | Automatically inject Helicone session headers for request grouping | | [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | Auto-inject TypeScript/Svelte types into file reads with lookup tools | | [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Use your ChatGPT Plus/Pro subscription instead of API credits | diff --git a/packages/web/src/content/docs/providers.mdx b/packages/web/src/content/docs/providers.mdx index a5a17de3a34d..ce40ce5a004c 100644 --- a/packages/web/src/content/docs/providers.mdx +++ b/packages/web/src/content/docs/providers.mdx @@ -759,7 +759,7 @@ Cloudflare Workers AI lets you run AI models on Cloudflare's global network dire ### DigitalOcean -DigitalOcean's [Inference Engine](https://docs.digitalocean.com/products/inference/) provides access to open models like GPT-OSS, Llama, Qwen, and DeepSeek, plus custom [Inference Routers](https://docs.digitalocean.com/products/genai-platform/concepts/inference-routers/) that route each request to the cheapest, fastest, or best-fit model for a task. +DigitalOcean's [Inference Engine](https://docs.digitalocean.com/products/inference/) provides access to open models like GPT-OSS, Llama, Qwen, and DeepSeek, plus custom [Inference Routers](https://docs.digitalocean.com/products/inference/how-to/use-inference-router/) that route each request to the cheapest, fastest, or best-fit model for a task. OpenCode supports two authentication methods: From 959c8bd4981fe838df102ddb7a7974e3117e92c6 Mon Sep 17 00:00:00 2001 From: SKY ZHAO Date: Wed, 12 Aug 2026 23:32:23 +0800 Subject: [PATCH 005/200] docs: fix provider display name and PAT typos (#42034) Co-authored-by: skyzhao1223 --- packages/web/src/content/docs/github.mdx | 2 +- packages/web/src/content/docs/providers.mdx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/web/src/content/docs/github.mdx b/packages/web/src/content/docs/github.mdx index a31fe1e7be82..e940b616b157 100644 --- a/packages/web/src/content/docs/github.mdx +++ b/packages/web/src/content/docs/github.mdx @@ -97,7 +97,7 @@ Or you can set it up manually. issues: write ``` - You can also use a [personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT) if preferred. + 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. --- diff --git a/packages/web/src/content/docs/providers.mdx b/packages/web/src/content/docs/providers.mdx index ce40ce5a004c..1a5d0fd23a97 100644 --- a/packages/web/src/content/docs/providers.mdx +++ b/packages/web/src/content/docs/providers.mdx @@ -2487,7 +2487,7 @@ You can use any OpenAI-compatible provider with opencode. Most modern AI provide "provider": { "myprovider": { "npm": "@ai-sdk/openai-compatible", - "name": "My AI ProviderDisplay Name", + "name": "My AI Provider Display Name", "options": { "baseURL": "https://api.myprovider.com/v1" }, @@ -2525,7 +2525,7 @@ Here's an example setting the `apiKey`, `headers`, and model `limit` options. "provider": { "myprovider": { "npm": "@ai-sdk/openai-compatible", - "name": "My AI ProviderDisplay Name", + "name": "My AI Provider Display Name", "options": { "baseURL": "https://api.myprovider.com/v1", "apiKey": "{env:ANTHROPIC_API_KEY}", From 7e0353cca93e4fc1e1f93cb58ea51603fbf83cd9 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 12 Aug 2026 11:36:23 -0500 Subject: [PATCH 006/200] fix(stats): correct r2 daily totals --- .../stats/core/src/domain/inference.test.ts | 38 +++++++++++++++++++ packages/stats/core/src/domain/inference.ts | 33 +++++++++------- 2 files changed, 58 insertions(+), 13 deletions(-) diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index f58e7deab6a7..858d2ab7fb40 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -103,6 +103,44 @@ describe("inference stat normalization", () => { expect(queries[1]).toContain("'geo_model' ELSE 'geo'") expect(queries[1]).toContain("0 AS sessions") }) + + test("aligns periods to UTC calendar boundaries", () => { + const queries = buildStatsQueries( + new Date("2026-06-17T15:56:00.000Z"), + new Date("2026-06-19T15:56:00.000Z"), + { + namespace: "inference", + table: "generation", + dataset: "zen", + }, + ) + + expect(queries).toHaveLength(8) + expect(queries[0]).toContain("'2026-W25' AS period_key") + expect(queries[0]).toContain("started_at >= '2026-06-15T00:00:00.000Z'") + expect(queries[2]).toContain("'2026-06-17' AS period_key") + expect(queries[2]).toContain("started_at >= '2026-06-17T00:00:00.000Z'") + expect(queries[2]).toContain("started_at < '2026-06-18T00:00:00.000Z'") + expect(queries[6]).toContain("'2026-06-19' AS period_key") + expect(queries[6]).toContain("started_at < '2026-06-19T15:56:00.000Z'") + }) + + test("uses an exclusive live and legacy source handoff", () => { + const [query] = buildStatsQueries( + new Date("2026-08-11T00:00:00.000Z"), + new Date("2026-08-12T00:00:00.000Z"), + { + namespace: "inference", + table: "generation", + dataset: "zen", + }, + ) + + 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')") + }) }) 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 ad2460530548..178bfd75deac 100644 --- a/packages/stats/core/src/domain/inference.ts +++ b/packages/stats/core/src/domain/inference.ts @@ -10,7 +10,14 @@ import { statProvider, } from "./model-normalization" import type { ProviderStatAggregate } from "./provider" -import { normalizeCountry, normalizeTier, type StatBaseAggregate } from "./stat" +import { + normalizeCountry, + normalizeTier, + periodKeyFor, + startOfIsoWeek, + startOfUtcDay, + type StatBaseAggregate, +} from "./stat" export type StatDimension = "model" | "provider" | "geo" | "geo_model" export type StatsQuerySource = { namespace: string; table: string; dataset: string } @@ -18,6 +25,10 @@ type StatsQueryFamily = "usage" | "geo" const DAY_MS = 86_400_000 const WEEK_MS = 7 * DAY_MS +// The typed production stream began before the legacy backfill's original end +// boundary. Use one exclusive handoff so the overlapping rows are never counted +// from both sources. +const LIVE_SOURCE_START = "2026-08-11T10:57:48.186Z" // R2 SQL limits result sets to 10,000 rows and does not support OFFSET. Two // queries per day/week keep each result bounded and avoid combining the costly @@ -123,6 +134,10 @@ WITH normalized AS ( 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' AND model_requested IS NOT NULL AND model_requested <> '' @@ -264,27 +279,19 @@ function sqlString(value: string) { function statPeriods(grain: "day" | "week", periodStart: Date, periodEnd: Date) { const interval = grain === "day" ? DAY_MS : WEEK_MS - const count = Math.max(0, Math.ceil((periodEnd.getTime() - periodStart.getTime()) / interval)) + const first = grain === "day" ? startOfUtcDay(periodStart) : startOfIsoWeek(periodStart) + const count = Math.max(0, Math.ceil((periodEnd.getTime() - first.getTime()) / interval)) return Array.from({ length: count }, (_, index) => { - const start = new Date(periodStart.getTime() + index * interval) + const start = new Date(first.getTime() + index * interval) return { grain, - key: grain === "day" ? start.toISOString().slice(0, 10) : isoWeekKey(start), + key: periodKeyFor(grain, start), start, end: new Date(Math.min(start.getTime() + interval, periodEnd.getTime())), } }) } -function isoWeekKey(date: Date) { - const thursday = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate())) - const day = thursday.getUTCDay() || 7 - thursday.setUTCDate(thursday.getUTCDate() + 4 - day) - const year = thursday.getUTCFullYear() - const week = Math.ceil((thursday.getTime() - Date.UTC(year, 0, 1) + DAY_MS) / WEEK_MS) - return `${year}-W${String(week).padStart(2, "0")}` -} - function statModelSql(model: string, providerModel: string) { return `COALESCE(NULLIF(regexp_replace(CASE WHEN lower(${model}) = 'big-pickle' THEN NULLIF(${providerModel}, '') From 284187ac55b9c38e3831143bed6c64053e8c85cc Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 12 Aug 2026 11:45:00 -0500 Subject: [PATCH 007/200] fix(ci): authenticate pulumi downloads --- .github/workflows/deploy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 18e6cf7acb44..ef977a93bd2d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -35,6 +35,7 @@ jobs: - run: bun sst deploy --stage=${{ github.ref_name }} 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 }} From 6d3ae4d63d9b4116b97e4cf77516ebf1467e1c48 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Wed, 12 Aug 2026 16:47:08 +0000 Subject: [PATCH 008/200] chore: generate --- .../stats/core/src/domain/inference.test.ts | 32 +++++++------------ 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index 858d2ab7fb40..57236d294957 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -105,15 +105,11 @@ describe("inference stat normalization", () => { }) test("aligns periods to UTC calendar boundaries", () => { - const queries = buildStatsQueries( - new Date("2026-06-17T15:56:00.000Z"), - new Date("2026-06-19T15:56:00.000Z"), - { - namespace: "inference", - table: "generation", - dataset: "zen", - }, - ) + const queries = buildStatsQueries(new Date("2026-06-17T15:56:00.000Z"), new Date("2026-06-19T15:56:00.000Z"), { + namespace: "inference", + table: "generation", + dataset: "zen", + }) expect(queries).toHaveLength(8) expect(queries[0]).toContain("'2026-W25' AS period_key") @@ -126,19 +122,13 @@ describe("inference stat normalization", () => { }) test("uses an exclusive live and legacy source handoff", () => { - const [query] = buildStatsQueries( - new Date("2026-08-11T00:00:00.000Z"), - new Date("2026-08-12T00:00:00.000Z"), - { - namespace: "inference", - table: "generation", - dataset: "zen", - }, - ) + const [query] = buildStatsQueries(new Date("2026-08-11T00:00:00.000Z"), new Date("2026-08-12T00:00:00.000Z"), { + namespace: "inference", + table: "generation", + dataset: "zen", + }) - expect(query).toContain( - "(source = 'inference-legacy' AND started_at < '2026-08-11T10:57:48.186Z')", - ) + 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')") }) }) From df09c3ec6134ca0a9a22614de9aca7e3b122dcfb Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 12 Aug 2026 12:48:08 -0400 Subject: [PATCH 009/200] update ds v4 pro --- 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 445bc369be1a..951228c9e7e9 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -139,7 +139,7 @@ export async function handler( if ( authInfo && opts.modelList === "lite" && - modelInfo.id === "deepseek-v4-flash" && + ["deepseek-v4-flash", "deepseek-v4-pro"].includes(modelInfo.id) && !allowedRegions?.includes("cn") ) throw new RegionError( From 521906f5fae2af065a84a6050141ed946452577a Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2026 12:53:58 -0400 Subject: [PATCH 010/200] docs(go): clarify DeepSeek ZDR coverage (#42085) Co-authored-by: Dax Raad --- packages/web/src/content/docs/go.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index 507c901a76e4..de70705c1c2f 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -252,13 +252,13 @@ 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 | -| DeepSeek V4 Pro | Not used | 0 days | -| DeepSeek V4 Flash | Not used | 0 days | +| 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). -- **DeepSeek V4 Flash:** ZDR agreement is renewed monthly. The current agreement is valid through August 31, 2026. +- **DeepSeek:** ZDR agreement is renewed monthly. The current agreement is valid through August 31, 2026. --- From 999be62662c7720cffbe75465fdf318fdbfea92d Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Wed, 12 Aug 2026 16:56:04 +0000 Subject: [PATCH 011/200] chore: generate --- packages/web/src/content/docs/go.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web/src/content/docs/go.mdx b/packages/web/src/content/docs/go.mdx index de70705c1c2f..892010586faf 100644 --- a/packages/web/src/content/docs/go.mdx +++ b/packages/web/src/content/docs/go.mdx @@ -252,8 +252,8 @@ 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 | -| DeepSeek V4 Pro | Not used | 0 days* | -| DeepSeek V4 Flash | Not used | 0 days* | +| 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). From 39fb919a054190498f6d5b7985bde231f93ad7a6 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2026 13:30:38 -0500 Subject: [PATCH 012/200] chore: add neriousy to team members (#42107) Co-authored-by: Aiden Cline --- .github/TEAM_MEMBERS | 1 + .opencode/tool/github-triage.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/TEAM_MEMBERS b/.github/TEAM_MEMBERS index ee2e26f45233..5268ff59ddc8 100644 --- a/.github/TEAM_MEMBERS +++ b/.github/TEAM_MEMBERS @@ -10,6 +10,7 @@ kitlangton kommander ludvigrask MrMushrooooom +neriousy nexxeln R44VC0RP rekram1-node diff --git a/.opencode/tool/github-triage.ts b/.opencode/tool/github-triage.ts index e861e1e467b2..d610a81e497e 100644 --- a/.opencode/tool/github-triage.ts +++ b/.opencode/tool/github-triage.ts @@ -4,7 +4,7 @@ import { tool } from "@opencode-ai/plugin" const TEAM = { tui: ["kommander", "simonklee"], desktop_web: ["Hona", "Brendonovich"], - core: ["jlongster", "rekram1-node", "nexxeln", "kitlangton"], + core: ["jlongster", "rekram1-node", "neriousy", "nexxeln", "kitlangton"], inference: ["fwang", "MrMushrooooom", "starptech"], windows: ["Hona"], } as const From dab2637217f188afca5e6631f67b935723e6218a Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 12 Aug 2026 14:36:51 -0500 Subject: [PATCH 013/200] fix(compaction): adjust instructions and structure to be more clear to smaller models like dsv4 flash (#42045) Co-authored-by: akenra <37288280+akenra@users.noreply.github.com> --- packages/core/src/plugin/agent.ts | 8 +- packages/core/src/session/compaction.ts | 44 ++++++----- packages/core/src/v1/config/config.ts | 2 +- packages/core/test/session-compaction.test.ts | 20 +++++ packages/core/test/session-runner.test.ts | 63 +++++++++++++++- .../opencode/src/agent/prompt/compaction.txt | 8 +- packages/opencode/src/session/compaction.ts | 41 ++++++----- .../opencode/test/session/compaction.test.ts | 73 ++++++++++++++++++- 8 files changed, 207 insertions(+), 52 deletions(-) diff --git a/packages/core/src/plugin/agent.ts b/packages/core/src/plugin/agent.ts index 9a763c7ea9b8..915df79d5be5 100644 --- a/packages/core/src/plugin/agent.ts +++ b/packages/core/src/plugin/agent.ts @@ -30,15 +30,11 @@ Guidelines: Complete the user's search request efficiently and report your findings clearly.` -const PROMPT_COMPACTION = `You are an anchored context summarization assistant for coding sessions. - -Summarize only the conversation history you are given. The newest turns may be kept verbatim outside your summary, so focus on the older context that still matters for continuing the work. - -If the prompt includes a block, treat it as the current anchored summary. Update it with the new history by preserving still-true details, removing stale details, and merging in new facts. +const PROMPT_COMPACTION = `You are a context summarization agent. You are given a conversation between a user and an agent. Your goal is to produce a structured summary matching the format specified so another coding agent can continue the work. Always follow the exact output structure requested by the user prompt. Keep every section, preserve exact file paths and identifiers when known, and prefer terse bullets over paragraphs. -Do not answer the conversation itself. Do not mention that you are summarizing, compacting, or merging context. Respond in the same language as the conversation.` +Do not continue the conversation. Do not respond to any questions in the conversation. Only output the structured summary in the exact format requested by the user prompt. Respond in the same language as the conversation.` const PROMPT_TITLE = `You are a title generator. You output ONLY a thread title. Nothing else. diff --git a/packages/core/src/session/compaction.ts b/packages/core/src/session/compaction.ts index 4b21ff348fe4..ea4cf04aaade 100644 --- a/packages/core/src/session/compaction.ts +++ b/packages/core/src/session/compaction.ts @@ -44,6 +44,15 @@ Rules: - Use terse bullets, not prose paragraphs. - Preserve exact file paths, symbols, commands, error strings, URLs, and identifiers when known. - Do not mention the summary process or that context was compacted.` +const SUMMARY_UPDATE_INSTRUCTIONS = `The summarizes everything that happened before the . Construct a new summary that combines both. The is discarded after this: anything you do not carry into the new summary is lost. + +When combining: +- Carry forward objectives, constraints, user directives, decisions, and parallel workstreams from the even when the does not mention them. Drop only what is finished and no longer needed. +- The is more recent than the . Where they conflict, the conversation wins: state the corrected fact and drop the old claim. +- Add new progress, decisions, constraints, and context from the conversation. +- Move completed work from "Active" to "Completed". +- If a blocker has been resolved, update the summary to reflect that while keeping any details still needed to continue the work. +- Update "Objective" and "Next Move" to reflect the current work state.` type Entry = { readonly seq: number @@ -136,36 +145,33 @@ const select = ( if (conversation.length === 0) return let total = 0 let split = conversation.length - let splitPrefix = "" - let splitSuffix = "" for (let index = conversation.length - 1; index >= 0; index--) { const next = total + Token.estimate(conversation[index]) - if (next > tokens) { - const remaining = Math.max(0, tokens - total) * 4 - if (remaining > 0) { - splitPrefix = conversation[index].slice(0, -remaining) - splitSuffix = conversation[index].slice(-remaining) - split = index + 1 - } - break - } + if (next > tokens) break total = next split = index } return { - head: [...conversation.slice(0, split), splitPrefix].filter(Boolean).join("\n\n"), - recent: [splitSuffix, ...conversation.slice(split)].filter(Boolean).join("\n\n"), + head: conversation.slice(0, split).join("\n\n"), + recent: conversation.slice(split).join("\n\n"), } } -export const buildPrompt = (input: { readonly previousSummary?: string; readonly context: readonly string[] }) => - [ - input.previousSummary - ? `Update the anchored summary below using the conversation history above.\nPreserve still-true details, remove stale details, and merge in the new facts.\n\n${input.previousSummary}\n` - : "Create a new anchored summary from the conversation history.", +export const buildPrompt = (input: { readonly previousSummary?: string; readonly context: readonly string[] }) => { + const conversation = `Here is the conversation so far:\n\n\n${input.context.join("\n\n")}\n` + if (!input.previousSummary) + return [ + conversation, + "Create a new anchored summary from the conversation history in the tags above so another coding agent can continue the work.", + SUMMARY_TEMPLATE, + ].join("\n\n") + return [ + conversation, + `Here is the summary of the conversation before the above:\n\n\n${input.previousSummary}\n`, + SUMMARY_UPDATE_INSTRUCTIONS, SUMMARY_TEMPLATE, - ...input.context, ].join("\n\n") +} export const make = (dependencies: Dependencies) => { const config = settings(dependencies.config) diff --git a/packages/core/src/v1/config/config.ts b/packages/core/src/v1/config/config.ts index 691f55150aed..7ebb4b69b023 100644 --- a/packages/core/src/v1/config/config.ts +++ b/packages/core/src/v1/config/config.ts @@ -156,7 +156,7 @@ export const Info = Schema.Struct({ }), tail_turns: Schema.optional(NonNegativeInt).annotate({ description: - "Number of recent user turns, including their following assistant/tool responses, to keep verbatim during compaction (default: 2)", + "Maximum number of recent user turns, including their following assistant/tool responses, to keep verbatim during compaction. By default retention is limited only by the preserved token budget.", }), preserve_recent_tokens: Schema.optional(NonNegativeInt).annotate({ description: "Maximum number of tokens from recent turns to preserve verbatim after compaction", diff --git a/packages/core/test/session-compaction.test.ts b/packages/core/test/session-compaction.test.ts index 9d45e0acc334..246ddc35f5ab 100644 --- a/packages/core/test/session-compaction.test.ts +++ b/packages/core/test/session-compaction.test.ts @@ -4,12 +4,32 @@ import { SessionCompaction } from "@opencode-ai/core/session/compaction" test("compaction prompt preserves detailed work state and relevant files", () => { const prompt = SessionCompaction.buildPrompt({ context: ["conversation history"] }) + expect(prompt).toStartWith( + "Here is the conversation so far:\n\n\nconversation history\n", + ) + expect(prompt.indexOf("")).toBeLessThan(prompt.indexOf("Create a new anchored summary")) + expect(prompt).toContain("conversation history in the tags above") expect(prompt).toContain("## Work State\n### Completed") expect(prompt).toContain("### Active") expect(prompt).toContain("### Blocked") expect(prompt).toContain("## Relevant Files") }) +test("compaction prompt gives update instructions for a prior summary", () => { + const prompt = SessionCompaction.buildPrompt({ + context: ["new conversation"], + previousSummary: "existing summary", + }) + + expect(prompt.indexOf("")).toBeLessThan(prompt.indexOf("")) + expect(prompt.indexOf("")).toBeLessThan(prompt.indexOf("The summarizes")) + expect(prompt).toContain( + "Carry forward objectives, constraints, user directives, decisions, and parallel workstreams from the ", + ) + expect(prompt).toContain('Move completed work from "Active" to "Completed".') + expect(prompt).toContain('Update "Objective" and "Next Move" to reflect the current work state.') +}) + test("compaction describes tool media without embedding base64", () => { const base64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB" const serialized = SessionCompaction.serializeToolContent([ diff --git a/packages/core/test/session-runner.test.ts b/packages/core/test/session-runner.test.ts index 0515d55cf5be..57d4456d2df2 100644 --- a/packages/core/test/session-runner.test.ts +++ b/packages/core/test/session-runner.test.ts @@ -1135,7 +1135,7 @@ describe("SessionRunnerLLM", () => { expect(requests).toHaveLength(2) expect(userTexts(requests[0])[0]).toContain( - "\n## Objective\n- Preserve the task\n", + "\n## Objective\n- Preserve the task\n", ) expect(userTexts(requests[0])[0]).toContain("Recent exact request") expect((yield* (yield* SessionStore.Service).context(sessionID))[0]).toMatchObject({ @@ -1145,6 +1145,67 @@ describe("SessionRunnerLLM", () => { }), ) + it.effect("retains only complete serialized messages during compaction", () => + Effect.gen(function* () { + yield* setup + const session = yield* SessionV2.Service + const earlier = `EARLIER_BOUNDARY ${"a".repeat(3_000)} EARLIER_END` + const recent = `RECENT_BOUNDARY ${"b".repeat(3_000)} RECENT_END` + response = fragmentFixture("text", "text-earlier", ["Earlier answer"]).completeEvents + yield* session.prompt({ sessionID, prompt: Prompt.make({ text: earlier }), resume: false }) + yield* session.resume(sessionID) + + currentModel = compactModel + requests.length = 0 + responses = [ + fragmentFixture("text", "text-summary", ["## Objective\n- Preserve the task"]).completeEvents, + fragmentFixture("text", "text-final", ["Continued"]).completeEvents, + ] + yield* session.prompt({ sessionID, prompt: Prompt.make({ text: recent }), resume: false }) + yield* session.resume(sessionID) + + expect(requests).toHaveLength(2) + const summary = userTexts(requests[0])[0] + const continuation = userTexts(requests[1])[0] + expect(summary.match(/EARLIER_BOUNDARY/g)).toHaveLength(1) + expect(summary).toContain(`EARLIER_BOUNDARY ${"a".repeat(3_000)} EARLIER_END`) + expect(summary).not.toContain("RECENT_BOUNDARY") + expect(continuation).not.toContain("EARLIER_BOUNDARY") + expect(continuation).not.toContain("EARLIER_END") + expect(continuation).toContain("\n[Assistant]: Earlier answer") + expect(continuation).toContain(`RECENT_BOUNDARY ${"b".repeat(3_000)} RECENT_END`) + }), + ) + + it.effect("summarizes an oversized newest message without retaining a fragment", () => + Effect.gen(function* () { + yield* setup + const session = yield* SessionV2.Service + response = fragmentFixture("text", "text-earlier", ["Earlier answer"]).completeEvents + yield* session.prompt({ sessionID, prompt: Prompt.make({ text: "Earlier question" }), resume: false }) + yield* session.resume(sessionID) + + const oversized = `OVERSIZED_BOUNDARY ${"x".repeat(4_500)} OVERSIZED_END` + currentModel = compactModel + requests.length = 0 + responses = [ + fragmentFixture("text", "text-summary", ["## Objective\n- Preserve the task"]).completeEvents, + fragmentFixture("text", "text-final", ["Continued"]).completeEvents, + ] + yield* session.prompt({ sessionID, prompt: Prompt.make({ text: oversized }), resume: false }) + yield* session.resume(sessionID) + + expect(requests).toHaveLength(2) + const summary = userTexts(requests[0])[0] + const continuation = userTexts(requests[1])[0] + expect(summary.match(/OVERSIZED_BOUNDARY/g)).toHaveLength(1) + expect(summary).toContain(oversized) + expect(continuation).not.toContain("OVERSIZED_BOUNDARY") + expect(continuation).not.toContain("OVERSIZED_END") + expect(continuation).toContain("\n\n") + }), + ) + it.effect("forces one compaction and retries after provider context overflow", () => Effect.gen(function* () { const session = yield* setupOverflowRecovery diff --git a/packages/opencode/src/agent/prompt/compaction.txt b/packages/opencode/src/agent/prompt/compaction.txt index c7cb838bbaa0..1bf58de8a92c 100644 --- a/packages/opencode/src/agent/prompt/compaction.txt +++ b/packages/opencode/src/agent/prompt/compaction.txt @@ -1,9 +1,5 @@ -You are an anchored context summarization assistant for coding sessions. - -Summarize only the conversation history you are given. The newest turns may be kept verbatim outside your summary, so focus on the older context that still matters for continuing the work. - -If the prompt includes a block, treat it as the current anchored summary. Update it with the new history by preserving still-true details, removing stale details, and merging in new facts. +You are a context summarization agent. You are given a conversation between a user and an agent. Your goal is to produce a structured summary matching the format specified so another coding agent can continue the work. Always follow the exact output structure requested by the user prompt. Keep every section, preserve exact file paths and identifiers when known, and prefer terse bullets over paragraphs. -Do not answer the conversation itself. Do not mention that you are summarizing, compacting, or merging context. Respond in the same language as the conversation. +Do not continue the conversation. Do not respond to any questions in the conversation. Only output the structured summary in the exact format requested by the user prompt. Respond in the same language as the conversation. diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts index 7693f5ccfdcc..75d6374bfa54 100644 --- a/packages/opencode/src/session/compaction.ts +++ b/packages/opencode/src/session/compaction.ts @@ -29,9 +29,8 @@ export const PRUNE_MINIMUM = 20_000 export const PRUNE_PROTECT = 40_000 const TOOL_OUTPUT_MAX_CHARS = 2_000 const PRUNE_PROTECTED_TOOLS = ["skill"] -const DEFAULT_TAIL_TURNS = 2 const MIN_PRESERVE_RECENT_TOKENS = 2_000 -const MAX_PRESERVE_RECENT_TOKENS = 8_000 +const MAX_PRESERVE_RECENT_TOKENS = 15_000 type Turn = { start: number end: number @@ -226,27 +225,22 @@ const layer = Layer.effect( cfg: ConfigV1.Info model: Provider.Model }) { - const limit = input.cfg.compaction?.tail_turns ?? DEFAULT_TAIL_TURNS - if (limit <= 0) return { head: input.messages, tail_start_id: undefined } + const limit = input.cfg.compaction?.tail_turns + if (limit !== undefined && limit <= 0) return { head: input.messages, tail_start_id: undefined } const budget = preserveRecentBudget({ cfg: input.cfg, model: input.model }) const all = turns(input.messages) if (!all.length) return { head: input.messages, tail_start_id: undefined } - const recent = all.slice(-limit) - const sizes = yield* Effect.forEach( - recent, - (turn) => - estimate({ - messages: input.messages.slice(turn.start, turn.end), - model: input.model, - }), - { concurrency: 1 }, - ) + const recent = limit === undefined ? all : all.slice(-limit) let total = 0 let keep: Tail | undefined for (let i = recent.length - 1; i >= 0; i--) { const turn = recent[i]! - const size = sizes[i] + // estimate lazily so cost stays proportional to the retained tail, not the whole session + const size = yield* estimate({ + messages: input.messages.slice(turn.start, turn.end), + model: input.model, + }) if (total + size <= budget) { total += size keep = { start: turn.start, id: turn.id } @@ -381,10 +375,20 @@ const layer = Layer.effect( { sessionID: input.sessionID }, { context: [], prompt: undefined }, ) - const nextPrompt = compacting.prompt ?? buildPrompt({ previousSummary, context: compacting.context }) const msgs = structuredClone(selected.head) yield* plugin.trigger("experimental.chat.messages.transform", {}, { messages: msgs }) const conversation = msgs.map(serialize).filter(Boolean).join("\n\n") + const nextPrompt = + compacting.prompt ?? + [ + buildPrompt({ + previousSummary, + context: [conversation], + }), + ...compacting.context, + ] + .filter(Boolean) + .join("\n\n") const ctx = yield* InstanceState.context const msg: SessionV1.Assistant = { id: MessageID.ascending(), @@ -430,7 +434,10 @@ const layer = Layer.effect( content: [ { type: "text", - text: [nextPrompt, "The following is the conversation history:", conversation] + text: [ + nextPrompt, + ...(compacting.prompt ? ["The following is the conversation history:", conversation] : []), + ] .filter(Boolean) .join("\n\n"), }, diff --git a/packages/opencode/test/session/compaction.test.ts b/packages/opencode/test/session/compaction.test.ts index 0dff7354b5b6..4f0981fa647e 100644 --- a/packages/opencode/test/session/compaction.test.ts +++ b/packages/opencode/test/session/compaction.test.ts @@ -365,6 +365,20 @@ function autocontinue(enabled: boolean) { }) } +function compactionContext(context: string) { + return Layer.mock(Plugin.Service)({ + trigger: (name: Name, _input: Input, output: Output) => { + if (name !== "experimental.session.compacting") return Effect.succeed(output) + return Effect.sync(() => { + ;(output as { context: string[] }).context.push(context) + return output + }) + }, + list: () => Effect.succeed([]), + init: () => Effect.void, + }) +} + describe("session.compaction.isOverflow", () => { it.live( "returns true when token count exceeds usable context", @@ -1389,11 +1403,21 @@ describe("session.compaction.process", () => { const captured = JSON.stringify(messages) expect(messages).toHaveLength(1) expect(messages[0]?.role).toBe("user") + expect(captured).toContain("Here is the conversation so far:") + expect(captured).toContain("") + expect(captured.indexOf("[User]: older context")).toBeLessThan( + captured.indexOf("Create a new anchored summary"), + ) expect(captured).toContain("[User]: older context") expect(captured).not.toContain("keep this turn") expect(captured).not.toContain("and this one too") expect(captured).not.toContain("What did we do so far?") - }).pipe(withCompaction({ llm: stub.llmLayer })) + }).pipe( + withCompaction({ + llm: stub.llmLayer, + config: cfg({ tail_turns: 2, preserve_recent_tokens: 10_000 }), + }), + ) }, { git: true }, ) @@ -1430,9 +1454,11 @@ describe("session.compaction.process", () => { expect(parent).toBeTruthy() yield* SessionCompaction.use.process({ parentID: parent!, messages: msgs, sessionID: session.id, auto: false }) - expect(captured).toContain("") + expect(captured).toContain("") expect(captured).toContain("summary one") expect(captured.match(/summary one/g)?.length).toBe(1) + expect(captured.indexOf("latest turn")).toBeLessThan(captured.indexOf("")) + expect(captured).toContain("summary of the conversation before the above") expect(captured).toContain("## Important Details") expect(captured).toContain("## Work State") }).pipe(withCompaction({ llm: stub.llmLayer })) @@ -1440,6 +1466,49 @@ describe("session.compaction.process", () => { { git: true }, ) + itCompaction.instance( + "keeps plugin context outside the serialized conversation", + () => { + const stub = llm() + let captured = "" + stub.push( + reply("summary", (input) => { + captured = JSON.stringify(input.messages) + }), + ) + + return Effect.gen(function* () { + const ssn = yield* SessionNs.Service + const session = yield* ssn.create({}) + yield* createUserMessage(session.id, "older context") + yield* createUserMessage(session.id, "keep this turn") + yield* createUserMessage(session.id, "and this one too") + yield* createCompactionMarker(session.id) + + const msgs = yield* ssn.messages({ sessionID: session.id }) + const parent = msgs.at(-1)?.info.id + expect(parent).toBeTruthy() + yield* SessionCompaction.use.process({ + parentID: parent!, + messages: msgs, + sessionID: session.id, + auto: false, + }) + + expect(captured).toContain("Prioritize unresolved migration details") + expect(captured.indexOf("")).toBeLessThan( + captured.indexOf("Prioritize unresolved migration details"), + ) + }).pipe( + withCompaction({ + llm: stub.llmLayer, + plugin: compactionContext("Prioritize unresolved migration details"), + }), + ) + }, + { git: true }, + ) + itCompaction.instance( "serializes repeated compaction history as one user message", () => { From 37fe5c83dc135acbd17e811206045b50d07ea3db Mon Sep 17 00:00:00 2001 From: opencode Date: Wed, 12 Aug 2026 20:25:04 +0000 Subject: [PATCH 014/200] sync release versions for v1.18.17 --- 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 0cf32fd5fc15..95aaf2e39ee5 100644 --- a/bun.lock +++ b/bun.lock @@ -29,7 +29,7 @@ }, "packages/app": { "name": "@opencode-ai/app", - "version": "1.18.16", + "version": "1.18.17", "dependencies": { "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", @@ -96,7 +96,7 @@ }, "packages/cli": { "name": "@opencode-ai/cli", - "version": "1.18.16", + "version": "1.18.17", "bin": { "lildax": "./bin/lildax.cjs", }, @@ -144,7 +144,7 @@ }, "packages/codemode": { "name": "@opencode-ai/codemode", - "version": "1.18.16", + "version": "1.18.17", "dependencies": { "acorn": "8.15.0", "effect": "catalog:", @@ -158,7 +158,7 @@ }, "packages/console/app": { "name": "@opencode-ai/console-app", - "version": "1.18.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "bin": { "opencode": "./bin/opencode", }, @@ -381,7 +381,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "1.18.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "dependencies": { "drizzle-orm": "catalog:", "effect": "catalog:", @@ -449,7 +449,7 @@ }, "packages/effect-sqlite-node": { "name": "@opencode-ai/effect-sqlite-node", - "version": "1.18.16", + "version": "1.18.17", "dependencies": { "effect": "catalog:", }, @@ -461,7 +461,7 @@ }, "packages/enterprise": { "name": "@opencode-ai/enterprise", - "version": "1.18.16", + "version": "1.18.17", "dependencies": { "@hono/standard-validator": "catalog:", "@opencode-ai/core": "workspace:*", @@ -493,7 +493,7 @@ }, "packages/function": { "name": "@opencode-ai/function", - "version": "1.18.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "dependencies": { "@opencode-ai/schema": "workspace:*", "@smithy/eventstream-codec": "4.2.14", @@ -559,7 +559,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "1.18.16", + "version": "1.18.17", "bin": { "opencode": "./bin/opencode", }, @@ -690,7 +690,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "1.18.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "dependencies": { "cross-spawn": "catalog:", }, @@ -781,7 +781,7 @@ }, "packages/server": { "name": "@opencode-ai/server", - "version": "1.18.16", + "version": "1.18.17", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", @@ -796,7 +796,7 @@ }, "packages/session-ui": { "name": "@opencode-ai/session-ui", - "version": "1.18.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "dependencies": { "@ibm/plex": "6.4.1", "@kobalte/core": "catalog:", @@ -883,7 +883,7 @@ }, "packages/stats/core": { "name": "@opencode-ai/stats-core", - "version": "1.18.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "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.16", + "version": "1.18.17", "dependencies": { "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", @@ -971,7 +971,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "1.18.16", + "version": "1.18.17", "dependencies": { "@kobalte/core": "catalog:", "@pierre/diffs": "catalog:", @@ -1022,7 +1022,7 @@ }, "packages/web": { "name": "@opencode-ai/web", - "version": "1.18.16", + "version": "1.18.17", "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 c378fe597ab8..df3d30670e51 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "1.18.16", + "version": "1.18.17", "description": "", "type": "module", "exports": { diff --git a/packages/cli/package.json b/packages/cli/package.json index f4b6c6fae717..273b8c74c764 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.16", + "version": "1.18.17", "type": "module", "license": "MIT", "bin": { diff --git a/packages/codemode/package.json b/packages/codemode/package.json index e8e538d0809e..9ebffe4dbf10 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.16", + "version": "1.18.17", "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 284755dc88e7..d485be2455e9 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.16", + "version": "1.18.17", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/console/core/package.json b/packages/console/core/package.json index 6313e418aaf3..500171425b0a 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.16", + "version": "1.18.17", "private": true, "type": "module", "license": "MIT", diff --git a/packages/console/function/package.json b/packages/console/function/package.json index 876888f763e0..93d430d2ea34 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.16", + "version": "1.18.17", "$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 a5f1308aa39b..bcf61c96c626 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.16", + "version": "1.18.17", "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 416a8c2c223b..60d54c31dfc3 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.16", + "version": "1.18.17", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/core/package.json b/packages/core/package.json index f682e9e4e33d..d5d5260b08b3 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.16", + "version": "1.18.17", "name": "@opencode-ai/core", "type": "module", "license": "MIT", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 8538d1a07ebd..8b6af6f3a155 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@opencode-ai/desktop", "private": true, - "version": "1.18.16", + "version": "1.18.17", "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 7a7373dc2f3b..f09668004f59 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.16", + "version": "1.18.17", "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 176f81484799..7cf7af1b5647 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.16", + "version": "1.18.17", "name": "@opencode-ai/effect-sqlite-node", "type": "module", "license": "MIT", diff --git a/packages/enterprise/package.json b/packages/enterprise/package.json index 3421349ad92d..c8760ef6d6e3 100644 --- a/packages/enterprise/package.json +++ b/packages/enterprise/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/enterprise", - "version": "1.18.16", + "version": "1.18.17", "private": true, "type": "module", "license": "MIT", diff --git a/packages/function/package.json b/packages/function/package.json index 8671e13ecb3e..a857ef135358 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/function", - "version": "1.18.16", + "version": "1.18.17", "$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 99750298ea97..671468d915c6 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.16", + "version": "1.18.17", "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 a034aab4ddef..e7a54b6d6faf 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.16", + "version": "1.18.17", "name": "@opencode-ai/llm", "type": "module", "license": "MIT", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 1719c4e8045e..9abb393db7ae 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.16", + "version": "1.18.17", "name": "opencode", "type": "module", "license": "MIT", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index a5cc0affdf5c..daa27018d521 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.16", + "version": "1.18.17", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 9a6dab7d2cd6..46f995b2406c 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.16", + "version": "1.18.17", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/server/package.json b/packages/server/package.json index 12ac0846c905..0e289bc0b58e 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.16", + "version": "1.18.17", "private": true, "type": "module", "license": "MIT", diff --git a/packages/session-ui/package.json b/packages/session-ui/package.json index 854d3f04381d..5c4a3910ba85 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.16", + "version": "1.18.17", "private": true, "type": "module", "license": "MIT", diff --git a/packages/slack/package.json b/packages/slack/package.json index 333b2199f264..38829e819eb2 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/slack", - "version": "1.18.16", + "version": "1.18.17", "type": "module", "license": "MIT", "scripts": { diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index e9abd10ad5b2..557c1d66e0c9 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.16", + "version": "1.18.17", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/core/package.json b/packages/stats/core/package.json index 92e8ab0e262a..97f6e0057c16 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.16", + "version": "1.18.17", "private": true, "type": "module", "license": "MIT", diff --git a/packages/stats/server/package.json b/packages/stats/server/package.json index cb5a7f867995..90eb6faa6e6e 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.16", + "version": "1.18.17", "private": true, "type": "module", "license": "MIT", diff --git a/packages/tui/package.json b/packages/tui/package.json index b83e3f4cf25c..81318d1e0e14 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.16", + "version": "1.18.17", "private": true, "type": "module", "license": "MIT", diff --git a/packages/ui/package.json b/packages/ui/package.json index f4025a8fa7af..e82b37eff614 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/ui", - "version": "1.18.16", + "version": "1.18.17", "type": "module", "license": "MIT", "repository": { diff --git a/packages/web/package.json b/packages/web/package.json index 64295118f6e2..b4bff3c7a4a4 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.16", + "version": "1.18.17", "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 60e90b28d657..c95622245565 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.16", + "version": "1.18.17", "publisher": "sst-dev", "repository": { "type": "git", From 502310f4dfc9e9940a3ab71235f44234dc56d676 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2026 17:19:17 -0500 Subject: [PATCH 015/200] fix(xai): pass through reasoning effort (#42160) Co-authored-by: Aiden Cline --- .../core/test/provider-xai-responses.test.ts | 53 ++++++++ patches/@ai-sdk%2Fxai@3.0.102.patch | 122 +++++++++++++++++- 2 files changed, 168 insertions(+), 7 deletions(-) diff --git a/packages/core/test/provider-xai-responses.test.ts b/packages/core/test/provider-xai-responses.test.ts index d9d674fe169e..34c7d7d4aeab 100644 --- a/packages/core/test/provider-xai-responses.test.ts +++ b/packages/core/test/provider-xai-responses.test.ts @@ -30,3 +30,56 @@ test("xAI Responses sends promptCacheKey as prompt_cache_key", async () => { expect(body?.prompt_cache_key).toBe("session-123") }) + +test("xAI Responses passes through xhigh reasoning effort", async () => { + let body: Record | undefined + const mockFetch = Object.assign( + async (_input: Parameters[0], init?: RequestInit) => { + body = JSON.parse(String(init?.body)) + return Response.json({ + id: "response-1", + created_at: 0, + model: "grok-4", + object: "response", + output: [], + usage: { input_tokens: 1, output_tokens: 0 }, + status: "completed", + }) + }, + { preconnect: fetch.preconnect }, + ) + const model = createXai({ apiKey: "test", fetch: mockFetch }).responses("grok-4") + + await model.doGenerate({ + prompt: [{ role: "user", content: [{ type: "text", text: "Hello" }] }], + providerOptions: { xai: { reasoningEffort: "xhigh" } }, + }) + + expect(body?.reasoning).toEqual({ effort: "xhigh" }) +}) + +test("xAI Chat passes through xhigh reasoning effort", async () => { + let body: Record | undefined + const mockFetch = Object.assign( + async (_input: Parameters[0], init?: RequestInit) => { + body = JSON.parse(String(init?.body)) + return Response.json({ + id: "chat-1", + created: 0, + model: "grok-4", + object: "chat.completion", + choices: [{ index: 0, message: { role: "assistant", content: "Hello" }, finish_reason: "stop" }], + usage: { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 }, + }) + }, + { preconnect: fetch.preconnect }, + ) + const model = createXai({ apiKey: "test", fetch: mockFetch }).chat("grok-4") + + await model.doGenerate({ + prompt: [{ role: "user", content: [{ type: "text", text: "Hello" }] }], + providerOptions: { xai: { reasoningEffort: "xhigh" } }, + }) + + expect(body?.reasoning_effort).toBe("xhigh") +}) diff --git a/patches/@ai-sdk%2Fxai@3.0.102.patch b/patches/@ai-sdk%2Fxai@3.0.102.patch index 27a46014fca9..1ea20de9cd99 100644 --- a/patches/@ai-sdk%2Fxai@3.0.102.patch +++ b/patches/@ai-sdk%2Fxai@3.0.102.patch @@ -1,8 +1,33 @@ diff --git a/dist/index.d.mts b/dist/index.d.mts -index 266c5ffdd9ee74ff95908ce90858ee4369d4e4ae..990ef4195bc67b6d25f249e1c81cf51710390f9a 100644 +index 266c5ffdd9ee74ff95908ce90858ee4369d4e4ae..6ac6e2873b7681ac632c903694aa38c7b09773fa 100644 --- a/dist/index.d.mts +++ b/dist/index.d.mts -@@ -78,6 +78,7 @@ declare const xaiLanguageModelResponsesOptions: z.ZodObject<{ +@@ -5,12 +5,7 @@ import { FetchFunction } from '@ai-sdk/provider-utils'; + + type XaiChatModelId = 'grok-4.3' | 'grok-4.20-0309-reasoning' | 'grok-4.20-0309-non-reasoning' | 'grok-4.20-multi-agent-0309' | 'grok-build-0.1' | (string & {}); + declare const xaiLanguageModelChatOptions: z.ZodObject<{ +- reasoningEffort: z.ZodOptional>; ++ reasoningEffort: z.ZodOptional; + logprobs: z.ZodOptional; + topLogprobs: z.ZodOptional; + parallel_function_calling: z.ZodOptional; +@@ -68,16 +63,12 @@ type XaiResponsesModelId = 'grok-4.3' | 'grok-4.20-0309-reasoning' | 'grok-4.20- + * @see https://docs.x.ai/docs/api-reference#create-new-response + */ + declare const xaiLanguageModelResponsesOptions: z.ZodObject<{ +- reasoningEffort: z.ZodOptional>; ++ reasoningEffort: z.ZodOptional; + logprobs: z.ZodOptional; topLogprobs: z.ZodOptional; store: z.ZodOptional; previousResponseId: z.ZodOptional; @@ -11,10 +36,35 @@ index 266c5ffdd9ee74ff95908ce90858ee4369d4e4ae..990ef4195bc67b6d25f249e1c81cf517 "file_search_call.results": "file_search_call.results"; }>>>>; diff --git a/dist/index.d.ts b/dist/index.d.ts -index 266c5ffdd9ee74ff95908ce90858ee4369d4e4ae..990ef4195bc67b6d25f249e1c81cf51710390f9a 100644 +index 266c5ffdd9ee74ff95908ce90858ee4369d4e4ae..6ac6e2873b7681ac632c903694aa38c7b09773fa 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts -@@ -78,6 +78,7 @@ declare const xaiLanguageModelResponsesOptions: z.ZodObject<{ +@@ -5,12 +5,7 @@ import { FetchFunction } from '@ai-sdk/provider-utils'; + + type XaiChatModelId = 'grok-4.3' | 'grok-4.20-0309-reasoning' | 'grok-4.20-0309-non-reasoning' | 'grok-4.20-multi-agent-0309' | 'grok-build-0.1' | (string & {}); + declare const xaiLanguageModelChatOptions: z.ZodObject<{ +- reasoningEffort: z.ZodOptional>; ++ reasoningEffort: z.ZodOptional; + logprobs: z.ZodOptional; + topLogprobs: z.ZodOptional; + parallel_function_calling: z.ZodOptional; +@@ -68,16 +63,12 @@ type XaiResponsesModelId = 'grok-4.3' | 'grok-4.20-0309-reasoning' | 'grok-4.20- + * @see https://docs.x.ai/docs/api-reference#create-new-response + */ + declare const xaiLanguageModelResponsesOptions: z.ZodObject<{ +- reasoningEffort: z.ZodOptional>; ++ reasoningEffort: z.ZodOptional; + logprobs: z.ZodOptional; topLogprobs: z.ZodOptional; store: z.ZodOptional; previousResponseId: z.ZodOptional; @@ -23,9 +73,18 @@ index 266c5ffdd9ee74ff95908ce90858ee4369d4e4ae..990ef4195bc67b6d25f249e1c81cf517 "file_search_call.results": "file_search_call.results"; }>>>>; diff --git a/dist/index.js b/dist/index.js -index 717b74538f5c8f0d6ab1475ebb2a84a47ccd3950..dd7dbeb3bc307e0d355f4bb4939d06cc8eae7528 100644 +index 717b74538f5c8f0d6ab1475ebb2a84a47ccd3950..0fd8f0d1cae951cd24401034a9c1dba762d9fd84 100644 --- a/dist/index.js +++ b/dist/index.js +@@ -246,7 +246,7 @@ var searchSourceSchema = import_v4.z.discriminatedUnion("type", [ + rssSourceSchema + ]); + var xaiLanguageModelChatOptions = import_v4.z.object({ +- reasoningEffort: import_v4.z.enum(["none", "low", "medium", "high"]).optional(), ++ reasoningEffort: import_v4.z.string().optional(), + logprobs: import_v4.z.boolean().optional(), + topLogprobs: import_v4.z.number().int().min(0).max(8).optional(), + /** @@ -1119,6 +1119,14 @@ async function convertToXaiResponsesInput({ type: "input_file", file_url: block.data.toString() @@ -41,6 +100,15 @@ index 717b74538f5c8f0d6ab1475ebb2a84a47ccd3950..dd7dbeb3bc307e0d355f4bb4939d06cc } else { throw new import_provider4.UnsupportedFunctionalityError({ functionality: `file part media type ${block.mediaType} as inline data (xAI Responses requires a URL or a Files API reference for non-image files)` +@@ -1746,7 +1754,7 @@ var xaiLanguageModelResponsesOptions = import_v47.z.object({ + * tokens), `medium` and `high` (uses more reasoning tokens). Not all models + * support reasoning effort; see xAI's docs for the values each model accepts. + */ +- reasoningEffort: import_v47.z.enum(["none", "low", "medium", "high"]).optional(), ++ reasoningEffort: import_v47.z.string().optional(), + logprobs: import_v47.z.boolean().optional(), + topLogprobs: import_v47.z.number().int().min(0).max(8).optional(), + /** @@ -1760,6 +1768,10 @@ var xaiLanguageModelResponsesOptions = import_v47.z.object({ * The ID of the previous response from the model. */ @@ -63,9 +131,18 @@ index 717b74538f5c8f0d6ab1475ebb2a84a47ccd3950..dd7dbeb3bc307e0d355f4bb4939d06cc }; if (xaiTools2 && xaiTools2.length > 0) { diff --git a/dist/index.mjs b/dist/index.mjs -index a26af109585fc2bd3053b320142aa869c06d36f4..774adaf971b648544317a4fc65d0c56e488d4fc7 100644 +index a26af109585fc2bd3053b320142aa869c06d36f4..5faca56477b4e55a87f6f57850731c7d3e1721a5 100644 --- a/dist/index.mjs +++ b/dist/index.mjs +@@ -230,7 +230,7 @@ var searchSourceSchema = z.discriminatedUnion("type", [ + rssSourceSchema + ]); + var xaiLanguageModelChatOptions = z.object({ +- reasoningEffort: z.enum(["none", "low", "medium", "high"]).optional(), ++ reasoningEffort: z.string().optional(), + logprobs: z.boolean().optional(), + topLogprobs: z.number().int().min(0).max(8).optional(), + /** @@ -1122,6 +1122,14 @@ async function convertToXaiResponsesInput({ type: "input_file", file_url: block.data.toString() @@ -81,6 +158,15 @@ index a26af109585fc2bd3053b320142aa869c06d36f4..774adaf971b648544317a4fc65d0c56e } else { throw new UnsupportedFunctionalityError3({ functionality: `file part media type ${block.mediaType} as inline data (xAI Responses requires a URL or a Files API reference for non-image files)` +@@ -1749,7 +1757,7 @@ var xaiLanguageModelResponsesOptions = z7.object({ + * tokens), `medium` and `high` (uses more reasoning tokens). Not all models + * support reasoning effort; see xAI's docs for the values each model accepts. + */ +- reasoningEffort: z7.enum(["none", "low", "medium", "high"]).optional(), ++ reasoningEffort: z7.string().optional(), + logprobs: z7.boolean().optional(), + topLogprobs: z7.number().int().min(0).max(8).optional(), + /** @@ -1763,6 +1771,10 @@ var xaiLanguageModelResponsesOptions = z7.object({ * The ID of the previous response from the model. */ @@ -158,9 +244,18 @@ index f90df62eb9a30154388b1390e9f3acc3ccc022bf..00e61cba6cf048ae0045be692f33cb7e if (xaiTools && xaiTools.length > 0) { diff --git a/src/responses/xai-responses-options.ts b/src/responses/xai-responses-options.ts -index f8e96c061bf8793a402ababb8cad65bb2ad6aead..15c168892c1e8755453c61d3061e958cfd51ac71 100644 +index f8e96c061bf8793a402ababb8cad65bb2ad6aead..2a39a36221ab23ea0000bff1d7854c5bce3f9d74 100644 --- a/src/responses/xai-responses-options.ts +++ b/src/responses/xai-responses-options.ts +@@ -18,7 +18,7 @@ export const xaiLanguageModelResponsesOptions = z.object({ + * tokens), `medium` and `high` (uses more reasoning tokens). Not all models + * support reasoning effort; see xAI's docs for the values each model accepts. + */ +- reasoningEffort: z.enum(['none', 'low', 'medium', 'high']).optional(), ++ reasoningEffort: z.string().optional(), + logprobs: z.boolean().optional(), + topLogprobs: z.number().int().min(0).max(8).optional(), + /** @@ -32,6 +32,10 @@ export const xaiLanguageModelResponsesOptions = z.object({ * The ID of the previous response from the model. */ @@ -172,3 +267,16 @@ index f8e96c061bf8793a402ababb8cad65bb2ad6aead..15c168892c1e8755453c61d3061e958c /** * Specify additional output data to include in the model response. * Example values: 'file_search_call.results'. +diff --git a/src/xai-chat-options.ts b/src/xai-chat-options.ts +index d70a72a9fa01da2c711c291da5ce949efbde60b5..fd6b1ae025388b614f08b620244be553199479ca 100644 +--- a/src/xai-chat-options.ts ++++ b/src/xai-chat-options.ts +@@ -51,7 +51,7 @@ const searchSourceSchema = z.discriminatedUnion('type', [ + + // xai-specific provider options + export const xaiLanguageModelChatOptions = z.object({ +- reasoningEffort: z.enum(['none', 'low', 'medium', 'high']).optional(), ++ reasoningEffort: z.string().optional(), + logprobs: z.boolean().optional(), + topLogprobs: z.number().int().min(0).max(8).optional(), + From beeabe2e4b9e7a9a5e0a645c92ce479c3cc1847f Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2026 17:20:07 -0500 Subject: [PATCH 016/200] fix(mistral): pass through reasoning effort (#42164) Co-authored-by: Aiden Cline --- packages/core/test/provider-mistral.test.ts | 26 ++++++++++++++++++++ patches/@ai-sdk%2Fmistral@3.0.51.patch | 27 ++++++++++++--------- 2 files changed, 42 insertions(+), 11 deletions(-) diff --git a/packages/core/test/provider-mistral.test.ts b/packages/core/test/provider-mistral.test.ts index 6e3176695f67..5841bcb6cdc7 100644 --- a/packages/core/test/provider-mistral.test.ts +++ b/packages/core/test/provider-mistral.test.ts @@ -27,6 +27,32 @@ test("Mistral sends promptCacheKey as prompt_cache_key", async () => { expect(body?.prompt_cache_key).toBe("session-123") }) +test("Mistral passes through unknown reasoning effort", async () => { + let body: Record | undefined + const mockFetch = Object.assign( + async (_input: Parameters[0], init?: RequestInit) => { + body = JSON.parse(String(init?.body)) + return Response.json({ + id: "response-1", + created: 0, + model: "mistral-large-latest", + object: "chat.completion", + choices: [{ index: 0, message: { role: "assistant", content: "Hello" }, finish_reason: "stop" }], + usage: { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 }, + }) + }, + { preconnect: fetch.preconnect }, + ) + const model = createMistral({ apiKey: "test", fetch: mockFetch })("mistral-large-latest") + + await model.doGenerate({ + prompt: [{ role: "user", content: [{ type: "text", text: "Hello" }] }], + providerOptions: { mistral: { reasoningEffort: "custom" } }, + }) + + expect(body?.reasoning_effort).toBe("custom") +}) + test("Mistral round-trips native reasoning in assistant history", async () => { let body: { messages?: unknown[] } | undefined const mockFetch = Object.assign( diff --git a/patches/@ai-sdk%2Fmistral@3.0.51.patch b/patches/@ai-sdk%2Fmistral@3.0.51.patch index 141b14a689b1..f76ed1c126e2 100644 --- a/patches/@ai-sdk%2Fmistral@3.0.51.patch +++ b/patches/@ai-sdk%2Fmistral@3.0.51.patch @@ -2,10 +2,12 @@ diff --git a/dist/index.d.mts b/dist/index.d.mts index 1bde0b9f8cbe6771a52c1041095c9dddfe8e5b6c..0ca2ffb2a0c9327aed5ddcf0004500dc8b42569f 100644 --- a/dist/index.d.mts +++ b/dist/index.d.mts -@@ -14,6 +14,7 @@ declare const mistralLanguageModelOptions: z.ZodObject<{ - none: "none"; - high: "high"; - }>>; +@@ -13,7 +13,5 @@ declare const mistralLanguageModelOptions: z.ZodObject<{ +- reasoningEffort: z.ZodOptional>; ++ reasoningEffort: z.ZodOptional; + promptCacheKey: z.ZodOptional; }, z.core.$strip>; type MistralLanguageModelOptions = z.infer; @@ -14,10 +16,12 @@ diff --git a/dist/index.d.ts b/dist/index.d.ts index 1bde0b9f8cbe6771a52c1041095c9dddfe8e5b6c..0ca2ffb2a0c9327aed5ddcf0004500dc8b42569f 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts -@@ -14,6 +14,7 @@ declare const mistralLanguageModelOptions: z.ZodObject<{ - none: "none"; - high: "high"; - }>>; +@@ -13,7 +13,5 @@ declare const mistralLanguageModelOptions: z.ZodObject<{ +- reasoningEffort: z.ZodOptional>; ++ reasoningEffort: z.ZodOptional; + promptCacheKey: z.ZodOptional; }, z.core.$strip>; type MistralLanguageModelOptions = z.infer; @@ -69,7 +73,7 @@ index d3f904c12a1d582cc7b9e9a2d30273e1a8505b28..267f34e20ea392b7a85ad5259d72d506 * - `'none'`: Disable reasoning */ - reasoningEffort: import_v4.z.enum(["high", "none"]).optional() -+ reasoningEffort: import_v4.z.enum(["high", "none"]).optional(), ++ reasoningEffort: import_v4.z.string().optional(), + promptCacheKey: import_v4.z.string().optional() }); @@ -268,7 +272,7 @@ index d2eff622c1b84a96bdeb4012cb0206a33012a04d..3bff11ddd6136ada45809568828cbc8f * - `'none'`: Disable reasoning */ - reasoningEffort: z.enum(["high", "none"]).optional() -+ reasoningEffort: z.enum(["high", "none"]).optional(), ++ reasoningEffort: z.string().optional(), + promptCacheKey: z.string().optional() }); @@ -655,7 +659,8 @@ index 54b29c08517d348995b6ca093b11160e453d5c8b..de30c3e7d924889339e38b1067cb26e9 @@ -64,6 +64,11 @@ export const mistralLanguageModelOptions = z.object({ * - `'none'`: Disable reasoning */ - reasoningEffort: z.enum(['high', 'none']).optional(), +- reasoningEffort: z.enum(['high', 'none']).optional(), ++ reasoningEffort: z.string().optional(), + + /** + * A stable identifier used to route requests with shared prompt prefixes. From 6fea419feb4fc5db6a88c4c091fb78c439262bef Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2026 17:20:23 -0500 Subject: [PATCH 017/200] fix(groq): pass through reasoning effort (#42166) Co-authored-by: Aiden Cline --- bun.lock | 1 + package.json | 3 +- packages/core/test/provider-groq.test.ts | 28 +++++++++ patches/@ai-sdk%2Fgroq@3.0.31.patch | 79 ++++++++++++++++++++++++ 4 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 packages/core/test/provider-groq.test.ts create mode 100644 patches/@ai-sdk%2Fgroq@3.0.31.patch diff --git a/bun.lock b/bun.lock index 95aaf2e39ee5..e41d891ec932 100644 --- a/bun.lock +++ b/bun.lock @@ -1075,6 +1075,7 @@ "@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", + "@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", "@dnd-kit/dom@0.5.0": "patches/@dnd-kit%2Fdom@0.5.0.patch", diff --git a/package.json b/package.json index 58712547b4b8..0f11d0c3966a 100644 --- a/package.json +++ b/package.json @@ -159,6 +159,7 @@ "@modelcontextprotocol/sdk@1.29.0": "patches/@modelcontextprotocol%2Fsdk@1.29.0.patch", "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/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" } } diff --git a/packages/core/test/provider-groq.test.ts b/packages/core/test/provider-groq.test.ts new file mode 100644 index 000000000000..604a2a750e52 --- /dev/null +++ b/packages/core/test/provider-groq.test.ts @@ -0,0 +1,28 @@ +import { createGroq } from "@ai-sdk/groq" +import { expect, test } from "bun:test" + +test("Groq passes through unknown reasoning effort", async () => { + let body: Record | undefined + const mockFetch = Object.assign( + async (_input: Parameters[0], init?: RequestInit) => { + body = JSON.parse(String(init?.body)) + return Response.json({ + id: "response-1", + created: 0, + model: "openai/gpt-oss-120b", + object: "chat.completion", + choices: [{ index: 0, message: { role: "assistant", content: "Hello" }, finish_reason: "stop" }], + usage: { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 }, + }) + }, + { preconnect: fetch.preconnect }, + ) + const model = createGroq({ apiKey: "test", fetch: mockFetch })("openai/gpt-oss-120b") + + await model.doGenerate({ + prompt: [{ role: "user", content: [{ type: "text", text: "Hello" }] }], + providerOptions: { groq: { reasoningEffort: "custom" } }, + }) + + expect(body?.reasoning_effort).toBe("custom") +}) diff --git a/patches/@ai-sdk%2Fgroq@3.0.31.patch b/patches/@ai-sdk%2Fgroq@3.0.31.patch new file mode 100644 index 000000000000..f26a4bedfa20 --- /dev/null +++ b/patches/@ai-sdk%2Fgroq@3.0.31.patch @@ -0,0 +1,79 @@ +diff --git a/dist/index.d.mts b/dist/index.d.mts +index 8b23996dcce6c1ad5b17ef59f92196fb97312d79..80be2e52a347042b89da8e502834afd92120877a 100644 +--- a/dist/index.d.mts ++++ b/dist/index.d.mts +@@ -10,13 +10,7 @@ declare const groqLanguageModelOptions: z.ZodObject<{ + raw: "raw"; + hidden: "hidden"; + }>>; +- reasoningEffort: z.ZodOptional>; ++ reasoningEffort: z.ZodOptional; + parallelToolCalls: z.ZodOptional; + user: z.ZodOptional; + structuredOutputs: z.ZodOptional; +diff --git a/dist/index.d.ts b/dist/index.d.ts +index 8b23996dcce6c1ad5b17ef59f92196fb97312d79..80be2e52a347042b89da8e502834afd92120877a 100644 +--- a/dist/index.d.ts ++++ b/dist/index.d.ts +@@ -10,13 +10,7 @@ declare const groqLanguageModelOptions: z.ZodObject<{ + raw: "raw"; + hidden: "hidden"; + }>>; +- reasoningEffort: z.ZodOptional>; ++ reasoningEffort: z.ZodOptional; + parallelToolCalls: z.ZodOptional; + user: z.ZodOptional; + structuredOutputs: z.ZodOptional; +diff --git a/dist/index.js b/dist/index.js +index 45a104f2e0775761858eac2a82ced64bceba1f5e..f60ac36f4a064d527e8f8881b1d6c58ff69286a3 100644 +--- a/dist/index.js ++++ b/dist/index.js +@@ -214,7 +214,7 @@ var groqLanguageModelOptions = import_v4.z.object({ + * Specifies the reasoning effort level for model inference. + * @see https://console.groq.com/docs/reasoning#reasoning-effort + */ +- reasoningEffort: import_v4.z.enum(["none", "default", "low", "medium", "high"]).optional(), ++ reasoningEffort: import_v4.z.string().optional(), + /** + * Whether to enable parallel function calling during tool use. Default to true. + */ +diff --git a/dist/index.mjs b/dist/index.mjs +index c644c32235d8fa88c51c0fc6958feb1da4877c96..2c2f81869673eb4633e843d93ff5376abf1e67d0 100644 +--- a/dist/index.mjs ++++ b/dist/index.mjs +@@ -203,7 +203,7 @@ var groqLanguageModelOptions = z.object({ + * Specifies the reasoning effort level for model inference. + * @see https://console.groq.com/docs/reasoning#reasoning-effort + */ +- reasoningEffort: z.enum(["none", "default", "low", "medium", "high"]).optional(), ++ reasoningEffort: z.string().optional(), + /** + * Whether to enable parallel function calling during tool use. Default to true. + */ +diff --git a/src/groq-chat-options.ts b/src/groq-chat-options.ts +index 3812cdf53308709f166f05c58c5d46a5d8189c8b..af520c5459bd752b3cce03c3b4afbeed31157d90 100644 +--- a/src/groq-chat-options.ts ++++ b/src/groq-chat-options.ts +@@ -33,9 +33,7 @@ export const groqLanguageModelOptions = z.object({ + * Specifies the reasoning effort level for model inference. + * @see https://console.groq.com/docs/reasoning#reasoning-effort + */ +- reasoningEffort: z +- .enum(['none', 'default', 'low', 'medium', 'high']) +- .optional(), ++ reasoningEffort: z.string().optional(), + + /** + * Whether to enable parallel function calling during tool use. Default to true. From 91df88323196b13b099911ad7f0660ed3310f527 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2026 17:29:03 -0500 Subject: [PATCH 018/200] fix(opencode): select Kimi prompt by provider (#42161) Co-authored-by: Aiden Cline --- packages/opencode/src/session/system.ts | 6 +++++- packages/opencode/test/session/system.test.ts | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/session/system.ts b/packages/opencode/src/session/system.ts index 952b95b63489..d0c608b203f6 100644 --- a/packages/opencode/src/session/system.ts +++ b/packages/opencode/src/session/system.ts @@ -40,7 +40,11 @@ export function provider(model: Provider.Model) { if (model.api.id.includes("gemini-")) return [PROMPT_GEMINI] if (model.api.id.includes("claude")) return [PROMPT_ANTHROPIC] if (model.api.id.toLowerCase().includes("trinity")) return [PROMPT_TRINITY] - if (model.api.id.toLowerCase().includes("kimi")) return [PROMPT_KIMI] + if ( + model.api.id.toLowerCase().includes("kimi") || + ["kimi-for-coding", "moonshotai", "moonshotai-cn"].includes(model.providerID) + ) + return [PROMPT_KIMI] return [PROMPT_DEFAULT] } diff --git a/packages/opencode/test/session/system.test.ts b/packages/opencode/test/session/system.test.ts index c8e27eef4335..09bac3f8c5f7 100644 --- a/packages/opencode/test/session/system.test.ts +++ b/packages/opencode/test/session/system.test.ts @@ -102,6 +102,13 @@ describe("session.system", () => { } }) + test("selects the Kimi prompt for official provider model IDs", () => { + for (const providerID of ["kimi-for-coding", "moonshotai", "moonshotai-cn"]) { + const prompt = SystemPrompt.provider({ providerID, api: { id: "k3" } } as Provider.Model)[0] + expect(prompt).toContain("# Prompt and Tool Use") + } + }) + it.effect("skills output is sorted by name and stable across calls", () => Effect.gen(function* () { const prompt = yield* SystemPrompt.Service From 14b37df39168eaf6a6faf862ec4a7bbe9c825bbd Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Wed, 12 Aug 2026 22:36:40 +0000 Subject: [PATCH 019/200] 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 6f321d88bf2e..0864cb930d1e 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-uduwrM143NDSc+tXsi4lVVfoMll2a3BDHRUjuO7GB68=", - "aarch64-linux": "sha256-6DUda78XdXY6DP86lIUkweSjys3iG4Y4mo1PiaNuXbg=", - "aarch64-darwin": "sha256-AkJwfLULLZVwwz+XU1QcFUZoIS7oVPCn+n/MXEaxrqE=", - "x86_64-darwin": "sha256-hAxKGdiITTxQ2uujQt6prNjo3NxGAMMeo+9HlMWK6GU=" + "x86_64-linux": "sha256-TNwKfqxD83UpZuCKN8FdEWN+CcQUP9CkCQSLGNqR/sA=", + "aarch64-linux": "sha256-qzvOJZzmq2QhlauElw8GwgQnCPHdhexI52L0md5zrxQ=", + "aarch64-darwin": "sha256-ZzoyLayOFfcYUAg35ZbZ2WapxDdd9IUWqy2xkxZH4QM=", + "x86_64-darwin": "sha256-maP/qLeaC3q8VcmNIPyIKlnplxFXJ7ULho3v21/16Mw=" } } From cc4b45612974f735ddec46009ede07729511fba4 Mon Sep 17 00:00:00 2001 From: opencode Date: Thu, 13 Aug 2026 01:15:01 +0000 Subject: [PATCH 020/200] 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 e41d891ec932..04b5bcf35b82 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 df3d30670e51..f31f65eba6b2 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 273b8c74c764..5b9e5aa40a67 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 9ebffe4dbf10..a093c82d9817 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 d485be2455e9..3d90f1c7b5ec 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 500171425b0a..a0a16762b612 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 93d430d2ea34..0e9f2fe40a64 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 bcf61c96c626..a8de0cbba2ae 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 60d54c31dfc3..e5ea6cf52483 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 d5d5260b08b3..96c989d6e0a6 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 8b6af6f3a155..cc41236e181d 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 f09668004f59..bc2789423895 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 7cf7af1b5647..2e901a9540e3 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 c8760ef6d6e3..54ef9a9c3559 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 a857ef135358..81f4cf2ef4ad 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 671468d915c6..8fb6f10921da 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 e7a54b6d6faf..d80684e1e2ce 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 9abb393db7ae..5d22aad6e140 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 daa27018d521..29b9c93ed992 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 46f995b2406c..06f588960419 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 0e289bc0b58e..83eca9036b2a 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 5c4a3910ba85..329a9406c3b1 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 38829e819eb2..3a9cd6b86f93 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 557c1d66e0c9..8da5bda19d67 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 97f6e0057c16..80b95113dcdc 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 90eb6faa6e6e..91423e388a7e 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 81318d1e0e14..132713ec95a7 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 e82b37eff614..6bc578079dd2 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 b4bff3c7a4a4..682462b90d47 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 c95622245565..c61f995b3f94 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 021/200] 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 5c3b4b04c4e6..39165bd014cc 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 8c315d508d12..914583d92a4a 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 fb5b85b77255..10ed285b0e9b 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 c7e1ad687847..fcbb906191cb 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 f325c7f124ce..421a6ac66fa1 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 536224829028..be2c183804a7 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 8b9c50e0f735..cf7ef2c401d3 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 0f8b9005befc..8a6ddddb09ef 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 2e8129b8329c..3c30e2c85327 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 9afef5334842..4f6e50cc8615 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 70dabc77e3cd..d308287284e3 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 95b153962a44..27956934818c 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 1bd3afa34233..c93f125265ce 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 83b785136a8a..c2e136c1a0a9 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 ec9cd41d509d..8008de2ee9f3 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 3fa6c16fa24d..519bb318a2d3 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 064bd76b5a05..503777fe1dca 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 4bb836112dd8..700480546048 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 022/200] 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 549f15e22791..c2661172d310 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 023/200] 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 c2661172d310..c02ed72efb74 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 024/200] 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 ac8ea52d934b..7e32ddb6038a 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 3abce1c02d6d..5695af0009c1 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 025/200] 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 b0be0b61570e..825473b58e06 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 634b3a86854d..3154c48668e5 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 5aabcc7c436c..5ec81f090c5c 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 73a11d454f06..d75eb1ede026 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 7182d716fced..8f54a3df7274 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 c858645e447b..7f06df503126 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 892010586faf..3c9531de6cf0 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 a724041640c4..af9fb78415ac 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 963a36b1cc04..7459309b875b 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 29693cdb6aa1..0cc8c512aad7 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 afcc39e19b68..1210ff40b0f0 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 f21573696499..c8a459e496f4 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 fcfc8ed608d4..623deb4b4922 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 4df18953ef64..61ab1f362d24 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 f241b77ee0b0..ed31155a5fbd 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 b480e0b2e5ce..3a4d9bb9367d 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 ecf553f33dd0..af214e2acef8 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 53da06c772f1..ce8cfbe78bab 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 026/200] 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 027/200] 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 599ce2b5a1fe..321c7925bd24 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 da1b053a358f..8a95ec90e52b 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 000000000000..a1a28ad19feb --- /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 825473b58e06..592f2ceac5bb 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 39165bd014cc..f7706063295d 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 3154c48668e5..1814e4ccb225 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 914583d92a4a..414d2f497e01 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 5ec81f090c5c..74149c4c1062 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 10ed285b0e9b..ca306e8a68d2 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 d75eb1ede026..da5078b6a9ba 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 fcbb906191cb..0fa0de549d3d 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 8f54a3df7274..4aa80288cbde 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 421a6ac66fa1..948cfe9e1302 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 7f06df503126..af2f7295bb35 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 be2c183804a7..073a9d2e0e7d 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 3c9531de6cf0..09c991c5f58a 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 af9fb78415ac..a275091d7d43 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 cf7ef2c401d3..c6f8a87b2164 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 7459309b875b..b0d0011f141e 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 8a6ddddb09ef..31eca1ffc4e5 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 0cc8c512aad7..770c11ee17f1 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 3c30e2c85327..af53a1794853 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 1210ff40b0f0..09869cf1a72d 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 4f6e50cc8615..8c83d61ffbdc 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 c8a459e496f4..296bbffdb484 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 d308287284e3..5e2833e9030a 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 623deb4b4922..b6442c577d8d 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 27956934818c..afb0255d19e5 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 61ab1f362d24..57995aaf9c46 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 c93f125265ce..8760a1c40151 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 ed31155a5fbd..4cb10c4a1c67 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 c2e136c1a0a9..7dd6aa929adb 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 3a4d9bb9367d..2159f4e72ad2 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 8008de2ee9f3..ba835cb24e03 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 519bb318a2d3..87563ff66cb3 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 af214e2acef8..5b81f9c13fe1 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 503777fe1dca..e08238e36d7f 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 ce8cfbe78bab..942d4f81ed4f 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 700480546048..9f555b435f0a 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 028/200] 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 592f2ceac5bb..ddefcaafebd2 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 f7706063295d..2fa7ad9da777 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 1814e4ccb225..2abc1b2954e5 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 74149c4c1062..4bb1824cffa7 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 da5078b6a9ba..ba7ac686ee3c 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 4aa80288cbde..d5999c2f9fe6 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 948cfe9e1302..80b5fe3dd5b0 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 af2f7295bb35..bcab5b4c282e 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 09c991c5f58a..8bbfed5115e0 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 a275091d7d43..43c1a75c421d 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 b0d0011f141e..0e8f31bc27fd 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 770c11ee17f1..ae5e3ae75bec 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 09869cf1a72d..81d1048e4031 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 8c83d61ffbdc..00052708dd6f 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 296bbffdb484..d6593cdd208b 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 5e2833e9030a..3785a1574374 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 b6442c577d8d..d7050ab0f6b6 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 afb0255d19e5..f64416d4c5bf 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 57995aaf9c46..ef658b5d0a0e 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 4cb10c4a1c67..6b69728776bb 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 2159f4e72ad2..3ced72ced978 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 5b81f9c13fe1..2eaf699e0298 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 e08238e36d7f..791142fb6d8c 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 942d4f81ed4f..887daa0d7e7e 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 9f555b435f0a..ed8751860a99 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 029/200] 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 321c7925bd24..599ce2b5a1fe 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 8a95ec90e52b..da1b053a358f 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 a1a28ad19feb..000000000000 --- 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 ddefcaafebd2..7b98dc10833d 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 2abc1b2954e5..fafe68cb4389 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 4bb1824cffa7..5b41029876ee 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 ba7ac686ee3c..b89f18da855a 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 d5999c2f9fe6..318b7963ef16 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 bcab5b4c282e..7fede77eaeae 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 8bbfed5115e0..da7f7691c0ca 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 43c1a75c421d..7dfbe6063be9 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 0e8f31bc27fd..9daafba1c1d8 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 ae5e3ae75bec..367dffbe260a 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 81d1048e4031..db98db5d0fa7 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 d6593cdd208b..b61caf84d201 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 d7050ab0f6b6..d6325da6aec6 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 ef658b5d0a0e..2bd78da6787d 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 6b69728776bb..1e9f4742158c 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 3ced72ced978..99cc987a0f5c 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 2eaf699e0298..dee827ad39cd 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 887daa0d7e7e..8848c190e6d3 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 030/200] 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 7b98dc10833d..825473b58e06 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 fafe68cb4389..3154c48668e5 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 5b41029876ee..5ec81f090c5c 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 b89f18da855a..d75eb1ede026 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 318b7963ef16..8f54a3df7274 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 7fede77eaeae..7f06df503126 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 da7f7691c0ca..3c9531de6cf0 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 7dfbe6063be9..af9fb78415ac 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 9daafba1c1d8..7459309b875b 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 367dffbe260a..0cc8c512aad7 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 db98db5d0fa7..1210ff40b0f0 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 b61caf84d201..c8a459e496f4 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 d6325da6aec6..623deb4b4922 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 2bd78da6787d..61ab1f362d24 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 1e9f4742158c..ed31155a5fbd 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 99cc987a0f5c..3a4d9bb9367d 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 dee827ad39cd..af214e2acef8 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 8848c190e6d3..ce8cfbe78bab 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 031/200] 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 afa60dfa88d0..792067017d14 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 6648ee43c3cc..7ebcd97314e2 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 57d4456d2df2..5b40258b2f31 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 8f746e2568a8..188cd383bb46 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 a0d3aadbef93..6d90eee2ae57 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 032/200] 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 2fa7ad9da777..29317ed039b2 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 414d2f497e01..a2b69c956f78 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 ca306e8a68d2..69a732089861 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 0fa0de549d3d..1e05c8635945 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 80b5fe3dd5b0..da1e1bbbcdc5 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 073a9d2e0e7d..c6466bca7ef2 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 c6f8a87b2164..8c517c48a908 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 31eca1ffc4e5..658879903085 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 af53a1794853..1ac39402201d 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 00052708dd6f..e84d208363b9 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 3785a1574374..db079ddebba0 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 f64416d4c5bf..40d9aa8782c6 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 8760a1c40151..1ac0913231de 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 7dd6aa929adb..eb9e2282118b 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 ba835cb24e03..e138f75e5e2f 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 87563ff66cb3..017eeea92945 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 791142fb6d8c..24ae69845cc8 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 ed8751860a99..2d554cc31b5e 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 033/200] 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 04b5bcf35b82..d2a4a7745d70 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 96c989d6e0a6..ee24893c3ae5 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 5d22aad6e140..8ab5e6ee8337 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 034/200] 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 0864cb930d1e..88d8be13d238 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 035/200] 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 29317ed039b2..239ebab947bc 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 a2b69c956f78..d43d98b180f0 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 69a732089861..d68fd55e032e 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 1e05c8635945..44bca0c2ab2d 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 da1e1bbbcdc5..806b62498243 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 c6466bca7ef2..081afceb6d11 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 8c517c48a908..1519b4eb486e 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 658879903085..759a7d7b7230 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 1ac39402201d..8827aa14697c 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 e84d208363b9..c310c9b18e7a 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 db079ddebba0..14e17024a131 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 40d9aa8782c6..39dd276adace 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 1ac0913231de..daa7b6409968 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 eb9e2282118b..fc5ff2c5e47b 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 e138f75e5e2f..6854f4d3b05a 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 017eeea92945..8ffd35a357d6 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 24ae69845cc8..64710905846e 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 2d554cc31b5e..aa9d69e77c21 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 036/200] 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 239ebab947bc..efc180c405e0 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 d43d98b180f0..0ec23414f097 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 d68fd55e032e..94bf6ff2f6c3 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 44bca0c2ab2d..9e7a811aa57a 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 806b62498243..6bb35720f8b1 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 081afceb6d11..2dc07b00df1c 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 1519b4eb486e..9c844f4529dc 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 759a7d7b7230..9fcbc5874633 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 8827aa14697c..2f94d7da2ccd 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 c310c9b18e7a..fccafeddad65 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 14e17024a131..5c431eaa362a 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 39dd276adace..a322d63bde4c 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 daa7b6409968..1da24d4af6a0 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 fc5ff2c5e47b..f857b6d3398b 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 6854f4d3b05a..09269938e166 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 8ffd35a357d6..1ba917c9d0c6 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 64710905846e..fc8b281f88ce 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 aa9d69e77c21..56e9efb4392d 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 037/200] 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 599ce2b5a1fe..b85ce5cc844d 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 da1b053a358f..4de88cba3c35 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 825473b58e06..4fdc436dd237 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 3154c48668e5..fae4336a7b77 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 5ec81f090c5c..83acb99f151a 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 d75eb1ede026..f881c4deef55 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 8f54a3df7274..03c75210724a 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 7f06df503126..802a573a4ee9 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 3c9531de6cf0..502536be7970 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 af9fb78415ac..b927268e87cf 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 7459309b875b..6744e39b000e 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 0cc8c512aad7..c89114f1548f 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 1210ff40b0f0..bd819874daf2 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 c8a459e496f4..4ec11773c0d4 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 623deb4b4922..91a0ea0ada87 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 61ab1f362d24..41f130251931 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 ed31155a5fbd..b7a993368b07 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 3a4d9bb9367d..607c02ac4963 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 af214e2acef8..d9f18f3cc966 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 ce8cfbe78bab..ee3377534c7e 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 038/200] 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 15acc757f3d4..9167cb3ea6bc 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 349606dec735..fd5849b7909a 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 e8d5e0963aeb..9989b4675646 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 039/200] 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 887fee9ec8bc..958a3f25cacc 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 f2ca27f93c00..73442235f8aa 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 99ac8a179935..d6c463ead0d3 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 86ad085e123f..c22855fcfc36 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 d778788beb62..726a9282d20d 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 24c28f3c0115..1198aaf046ec 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 9ecb2f65cedf..9be994660200 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 5203cf82df85..7cded5431d22 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 fee7662f181c..dc46c24a6543 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 d97f87490ce4..a675389e9949 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 b4e04a923625..09c9629d0f6c 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 375d8e3e6f5e..71890ac8b3dd 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 bda740413155..1662061fdec0 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 4501b6705366..f72841b6d27a 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 76a4926fa24c..abe65c93af1e 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 6a4fbbd7843e..688a68cdba32 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 22e71e10637d..6aa7cf2a0314 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 6818acf3fb5c..2786df150e02 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 b85ce5cc844d..37ce3a69cc0d 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 040/200] 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 951228c9e7e9..bde104dd3ebe 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 f4ac40183f1b..ffba49003ca0 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 041/200] 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 e93d5fbdb260..000000000000 --- 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 042/200] 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 37ce3a69cc0d..518475d4a5f0 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 4fdc436dd237..95648c237822 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 efc180c405e0..16d83371963a 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 fae4336a7b77..8a7118351285 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 0ec23414f097..99e4225ea407 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 83acb99f151a..74d76ad77ebd 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 94bf6ff2f6c3..cbaa607adddf 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 f881c4deef55..2b2f4633b9a3 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 9e7a811aa57a..f01797dfed41 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 03c75210724a..e880b74c2602 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 6bb35720f8b1..f9ba73d0f5b1 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 802a573a4ee9..ad7b9a55e240 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 2dc07b00df1c..62f69109dcb4 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 502536be7970..43c0ae879957 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 b927268e87cf..ecba84718816 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 9c844f4529dc..12ebd9e117e1 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 6744e39b000e..77f416cd3d05 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 9fcbc5874633..1dd7e66324af 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 c89114f1548f..f6046abbeca4 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 2f94d7da2ccd..0967f4bc861f 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 bd819874daf2..e74df268a02f 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 fccafeddad65..264178919d32 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 4ec11773c0d4..2d17b4f640ea 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 5c431eaa362a..137863bf0dc4 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 91a0ea0ada87..a7b43e613050 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 a322d63bde4c..5d9475a39a6a 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 41f130251931..561d868f9664 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 1da24d4af6a0..864618803cc3 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 b7a993368b07..5361f6e70a69 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 f857b6d3398b..197a0fb04de9 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 607c02ac4963..6f0f872c76ef 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 09269938e166..a9c4f63f5e1e 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 1ba917c9d0c6..2ed693558181 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 d9f18f3cc966..80b9a10d934e 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 fc8b281f88ce..3d5ed4096525 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 ee3377534c7e..b8d45f24a695 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 56e9efb4392d..1cbd0f4edfe7 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 043/200] 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 1aa6e7a26fa8..a4b388afe6ac 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 044/200] 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 d416f6f19d3a..2803cb7a8e8f 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 c4bf6bb8e70f..2ccf5168d8a4 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 85b7fd3978e8..ab3ca72f2259 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 5fa410683582..ab3d27df47c3 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 f062868c427a..cb1654006e66 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 045/200] 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 ab3ca72f2259..0200b212b21e 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 046/200] 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 d16b7495654c..7893b2c02122 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 1381c4ee8adb..30b7b7b44801 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 047/200] 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 f07d72e5f4a5..8e1cc1a0a071 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 b9cbf5569cf2..f439c187314d 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 d491b77e17d4..dfce3bffe61e 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 048/200] 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 7893b2c02122..2ae34ac42f84 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 30b7b7b44801..fbc9df593289 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 7a125824e0bf..e8025d0a920a 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 1a5d0fd23a97..e7be6f3a7130 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 049/200] 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 3cbb29a3012a..939c2dc23254 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 578d00b8ceaa..4335d9215a2a 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 e8025d0a920a..e88d0620f582 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 050/200] 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 518475d4a5f0..cb783e5902a6 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 95648c237822..73074e25b242 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 8a7118351285..f6a93a225454 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 74d76ad77ebd..6efe8dcaeae7 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 2b2f4633b9a3..90c374176617 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 e880b74c2602..0df85995fc53 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 ad7b9a55e240..348657c5e37f 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 43c0ae879957..7a3acccc787b 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 ecba84718816..ba0def33788d 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 77f416cd3d05..1ae8af391953 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 f6046abbeca4..bc54ffdb74b6 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 e74df268a02f..83f5844f6be5 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 2d17b4f640ea..f0ab465f6160 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 a7b43e613050..8dd621ad0e6e 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 561d868f9664..9bec800aa920 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 5361f6e70a69..856b6a31c83e 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 6f0f872c76ef..6603fe4b4cbb 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 80b9a10d934e..14338ff858f9 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 b8d45f24a695..9ee9676ab963 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 051/200] 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 d2a4a7745d70..77ec28a1a61a 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 ee24893c3ae5..031fd95d039c 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 8ab5e6ee8337..79b9f1e3f7e5 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 052/200] 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 88d8be13d238..60a76de0a592 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 053/200] 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 3dc0dee94e60..31117b045e11 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 054/200] 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 aa16976228e6..102c1a7cd14b 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 055/200] 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 bde104dd3ebe..454951e3915a 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 056/200] 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 cfe034146c1b..a2a91cd47b5e 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 4f0981fa647e..c76dd98b8614 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 057/200] 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 e1377b6f75c5..6f0e5f608cde 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 058/200] 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 ea4cf04aaade..f714633295a5 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 72c761e10d93..874086a06bdb 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 5b40258b2f31..cc58b43b2957 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 059/200] 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 fdd03d520566..b388297aee80 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 701658987402..77aa38ad73a7 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 060/200] 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 e7be6f3a7130..331a55ec629e 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 061/200] 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 726a9282d20d..ac5efc73688a 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 4de88cba3c35..dca06a196c4d 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 5117815d2738..bb87ef6be252 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 454951e3915a..569a27e680bf 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 000000000000..1aee1d6b0c7b --- /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 000000000000..3a828680c415 --- /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 915646cf3da0..b177858f363f 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 9850c92457db..5f59bb866ad5 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 4a04755bb4bc..85a24d2ae941 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 e3c2e0d9a991..4266ba6ff287 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 7a3acccc787b..35ba3043f9da 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 062/200] 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 ac5efc73688a..8340db93dba9 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 dca06a196c4d..6c4105776028 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 3410445b61bd..9dbc12d8dd56 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 eca94b3a921f..852f4e5a6bcf 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 111a128b24f2..6b9b39ce47cd 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 cedd43fad86d..7c7d8ced7c5b 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 d1f9b7e4a060..4f7ffc8e0b4e 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 14c912dfa38e..58e0653c3a67 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 e1fcc9c75d78..27bc1b2f4a4a 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 0c86d7f1c73e..91e799f19e05 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 f1fd0f3245e0..dc6f0500b7b9 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 43ef4da645d3..df5e69db139c 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 42c8565098a2..3a3defd48971 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 b85721ca62b8..a0e67dab4249 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 ad3823df5450..2309e3644fbe 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 cf475380045d..157abe34517b 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 d183a6becd64..403e7a0d20db 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 ec99b3b771c7..3f24d3f8fc91 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 279c0a11f78e..56ad66e97679 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 e295d64ddb61..a3a5cd4c28a2 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 112/200] 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 9dbc12d8dd56..b08caa8582ff 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 852f4e5a6bcf..593c0a9748e7 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 6b9b39ce47cd..3a5241aa2fe5 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 7c7d8ced7c5b..fdab5d989149 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 4f7ffc8e0b4e..99de803726f6 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 58e0653c3a67..8f2ab085c959 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 27bc1b2f4a4a..38faf1c008e3 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 91e799f19e05..7f2ba354dcac 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 dc6f0500b7b9..f0253821d5d6 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 df5e69db139c..fe1b8c0fd9ad 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 3a3defd48971..f10b239d1dce 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 a0e67dab4249..ae0e78c3141a 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 2309e3644fbe..2383fe02ccd9 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 157abe34517b..eb70ffa9cffb 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 403e7a0d20db..c615e3c30c43 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 3f24d3f8fc91..2cfd7c23a95f 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 56ad66e97679..68f1760627b6 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 a3a5cd4c28a2..349787ecd3a4 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 113/200] 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 0200b212b21e..dba9cbece552 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 df23a5c4963e..844027b7616b 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 114/200] 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 844027b7616b..32d4e3a39b10 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 115/200] 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 0f8248ad1568..d8937ff28e7d 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 8c488c327a25..ee0468407f28 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 4b6f474062fd..778e5edb8b92 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 116/200] 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 22b1d7d99a2a..0f85d44f209b 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 5a0176abc9b0..da6e0f8d036f 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 117/200] 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 cd89bf1f635d..45b59015dcce 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 ed128124b040..0ad34d116922 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 f5ba90ed84b2..a5403b9cf99f 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 df393a3a899c..59e6d4e77421 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 bcdd85b150bf..bcc62c0f48b0 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 bab013828cd8..77458714d337 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 16ea12c0dafe..12d9d83ccba2 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 a756fae018bb..4dac2ad5cd3d 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 f1e12bd49e93..c6bdf77fbcfe 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 2c3da89dff06..0af4b1f656d8 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 e60a90246cc0..6df0a85829d4 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 cf8891c5e3f8..855d07725247 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 6aa38a284ded..07c06be9c1cf 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 6de05d146582..88e940582bd4 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 8bce82a2aa57..2bdd7809ae74 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 07261c5aded7..1b202bfe3322 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 10ff4f230b29..f811b7f0e190 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 91d8568c8164..174260632d69 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 118/200] 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 8aeee5823541..d73961bfd1e6 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 4adcb5e759c4..729c16e4a2d2 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 846dd8184437..af75216f8d6e 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 e0029780c7b7..04130771723a 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 cf24853ae5ce..46b387dbb8fc 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 0ebfaf9921d2..61ae28be5ac8 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 c2f75862d5b9..b489cf81859f 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 b2dcc533a37e..ff52e141f840 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 9d9165fbfde6..94340b03c8ab 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 f5a948e3ccae..941da7574d72 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 c59d049b075a..2f8f492e407d 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 33e98cbdc66f..cbcc8c17ad5a 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 fb3b0a9ad52a..95244c7a91dc 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 ceb94faedcab..42ca50d83af6 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 ce00eb768cd8..f6a6915f4c23 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 feceae61671d..fa314ce8ca72 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 78344936d4a3..82e32ae42db3 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 dfa84a7ec749..cd7f2a591117 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 bbf256415e3f..77ff21ccbc8b 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 827d41ade09d..55e63e2eea1d 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 deecb2954975..767cd16e16ac 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 4680caef2828..080d3db9cbbd 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 c6512a805a47..f476ecc6b789 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 8116beb2ab98..f3f554bff48d 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 84220afd32c0..c88fccdca422 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 d03302f6ab52..8497fb04bf1d 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 1de282ad8807..9eb84261ce1c 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 4a770b5b965c..8810528c85fe 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 f56362e96fe1..400171ffd3c0 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 f8b8fa10d6aa..1a78b436fdd5 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 119/200] 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 bd5847e2723c..d2d4bae87921 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 120/200] 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 7a4b5ef65e0f..4a4be13f4bd3 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 121/200] 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 45b59015dcce..c4e7e8dd92a4 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 0ad34d116922..0b99b4a1c650 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 a5403b9cf99f..7ff136aaadf0 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 59e6d4e77421..4084fa9cec6b 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 bcc62c0f48b0..4fbd7048a411 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 77458714d337..f16a748c1d3d 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 12d9d83ccba2..917bf3a3075f 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 4dac2ad5cd3d..601509dcd367 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 c6bdf77fbcfe..58a646f01247 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 0af4b1f656d8..0c98f3dc5fbf 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 6df0a85829d4..b73fe5bd5bd2 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 855d07725247..6fb7331b5398 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 07c06be9c1cf..cd3c646d111b 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 88e940582bd4..33d19cdd7d81 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 2bdd7809ae74..15d592d5c9c7 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 1b202bfe3322..83ae9160385a 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 f811b7f0e190..7aa69ff3e865 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 174260632d69..7e50d05cfd87 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 122/200] 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 d73961bfd1e6..edc7eb6d7f34 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 941da7574d72..019f4b52a0f5 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 cd7f2a591117..be6f25f89ac8 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 123/200] 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 60a76de0a592..acc1a09e0aaa 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 124/200] 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 d7c0e3042167..ad931aab1c23 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 4eddf75ef90f..f79f5c21f41f 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 b3f25eff01dc..edbdd048311a 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 398f53f71861..f984cb7397ce 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 125/200] 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 b388297aee80..0667fc2eb098 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 77aa38ad73a7..97f0de281483 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 126/200] 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 8e1cc1a0a071..7bd78cae415d 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 20af84d02f5c..e1f8bdd6ec11 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 4b49d2a74890..fb21f878f84b 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 672d54971623..802e91233a0f 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 127/200] 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 9066f72434e5..587a36a66601 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 128/200] 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 c6296c25aa77..8a46ed897219 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 129/200] 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 8a46ed897219..92c5515a6465 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 130/200] 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 d8937ff28e7d..ad95dad18b7a 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 778e5edb8b92..c950fda937aa 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 131/200] 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 92c5515a6465..1853f5ea8f50 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 000000000000..23161d35b592 --- /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 000000000000..4e09bc23c805 --- /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 132/200] 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 1853f5ea8f50..b0b502b9bb99 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 23161d35b592..4f2233ec825b 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 133/200] 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 b0b502b9bb99..92c5515a6465 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 4f2233ec825b..000000000000 --- 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 4e09bc23c805..000000000000 --- 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 134/200] 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 000000000000..fd4baa07fda1 --- /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 124710b55632..432d4947bddf 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 135/200] 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 92c5515a6465..1853f5ea8f50 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 000000000000..7c9a13957a06 --- /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 000000000000..23ed648e19f4 --- /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 136/200] 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 1853f5ea8f50..b0b502b9bb99 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 7c9a13957a06..d959f8f5af56 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 137/200] 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 d959f8f5af56..3e4f4507a487 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 23ed648e19f4..52d86297b4ee 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 138/200] 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 3e4f4507a487..458faf553e7f 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 139/200] 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 b0b502b9bb99..92c5515a6465 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 458faf553e7f..000000000000 --- 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 52d86297b4ee..000000000000 --- 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 140/200] 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 92c5515a6465..cd7e795f56ba 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 000000000000..458faf553e7f --- /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 000000000000..52d86297b4ee --- /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 141/200] 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 cd7e795f56ba..7e185591e417 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 142/200] 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 7e185591e417..107f8ad4427a 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 000000000000..b7b6def61ecf --- /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 000000000000..2955b3e0f8b9 --- /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 143/200] 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 107f8ad4427a..7ef910122f13 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 144/200] 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 107f8ad4427a..05479512d7a1 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 145/200] 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 d648ceee2153..130e93c45afd 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 6554f390ee7c..ae60ee500c02 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 336f3b8276d9..8f17a2beb6cb 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 5f1218caa6ee..49d9242dabb1 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 9b57bb875034..810b82672510 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 da0edf3e846b..3e796ecde881 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 29f7a1958dd7..737583535451 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 18d26e0d3436..af6b35f46fda 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 7521971c2bf3..a94febc6bef4 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 8a05597de5ba..2884c6fbf312 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 02b15686dea7..bca1396cf449 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 782747742893..36a58f17a7f5 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 97029f3f895c..ae3f0cc67a6e 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 3d1de2536a96..db8efed74eba 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 3942034935e0..b5b8b1fe673b 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 587b3a133e27..f56cee238c0a 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 5ffc220cc965..e55cf0715e18 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 274542dae31a..0c0247edc865 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 025599067395..f5177ce6d0e3 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 b08caa8582ff..0beba1bce1f8 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 593c0a9748e7..ffa9ee462489 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 3a5241aa2fe5..e490fd79c946 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 fdab5d989149..f8afac5a984a 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 99de803726f6..ae1ded7f661a 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 8f2ab085c959..ae22a99b95e1 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 38faf1c008e3..14b59bda2e78 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 7f2ba354dcac..c9cf9a9ce520 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 f0253821d5d6..dfdf981e1f39 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 fe1b8c0fd9ad..1ebb317df7ea 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 f10b239d1dce..d687cb6edeee 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 ae0e78c3141a..3190e32ee28a 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 2383fe02ccd9..abbd2ec71eac 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 eb70ffa9cffb..67ed83f5d4fe 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 c615e3c30c43..e620ba09f527 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 2cfd7c23a95f..7dab1a6ab365 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 68f1760627b6..e61b8ee74d4d 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 349787ecd3a4..8c76676be585 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 146/200] 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 130e93c45afd..ab945d533947 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 ae60ee500c02..eff2099984ca 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 8f17a2beb6cb..3f86c9f4755d 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 49d9242dabb1..c06b54569474 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 810b82672510..19a1663ab193 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 737583535451..90cac740878f 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 2884c6fbf312..d5018d071d87 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 bca1396cf449..7137791c653a 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 36a58f17a7f5..47405096238c 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 ae3f0cc67a6e..30678c52b7b2 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 b5b8b1fe673b..dddeb94fb96a 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 f56cee238c0a..958cf9fcb43d 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 147/200] 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 ab945d533947..e82395918bc0 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 eff2099984ca..49c0f2aa31d5 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 3f86c9f4755d..6e2652ef1530 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 c06b54569474..20ae2743931b 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 19a1663ab193..b31f79a63e57 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 3e796ecde881..b76e0a5c63e0 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 90cac740878f..171c481d7982 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 af6b35f46fda..7906a70dcc65 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 a94febc6bef4..ffc97c616cf2 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 d5018d071d87..63468b24a0d0 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 7137791c653a..48573864ad55 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 47405096238c..0e27dad306b5 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 30678c52b7b2..e3ff8c3ff0ac 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 db8efed74eba..f1767d54090a 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 dddeb94fb96a..cd1aaebb93fd 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 958cf9fcb43d..c995104569d4 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 e55cf0715e18..8fae9a9c00d0 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 0c0247edc865..d30affd99f7a 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 879cd8c67751..adeabd9c73c8 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 4bc02a9e9649..284c0f0ade41 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 10032b8112fd..20c8678cf0a7 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 12557ab24cc4..01d5cd425af1 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 8be4f840a4b0..b23c24b5bff7 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 a93750645bfd..d5fa9cb250a2 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 ee4963b2db06..ea10ab598739 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 fcbf6867e77b..74a6940586f6 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 1844aaf79c97..19fc68365530 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 bf16eceea3b0..5b33f068b4b9 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 ca3d49b00395..1141fa404e17 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 ed7f9fbf058f..58f508cd7945 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 7bac164eb685..a3f256c7b4ff 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 fbe9f3cd23bf..ca86cba28ce7 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 6c6a7384be4b..9b7f26e8f48c 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 b14d576a259c..545be671e75e 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 f4fc56c1a821..0c9971489b3b 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 aa0ec9c57351..54008fbc8d0b 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 4153680d30e5..07d3f42435d8 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 b37223e98c2e..5c548c84ec5e 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 f166bea8fbe5..54b356d10e31 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 a78ba7a17232..d3a26cb439a8 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 df45382c8285..098ea8f5b85f 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 5e9a54708f31..c008c2a34fda 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 4805dfcf4b57..6da92d275a4a 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 2d482e6ff0e5..4eb129c9ef44 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 6039bb6edb00..b4d61b4f5e07 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 968163416eb8..39f073c6e56c 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 0e2d74fb42f6..22e4d46223f6 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 b9c29a9bb341..7b3bf0fb2e4c 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 73b0461ede39..9d104a677532 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 3bbc00e8a0a1..1b32e05debc5 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 02742e8405c3..68f19bc00d45 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 df0b6fad7cf1..b50e9c53e7bf 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 6448d9c00105..942fa873dd26 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 32ad2f721ee1..5053377f33d0 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 7cec4a8d8a92..da2e30d96222 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 52d598f6dc96..774b1af1bce7 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 c99740c6b900..d154cac1a9db 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 ee68ce917fbc..dafe0067da6c 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 75cc0290ada3..f71223f17696 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 ad804687dfe5..eab3b950e6ab 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 f2bea06af9c5..bc3f8408e583 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 a9554c070ff4..0a5fe58e789b 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 9d9738d59661..0cdd653908aa 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 dbb09e8d7286..5ecb6b67b720 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 680eadf7b9f2..7181b00806bf 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 771cf8ff63d8..6d187caf5fd8 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 77bc4ef6db08..2b733166f7f4 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 367a9b33c7bb..3550df3aaa88 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 90063ced929f..a8ec929b610d 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 bc5a4a85761a..8d5718fc01d7 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 d7261b318d47..3c1cd24e9f3d 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 cb2379e534e1..9f090cd2e2b0 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 921c2a594194..3fcc6ff76532 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 210662b01ff2..4c3e824c6c40 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 a0aecbe7c1fa..ae0d820d4eb1 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 e89f7d3538db..e1bf43208f91 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 6dd2cd0e3218..e0b6fd0ccd71 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 e48f7c1a65a1..9643b52a944b 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 d235a0760012..b9aaa429e630 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 8dd4eb18f0d0..c1a1e671e38b 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 7db5f0975e90..c37ff1a66fa9 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 b0d75b9181f0..c5a33efef013 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 28ceac4f427a..736a7961b0e6 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 148/200] 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 adeabd9c73c8..879cd8c67751 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 149/200] 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 0beba1bce1f8..0bdd1a059205 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 ffa9ee462489..99d0edd211c2 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 e490fd79c946..4ce8e70fb7c3 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 f8afac5a984a..21dda2a73bb3 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 ae1ded7f661a..ac1d07c01322 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 ae22a99b95e1..f487a6e944c2 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 14b59bda2e78..ffab0d7a542a 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 c9cf9a9ce520..7a0d28ad48c9 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 dfdf981e1f39..74da619c7d48 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 1ebb317df7ea..f2f1a614fa5f 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 d687cb6edeee..5c6f875cf2cb 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 3190e32ee28a..8b27bb8c6560 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 abbd2ec71eac..518656366121 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 67ed83f5d4fe..5a8681c8d30f 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 e620ba09f527..30b4c28fe182 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 7dab1a6ab365..82060a66bb95 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 e61b8ee74d4d..24af3e16a3ce 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 8c76676be585..eef6371785a0 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 150/200] 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 f5177ce6d0e3..d0676027f796 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 8d3fd37ff2d2..11dfc6ed2ba1 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 0bdd1a059205..7ddb1b7e2e1b 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 99d0edd211c2..6215b938b3a4 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 4ce8e70fb7c3..75da1bb34e7b 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 21dda2a73bb3..21ba15452518 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 ac1d07c01322..4687c1897425 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 f487a6e944c2..695858c56096 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 ffab0d7a542a..d909d215f09c 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 7a0d28ad48c9..8efc91907976 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 74da619c7d48..0cbaad8b3bb2 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 f2f1a614fa5f..f4d9d3ae3313 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 5c6f875cf2cb..460c2e787d0e 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 8b27bb8c6560..6dfaf37953a2 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 518656366121..14021d2ffea8 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 5a8681c8d30f..900ddb98505d 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 30b4c28fe182..3fd544accc74 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 82060a66bb95..764cfc0d407e 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 24af3e16a3ce..c59d283804f9 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 eef6371785a0..db3d06c79356 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 151/200] 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 6215b938b3a4..b8841d99c29a 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 152/200] 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 43d89eae1868..09c556998687 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 1919e4268211..c10246a1fe7c 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 a2b2707c8826..b4065b926727 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 06cdc89c40c4..dee1a6f6be86 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 d63a13c5277f..f8d75ff8c971 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 6cc14669a984..aa9117f15a33 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 81254d47927e..d1e4a4b2a579 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 046aba5f25c0..53e09545eb96 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 f7b995bf39fb..ba3b04421d25 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 a9842f27090a..971904e7293e 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 23fbd06d22b1..3a2c0638387c 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 3b3c4720ecb9..c0599b73fe43 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 549f6cead7f3..4eb483ecdf6a 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 c4a6132fe5e1..a51476fbc6a9 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 f7850ed4077f..a02c8c69c256 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 abdfda09101e..c5020101cbed 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 b07520c5e76c..7d88084060c9 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 4dc7baef3ef5..0d2f7ebae27d 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 153/200] 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 61daefe8a2d4..5dded3acf3be 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 c1f588d5a146..ac909032f90b 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 bcbe7aecbba4..55bdcff4f59f 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 9ed0084aac84..a2bcd4252c6d 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 90c91e9158cc..72b5e6f30ace 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 154/200] 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 afe14bb604cc..5e372b6fb6b8 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 155/200] 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 edc7eb6d7f34..9eb06a99b39e 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 729c16e4a2d2..cadd66a4fbf5 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 af75216f8d6e..12ab9e07ff0c 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 04130771723a..7bac797715fe 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 46b387dbb8fc..e5153dad38ae 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 61ae28be5ac8..e3acc27b4238 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 b489cf81859f..e7fd6dbd8303 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 ff52e141f840..2b0c884999be 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 94340b03c8ab..4cc026ea730a 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 019f4b52a0f5..ea1471500a16 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 2f8f492e407d..fe0eebd69aae 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 cbcc8c17ad5a..e54c1f59468f 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 95244c7a91dc..29c940cdf8a2 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 42ca50d83af6..a32c2cf714b4 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 f6a6915f4c23..3f6a410942cc 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 fa314ce8ca72..1f1269f121c5 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 82e32ae42db3..956a9e12c3b6 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 be6f25f89ac8..771b05d5510a 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 77ff21ccbc8b..32a081fb4963 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 55e63e2eea1d..89aaf1895faf 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 767cd16e16ac..a4542f2ff884 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 080d3db9cbbd..a5fe78ffd269 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 f476ecc6b789..349f8178d4df 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 f3f554bff48d..abd183860c87 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 c88fccdca422..4d434ea9c781 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 8497fb04bf1d..e7a6c34a1c14 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 9eb84261ce1c..8828868e575e 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 8810528c85fe..545217d8161d 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 400171ffd3c0..f0242a302c3e 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 1a78b436fdd5..e621b6db37d7 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 156/200] 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 879cd8c67751..adeabd9c73c8 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 157/200] 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 458faf553e7f..a3970dedf13d 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 52d86297b4ee..db3c81b9181c 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 158/200] 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 4f93411107df..e000d6ca49b5 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 635e697517c3..fcb536f46d91 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 159/200] 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 dba9cbece552..32e01512fbea 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 cb1654006e66..97f9d4f909a8 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 160/200] 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 3f6a410942cc..0bc1b6e6b751 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 58c74fe32254..e57a567dca24 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 000000000000..180d377131e8 --- /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 000000000000..9f5fbac9534f --- /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 6511ab30ea88..fcf44279ce7f 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 5e93640b1fad..daf89195b715 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 161/200] 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 16062e99c5e5..8288e203d3ec 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 162/200] 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 e940b616b157..08cb27fff019 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 163/200] 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 4426e0ddd08d..f7d3b1fb41f8 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 164/200] 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 32e01512fbea..0f8cbd23f775 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 165/200] 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 7847c44bdc83..76544fc841c9 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 166/200] 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 8288e203d3ec..c743778b39ea 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 167/200] 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 9eb06a99b39e..7991ff65c1db 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 cadd66a4fbf5..044e0cd9ebab 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 12ab9e07ff0c..4c77ac3c2e7a 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 7bac797715fe..cbfb81c45940 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 e5153dad38ae..ca4db3c70cff 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 e3acc27b4238..78b0a05e300e 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 e7fd6dbd8303..739921402e74 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 2b0c884999be..6d81e0bbf05b 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 4cc026ea730a..1b12ec02843d 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 ea1471500a16..ba3653df8ae1 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 fe0eebd69aae..b2c975f2b0bf 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 e54c1f59468f..d289ec31ff42 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 29c940cdf8a2..572b7c5e85e5 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 a32c2cf714b4..b5fa9476fab1 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 0bc1b6e6b751..85771f63537f 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 1f1269f121c5..07ed4c96108f 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 956a9e12c3b6..b18e9ceae69a 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 771b05d5510a..a8b4ee7a880e 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 32a081fb4963..c39a8c9d8d64 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 89aaf1895faf..64ec112cdaae 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 a4542f2ff884..c5f24b3ff753 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 a5fe78ffd269..341bc8272a0d 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 349f8178d4df..46eac6d1f59f 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 abd183860c87..1bf1f673816d 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 4d434ea9c781..f4ab6c5ca640 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 e7a6c34a1c14..12da00b36e25 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 8828868e575e..08557e6368eb 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 545217d8161d..2a8dc93df72c 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 f0242a302c3e..f3a3f4ab96a9 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 e621b6db37d7..cae6ef4272b3 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 168/200] 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 c743778b39ea..af3d9f02f3ce 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 169/200] 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 af3d9f02f3ce..ca6bd0b05d05 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 170/200] 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 4e40cc78eaea..9b94f1de2128 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 03a085e34d51..781c39c45012 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 25d896393ca6..f306f208cc80 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 5e1314dbd14d..396886953954 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 171/200] 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 ca6bd0b05d05..5dbb8bcc3636 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 172/200] 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 e82395918bc0..e71b57accfe0 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 49c0f2aa31d5..e710fba0f486 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 6e2652ef1530..b3db8954cdd4 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 20ae2743931b..13625e7bd210 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 b31f79a63e57..45f2eed8fb4d 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 b76e0a5c63e0..e5f2bde97854 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 171c481d7982..410c4e2da1b6 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 7906a70dcc65..a272d621f0a4 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 ffc97c616cf2..c2a46a06bc69 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 63468b24a0d0..156a82c6c8be 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 48573864ad55..93d1a92b1147 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 0e27dad306b5..cc4626ef5ca9 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 e3ff8c3ff0ac..b92730405448 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 f1767d54090a..10e715e60736 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 cd1aaebb93fd..2a058e5d82fd 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 c995104569d4..93aea4702746 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 8fae9a9c00d0..03c278a71b38 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 d30affd99f7a..3da3c462558a 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 000000000000..f253eb988126 --- /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 f19e0e46cf19..77556d946297 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 11dfc6ed2ba1..ae36df19a396 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 5dbb8bcc3636..ae129018b7a9 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 000000000000..00a0d962f22e --- /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 b177858f363f..c788b6a53439 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 173/200] 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 f253eb988126..e82483aa3986 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 ae36df19a396..6c7d739c0e99 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 174/200] 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 e1e4e6cbd39f..05f40e4fd21a 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 175/200] 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 39ef8ea1c736..c40203079528 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 176/200] 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 8bce3cd464f7..b8f01842d0c2 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 c29c5fac80a9..000000000000 --- 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 6c7d739c0e99..b52028814ba2 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 d41793dd92b2..fb315eefd54e 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 512523298a85..ef4934bd829e 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 177/200] 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 d0676027f796..e101012b98d4 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 b52028814ba2..b72d38c4cf85 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 7ddb1b7e2e1b..fd47f5bfc295 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 b8841d99c29a..ca0a3d1a7157 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 75da1bb34e7b..16a944f68c52 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 21ba15452518..a4d7484c80ca 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 4687c1897425..ca1bb08a28ad 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 695858c56096..6e906c648371 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 d909d215f09c..b5f6bde71915 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 8efc91907976..2c8c09eb9e6d 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 0cbaad8b3bb2..2eb7571491b4 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 f4d9d3ae3313..dfe73049ad81 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 460c2e787d0e..93c8dd691259 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 6dfaf37953a2..2c4a896416f5 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 14021d2ffea8..75487e15f87c 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 900ddb98505d..d96d18ae5917 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 3fd544accc74..5fb203921442 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 764cfc0d407e..85f228285f52 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 c59d283804f9..4efd9c1c2204 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 db3d06c79356..630b4e9be76c 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 178/200] 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 90dee8acbf3b..644b22ab7a26 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 18483e1cf089..8a8557ec7aa1 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 b381cc7418a3..464ce2695a76 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 179/200] 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 94d9ba3c75d4..4e4fea2b46ac 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 9989b4675646..0f1085b053f4 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 180/200] 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 1ba4f0298a68..b8e5d7335a77 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 de9bd48f327c..733a789bf538 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 d129f45578cb..7c0dec74f88b 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 58298bbb2a84..c564ae33b20d 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 44e83026c3b5..71d79a4c2635 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 09d90d79acca..a26d83e23229 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 bb87d056644a..64b0d561f26b 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 b815f1681bfb..dc9a25c66b29 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 57db5511abf3..707cdea91bff 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 92003e0221db..693123fd88c5 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 bdc3d80e347a..54595422f948 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 5bf944bcd43f..bd1e486b00a6 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 a1422c8f7476..984cd36f2b53 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 bfa93338487f..00efb26c6129 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 baa992f23397..e4f8d34c1748 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 5a6eb1c67777..e35dd34a945a 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 628a4b31bf98..4d2f3768bd2b 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 b8de598c72e1..9545748b69a7 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 f984cb7397ce..30491c898332 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 ea6f80c79a60..75f4b7aa33dd 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 181/200] 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 7991ff65c1db..6a066555bb66 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 1bf1f673816d..472999056493 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 b8e5d7335a77..e846ce5089be 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 733a789bf538..1fb489117378 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 7c0dec74f88b..4ef584ce63ef 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 c564ae33b20d..1da9eb733bbd 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 71d79a4c2635..21d131cade53 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 a26d83e23229..92988954bbf4 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 64b0d561f26b..3bd3256808be 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 dc9a25c66b29..f0ccde5013e1 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 707cdea91bff..beac7cabc97f 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 693123fd88c5..ac5293125d40 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 54595422f948..e64617e40150 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 bd1e486b00a6..dc15861421d5 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 984cd36f2b53..3515b4a097ae 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 00efb26c6129..e16996635edf 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 e4f8d34c1748..1935a0ebc76f 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 e35dd34a945a..78d113fa0b29 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 4d2f3768bd2b..06081f701e08 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 9545748b69a7..d6d7ed10117f 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 ad931aab1c23..e5ff838ae87f 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 53a82eb87fa5..000000000000 --- 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 edbdd048311a..e37fef9b48b8 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 182/200] 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 e846ce5089be..0b8053694ead 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 1fb489117378..b24304310272 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 4ef584ce63ef..5bf9e44dc7e6 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 1da9eb733bbd..5fdf2841e7ba 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 21d131cade53..95a2f06fa7d8 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 92988954bbf4..78d2e61c24a9 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 3bd3256808be..bbc1d5cca718 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 f0ccde5013e1..e4a4b12969fc 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 beac7cabc97f..1826329523aa 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 ac5293125d40..d55ba5a606d5 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 e64617e40150..26ec3e80bfb1 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 dc15861421d5..e82ddeff0b9a 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 3515b4a097ae..fe850a3094e7 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 e16996635edf..84f79a21f7f6 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 1935a0ebc76f..27926c9d548f 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 78d113fa0b29..eb43f81aa819 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 06081f701e08..f41222bf82aa 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 d6d7ed10117f..9f603436726a 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 e5ff838ae87f..e0560957ac27 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 183/200] 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 acc1a09e0aaa..05c0eecd0a62 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 184/200] 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 6a066555bb66..740abb79909b 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 739921402e74..2848ac685b5e 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 000000000000..b3919dbfacb1 --- /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 000000000000..71203f930d53 --- /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 6d56b9670605..457ccc571d52 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 3218dd7e3efb..cf99b89bdd60 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 185/200] 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 05c0eecd0a62..8279470428b0 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 186/200] 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 e71b57accfe0..e22c9a0a7912 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 e710fba0f486..0120f36f8b4e 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 b3db8954cdd4..64ab93855c80 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 13625e7bd210..fc5635228b72 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 45f2eed8fb4d..46a466b1f80e 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 e5f2bde97854..502eae5aa53f 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 410c4e2da1b6..250ac50aa450 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 a272d621f0a4..2922105b6e55 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 c2a46a06bc69..45bff6611ea8 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 156a82c6c8be..bf5eb8e6bdeb 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 93d1a92b1147..d6dd001552c5 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 cc4626ef5ca9..d423a5cda0df 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 b92730405448..92cb225588dc 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 10e715e60736..c3766f5b473a 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 2a058e5d82fd..118d56204503 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 93aea4702746..688d61236123 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 03c278a71b38..f852bc084bee 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 3da3c462558a..b83e75f779ee 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 a329e2981efb..8e715e363b55 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 e101012b98d4..e36e10af8a87 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 b72d38c4cf85..7e535ae8a765 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 fd47f5bfc295..5ea9b1453feb 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 c4e7e8dd92a4..7609c0b6f8fb 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 ca0a3d1a7157..ea5204858943 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 0b99b4a1c650..4cb932343d6f 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 16a944f68c52..042823363dba 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 7ff136aaadf0..5a8fee3ea87e 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 a4d7484c80ca..39c1800f016d 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 4084fa9cec6b..c1061c2d7e1d 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 ca1bb08a28ad..79416ed45d25 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 4fbd7048a411..eed117a8d962 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 6e906c648371..17460a9492d6 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 f16a748c1d3d..8061a2ced0d2 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 b5f6bde71915..8ed9fe567fe2 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 2c8c09eb9e6d..e16b42101e52 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 917bf3a3075f..ab6c944725f8 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 2eb7571491b4..3ab3372f898b 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 601509dcd367..acf316674fdb 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 dfe73049ad81..8117a76ad288 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 58a646f01247..a3965a9eb447 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 93c8dd691259..44b6bf5739f0 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 0c98f3dc5fbf..68b7435be2b3 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 2c4a896416f5..000530420158 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 b73fe5bd5bd2..c7db53507c4f 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 75487e15f87c..af09191b496a 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 6fb7331b5398..5792ca2db7f5 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 d96d18ae5917..801883ba658d 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 cd3c646d111b..f72238c90054 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 5fb203921442..9f10c061b882 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 33d19cdd7d81..157e906a3ac1 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 85f228285f52..4f13b1d73fd4 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 15d592d5c9c7..d96fdce37edb 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 83ae9160385a..a5a80dbf611e 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 4efd9c1c2204..aed7e023d831 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 7aa69ff3e865..258905c22063 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 630b4e9be76c..b882b7085e4b 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 7e50d05cfd87..38be595c4b4d 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 187/200] 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 5ea9b1453feb..71ba2e0b8dce 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 ea5204858943..dc7536a8cf42 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 042823363dba..b94272e40587 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 39c1800f016d..d19a1422c552 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 79416ed45d25..ada50b0d2850 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 17460a9492d6..b1792e39a29f 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 8ed9fe567fe2..9566c7c54206 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 e16b42101e52..fddea0a86576 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 3ab3372f898b..3a48101c044c 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 8117a76ad288..56fffd759e6d 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 44b6bf5739f0..e5b60d65e267 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 000530420158..dfa6095787a1 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 af09191b496a..307b9dae8fb8 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 801883ba658d..b6eff3279d14 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 9f10c061b882..72e81d3ac98d 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 4f13b1d73fd4..b6125956c646 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 aed7e023d831..ac32c98ed957 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 b882b7085e4b..c2ee08c3b666 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 188/200] 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 e0560957ac27..c9a3e6ef6d7a 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 30491c898332..0e9888d2a0c1 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 000000000000..e69d7f5bf441 --- /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 d5bfa314bfde..dcf8d5233271 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 000000000000..c8b665048c34 --- /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 e0fd2be37bd6..c1784ed18a45 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 ad95dad18b7a..c534ac2b7a39 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 ee0468407f28..cf475d2809b7 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 000000000000..14b154aac7b7 --- /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 52ff565cb8cf..834625f60165 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 cc1dccad24a6..1c0a7b8ac5fc 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 ceec6f7e6dcc..cd8cdf35b66c 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 189/200] 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 e22c9a0a7912..b1dfd4833469 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 0120f36f8b4e..12d1b87a5f95 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 64ab93855c80..8ed2a8f7c1b7 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 fc5635228b72..dea829a39ad4 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 46a466b1f80e..a557d4fb0e8e 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 502eae5aa53f..534ac2eabb83 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 250ac50aa450..2b4ad95d0331 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 2922105b6e55..3abbaf7db8eb 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 45bff6611ea8..5bb36e46f43a 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 bf5eb8e6bdeb..b57ab820b304 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 d6dd001552c5..343e81e29973 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 d423a5cda0df..f33ddf70f0d1 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 92cb225588dc..b285c9e85519 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 c3766f5b473a..1302a394371c 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 118d56204503..a78376c8b685 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 688d61236123..eaa3c63112f4 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 f852bc084bee..12f161238c82 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 b83e75f779ee..149fbf7c2339 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 8e715e363b55..a329e2981efb 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 e36e10af8a87..77747e677df8 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 7e535ae8a765..1770ee30741a 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 71ba2e0b8dce..6d74e4b66ed2 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 dc7536a8cf42..67c398dcde6b 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 b94272e40587..b926902d1d49 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 d19a1422c552..c26b2cd01ad0 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 ada50b0d2850..5bab364e4632 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 b1792e39a29f..6c70197dc2fe 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 9566c7c54206..f0b5af658846 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 fddea0a86576..018c63550471 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 3a48101c044c..c1ad6d01846c 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 56fffd759e6d..b0aecf2e460d 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 e5b60d65e267..f8016c4619c8 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 dfa6095787a1..4d04f30c047e 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 307b9dae8fb8..a0ec0c5b5be4 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 b6eff3279d14..c6a05c844c3c 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 72e81d3ac98d..26ae73a36866 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 b6125956c646..7200d2e13259 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 ac32c98ed957..81f9274b4202 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 c2ee08c3b666..bf9076663cee 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 190/200] 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 3790789b58b3..8fc61d1e930d 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 c9a3e6ef6d7a..d2fbfdf7c5e9 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 c8b665048c34..3608d56d6a74 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 c1784ed18a45..d5ce1b9c86fb 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 c534ac2b7a39..8eaf1f918969 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 cf475d2809b7..bf770844462a 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 cd8cdf35b66c..aca7fbc6a4af 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 191/200] 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 000000000000..8df1af0e36f9 --- /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 192/200] 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 8eaf1f918969..c2889ff4c66c 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 bf770844462a..a1d1a01625fb 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 193/200] 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 b59cf616363e..3b6fa273f72a 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 194/200] 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 000000000000..1d82b5697824 --- /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 ad5aa09e2ab9..d7b4f066c3d5 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 000000000000..6c9d96812812 --- /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 195/200] 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 e82483aa3986..618c89e92d75 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 00a0d962f22e..1d04a04e9e17 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 196/200] 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 d2fbfdf7c5e9..498b7f7016db 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 47fa1cf3474f..87ae460ae1b2 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 c2889ff4c66c..5f7e0266bf60 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 a1d1a01625fb..3767b7ba4d03 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 c950fda937aa..52c7c189015d 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 197/200] 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 498b7f7016db..e1719807c22b 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 87ae460ae1b2..44102ba3bd6a 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 52c7c189015d..744d761d9039 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 198/200] 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 a329e2981efb..b72b01395a14 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 77747e677df8..7d3170331de3 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 199/200] 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 86238f1a844c..9e10b67fe703 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 000000000000..9e4e0bf54089 --- /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 8f72c0cb7f63..4eb46ae1e900 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 000000000000..787564763370 --- /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 000000000000..bdef25da81b9 --- /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 000000000000..55815600b883 --- /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 000000000000..e6d51830e744 --- /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 000000000000..b94b1f42974a --- /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 000000000000..e8502d5b2f80 --- /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 000000000000..9365d5999f00 --- /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 000000000000..5981ee463e1a --- /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 000000000000..f1d962881b0b --- /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 000000000000..cc8689b8f04d --- /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 000000000000..8e0de3f7841c --- /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 000000000000..d8970e3e26aa --- /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 000000000000..9f5d400aef53 --- /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 000000000000..a97d2aedc09e --- /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 000000000000..d425be1f475f --- /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 000000000000..4bb5e1605aae --- /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 000000000000..91ed4f1d6997 --- /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 000000000000..8257cca21be0 --- /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 000000000000..b50b419d08c3 --- /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 000000000000..e4e0a7303316 --- /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 000000000000..004e72494b6e --- /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 000000000000..b825f07c3c6f --- /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 000000000000..0f5a30b387c7 --- /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 000000000000..1a18254da1ce --- /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 000000000000..41b9b7cd9bb0 --- /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 000000000000..f526f0cb0cb9 --- /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 000000000000..05db43112125 --- /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 000000000000..1ef2530d9ffe --- /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 000000000000..f8cc9263c0df --- /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 000000000000..ac0b39dfe058 --- /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 000000000000..6f472abc0b1f --- /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 000000000000..94bdbdee15f5 --- /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 000000000000..273ec79f3425 --- /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 000000000000..d43042091edd --- /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 000000000000..32c1efada427 --- /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 000000000000..ab005d62217a --- /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 000000000000..1486ecd7c245 --- /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 000000000000..fa3ea0b6c527 --- /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 000000000000..133badb77e63 --- /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 000000000000..d665f8127d70 --- /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 000000000000..f448f453248d --- /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 000000000000..85438599c2fb --- /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 000000000000..57bd3589da6e --- /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 000000000000..9a2ce8d385f9 --- /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 000000000000..1af8720f4b27 --- /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 000000000000..db714876d10e --- /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 000000000000..57bd3589da6e --- /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 000000000000..abd8b673e24d --- /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 000000000000..1af8720f4b27 --- /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 000000000000..35ec5a1cd79e --- /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 000000000000..07596a743bf4 --- /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 000000000000..13a7ef229abf --- /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 000000000000..ad732d661dc2 --- /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 000000000000..85438599c2fb --- /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 000000000000..57bd3589da6e --- /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 000000000000..9a2ce8d385f9 --- /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 000000000000..1af8720f4b27 --- /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 000000000000..35ec5a1cd79e --- /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 000000000000..b51b190f0fb8 --- /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 000000000000..ce2eb0dadc00 --- /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 000000000000..5c25e7eb1c01 --- /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 000000000000..d184432fbfb6 --- /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 000000000000..51873f0c4e82 --- /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 200/200] 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 bdef25da81b9..7315106cdce2 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 e6d51830e744..abd03aba246a 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 e8502d5b2f80..88e433e6d5c0 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 5981ee463e1a..1f054f1cf2bf 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 cc8689b8f04d..33f94f2be1e1 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 8e0de3f7841c..0f2139331635 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 d8970e3e26aa..c0f2b0da3ec9 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 9f5d400aef53..4ae15ca1fb8b 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 d425be1f475f..8ddce438bfa6 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 4bb5e1605aae..bed851abb624 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 8257cca21be0..001199938dc8 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 e4e0a7303316..02285ad6d12a 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 b825f07c3c6f..df1af73c0e66 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 0f5a30b387c7..6e69bb676faf 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 1a18254da1ce..44541bbe2448 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 41b9b7cd9bb0..7f9bc3b0aa3a 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 f526f0cb0cb9..1fe39335cb63 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 1ef2530d9ffe..30d1ab9b867b 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 ac0b39dfe058..354a71140470 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 94bdbdee15f5..bde7a6580f9a 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 d43042091edd..4f4de052af4d 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 ab005d62217a..c5156eb03a96 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 1486ecd7c245..169bc6fe0a79 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 fa3ea0b6c527..010758720386 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 d665f8127d70..a347fd0ac546 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 57bd3589da6e..a2c3189715ec 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 9a2ce8d385f9..2ac6239a03ab 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 57bd3589da6e..a2c3189715ec 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 13a7ef229abf..1edbbdddda2b 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 57bd3589da6e..a2c3189715ec 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 9a2ce8d385f9..2ac6239a03ab 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 ce2eb0dadc00..38c069d5b56b 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 +}