@code-yeongyu/senpi 2026.9.18-2 → 2026.9.18-4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -2
- package/dist/bundle/chunks/{anthropic-messages-ZEJ3DPCP.js → anthropic-messages-WZCFP6BT.js} +1 -1
- package/dist/bundle/chunks/{app-server-command-NFZDKQOY.js → app-server-command-QUUCVP35.js} +1 -1
- package/dist/bundle/chunks/bun-extension-importer-JIWSA22V.js +10 -0
- package/dist/bundle/chunks/{chunk-XJUVWITG.js → chunk-3FRTRCR6.js} +1 -1
- package/dist/bundle/chunks/{chunk-PJ5U4M7M.js → chunk-6IQ3TBZF.js} +9 -9
- package/dist/bundle/chunks/{chunk-KFIHWCMN.js → chunk-AQS2EBFQ.js} +1 -1
- package/dist/bundle/chunks/{chunk-VRAYXSST.js → chunk-FDLVINNY.js} +2 -2
- package/dist/bundle/chunks/chunk-IU5W6HXX.js +8 -0
- package/dist/bundle/chunks/chunk-IXAUDPOK.js +2 -0
- package/dist/bundle/chunks/{chunk-ANTGWIGI.js → chunk-MUC3MZTV.js} +1 -1
- package/dist/bundle/chunks/chunk-NQAVM5XL.js +2 -0
- package/dist/bundle/chunks/{chunk-4C7LNOHI.js → chunk-PLZK7ABD.js} +1 -1
- package/dist/bundle/chunks/{chunk-CKNRCW35.js → chunk-RLRLQRI2.js} +1 -1
- package/dist/bundle/chunks/{chunk-2LSXWYT5.js → chunk-SY2KKJ4R.js} +2 -2
- package/dist/bundle/chunks/{chunk-NBUMCMS4.js → chunk-VRDDXZF3.js} +1 -1
- package/dist/bundle/chunks/{chunk-QROWINIH.js → chunk-XK24AFYU.js} +1 -1
- package/dist/bundle/chunks/cli-main-AKYQ477G.js +3 -0
- package/dist/bundle/chunks/{host-command-NU5TYUOI.js → host-command-NXX3ORNL.js} +1 -1
- package/dist/bundle/chunks/{interactive-host-runtime-LMJRUOPI.js → interactive-host-runtime-D45DGSLG.js} +1 -1
- package/dist/bundle/chunks/interactive-mode-4NDHEOJQ.js +2 -0
- package/dist/bundle/chunks/{multi-session-host-G5EQB6ED.js → multi-session-host-KDJCLOES.js} +1 -1
- package/dist/bundle/chunks/{openai-completions-2RS3VSPV.js → openai-completions-TOWYKX2U.js} +1 -1
- package/dist/bundle/chunks/{package-manager-cli-OE6ZSJ6C.js → package-manager-cli-6DF4Q2PW.js} +1 -1
- package/dist/bundle/chunks/{rotation-stream-EBOPFJMX.js → rotation-stream-KDLA7K6X.js} +1 -1
- package/dist/bundle/chunks/rpc-mode-64CVTMPV.js +2 -0
- package/dist/bundle/chunks/{session-picker-BUHK3FCS.js → session-picker-DXCITGLS.js} +1 -1
- package/dist/bundle/chunks/session-worker.js +76 -76
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-7.d.ts +1 -1
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-7.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-7.js +2 -17
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-7.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-8.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-8.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-8.js +5 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-8.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-code.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-code.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-code.js +28 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-code.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/presets.js +21 -1
- package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/settings.d.ts +1 -1
- package/dist/core/extensions/builtin/prompt-preset/settings.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/settings.js +1 -0
- package/dist/core/extensions/builtin/prompt-preset/settings.js.map +1 -1
- package/dist/core/extensions/bun-extension-registry.d.ts +4 -0
- package/dist/core/extensions/bun-extension-registry.d.ts.map +1 -1
- package/dist/core/extensions/bun-extension-registry.js +59 -11
- package/dist/core/extensions/bun-extension-registry.js.map +1 -1
- package/dist/core/extensions/extension-runtime-module.d.ts +5 -0
- package/dist/core/extensions/extension-runtime-module.d.ts.map +1 -0
- package/dist/core/extensions/extension-runtime-module.js +6 -0
- package/dist/core/extensions/extension-runtime-module.js.map +1 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +1 -0
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/modes/rpc/host-decision.d.ts +1 -1
- package/dist/modes/rpc/host-decision.d.ts.map +1 -1
- package/dist/modes/rpc/host-decision.js +2 -0
- package/dist/modes/rpc/host-decision.js.map +1 -1
- package/dist/modes/rpc/host-ensure.js +8 -1
- package/dist/modes/rpc/host-ensure.js.map +1 -1
- package/dist/modes/rpc/host-probe.d.ts +7 -0
- package/dist/modes/rpc/host-probe.d.ts.map +1 -1
- package/dist/modes/rpc/host-probe.js +15 -4
- package/dist/modes/rpc/host-probe.js.map +1 -1
- package/docs/providers.md +30 -0
- package/docs/settings.md +1 -1
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +24 -0
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
- package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
- package/node_modules/@earendil-works/pi-ai/README.md +9 -0
- package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts +150 -7
- package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/all.js +17 -3
- package/node_modules/@earendil-works/pi-ai/dist/providers/all.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai-stream.d.ts +13 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai-stream.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai-stream.js +55 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai-stream.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai.d.ts +11 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai.js +94 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai.models.d.ts +4 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai.models.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai.models.js +6 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/bai.models.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/bai.json +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opengateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.d.ts +142 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.js +156 -3
- package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +2 -2
- package/node_modules/@earendil-works/pi-pty/package.json +1 -1
- package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +7 -7
- package/dist/bundle/chunks/bun-extension-importer-SW7XGNSG.js +0 -10
- package/dist/bundle/chunks/chunk-63UWBQCO.js +0 -8
- package/dist/bundle/chunks/chunk-AGXZF7RF.js +0 -2
- package/dist/bundle/chunks/cli-main-IAO3GSNA.js +0 -3
- package/dist/bundle/chunks/interactive-mode-YOXSSB5S.js +0 -2
- package/dist/bundle/chunks/rpc-mode-2IA6LPSI.js +0 -2
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/kimi-coding.json +0 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { normalizeToolParametersForOpenAICompat } from "../utils/tool-schema-compat.js";
|
|
2
|
+
function isJsonObject(value) {
|
|
3
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Repair a function tool whose root parameters schema declares no `type`.
|
|
7
|
+
*
|
|
8
|
+
* B.AI rejects a union-root schema with `tools.function.parameters.type is
|
|
9
|
+
* required and must be "object"`. Adding a bare `type: "object"` in front of
|
|
10
|
+
* the `anyOf` would satisfy that validator and still leave the root without
|
|
11
|
+
* `properties`/`required`, which describes the tool to the model as taking no
|
|
12
|
+
* arguments at all; `normalizeToolParametersForOpenAICompat()` instead merges
|
|
13
|
+
* the union branches into one object schema, so the parameters survive.
|
|
14
|
+
*/
|
|
15
|
+
function normalizeResponsesFunctionTool(tool) {
|
|
16
|
+
if (!isJsonObject(tool) || tool.type !== "function")
|
|
17
|
+
return tool;
|
|
18
|
+
if (!isJsonObject(tool.parameters) || tool.parameters.type !== undefined)
|
|
19
|
+
return tool;
|
|
20
|
+
return { ...tool, parameters: normalizeToolParametersForOpenAICompat(tool.parameters) };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The OpenAI Responses tool builder forwards `tool.parameters` unchanged
|
|
24
|
+
* (`api/openai-responses-shared.ts` via `getJsonSchemaToolParameters()`), so a
|
|
25
|
+
* union-root tool such as `workpool` reaches B.AI unrepaired. The other two
|
|
26
|
+
* B.AI wire APIs already normalize their own roots and need no transform:
|
|
27
|
+
* `api/openai-completions.ts` re-runs `normalizeToolParametersForOpenAICompat()`
|
|
28
|
+
* after `onPayload`, and `api/anthropic-messages.ts` builds `input_schema`
|
|
29
|
+
* through `resolveRootObjectSchema()`.
|
|
30
|
+
*/
|
|
31
|
+
export function normalizeBaiResponsesPayload(payload) {
|
|
32
|
+
if (!isJsonObject(payload) || !Array.isArray(payload.tools))
|
|
33
|
+
return payload;
|
|
34
|
+
const sourceTools = payload.tools;
|
|
35
|
+
const tools = sourceTools.map((tool) => normalizeResponsesFunctionTool(tool));
|
|
36
|
+
return tools.some((tool, index) => tool !== sourceTools[index]) ? { ...payload, tools } : payload;
|
|
37
|
+
}
|
|
38
|
+
function withBaiResponsesPayload(options) {
|
|
39
|
+
const upstreamTransform = options?.onPayload;
|
|
40
|
+
return {
|
|
41
|
+
...options,
|
|
42
|
+
onPayload: async (payload, model, request) => {
|
|
43
|
+
const transformed = await upstreamTransform?.(payload, model, request);
|
|
44
|
+
return normalizeBaiResponsesPayload(transformed ?? payload);
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function baiResponsesStreams(streams) {
|
|
49
|
+
return {
|
|
50
|
+
...streams,
|
|
51
|
+
stream: (model, context, options) => streams.stream(model, context, withBaiResponsesPayload(options)),
|
|
52
|
+
streamSimple: (model, context, options) => streams.streamSimple(model, context, withBaiResponsesPayload(options)),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=bai-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bai-stream.js","sourceRoot":"","sources":["../../src/providers/bai-stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sCAAsC,EAAE,MAAM,gCAAgC,CAAC;AAExF,SAAS,YAAY,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,8BAA8B,CAAC,IAAa;IACpD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACtF,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,sCAAsC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACzF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC5D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;IAClC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACnG,CAAC;AAED,SAAS,uBAAuB,CAAgD,OAAsB;IACrG,MAAM,iBAAiB,GAAG,OAAO,EAAE,SAAS,CAAC;IAC7C,OAAO;QACN,GAAG,OAAO;QACV,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC5C,MAAM,WAAW,GAAG,MAAM,iBAAiB,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACvE,OAAO,4BAA4B,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC;QAC7D,CAAC;KACI,CAAC;AACR,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAwB;IAC3D,OAAO;QACN,GAAG,OAAO;QACV,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACrG,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;KACjH,CAAC;AACH,CAAC","sourcesContent":["import type { ProviderStreams, SimpleStreamOptions, StreamOptions } from \"../types.ts\";\nimport { normalizeToolParametersForOpenAICompat } from \"../utils/tool-schema-compat.ts\";\n\nfunction isJsonObject(value: unknown): value is Record<string, unknown> {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\n/**\n * Repair a function tool whose root parameters schema declares no `type`.\n *\n * B.AI rejects a union-root schema with `tools.function.parameters.type is\n * required and must be \"object\"`. Adding a bare `type: \"object\"` in front of\n * the `anyOf` would satisfy that validator and still leave the root without\n * `properties`/`required`, which describes the tool to the model as taking no\n * arguments at all; `normalizeToolParametersForOpenAICompat()` instead merges\n * the union branches into one object schema, so the parameters survive.\n */\nfunction normalizeResponsesFunctionTool(tool: unknown): unknown {\n\tif (!isJsonObject(tool) || tool.type !== \"function\") return tool;\n\tif (!isJsonObject(tool.parameters) || tool.parameters.type !== undefined) return tool;\n\treturn { ...tool, parameters: normalizeToolParametersForOpenAICompat(tool.parameters) };\n}\n\n/**\n * The OpenAI Responses tool builder forwards `tool.parameters` unchanged\n * (`api/openai-responses-shared.ts` via `getJsonSchemaToolParameters()`), so a\n * union-root tool such as `workpool` reaches B.AI unrepaired. The other two\n * B.AI wire APIs already normalize their own roots and need no transform:\n * `api/openai-completions.ts` re-runs `normalizeToolParametersForOpenAICompat()`\n * after `onPayload`, and `api/anthropic-messages.ts` builds `input_schema`\n * through `resolveRootObjectSchema()`.\n */\nexport function normalizeBaiResponsesPayload(payload: unknown): unknown {\n\tif (!isJsonObject(payload) || !Array.isArray(payload.tools)) return payload;\n\tconst sourceTools = payload.tools;\n\tconst tools = sourceTools.map((tool) => normalizeResponsesFunctionTool(tool));\n\treturn tools.some((tool, index) => tool !== sourceTools[index]) ? { ...payload, tools } : payload;\n}\n\nfunction withBaiResponsesPayload<T extends StreamOptions | SimpleStreamOptions>(options: T | undefined): T {\n\tconst upstreamTransform = options?.onPayload;\n\treturn {\n\t\t...options,\n\t\tonPayload: async (payload, model, request) => {\n\t\t\tconst transformed = await upstreamTransform?.(payload, model, request);\n\t\t\treturn normalizeBaiResponsesPayload(transformed ?? payload);\n\t\t},\n\t} as T;\n}\n\nexport function baiResponsesStreams(streams: ProviderStreams): ProviderStreams {\n\treturn {\n\t\t...streams,\n\t\tstream: (model, context, options) => streams.stream(model, context, withBaiResponsesPayload(options)),\n\t\tstreamSimple: (model, context, options) => streams.streamSimple(model, context, withBaiResponsesPayload(options)),\n\t};\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Provider } from "../models.ts";
|
|
2
|
+
import type { Model } from "../types.ts";
|
|
3
|
+
export declare const BAI_BASE_URL = "https://api.b.ai/v1";
|
|
4
|
+
export type BaiApi = "openai-responses" | "openai-completions" | "anthropic-messages";
|
|
5
|
+
export interface BaiProviderOptions {
|
|
6
|
+
baseUrl?: string;
|
|
7
|
+
models?: readonly Model<BaiApi>[];
|
|
8
|
+
fetch?: typeof fetch;
|
|
9
|
+
}
|
|
10
|
+
export declare function baiProvider(options?: BaiProviderOptions): Provider<BaiApi>;
|
|
11
|
+
//# sourceMappingURL=bai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bai.d.ts","sourceRoot":"","sources":["../../src/providers/bai.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,KAAK,QAAQ,EAA6B,MAAM,cAAc,CAAC;AACxF,OAAO,KAAK,EAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAI9C,eAAO,MAAM,YAAY,wBAAwB,CAAC;AAElD,MAAM,MAAM,MAAM,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAEtF,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACrB;AAiFD,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,CA0B9E"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { anthropicMessagesApi } from "../api/anthropic-messages.lazy.js";
|
|
2
|
+
import { openAICompletionsApi } from "../api/openai-completions.lazy.js";
|
|
3
|
+
import { openAIResponsesApi } from "../api/openai-responses.lazy.js";
|
|
4
|
+
import { envApiKeyAuth } from "../auth/helpers.js";
|
|
5
|
+
import { createProvider } from "../models.js";
|
|
6
|
+
import { BAI_MODELS } from "./bai.models.js";
|
|
7
|
+
import { baiResponsesStreams } from "./bai-stream.js";
|
|
8
|
+
export const BAI_BASE_URL = "https://api.b.ai/v1";
|
|
9
|
+
function normalizeBaseUrl(baseUrl) {
|
|
10
|
+
return baseUrl.replace(/\/+$/u, "");
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* B.AI documents dot-version model IDs on most model pages (`gpt-5.6-sol`,
|
|
14
|
+
* `gemini-3.5-flash-lite`) but hyphenated ones for Claude (`claude-fable-5-1`),
|
|
15
|
+
* and its Claude Code guide states that "both hyphenated aliases and
|
|
16
|
+
* dot-version aliases are accepted". Which spelling `GET /v1/models` returns is
|
|
17
|
+
* therefore not fixed, so the catalog is indexed under both to keep discovery
|
|
18
|
+
* from silently dropping an entitled model.
|
|
19
|
+
*/
|
|
20
|
+
function modelIdAliases(id) {
|
|
21
|
+
const dashed = id.replaceAll(".", "-");
|
|
22
|
+
return dashed === id ? [id] : [id, dashed];
|
|
23
|
+
}
|
|
24
|
+
function indexCatalog(catalog) {
|
|
25
|
+
const index = new Map();
|
|
26
|
+
for (const model of catalog) {
|
|
27
|
+
for (const alias of modelIdAliases(model.id)) {
|
|
28
|
+
if (!index.has(alias))
|
|
29
|
+
index.set(alias, model);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return index;
|
|
33
|
+
}
|
|
34
|
+
function remapBaiModels(models, catalogById) {
|
|
35
|
+
return models.flatMap((model) => {
|
|
36
|
+
const current = catalogById.get(model.id);
|
|
37
|
+
return current ? [current] : [];
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
async function fetchBaiModels(baseUrl, catalogById, fetchImpl, context) {
|
|
41
|
+
const apiKey = context.credential?.type === "api_key" ? context.credential.key?.trim() : undefined;
|
|
42
|
+
if (!apiKey)
|
|
43
|
+
return [];
|
|
44
|
+
const response = await fetchImpl(`${baseUrl}/models`, {
|
|
45
|
+
headers: {
|
|
46
|
+
accept: "application/json",
|
|
47
|
+
authorization: `Bearer ${apiKey}`,
|
|
48
|
+
},
|
|
49
|
+
signal: context.signal,
|
|
50
|
+
});
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
throw new Error(`Could not load B.AI model catalog: ${response.status}`);
|
|
53
|
+
}
|
|
54
|
+
const payload = (await response.json());
|
|
55
|
+
if (payload.success === false) {
|
|
56
|
+
throw new Error(`Could not load B.AI model catalog: ${payload.message?.trim() || "request rejected"}`);
|
|
57
|
+
}
|
|
58
|
+
if (!Array.isArray(payload.data)) {
|
|
59
|
+
throw new Error("Invalid B.AI model catalog response");
|
|
60
|
+
}
|
|
61
|
+
const discovered = payload.data.flatMap((entry) => {
|
|
62
|
+
const id = entry.id?.trim();
|
|
63
|
+
const model = id ? catalogById.get(id) : undefined;
|
|
64
|
+
return model ? [model] : [];
|
|
65
|
+
});
|
|
66
|
+
return [...new Map(discovered.map((model) => [model.id, model])).values()];
|
|
67
|
+
}
|
|
68
|
+
export function baiProvider(options = {}) {
|
|
69
|
+
const baseUrl = normalizeBaseUrl(options.baseUrl ?? BAI_BASE_URL);
|
|
70
|
+
const anthropicBaseUrl = baseUrl.replace(/\/v1$/u, "");
|
|
71
|
+
const catalog = [...(options.models ?? Object.values(BAI_MODELS))].map((model) => ({
|
|
72
|
+
...model,
|
|
73
|
+
baseUrl: model.api === "anthropic-messages" ? anthropicBaseUrl : baseUrl,
|
|
74
|
+
}));
|
|
75
|
+
const catalogById = indexCatalog(catalog);
|
|
76
|
+
const fetchImpl = options.fetch ?? fetch;
|
|
77
|
+
return createProvider({
|
|
78
|
+
id: "bai",
|
|
79
|
+
name: "B.AI",
|
|
80
|
+
baseUrl,
|
|
81
|
+
auth: { apiKey: envApiKeyAuth("B.AI API key", ["BAI_API_KEY"]) },
|
|
82
|
+
models: [],
|
|
83
|
+
restoreModels: (models) => remapBaiModels(models, catalogById),
|
|
84
|
+
fetchModels: (context) => fetchBaiModels(baseUrl, catalogById, fetchImpl, context),
|
|
85
|
+
api: {
|
|
86
|
+
// Only the Responses tool builder forwards a union-root schema unrepaired;
|
|
87
|
+
// see the contract note in ./bai-stream.ts.
|
|
88
|
+
"openai-responses": baiResponsesStreams(openAIResponsesApi()),
|
|
89
|
+
"openai-completions": openAICompletionsApi(),
|
|
90
|
+
"anthropic-messages": anthropicMessagesApi(),
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=bai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bai.js","sourceRoot":"","sources":["../../src/providers/bai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAA4C,MAAM,cAAc,CAAC;AAExF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,CAAC,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAgBlD,SAAS,gBAAgB,CAAC,OAAe;IACxC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,EAAU;IACjC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,YAAY,CAAC,OAAiC;IACtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CACtB,MAA6B,EAC7B,WAA+C;IAE/C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC5B,OAAe,EACf,WAA+C,EAC/C,SAAuB,EACvB,OAA6B;IAE7B,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACnG,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,OAAO,SAAS,EAAE;QACrD,OAAO,EAAE;YACR,MAAM,EAAE,kBAAkB;YAC1B,aAAa,EAAE,UAAU,MAAM,EAAE;SACjC;QACD,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;IAC7D,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACjD,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAO,GAAuB,EAAE;IAC3D,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC;IAClE,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClF,GAAG,KAAK;QACR,OAAO,EAAE,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO;KACxE,CAAC,CAAC,CAAC;IACJ,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IAEzC,OAAO,cAAc,CAAS;QAC7B,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE;QAChE,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC;QAC9D,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;QAClF,GAAG,EAAE;YACJ,2EAA2E;YAC3E,4CAA4C;YAC5C,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB,EAAE,CAAC;YAC7D,oBAAoB,EAAE,oBAAoB,EAAE;YAC5C,oBAAoB,EAAE,oBAAoB,EAAE;SAC5C;KACD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { anthropicMessagesApi } from \"../api/anthropic-messages.lazy.ts\";\nimport { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"../api/openai-responses.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider, type RefreshModelsContext } from \"../models.ts\";\nimport type { Api, Model } from \"../types.ts\";\nimport { BAI_MODELS } from \"./bai.models.ts\";\nimport { baiResponsesStreams } from \"./bai-stream.ts\";\n\nexport const BAI_BASE_URL = \"https://api.b.ai/v1\";\n\nexport type BaiApi = \"openai-responses\" | \"openai-completions\" | \"anthropic-messages\";\n\nexport interface BaiProviderOptions {\n\tbaseUrl?: string;\n\tmodels?: readonly Model<BaiApi>[];\n\tfetch?: typeof fetch;\n}\n\ntype BaiModelsResponse = {\n\tsuccess?: boolean;\n\tmessage?: string;\n\tdata?: Array<{ id?: string }>;\n};\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n\treturn baseUrl.replace(/\\/+$/u, \"\");\n}\n\n/**\n * B.AI documents dot-version model IDs on most model pages (`gpt-5.6-sol`,\n * `gemini-3.5-flash-lite`) but hyphenated ones for Claude (`claude-fable-5-1`),\n * and its Claude Code guide states that \"both hyphenated aliases and\n * dot-version aliases are accepted\". Which spelling `GET /v1/models` returns is\n * therefore not fixed, so the catalog is indexed under both to keep discovery\n * from silently dropping an entitled model.\n */\nfunction modelIdAliases(id: string): string[] {\n\tconst dashed = id.replaceAll(\".\", \"-\");\n\treturn dashed === id ? [id] : [id, dashed];\n}\n\nfunction indexCatalog(catalog: readonly Model<BaiApi>[]): Map<string, Model<BaiApi>> {\n\tconst index = new Map<string, Model<BaiApi>>();\n\tfor (const model of catalog) {\n\t\tfor (const alias of modelIdAliases(model.id)) {\n\t\t\tif (!index.has(alias)) index.set(alias, model);\n\t\t}\n\t}\n\treturn index;\n}\n\nfunction remapBaiModels(\n\tmodels: readonly Model<Api>[],\n\tcatalogById: ReadonlyMap<string, Model<BaiApi>>,\n): Model<BaiApi>[] {\n\treturn models.flatMap((model) => {\n\t\tconst current = catalogById.get(model.id);\n\t\treturn current ? [current] : [];\n\t});\n}\n\nasync function fetchBaiModels(\n\tbaseUrl: string,\n\tcatalogById: ReadonlyMap<string, Model<BaiApi>>,\n\tfetchImpl: typeof fetch,\n\tcontext: RefreshModelsContext,\n): Promise<Model<BaiApi>[]> {\n\tconst apiKey = context.credential?.type === \"api_key\" ? context.credential.key?.trim() : undefined;\n\tif (!apiKey) return [];\n\n\tconst response = await fetchImpl(`${baseUrl}/models`, {\n\t\theaders: {\n\t\t\taccept: \"application/json\",\n\t\t\tauthorization: `Bearer ${apiKey}`,\n\t\t},\n\t\tsignal: context.signal,\n\t});\n\tif (!response.ok) {\n\t\tthrow new Error(`Could not load B.AI model catalog: ${response.status}`);\n\t}\n\n\tconst payload = (await response.json()) as BaiModelsResponse;\n\tif (payload.success === false) {\n\t\tthrow new Error(`Could not load B.AI model catalog: ${payload.message?.trim() || \"request rejected\"}`);\n\t}\n\tif (!Array.isArray(payload.data)) {\n\t\tthrow new Error(\"Invalid B.AI model catalog response\");\n\t}\n\n\tconst discovered = payload.data.flatMap((entry) => {\n\t\tconst id = entry.id?.trim();\n\t\tconst model = id ? catalogById.get(id) : undefined;\n\t\treturn model ? [model] : [];\n\t});\n\treturn [...new Map(discovered.map((model) => [model.id, model])).values()];\n}\n\nexport function baiProvider(options: BaiProviderOptions = {}): Provider<BaiApi> {\n\tconst baseUrl = normalizeBaseUrl(options.baseUrl ?? BAI_BASE_URL);\n\tconst anthropicBaseUrl = baseUrl.replace(/\\/v1$/u, \"\");\n\tconst catalog = [...(options.models ?? Object.values(BAI_MODELS))].map((model) => ({\n\t\t...model,\n\t\tbaseUrl: model.api === \"anthropic-messages\" ? anthropicBaseUrl : baseUrl,\n\t}));\n\tconst catalogById = indexCatalog(catalog);\n\tconst fetchImpl = options.fetch ?? fetch;\n\n\treturn createProvider<BaiApi>({\n\t\tid: \"bai\",\n\t\tname: \"B.AI\",\n\t\tbaseUrl,\n\t\tauth: { apiKey: envApiKeyAuth(\"B.AI API key\", [\"BAI_API_KEY\"]) },\n\t\tmodels: [],\n\t\trestoreModels: (models) => remapBaiModels(models, catalogById),\n\t\tfetchModels: (context) => fetchBaiModels(baseUrl, catalogById, fetchImpl, context),\n\t\tapi: {\n\t\t\t// Only the Responses tool builder forwards a union-root schema unrepaired;\n\t\t\t// see the contract note in ./bai-stream.ts.\n\t\t\t\"openai-responses\": baiResponsesStreams(openAIResponsesApi()),\n\t\t\t\"openai-completions\": openAICompletionsApi(),\n\t\t\t\"anthropic-messages\": anthropicMessagesApi(),\n\t\t},\n\t});\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bai.models.d.ts","sourceRoot":"","sources":["../../src/providers/bai.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,iBAAiB,CAAuB;AAC3D,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,KAAK,CACvB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// This file is auto-generated by scripts/generate-models.ts
|
|
2
|
+
// Do not edit manually - run 'npm run generate-models' to update
|
|
3
|
+
import values from "./data/bai.json" with { type: "json" };
|
|
4
|
+
import { flattenModelCatalog } from "../model-catalog.js";
|
|
5
|
+
export const BAI_MODELS = flattenModelCatalog("bai", values);
|
|
6
|
+
//# sourceMappingURL=bai.models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bai.models.js","sourceRoot":"","sources":["../../src/providers/bai.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,UAAU,GACtB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/bai.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const BAI_MODELS: ModelCatalog<typeof values, \"bai\"> =\n\tflattenModelCatalog(\"bai\", values);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"schemaVersion":3,"generatedAt":"2026-09-
|
|
1
|
+
{"schemaVersion":3,"generatedAt":"2026-09-18T18:10:25.827Z","structureHash":"41e6cadb75425eb0f8d2a85b78b182499ffde98065917dd41d2b100d2e23f031","files":{"alibaba-token-plan.json":"3a9c1be76d47459371e9fa2feeffc31e7edbbfec65fa9cc41236988efc4cf6d9","amazon-bedrock.json":"d82a76308591b1777c351a22f1bd3e4f332a50464743dfc3610b250e265e531d","ant-ling.json":"4979fe79d99ed97382d7ce40170c6132e932e77906de1eb54464c042e7d63633","anthropic.json":"e9d883ee35d94dba963320b5496bd7dd368d226cbafcf134bfec66a0a24b3b7f","azure-openai-responses.json":"9d2137c68fbf7012872296a02a13a138f7d5246dc09f2ca79e34e6a875b11488","bai.json":"2b12b15bd43462e60711944dd7283db8676611d9d76c82c2a01f64913e16a67e","baseten.json":"d155c434294b5167244cffb6dea6793f9669e91e8ab65b564f9510d81b330e37","cerebras.json":"9eaa554e1b02f3665f8f63e6432d253bf81351af7c72001054dd8108aa528a52","cloudflare-ai-gateway.json":"b62b46dbb24c9a5cd0c10ba5adb58aedc2a1c0616459f36b51e07bb15416e584","cloudflare-workers-ai.json":"07ef63208ff7517fd1a80962f18143e21de399640423329490b157f459ccf995","deepseek.json":"b5f9693ec641e9a957dc5f7a22042b3bb928bac3d7268406619b6f18e21c4b83","fireworks.json":"6283651d25a8861e7d42fe2bdb1cb7dd80802811dfaf61e40c11cc813408c294","github-copilot.json":"2628f6583c2509e1f17412e6a8a8f12cf20750cc8cb82ab4273c63155cee4746","google-vertex.json":"e1631109172dc1f7d7977570420a5bb86258bdd1088427e244a2c51545c4f24d","google.json":"7619bf03edd2a7acb06a2274a14b13c3a61354288abe029a758401d4de36a8fd","groq.json":"e4728fd72e358cd8f25e9a518e9b49a521ef44523d3debe38a7db9e0663c4077","huggingface.json":"a488b6f175b382277ccf7d487f877ef0c698994576bb55d2410838bf9c8c7c41","minimax-cn.json":"65d37e55a6d9585855f94b3fb7739308d107fe248ebd9e1001d1c5d4606ad2c4","minimax.json":"c7dc5765995ae77242916430929c7cc9a782589f7e483e13f7e01663190d028e","mistral.json":"be522597b22bceeb0bb9a0ba1781647649ffd19637d0c8e67b056d7b0ec33d52","moonshotai-cn.json":"c4e1801b5dfd61bebcaa33cbfc5ed0c69df14a3bee37da218a558668d817864e","moonshotai.json":"3dab637e7e2648792c786157f85f29026b93393f7098b77593c1180928d371c9","nvidia.json":"2ff6862206269af88a694e627c4b54753055357710adaf49ac8518d102c17407","openai-codex.json":"5b308f19ee369ba78113998361d8f8e6c160690b29947e6f07ccbc12b46289e6","openai.json":"203a1d6bf61178268edf3d3f0ad4a6408eded401c4472bda4ac0ec73142f38ce","opencode-go.json":"f97adb96bf613ee102585c6c4cd0a8cc8047d51c8cfe4cf2f98673afce09ee3d","opencode.json":"7b115931cd69b446a47419ff8e47c9052fd630e2afe66c60d3533e79e29cc16e","opengateway.json":"98a5c5a0e8998579d8735da8f8db8d24842f570d6c835758c50d6801c22b8a10","openrouter.json":"de9ae26a435835442b69fb7f1e739cda67e0009286f7ae4e8a03d4edc7e21dff","qwen-token-plan-cn.json":"4bf520ed38e5c3045680d2ec2816fa8a69079dbe97f7b929767a63172288da6b","qwen-token-plan-individual.json":"eb040e78595853e980011308b1bf9caacae6dc8a91abbac5ffebd402515dd2a6","qwen-token-plan.json":"a5c67213745329ec3ba79f712f31c1c32a781d7ffb8c04f9819f36c27672531f","together.json":"927c707d06f2236cdab13f14c870fb58bce0614ba7287bbcd57cc9fd66d191ed","venice.json":"669535f56137a845e3bb6e62345ad1e3fbd594490f496061778a6daca7f647fe","vercel-ai-gateway.json":"be9809f013a4dfbe6de0c19abc134cd7ea73856dbb12c592aef5e841921aac25","xai.json":"5947370c4a40ad85605f1a17ae09d4d6dd4f9ab120d14fabfb4c5a08a75e6f7e","xiaomi-token-plan-ams.json":"568b9992cf320536a65826e26a414afa5c0d17f083a01af4bd96658d9dd3e705","xiaomi-token-plan-cn.json":"c423857d0bbb0b126394eaf1ebb2a91bf2d1193cc5a4fe77843ff0f4536a0a80","xiaomi-token-plan-sgp.json":"008f1eb41037e93c5ae478f12815cd67bac1978f131ffefa602775bb60b63fea","xiaomi.json":"37acf451bb4364bdca2ecea6b7d962590d9974a87e80cfe34bb800be6a95c13b","zai-coding-cn.json":"c68da532c6e8fa126372e743a2474d9f483ac3260bf9b1fad3ee40183957e141","zai.json":"f42790c77fb4681a656897a9d860b939916c0ddf979a5f16856bce9573cdf64e"}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"anthropic-messages":{"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","api":"anthropic-messages","provider":"bai","baseUrl":"https://api.b.ai","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":null,"xhigh":"xhigh","max":"max"},"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsDisabledThinking":false,"forceAdaptiveThinking":true}},"claude-fable-5.1":{"id":"claude-fable-5.1","name":"Claude Fable 5.1","api":"anthropic-messages","provider":"bai","baseUrl":"https://api.b.ai","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"},"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":0.25,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsDisabledThinking":false,"forceAdaptiveThinking":true}},"claude-haiku-4.5":{"id":"claude-haiku-4.5","name":"Claude Haiku 4.5","api":"anthropic-messages","provider":"bai","baseUrl":"https://api.b.ai","reasoning":false,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000},"claude-opus-4.5":{"id":"claude-opus-4.5","name":"Claude Opus 4.5","api":"anthropic-messages","provider":"bai","baseUrl":"https://api.b.ai","reasoning":false,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":32000},"claude-opus-4.6":{"id":"claude-opus-4.6","name":"Claude Opus 4.6","api":"anthropic-messages","provider":"bai","baseUrl":"https://api.b.ai","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"max":"max"},"compat":{"forceAdaptiveThinking":true}},"claude-opus-4.7":{"id":"claude-opus-4.7","name":"Claude Opus 4.7","api":"anthropic-messages","provider":"bai","baseUrl":"https://api.b.ai","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":null,"xhigh":"xhigh","max":"max"},"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"compat":{"forceAdaptiveThinking":true,"supportsTemperature":false}},"claude-opus-4.8":{"id":"claude-opus-4.8","name":"Claude Opus 4.8","api":"anthropic-messages","provider":"bai","baseUrl":"https://api.b.ai","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"forceAdaptiveThinking":true,"supportsTemperature":false}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","api":"anthropic-messages","provider":"bai","baseUrl":"https://api.b.ai","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"},"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"compat":{"forceAdaptiveThinking":true,"supportsTemperature":false}},"claude-sonnet-4.5":{"id":"claude-sonnet-4.5","name":"Claude Sonnet 4.5","api":"anthropic-messages","provider":"bai","baseUrl":"https://api.b.ai","reasoning":false,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000},"claude-sonnet-4.6":{"id":"claude-sonnet-4.6","name":"Claude Sonnet 4.6","api":"anthropic-messages","provider":"bai","baseUrl":"https://api.b.ai","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"max":"max"},"compat":{"forceAdaptiveThinking":true}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","api":"anthropic-messages","provider":"bai","baseUrl":"https://api.b.ai","reasoning":true,"thinkingLevelMap":{"off":"off","minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"},"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"compat":{"forceAdaptiveThinking":true}}},"openai-completions":{"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0.5},"contextWindow":1048576,"maxTokens":65536,"compat":{"supportsDeveloperRole":false}},"gemini-3.1-pro":{"id":"gemini-3.1-pro","name":"Gemini 3.1 Pro","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":null},"input":["text","image","video"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":2},"contextWindow":1000000,"maxTokens":64000,"compat":{"supportsDeveloperRole":false}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":null,"max":null},"input":["text","image","video"],"cost":{"input":1.5,"output":9,"cacheRead":0.15,"cacheWrite":1.5},"contextWindow":1048576,"maxTokens":65536,"compat":{"supportsDeveloperRole":false}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text","image","video"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0.3},"contextWindow":1048576,"maxTokens":65536,"compat":{"supportsDeveloperRole":false}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text","image","video"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":1.5},"contextWindow":1048576,"maxTokens":65536,"compat":{"supportsDeveloperRole":false}},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null},"input":["text","image","video"],"cost":{"input":0.75,"output":3.75,"cacheRead":0.075,"cacheWrite":0.75},"contextWindow":1048576,"maxTokens":65536,"compat":{"supportsDeveloperRole":false}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.28,"cacheWrite":1.4},"contextWindow":200000,"maxTokens":128000,"compat":{"supportsDeveloperRole":false}},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":"high","xhigh":null,"max":"max"},"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.28,"cacheWrite":1.4},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsDeveloperRole":false}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"},"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.28,"cacheWrite":1.4},"contextWindow":1000000,"maxTokens":131072,"compat":{"supportsDeveloperRole":false}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3 Flash","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"},"input":["text","image","video"],"cost":{"input":0.15,"output":0.5,"cacheRead":0.03,"cacheWrite":0.15},"contextWindow":1000000,"maxTokens":131072,"compat":{"supportsDeveloperRole":false}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null},"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.3,"cacheWrite":2},"contextWindow":500000,"maxTokens":500000,"compat":{"supportsDeveloperRole":false}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null},"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":2},"contextWindow":500000,"maxTokens":500000,"compat":{"supportsDeveloperRole":false}},"hy3":{"id":"hy3","name":"HY3","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":"none","minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":null},"input":["text"],"cost":{"input":0.132,"output":0.528,"cacheRead":0.033,"cacheWrite":0.132},"contextWindow":256000,"maxTokens":128000,"compat":{"supportsDeveloperRole":false}},"hy4-preview":{"id":"hy4-preview","name":"HY4 Preview","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":null},"input":["text"],"cost":{"input":0.834,"output":2.501,"cacheRead":0.042,"cacheWrite":0.834},"contextWindow":1000000,"maxTokens":64000,"compat":{"supportsDeveloperRole":false}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text","image"],"cost":{"input":0.59,"output":3,"cacheRead":0.1,"cacheWrite":0.59},"contextWindow":256000,"maxTokens":256000,"compat":{"supportsDeveloperRole":false}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.95,"output":4,"cacheRead":0.1615,"cacheWrite":0.95},"contextWindow":262144,"maxTokens":65536,"compat":{"supportsDeveloperRole":false}},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":null,"xhigh":null,"max":"max"},"input":["text","image","video"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3},"contextWindow":1048576,"maxTokens":131072,"compat":{"supportsDeveloperRole":false}},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo V2.5","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text","image","video"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0.14},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsDeveloperRole":false}},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo V2.5 Pro","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.0036,"cacheWrite":0.435},"contextWindow":1000000,"maxTokens":128000,"compat":{"supportsDeveloperRole":false}},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax M2.7","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0.375},"contextWindow":204800,"maxTokens":131100,"compat":{"supportsDeveloperRole":false}},"minimax-m3":{"id":"minimax-m3","name":"MiniMax M3","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0.3},"contextWindow":1000000,"maxTokens":131072,"compat":{"supportsDeveloperRole":false}},"muse-spark-1-3":{"id":"muse-spark-1-3","name":"Muse Spark 1.3","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text"],"cost":{"input":1.25,"output":4.25,"cacheRead":0.15,"cacheWrite":1.25},"contextWindow":1000000,"maxTokens":131000,"compat":{"supportsDeveloperRole":false}},"qwen3.6-27b":{"id":"qwen3.6-27b","name":"Qwen3.6 27b","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text","image","video"],"cost":{"input":0.19,"output":2.99,"cacheRead":0.019,"cacheWrite":0.19},"contextWindow":128000,"maxTokens":32768,"compat":{"supportsDeveloperRole":false}},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text"],"cost":{"input":1.65,"output":4.951,"cacheRead":0.33,"cacheWrite":1.65},"contextWindow":1000000,"maxTokens":65536,"compat":{"supportsDeveloperRole":false}},"qwen3.8-27b":{"id":"qwen3.8-27b","name":"Qwen3.8 27b","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text","image","video"],"cost":{"input":0.22,"output":1.6,"cacheRead":0.022,"cacheWrite":0.22},"contextWindow":262144,"maxTokens":131072,"compat":{"supportsDeveloperRole":false}},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text","image","video"],"cost":{"input":0.16,"output":0.47,"cacheRead":0.016,"cacheWrite":0.16},"contextWindow":1000000,"maxTokens":131000,"compat":{"supportsDeveloperRole":false}},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","api":"openai-completions","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":null,"xhigh":"xhigh","max":null},"input":["text","image","video"],"cost":{"input":2,"output":6,"cacheRead":0.25,"cacheWrite":2},"contextWindow":1000000,"maxTokens":131070,"compat":{"supportsDeveloperRole":false}}},"openai-responses":{"deepseek-v3.2":{"id":"deepseek-v3.2","name":"DeepSeek V3.2","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.29,"output":0.44,"cacheRead":0.145,"cacheWrite":0.29},"contextWindow":164000,"maxTokens":164000},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.006,"cacheWrite":0.3},"contextWindow":1000000,"maxTokens":384000},"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":"none","minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"},"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.006,"cacheWrite":0.3},"contextWindow":1000000,"maxTokens":384000},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":"high","xhigh":null,"max":"max"},"input":["text"],"cost":{"input":1.32,"output":3.96,"cacheRead":0.044,"cacheWrite":1.32},"contextWindow":1000000,"maxTokens":384000},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":"none","minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"},"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.006,"cacheWrite":0.3},"contextWindow":1000000,"maxTokens":384000},"gpt-5-mini":{"id":"gpt-5-mini","name":"GPT-5 Mini","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null},"input":["text"],"cost":{"input":0.25,"output":2,"cacheRead":0.025,"cacheWrite":0.25},"contextWindow":272000,"maxTokens":128000},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":null,"max":null},"input":["text","image"],"cost":{"input":0.05,"output":0.4,"cacheRead":0.005,"cacheWrite":0.05},"contextWindow":272000,"maxTokens":128000},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null},"input":["text","image","video"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":1.75},"contextWindow":272000,"maxTokens":128000},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null},"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":2.5},"contextWindow":272000,"maxTokens":128000},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null},"input":["text","image"],"cost":{"input":0.75,"output":4.5,"cacheRead":0.075,"cacheWrite":0.75},"contextWindow":272000,"maxTokens":128000},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null},"input":["text","image"],"cost":{"input":0.2,"output":1.25,"cacheRead":0.02,"cacheWrite":0.2},"contextWindow":272000,"maxTokens":128000},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":"medium","high":"high","xhigh":"xhigh","max":null},"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":3,"cacheWrite":30},"contextWindow":922000,"maxTokens":128000},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":"medium","high":null,"xhigh":"xhigh","max":null},"input":["text","image","video"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":5,"tiers":[{"inputTokensAbove":272000,"input":10,"output":45,"cacheRead":1,"cacheWrite":10}]},"contextWindow":922000,"maxTokens":128000},"gpt-5.5-instant":{"id":"gpt-5.5-instant","name":"GPT-5.5 Instant","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"input":["text","image","video"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":5,"tiers":[{"inputTokensAbove":272000,"input":10,"output":45,"cacheRead":1,"cacheWrite":10}]},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"xhigh":"xhigh"}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"},"input":["text","image"],"cost":{"input":0.2,"output":1.2,"cacheRead":0.02,"cacheWrite":0.25},"contextWindow":922000,"maxTokens":128000},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"},"input":["text","image"],"cost":{"input":4,"output":20,"cacheRead":0.4,"cacheWrite":5},"contextWindow":922000,"maxTokens":128000},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"},"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":922000,"maxTokens":128000},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","api":"openai-responses","provider":"bai","baseUrl":"https://api.b.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"},"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5,"tiers":[{"inputTokensAbove":272000,"input":20,"output":75,"cacheRead":2,"cacheWrite":25}]},"contextWindow":600000,"maxTokens":128000}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"anthropic-messages":{"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"supportsDisabledThinking":false,"forceAdaptiveThinking":true}},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":0.25,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"supportsDisabledThinking":false,"forceAdaptiveThinking":true}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"max":"max"},"compat":{"forceAdaptiveThinking":true}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"forceAdaptiveThinking":true,"supportsTemperature":false}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"forceAdaptiveThinking":true,"supportsTemperature":false}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"forceAdaptiveThinking":true,"supportsTemperature":false}},"claude-sonnet-4":{"id":"claude-sonnet-4","name":"Claude Sonnet 4","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinkingLevelMap":{"max":"max"},"compat":{"forceAdaptiveThinking":true}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"forceAdaptiveThinking":true}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.2,"cacheRead":0.02,"cacheWrite":0.25},"contextWindow":262144,"maxTokens":65536},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0.625},"contextWindow":262144,"maxTokens":65536}},"google-generative-ai":{"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}},"gemini-3.1-pro":{"id":"gemini-3.1-pro","name":"Gemini 3.1 Pro Preview","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null,"minimal":null,"low":"LOW","medium":null,"high":"HIGH"}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":9,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}}},"openai-completions":{"big-pickle":{"id":"big-pickle","name":"Big Pickle","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":200000,"maxTokens":32000},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.028,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false,"requiresReasoningContentOnAssistantMessages":true},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.028,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.74,"output":3.84,"cacheRead":0.145,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false,"requiresReasoningContentOnAssistantMessages":true},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":"high","xhigh":null,"max":"max"}},"glm-5":{"id":"glm-5","name":"GLM-5","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1,"output":3.2,"cacheRead":0.2,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":204800,"maxTokens":131072},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":204800,"maxTokens":131072},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":"high","xhigh":null,"max":"max"}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.5,"cacheRead":0.03,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":3,"cacheRead":0.08,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":65536},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.16,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"thinkingFormat":"deepseek","supportsReasoningEffort":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":65536},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.19,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":262144},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":null,"xhigh":null,"max":"max"}},"ling-3.0-flash-fin-free":{"id":"ling-3.0-flash-fin-free","name":"Ling 3.0 Flash Fin Free","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":262144,"maxTokens":32768},"mimo-v2.5-free":{"id":"mimo-v2.5-free","name":"MiMo V2.5 Free","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":200000,"maxTokens":32000},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":204800,"maxTokens":131072},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false},"contextWindow":204800,"maxTokens":131072},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":512000,"maxTokens":128000},"nemotron-3-ultra-free":{"id":"nemotron-3-ultra-free","name":"Nemotron 3 Ultra Free","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":128000},"nemotron-3.5-lightning-free":{"id":"nemotron-3.5-lightning-free","name":"Nemotron 3.5 Lightning Free","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":262144,"maxTokens":262144}},"openai-responses":{"gpt-5":{"id":"gpt-5","name":"GPT-5","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5 Codex","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.05,"output":0.4,"cacheRead":0.005,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex Mini","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.025,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.75,"output":4.5,"cacheRead":0.075,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.25,"cacheRead":0.02,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":30,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":30,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.2,"cacheRead":0.02,"cacheWrite":0.25},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol (50% Off)","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":3.125},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":600000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.3,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":500000,"maxTokens":500000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":500000,"maxTokens":500000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":2,"cacheRead":0.2,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsReasoningEffort":false},"contextWindow":256000,"maxTokens":256000,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null}},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":4.25,"cacheRead":0.15,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"muse-spark-1.2-contributor-free":{"id":"muse-spark-1.2-contributor-free","name":"Muse Spark 1.2 Free","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"muse-spark-1.3":{"id":"muse-spark-1.3","name":"Muse Spark 1.3","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":4.25,"cacheRead":0.15,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"muse-spark-1.3-contributor-free":{"id":"muse-spark-1.3-contributor-free","name":"Muse Spark 1.3 Free","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}}}}
|
|
1
|
+
{"anthropic-messages":{"claude-fable-5":{"id":"claude-fable-5","name":"Claude Fable 5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"supportsDisabledThinking":false,"forceAdaptiveThinking":true}},"claude-fable-5-1":{"id":"claude-fable-5-1","name":"Claude Fable 5.1","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":0.25,"cacheWrite":12.5},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"supportsDisabledThinking":false,"forceAdaptiveThinking":true}},"claude-haiku-4-5":{"id":"claude-haiku-4-5","name":"Claude Haiku 4.5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":5,"cacheRead":0.1,"cacheWrite":1.25},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-5":{"id":"claude-opus-4-5","name":"Claude Opus 4.5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":200000,"maxTokens":64000},"claude-opus-4-6":{"id":"claude-opus-4-6","name":"Claude Opus 4.6","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"max":"max"},"compat":{"forceAdaptiveThinking":true}},"claude-opus-4-7":{"id":"claude-opus-4-7","name":"Claude Opus 4.7","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"forceAdaptiveThinking":true,"supportsTemperature":false}},"claude-opus-4-8":{"id":"claude-opus-4-8","name":"Claude Opus 4.8","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"forceAdaptiveThinking":true,"supportsTemperature":false}},"claude-opus-5":{"id":"claude-opus-5","name":"Claude Opus 5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":25,"cacheRead":0.5,"cacheWrite":6.25},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"forceAdaptiveThinking":true,"supportsTemperature":false}},"claude-sonnet-4":{"id":"claude-sonnet-4","name":"Claude Sonnet 4","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000},"claude-sonnet-4-5":{"id":"claude-sonnet-4-5","name":"Claude Sonnet 4.5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":200000,"maxTokens":64000},"claude-sonnet-4-6":{"id":"claude-sonnet-4-6","name":"Claude Sonnet 4.6","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":3.75},"contextWindow":1000000,"maxTokens":64000,"thinkingLevelMap":{"max":"max"},"compat":{"forceAdaptiveThinking":true}},"claude-sonnet-5":{"id":"claude-sonnet-5","name":"Claude Sonnet 5","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":10,"cacheRead":0.2,"cacheWrite":2.5},"contextWindow":1000000,"maxTokens":128000,"thinkingLevelMap":{"xhigh":"xhigh","max":"max"},"compat":{"forceAdaptiveThinking":true}},"qwen3.5-plus":{"id":"qwen3.5-plus","name":"Qwen3.5 Plus","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.2,"cacheRead":0.02,"cacheWrite":0.25},"contextWindow":262144,"maxTokens":65536},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","api":"anthropic-messages","provider":"opencode","baseUrl":"https://opencode.ai/zen","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0.625},"contextWindow":262144,"maxTokens":65536}},"google-generative-ai":{"gemini-3-flash":{"id":"gemini-3-flash","name":"Gemini 3 Flash","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}},"gemini-3.1-pro":{"id":"gemini-3.1-pro","name":"Gemini 3.1 Pro Preview","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":12,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null,"minimal":null,"low":"LOW","medium":null,"high":"HIGH"}},"gemini-3.5-flash":{"id":"gemini-3.5-flash","name":"Gemini 3.5 Flash","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":9,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}},"gemini-3.5-flash-lite":{"id":"gemini-3.5-flash-lite","name":"Gemini 3.5 Flash Lite","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":2.5,"cacheRead":0.03,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}},"gemini-3.6-flash":{"id":"gemini-3.6-flash","name":"Gemini 3.6 Flash","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}},"gemini-3.7-flash":{"id":"gemini-3.7-flash","name":"Gemini 3.7 Flash","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}},"gemini-3.8-flash":{"id":"gemini-3.8-flash","name":"Gemini 3.8 Flash","api":"google-generative-ai","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":1048576,"maxTokens":65536,"thinkingLevelMap":{"off":null}}},"openai-completions":{"big-pickle":{"id":"big-pickle","name":"Big Pickle","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":200000,"maxTokens":32000},"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.028,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false,"requiresReasoningContentOnAssistantMessages":true},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.028,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.74,"output":3.84,"cacheRead":0.145,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false,"requiresReasoningContentOnAssistantMessages":true},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":"high","xhigh":null,"max":"max"}},"glm-5":{"id":"glm-5","name":"GLM-5","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1,"output":3.2,"cacheRead":0.2,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":204800,"maxTokens":131072},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":204800,"maxTokens":131072},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":"high","xhigh":null,"max":"max"}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.5,"cacheRead":0.03,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"kimi-k2.5":{"id":"kimi-k2.5","name":"Kimi K2.5","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.6,"output":3,"cacheRead":0.08,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":65536},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.16,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"thinkingFormat":"deepseek","supportsReasoningEffort":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":65536},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.19,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":262144},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":null,"xhigh":null,"max":"max"}},"ling-3.0-flash-fin-free":{"id":"ling-3.0-flash-fin-free","name":"Ling 3.0 Flash Fin Free","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":262144,"maxTokens":32768},"mimo-v2.5-free":{"id":"mimo-v2.5-free","name":"MiMo V2.5 Free","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":200000,"maxTokens":32000},"minimax-m2.5":{"id":"minimax-m2.5","name":"MiniMax-M2.5","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":204800,"maxTokens":131072},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false},"contextWindow":204800,"maxTokens":131072},"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":512000,"maxTokens":128000},"nemotron-3-ultra-free":{"id":"nemotron-3-ultra-free","name":"Nemotron 3 Ultra Free","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":128000},"nemotron-3.5-lightning-free":{"id":"nemotron-3.5-lightning-free","name":"Nemotron 3.5 Lightning Free","api":"openai-completions","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":262144,"maxTokens":262144}},"openai-responses":{"gpt-5":{"id":"gpt-5","name":"GPT-5","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5-codex":{"id":"gpt-5-codex","name":"GPT-5 Codex","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5-nano":{"id":"gpt-5-nano","name":"GPT-5 Nano","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.05,"output":0.4,"cacheRead":0.005,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5.1":{"id":"gpt-5.1","name":"GPT-5.1","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5.1-codex":{"id":"gpt-5.1-codex","name":"GPT-5.1 Codex","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.07,"output":8.5,"cacheRead":0.107,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5.1-codex-max":{"id":"gpt-5.1-codex-max","name":"GPT-5.1 Codex Max","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":10,"cacheRead":0.125,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.1-codex-mini":{"id":"gpt-5.1-codex-mini","name":"GPT-5.1 Codex Mini","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.25,"output":2,"cacheRead":0.025,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"gpt-5.2":{"id":"gpt-5.2","name":"GPT-5.2","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.2-codex":{"id":"gpt-5.2-codex","name":"GPT-5.2 Codex","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.3-codex":{"id":"gpt-5.3-codex","name":"GPT-5.3 Codex","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.75,"output":14,"cacheRead":0.175,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.4":{"id":"gpt-5.4","name":"GPT-5.4","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.4-mini":{"id":"gpt-5.4-mini","name":"GPT-5.4 Mini","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.75,"output":4.5,"cacheRead":0.075,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.4-nano":{"id":"gpt-5.4-nano","name":"GPT-5.4 Nano","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.25,"cacheRead":0.02,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":272000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.4-pro":{"id":"gpt-5.4-pro","name":"GPT-5.4 Pro","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":30,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.5":{"id":"gpt-5.5","name":"GPT-5.5","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":5,"output":30,"cacheRead":0.5,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.5-pro":{"id":"gpt-5.5-pro","name":"GPT-5.5 Pro","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":30,"output":180,"cacheRead":30,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":"medium","high":"high","xhigh":"xhigh","max":null}},"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.2,"cacheRead":0.02,"cacheWrite":0.25},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"gpt-5.6-sol":{"id":"gpt-5.6-sol","name":"GPT-5.6 Sol","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":4,"output":20,"cacheRead":0.4,"cacheWrite":5},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"gpt-5.6-terra":{"id":"gpt-5.6-terra","name":"GPT-5.6 Terra","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2.5,"output":15,"cacheRead":0.25,"cacheWrite":3.125},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":922000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"gpt-6-astra":{"id":"gpt-6-astra","name":"GPT-6 Astra","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":10,"output":50,"cacheRead":1,"cacheWrite":12.5},"compat":{"sessionAffinityFormat":"openai-nosession","supportsOpenAIGrammarTools":true},"contextWindow":600000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.3,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":500000,"maxTokens":500000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":null,"max":null}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":500000,"maxTokens":500000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":2,"cacheRead":0.2,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession","supportsReasoningEffort":false},"contextWindow":256000,"maxTokens":256000,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null}},"muse-spark-1.2":{"id":"muse-spark-1.2","name":"Muse Spark 1.2","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":4.25,"cacheRead":0.15,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"muse-spark-1.2-contributor-free":{"id":"muse-spark-1.2-contributor-free","name":"Muse Spark 1.2 Free","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"muse-spark-1.3":{"id":"muse-spark-1.3","name":"Muse Spark 1.3","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":4.25,"cacheRead":0.15,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"muse-spark-1.3-contributor-free":{"id":"muse-spark-1.3-contributor-free","name":"Muse Spark 1.3 Free","api":"openai-responses","provider":"opencode","baseUrl":"https://opencode.ai/zen/v1","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}}}}
|