@bitkyc08/opencodex 2.6.14 → 2.6.15-preview.20260701.1
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/gui/dist/assets/index-BAJuBSv6.js +9 -0
- package/gui/dist/index.html +1 -1
- package/package.json +1 -1
- package/src/adapters/anthropic.ts +11 -3
- package/src/adapters/google.ts +7 -5
- package/src/codex-catalog.ts +2 -0
- package/src/generated/jawcode-model-metadata.ts +9 -4
- package/src/providers/antigravity-models.ts +31 -7
- package/src/providers/kiro-models.ts +4 -0
- package/src/providers/registry.ts +4 -3
- package/src/responses/parser.ts +1 -0
- package/src/server.ts +1 -0
- package/src/types.ts +1 -0
- package/src/usage-summary.ts +24 -3
- package/gui/dist/assets/index-B64_jgH-.js +0 -9
package/gui/dist/index.html
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
} catch (e) {}
|
|
17
17
|
})();
|
|
18
18
|
</script>
|
|
19
|
-
<script type="module" crossorigin src="/assets/index-
|
|
19
|
+
<script type="module" crossorigin src="/assets/index-BAJuBSv6.js"></script>
|
|
20
20
|
<link rel="stylesheet" crossorigin href="/assets/index-DIBiVVC0.css">
|
|
21
21
|
</head>
|
|
22
22
|
<body>
|
package/package.json
CHANGED
|
@@ -41,6 +41,11 @@ const OUTPUT_HEADROOM = 8192;
|
|
|
41
41
|
/** Minimum visible-output room kept below `max_tokens` (so `max_tokens > budget_tokens` always holds). */
|
|
42
42
|
const OUTPUT_FLOOR = 4096;
|
|
43
43
|
const COMPAT_TOOL_PREFIX = "cx_";
|
|
44
|
+
const EPHEMERAL_CACHE_CONTROL = { type: "ephemeral" } as const;
|
|
45
|
+
|
|
46
|
+
function withPromptCache<T extends Record<string, unknown>>(block: T): T & { cache_control: typeof EPHEMERAL_CACHE_CONTROL } {
|
|
47
|
+
return { ...block, cache_control: EPHEMERAL_CACHE_CONTROL };
|
|
48
|
+
}
|
|
44
49
|
|
|
45
50
|
/** Map a Responses reasoning effort to an Anthropic extended-thinking budget (tokens, >= 1024). */
|
|
46
51
|
function reasoningBudget(effort: string): number {
|
|
@@ -203,11 +208,14 @@ function toolsToAnthropicFormat(parsed: OcxParsedRequest, toolNames: { toWire: (
|
|
|
203
208
|
? parsed.context.tools.filter(t => toolAllowedByChoice(t, allowed))
|
|
204
209
|
: parsed.context.tools;
|
|
205
210
|
if (tools.length === 0) return undefined;
|
|
206
|
-
|
|
211
|
+
const converted = tools.map(t => ({
|
|
207
212
|
name: toolNames.toWire(namespacedToolName(t.namespace, t.name)),
|
|
208
213
|
description: t.description,
|
|
209
214
|
input_schema: t.parameters,
|
|
210
215
|
}));
|
|
216
|
+
const last = converted.length - 1;
|
|
217
|
+
converted[last] = withPromptCache(converted[last]);
|
|
218
|
+
return converted;
|
|
211
219
|
}
|
|
212
220
|
|
|
213
221
|
export function createAnthropicAdapter(provider: OcxProviderConfig): ProviderAdapter {
|
|
@@ -230,10 +238,10 @@ export function createAnthropicAdapter(provider: OcxProviderConfig): ProviderAda
|
|
|
230
238
|
// Claude OAuth (Pro/Max) requires the first system block to be the Claude Code identity.
|
|
231
239
|
body.system = [
|
|
232
240
|
{ type: "text", text: CLAUDE_CODE_SYSTEM_INSTRUCTION },
|
|
233
|
-
...(system ? [{ type: "text", text: system }] : []),
|
|
241
|
+
...(system ? [withPromptCache({ type: "text", text: system })] : []),
|
|
234
242
|
];
|
|
235
243
|
} else if (system) {
|
|
236
|
-
body.system = system;
|
|
244
|
+
body.system = [withPromptCache({ type: "text", text: system })];
|
|
237
245
|
}
|
|
238
246
|
if (tools) body.tools = tools;
|
|
239
247
|
if (parsed.options.temperature !== undefined) body.temperature = parsed.options.temperature;
|
package/src/adapters/google.ts
CHANGED
|
@@ -20,6 +20,7 @@ import { ANTIGRAVITY_REQUEST_UA, antigravitySessionId, isLikelyRealThoughtSignat
|
|
|
20
20
|
import { sanitizeGeminiToolParameters } from "./google-tool-schema";
|
|
21
21
|
import { neutralizeIdentity } from "./identity";
|
|
22
22
|
import { antigravityUsesReplayCache, applyAntigravityReplay, clearAntigravityReplay, observeAntigravityReplay } from "./google-antigravity-replay";
|
|
23
|
+
import { resolveAntigravityWireModelId } from "../providers/antigravity-models";
|
|
23
24
|
|
|
24
25
|
// Google-family models (Gemini/Vertex/Antigravity) tend to emit long running commentary between
|
|
25
26
|
// tool calls. This steers them to keep the BETWEEN-STEP text to one line and reason internally
|
|
@@ -229,14 +230,15 @@ export function createGoogleAdapter(provider: OcxProviderConfig): ProviderAdapte
|
|
|
229
230
|
const project = provider.project;
|
|
230
231
|
if (!project) throw new Error("Antigravity requires a discovered Cloud Code Assist project id (re-run `ocx login google-antigravity`).");
|
|
231
232
|
const sessionId = antigravitySessionId(parsed);
|
|
232
|
-
|
|
233
|
+
const wireModelId = resolveAntigravityWireModelId(parsed.modelId);
|
|
234
|
+
antigravityModel = wireModelId;
|
|
233
235
|
antigravitySession = sessionId;
|
|
234
236
|
// Reasoning continuity: Gemini models re-inject cached thoughtSignatures; Claude-on-Antigravity
|
|
235
237
|
// sanitizes signatures inline (no cache). Both guard against the upstream 400 on bad signatures.
|
|
236
238
|
if (Array.isArray((body as { contents?: unknown[] }).contents)) {
|
|
237
239
|
const contents = (body as { contents: unknown[] }).contents;
|
|
238
|
-
if (antigravityUsesReplayCache(
|
|
239
|
-
applyAntigravityReplay(
|
|
240
|
+
if (antigravityUsesReplayCache(wireModelId)) {
|
|
241
|
+
applyAntigravityReplay(wireModelId, sessionId, contents);
|
|
240
242
|
} else {
|
|
241
243
|
sanitizeAntigravityClaudeSignatures(contents);
|
|
242
244
|
}
|
|
@@ -246,13 +248,13 @@ export function createGoogleAdapter(provider: OcxProviderConfig): ProviderAdapte
|
|
|
246
248
|
// spelling is a non-first-party key, so we send the single canonical location.
|
|
247
249
|
const request: Record<string, unknown> = { ...body, sessionId };
|
|
248
250
|
// Claude-on-Antigravity forces VALIDATED function calling (the real client always sets it).
|
|
249
|
-
if (/claude/i.test(
|
|
251
|
+
if (/claude/i.test(wireModelId)) {
|
|
250
252
|
const existing = (request.toolConfig ?? {}) as Record<string, unknown>;
|
|
251
253
|
const fcc = (existing.functionCallingConfig ?? {}) as Record<string, unknown>;
|
|
252
254
|
request.toolConfig = { ...existing, functionCallingConfig: { ...fcc, mode: "VALIDATED" } };
|
|
253
255
|
}
|
|
254
256
|
const envelope = {
|
|
255
|
-
model:
|
|
257
|
+
model: wireModelId,
|
|
256
258
|
// The envelope's `userAgent` field is a protocol constant ("antigravity"), distinct from
|
|
257
259
|
// the HTTP `User-Agent` header (the real CLI UA). CLIProxyAPI `geminiToAntigravity` hardcodes
|
|
258
260
|
// the body field; only the header carries the versioned client string.
|
package/src/codex-catalog.ts
CHANGED
|
@@ -574,6 +574,7 @@ function readNativeBaseline(catalogPath: string): Map<string, number> {
|
|
|
574
574
|
type ProviderModelsApiItem = {
|
|
575
575
|
id: string;
|
|
576
576
|
owned_by?: string;
|
|
577
|
+
context_length?: number;
|
|
577
578
|
max_model_len?: number;
|
|
578
579
|
metadata?: {
|
|
579
580
|
capabilities?: Record<string, unknown>;
|
|
@@ -635,6 +636,7 @@ function catalogHintsFromModelsApiItem(providerName: string, item: ProviderModel
|
|
|
635
636
|
const limits = item.metadata?.limits;
|
|
636
637
|
const contextWindow =
|
|
637
638
|
typeof limits?.max_context_length === "number" ? limits.max_context_length
|
|
639
|
+
: typeof item.context_length === "number" ? item.context_length
|
|
638
640
|
: typeof item.max_model_len === "number" ? item.max_model_len
|
|
639
641
|
: undefined;
|
|
640
642
|
const reasoningEfforts = capabilities && typeof capabilities.reasoning_effort === "boolean"
|
|
@@ -19,6 +19,11 @@ const PROVIDER_ALIASES: Record<string, string> = {
|
|
|
19
19
|
"openrouter": "openrouter",
|
|
20
20
|
"google": "google",
|
|
21
21
|
"gemini": "google",
|
|
22
|
+
"google-vertex": "google",
|
|
23
|
+
"gemini-vertex": "google",
|
|
24
|
+
"google-antigravity": "google",
|
|
25
|
+
"antigravity": "google",
|
|
26
|
+
"gemini-antigravity": "google",
|
|
22
27
|
"moonshot": "moonshot",
|
|
23
28
|
"minimax": "minimax",
|
|
24
29
|
"minimax-cn": "minimax"
|
|
@@ -26,12 +31,12 @@ const PROVIDER_ALIASES: Record<string, string> = {
|
|
|
26
31
|
|
|
27
32
|
type Row = readonly [id: string, contextWindow?: number, maxTokens?: number, input?: string, reasoning?: 0 | 1, wireModelId?: string];
|
|
28
33
|
const DATA: Record<string, readonly Row[]> = {
|
|
29
|
-
"anthropic": [["claude-3-5-sonnet-20240620",200000,8192,"text,image",0],["claude-3-5-sonnet-20241022",200000,8192,"text,image",0],["claude-3-haiku-20240307",200000,4096,"text,image",0],["claude-fable-5",1000000,128000,"text,image",1],["claude-haiku-4-5",200000,64000,"text,image",1],["claude-haiku-4-5-20251001",200000,64000,"text,image",1],["claude-opus-4-0",200000,32000,"text,image",1],["claude-opus-4-1",200000,32000,"text,image",1],["claude-opus-4-1-20250805",200000,32000,"text,image",1],["claude-opus-4-20250514",200000,32000,"text,image",1],["claude-opus-4-5",200000,64000,"text,image",1],["claude-opus-4-5-20251101",200000,64000,"text,image",1],["claude-opus-4-6",1000000,128000,"text,image",1],["claude-opus-4-6[1m]",1000000,128000,"text,image",1,"claude-opus-4-6"],["claude-opus-4-7",1000000,128000,"text,image",1],["claude-opus-4-7[1m]",1000000,128000,"text,image",1,"claude-opus-4-7"],["claude-opus-4-8",1000000,128000,"text,image",1],["claude-opus-4-8[1m]",1000000,128000,"text,image",1,"claude-opus-4-8"],["claude-sonnet-4-0",200000,64000,"text,image",1],["claude-sonnet-4-20250514",200000,64000,"text,image",1],["claude-sonnet-4-5",200000,64000,"text,image",1],["claude-sonnet-4-5-20250929",200000,64000,"text,image",1],["claude-sonnet-4-6",200000,64000,"text,image",1],["claude-sonnet-4-6[1m]",200000,64000,"text,image",1,"claude-sonnet-4-6"]],
|
|
34
|
+
"anthropic": [["claude-3-5-sonnet-20240620",200000,8192,"text,image",0],["claude-3-5-sonnet-20241022",200000,8192,"text,image",0],["claude-3-haiku-20240307",200000,4096,"text,image",0],["claude-fable-5",1000000,128000,"text,image",1],["claude-haiku-4-5",200000,64000,"text,image",1],["claude-haiku-4-5-20251001",200000,64000,"text,image",1],["claude-opus-4-0",200000,32000,"text,image",1],["claude-opus-4-1",200000,32000,"text,image",1],["claude-opus-4-1-20250805",200000,32000,"text,image",1],["claude-opus-4-20250514",200000,32000,"text,image",1],["claude-opus-4-5",200000,64000,"text,image",1],["claude-opus-4-5-20251101",200000,64000,"text,image",1],["claude-opus-4-6",1000000,128000,"text,image",1],["claude-opus-4-6[1m]",1000000,128000,"text,image",1,"claude-opus-4-6"],["claude-opus-4-7",1000000,128000,"text,image",1],["claude-opus-4-7[1m]",1000000,128000,"text,image",1,"claude-opus-4-7"],["claude-opus-4-8",1000000,128000,"text,image",1],["claude-opus-4-8[1m]",1000000,128000,"text,image",1,"claude-opus-4-8"],["claude-sonnet-4-0",200000,64000,"text,image",1],["claude-sonnet-4-20250514",200000,64000,"text,image",1],["claude-sonnet-4-5",200000,64000,"text,image",1],["claude-sonnet-4-5-20250929",200000,64000,"text,image",1],["claude-sonnet-4-6",200000,64000,"text,image",1],["claude-sonnet-4-6[1m]",200000,64000,"text,image",1,"claude-sonnet-4-6"],["claude-sonnet-5",1000000,128000,"text,image",1]],
|
|
30
35
|
"google": [["gemini-1.5-flash",1000000,8192,"text,image",0],["gemini-1.5-flash-8b",1000000,8192,"text,image",0],["gemini-1.5-pro",1000000,8192,"text,image",0],["gemini-2.0-flash",1048576,8192,"text,image",0],["gemini-2.0-flash-lite",1048576,8192,"text,image",0],["gemini-2.5-flash",1048576,65536,"text,image",1],["gemini-2.5-flash-lite",1048576,65536,"text,image",1],["gemini-2.5-flash-lite-preview-06-17",1048576,65536,"text,image",1],["gemini-2.5-flash-lite-preview-09-2025",1048576,65536,"text,image",1],["gemini-2.5-flash-preview-04-17",1048576,65536,"text,image",1],["gemini-2.5-flash-preview-05-20",1048576,65536,"text,image",1],["gemini-2.5-flash-preview-09-2025",1048576,65536,"text,image",1],["gemini-2.5-pro",1048576,65536,"text,image",1],["gemini-2.5-pro-preview-05-06",1048576,65536,"text,image",1],["gemini-2.5-pro-preview-06-05",1048576,65536,"text,image",1],["gemini-3-flash-preview",1048576,65536,"text,image",1],["gemini-3-pro-preview",1048576,65536,"text,image",1],["gemini-3.1-flash-lite",1048576,65536,"text,image",1],["gemini-3.1-flash-lite-preview",1048576,65536,"text,image",1],["gemini-3.1-pro-preview",1048576,65536,"text,image",1],["gemini-3.1-pro-preview-customtools",1048576,65536,"text,image",1],["gemini-3.5-flash",1048576,65536,"text,image",1],["gemini-flash-latest",1048576,65536,"text,image",1],["gemini-flash-lite-latest",1048576,65536,"text,image",1],["gemini-live-2.5-flash",128000,8000,"text,image",1],["gemini-live-2.5-flash-preview-native-audio",131072,65536,"text",1],["gemma-3-27b-it",131072,8192,"text,image",0],["gemma-4-26b",256000,8192,"text,image",1],["gemma-4-26b-a4b-it",262144,32768,"text,image",1],["gemma-4-26b-it",256000,8192,"text,image",1],["gemma-4-31b",256000,8192,"text,image",1],["gemma-4-31b-it",262144,32768,"text,image",1],["gemma-4-E2B-it",131072,8192,"text,image",1],["gemma-4-E4B-it",131072,8192,"text,image",1]],
|
|
31
|
-
"minimax": [["MiniMax-M2",196608,128000,"text",1],["MiniMax-M2.1",204800,131072,"text",1],["MiniMax-M2.5",204800,131072,"text",1],["MiniMax-M2.5-highspeed",204800,131072,"text",1],["MiniMax-M2.5-lightning",204800,32000,"text",1],["MiniMax-M2.7",204800,131072,"text",1],["MiniMax-M2.7-highspeed",204800,131072,"text",1],["minimax-m3",512000,128000,"text,image",1],["MiniMax-M3",
|
|
36
|
+
"minimax": [["MiniMax-M2",196608,128000,"text",1],["MiniMax-M2.1",204800,131072,"text",1],["MiniMax-M2.5",204800,131072,"text",1],["MiniMax-M2.5-highspeed",204800,131072,"text",1],["MiniMax-M2.5-lightning",204800,32000,"text",1],["MiniMax-M2.7",204800,131072,"text",1],["MiniMax-M2.7-highspeed",204800,131072,"text",1],["minimax-m3",512000,128000,"text,image",1],["MiniMax-M3",1000000,128000,"text,image",1]],
|
|
32
37
|
"moonshot": [["kimi-k2.5",262144,65536,"text,image",1]],
|
|
33
|
-
"opencode-go": [["deepseek-v4-flash",1000000,384000,"text",1],["deepseek-v4-pro",1000000,384000,"text",1],["glm-5",
|
|
34
|
-
"openrouter": [["~anthropic/claude-fable-latest",1000000,128000,"text,image",1],["~anthropic/claude-haiku-latest",200000,64000,"text,image",1],["~anthropic/claude-opus-latest",1000000,128000,"text,image",1],["~anthropic/claude-sonnet-latest",1000000,128000,"text,image",1],["~google/gemini-flash-latest",1048576,65536,"text,image",1],["~google/gemini-pro-latest",1048576,65536,"text,image",1],["~moonshotai/kimi-latest",262144,262144,"text,image",1],["~openai/gpt-latest",1050000,128000,"text,image",1],["~openai/gpt-mini-latest",400000,128000,"text,image",1],["ai21/jamba-large-1.7",256000,4096,"text",0],["alibaba/tongyi-deepresearch-30b-a3b",131072,131072,"text",1],["allenai/olmo-3.1-32b-instruct",65536,16384,"text",0],["amazon/nova-2-lite-v1",1000000,65535,"text,image",1],["amazon/nova-lite-v1",300000,5120,"text,image",0],["amazon/nova-micro-v1",128000,5120,"text",0],["amazon/nova-premier-v1",1000000,32000,"text,image",0],["amazon/nova-pro-v1",300000,5120,"text,image",0],["anthropic/claude-3-haiku",200000,4096,"text,image",0],["anthropic/claude-3.5-haiku",200000,8192,"text,image",0],["anthropic/claude-3.5-sonnet",200000,8192,"text,image",0],["anthropic/claude-3.7-sonnet",200000,128000,"text,image",1],["anthropic/claude-3.7-sonnet:thinking",200000,64000,"text,image",1],["anthropic/claude-fable-5",1000000,128000,"text,image",1],["anthropic/claude-haiku-4.5",200000,64000,"text,image",0],["anthropic/claude-opus-4",200000,32000,"text,image",1],["anthropic/claude-opus-4.1",200000,32000,"text,image",1],["anthropic/claude-opus-4.5",200000,64000,"text,image",1],["anthropic/claude-opus-4.6",1000000,128000,"text,image",1],["anthropic/claude-opus-4.6-fast",1000000,128000,"text,image",1],["anthropic/claude-opus-4.7",1000000,128000,"text,image",1],["anthropic/claude-opus-4.7-fast",1000000,128000,"text,image",1],["anthropic/claude-opus-4.8",1000000,128000,"text,image",1],["anthropic/claude-opus-4.8-fast",1000000,128000,"text,image",1],["anthropic/claude-sonnet-4",1000000,64000,"text,image",1],["anthropic/claude-sonnet-4.5",1000000,64000,"text,image",1],["anthropic/claude-sonnet-4.6",1000000,128000,"text,image",1],["arcee-ai/trinity-large-preview",131000,8888,"text",0],["arcee-ai/trinity-large-preview:free",131000,8888,"text",0],["arcee-ai/trinity-large-thinking",262144,262144,"text",1],["arcee-ai/trinity-large-thinking:free",262144,80000,"text",1],["arcee-ai/trinity-mini",131072,131072,"text",1],["arcee-ai/trinity-mini:free",131072,8888,"text",1],["arcee-ai/virtuoso-large",131072,64000,"text",0],["auto",2000000,30000,"text,image",1],["baidu/cobuddy:free",131072,65536,"text",1],["baidu/ernie-4.5-21b-a3b",131072,8000,"text",0],["baidu/ernie-4.5-vl-28b-a3b",131072,8000,"text,image",1],["bytedance-seed/seed-1.6",262144,32768,"text,image",1],["bytedance-seed/seed-1.6-flash",262144,32768,"text,image",1],["bytedance-seed/seed-2.0-lite",262144,131072,"text,image",1],["bytedance-seed/seed-2.0-mini",262144,131072,"text,image",1],["cohere/command-r-08-2024",128000,4000,"text",0],["cohere/command-r-plus-08-2024",128000,4000,"text",0],["cohere/north-mini-code:free",256000,64000,"text",1],["deepseek/deepseek-chat",131072,16000,"text",0],["deepseek/deepseek-chat-v3-0324",163840,16384,"text",1],["deepseek/deepseek-chat-v3.1",163840,32768,"text",1],["deepseek/deepseek-r1",163840,16000,"text",1],["deepseek/deepseek-r1-0528",163840,32768,"text",1],["deepseek/deepseek-v3.1-terminus",163840,32768,"text",1],["deepseek/deepseek-v3.1-terminus:exacto",163840,8888,"text",1],["deepseek/deepseek-v3.2",131072,64000,"text",1],["deepseek/deepseek-v3.2-exp",163840,65536,"text",1],["deepseek/deepseek-v4-flash",1048576,65536,"text",1],["deepseek/deepseek-v4-flash:free",1048576,384000,"text",1],["deepseek/deepseek-v4-pro",1048576,384000,"text",1],["essentialai/rnj-1-instruct",32768,8888,"text",0],["google/gemini-2.0-flash-001",1048576,8192,"text,image",0],["google/gemini-2.0-flash-lite-001",1048576,8192,"text,image",0],["google/gemini-2.5-flash",1048576,65535,"text,image",1],["google/gemini-2.5-flash-lite",1048576,65535,"text,image",0],["google/gemini-2.5-flash-lite-preview-09-2025",1048576,65535,"text,image",1],["google/gemini-2.5-flash-preview-09-2025",1048576,65536,"text,image",1],["google/gemini-2.5-pro",1048576,65536,"text,image",1],["google/gemini-2.5-pro-preview",1048576,65536,"text,image",1],["google/gemini-2.5-pro-preview-05-06",1048576,65535,"text,image",1],["google/gemini-3-flash-preview",1048576,65535,"text,image",1],["google/gemini-3-pro-image",65536,32768,"text,image",1],["google/gemini-3-pro-preview",1048000,64000,"text,image",1],["google/gemini-3.1-flash-lite",1048576,65536,"text,image",1],["google/gemini-3.1-flash-lite-preview",1048576,65536,"text,image",0],["google/gemini-3.1-pro-preview",1048576,65536,"text,image",1],["google/gemini-3.1-pro-preview-customtools",1048756,65536,"text,image",1],["google/gemini-3.5-flash",1048576,65536,"text,image",1],["google/gemma-3-12b-it",131072,16384,"text,image",0],["google/gemma-3-27b-it",131072,16384,"text,image",1],["google/gemma-3-27b-it:free",131072,8192,"text,image",0],["google/gemma-4-26b-a4b-it",262144,8888,"text,image",1],["google/gemma-4-26b-a4b-it:free",262144,32768,"text,image",1],["google/gemma-4-31b-it",262144,262144,"text,image",1],["google/gemma-4-31b-it:free",262144,8192,"text,image",1],["ibm-granite/granite-4.1-8b",131072,131072,"text",0],["inception/mercury",128000,32000,"text",0],["inception/mercury-2",128000,50000,"text",1],["inception/mercury-coder",128000,32000,"text",0],["inclusionai/ling-2.6-1t",262144,32768,"text",0],["inclusionai/ling-2.6-1t:free",262144,32768,"text",0],["inclusionai/ling-2.6-flash",262144,32768,"text",0],["inclusionai/ling-2.6-flash:free",262144,32768,"text",0],["inclusionai/ring-2.6-1t",262144,65536,"text",1],["inclusionai/ring-2.6-1t:free",262144,65536,"text",1],["kwaipilot/kat-coder-pro",256000,128000,"text",0],["kwaipilot/kat-coder-pro-v2",256000,80000,"text",0],["liquid/lfm-2.5-1.2b-thinking:free",32768,8888,"text",1],["meituan/longcat-flash-chat",131072,131072,"text",0],["meta-llama/llama-3-8b-instruct",8192,16384,"text",0],["meta-llama/llama-3.1-405b-instruct",131000,8888,"text",0],["meta-llama/llama-3.1-70b-instruct",131072,16384,"text",0],["meta-llama/llama-3.1-8b-instruct",131072,16384,"text",0],["meta-llama/llama-3.3-70b-instruct",131072,16384,"text",0],["meta-llama/llama-3.3-70b-instruct:free",131072,8888,"text",0],["meta-llama/llama-4-maverick",1048576,16384,"text,image",0],["meta-llama/llama-4-scout",10000000,16384,"text,image",0],["minimax/minimax-m1",1000000,40000,"text",1],["minimax/minimax-m2",204800,196608,"text",1],["minimax/minimax-m2.1",204800,196608,"text",1],["minimax/minimax-m2.5",204800,196608,"text",1],["minimax/minimax-m2.5:free",262144,8192,"text",1],["minimax/minimax-m2.7",204800,131072,"text",1],["minimax/minimax-m3",1048576,512000,"text,image",1],["mistralai/codestral-2508",256000,8888,"text",0],["mistralai/devstral-2512",262144,8888,"text",0],["mistralai/devstral-medium",131072,8888,"text",0],["mistralai/devstral-small",131072,8888,"text",0],["mistralai/ministral-14b-2512",262144,8888,"text,image",0],["mistralai/ministral-3b-2512",131072,8888,"text,image",0],["mistralai/ministral-8b-2512",262144,8888,"text,image",0],["mistralai/mistral-large",128000,8888,"text",0],["mistralai/mistral-large-2407",131072,8888,"text",0],["mistralai/mistral-large-2411",131072,8888,"text",0],["mistralai/mistral-large-2512",262144,8888,"text,image",0],["mistralai/mistral-medium-3",131072,8888,"text,image",0],["mistralai/mistral-medium-3-5",262144,8888,"text,image",1],["mistralai/mistral-medium-3.1",131072,8888,"text,image",0],["mistralai/mistral-nemo",131072,8888,"text",0],["mistralai/mistral-saba",32768,8888,"text",0],["mistralai/mistral-small-24b-instruct-2501",32768,16384,"text",0],["mistralai/mistral-small-2603",262144,8888,"text,image",1],["mistralai/mistral-small-3.1-24b-instruct",131072,131072,"text,image",0],["mistralai/mistral-small-3.1-24b-instruct:free",128000,8888,"text,image",0],["mistralai/mistral-small-3.2-24b-instruct",128000,16384,"text,image",0],["mistralai/mistral-small-creative",32768,8888,"text",0],["mistralai/mixtral-8x22b-instruct",65536,13108,"text",0],["mistralai/mixtral-8x7b-instruct",32768,16384,"text",0],["mistralai/pixtral-large-2411",131072,8888,"text,image",0],["mistralai/voxtral-small-24b-2507",32000,8888,"text",0],["moonshotai/kimi-k2",131072,32768,"text",0],["moonshotai/kimi-k2-0905",262144,262144,"text",0],["moonshotai/kimi-k2-0905:exacto",262144,8888,"text",0],["moonshotai/kimi-k2-thinking",262144,262144,"text",1],["moonshotai/kimi-k2.5",262144,64000,"text,image",1],["moonshotai/kimi-k2.6",262144,262144,"text,image",1],["moonshotai/kimi-k2.6:free",262144,8888,"text,image",1],["moonshotai/kimi-k2.7-code",262144,262144,"text,image",1],["nex-agi/deepseek-v3.1-nex-n1",131072,163840,"text",0],["nex-agi/nex-n2-pro:free",262144,262144,"text,image",1],["nousresearch/deephermes-3-mistral-24b-preview",32768,32768,"text",1],["nousresearch/hermes-4-70b",131072,131072,"text",1],["nvidia/llama-3.1-nemotron-70b-instruct",131072,16384,"text",0],["nvidia/llama-3.3-nemotron-super-49b-v1.5",131072,16384,"text",1],["nvidia/nemotron-3-nano-30b-a3b",262144,228000,"text",1],["nvidia/nemotron-3-nano-30b-a3b:free",256000,8888,"text",1],["nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",256000,65536,"text,image",1],["nvidia/nemotron-3-super-120b-a12b",1000000,262144,"text",1],["nvidia/nemotron-3-super-120b-a12b:free",1000000,262144,"text",1],["nvidia/nemotron-3-ultra-550b-a55b",1000000,16384,"text",1],["nvidia/nemotron-3-ultra-550b-a55b:free",1000000,65536,"text",1],["nvidia/nemotron-nano-12b-v2-vl:free",128000,128000,"text,image",1],["nvidia/nemotron-nano-9b-v2",131072,16384,"text",1],["nvidia/nemotron-nano-9b-v2:free",128000,8888,"text",1],["openai/gpt-3.5-turbo",16385,4096,"text",0],["openai/gpt-3.5-turbo-0613",4095,4096,"text",0],["openai/gpt-3.5-turbo-16k",16385,4096,"text",0],["openai/gpt-4",8191,8192,"text",0],["openai/gpt-4-0314",8191,4096,"text",0],["openai/gpt-4-1106-preview",128000,4096,"text",0],["openai/gpt-4-turbo",128000,4096,"text,image",0],["openai/gpt-4-turbo-preview",128000,4096,"text",0],["openai/gpt-4.1",1047576,8888,"text,image",0],["openai/gpt-4.1-mini",1047576,32768,"text,image",0],["openai/gpt-4.1-nano",1047576,32768,"text,image",0],["openai/gpt-4o",128000,16384,"text,image",0],["openai/gpt-4o-2024-05-13",128000,4096,"text,image",0],["openai/gpt-4o-2024-08-06",128000,16384,"text,image",0],["openai/gpt-4o-2024-11-20",128000,16384,"text,image",0],["openai/gpt-4o-audio-preview",128000,16384,"text",0],["openai/gpt-4o-mini",128000,16384,"text,image",0],["openai/gpt-4o-mini-2024-07-18",128000,16384,"text,image",0],["openai/gpt-4o:extended",128000,64000,"text,image",0],["openai/gpt-5",400000,128000,"text,image",1],["openai/gpt-5-codex",272000,128000,"text,image",1],["openai/gpt-5-image",400000,128000,"text,image",1],["openai/gpt-5-image-mini",400000,128000,"text,image",1],["openai/gpt-5-mini",400000,128000,"text,image",1],["openai/gpt-5-nano",400000,8888,"text,image",1],["openai/gpt-5-pro",400000,128000,"text,image",1],["openai/gpt-5.1",400000,128000,"text,image",1],["openai/gpt-5.1-chat",128000,32000,"text,image",0],["openai/gpt-5.1-codex",272000,128000,"text,image",1],["openai/gpt-5.1-codex-max",272000,128000,"text,image",1],["openai/gpt-5.1-codex-mini",272000,100000,"text,image",1],["openai/gpt-5.2",400000,128000,"text,image",1],["openai/gpt-5.2-chat",128000,16384,"text,image",0],["openai/gpt-5.2-codex",272000,128000,"text,image",1],["openai/gpt-5.2-pro",400000,128000,"text,image",1],["openai/gpt-5.3-chat",128000,16384,"text",0],["openai/gpt-5.3-codex",272000,128000,"text,image",1],["openai/gpt-5.4",1050000,128000,"text,image",1],["openai/gpt-5.4-mini",400000,128000,"text",0],["openai/gpt-5.4-nano",400000,128000,"text",0],["openai/gpt-5.4-pro",1050000,128000,"text,image",1],["openai/gpt-5.5",1050000,128000,"text,image",1],["openai/gpt-5.5-pro",1050000,128000,"text,image",1],["openai/gpt-audio",128000,16384,"text",0],["openai/gpt-audio-mini",128000,16384,"text",0],["openai/gpt-chat-latest",400000,128000,"text,image",0],["openai/gpt-oss-120b",131072,65536,"text",1],["openai/gpt-oss-120b:exacto",131072,8888,"text",1],["openai/gpt-oss-120b:free",131072,131072,"text",1],["openai/gpt-oss-20b",131072,65536,"text",1],["openai/gpt-oss-20b:free",131072,32768,"text",1],["openai/gpt-oss-safeguard-20b",131072,65536,"text",1],["openai/o1",200000,100000,"text,image",1],["openai/o3",200000,100000,"text,image",1],["openai/o3-deep-research",200000,100000,"text,image",1],["openai/o3-mini",200000,100000,"text",1],["openai/o3-mini-high",200000,100000,"text",1],["openai/o3-pro",200000,100000,"text,image",1],["openai/o4-mini",200000,100000,"text,image",1],["openai/o4-mini-deep-research",200000,100000,"text,image",1],["openai/o4-mini-high",200000,100000,"text,image",1],["openrouter/aurora-alpha",128000,50000,"text",1],["openrouter/auto",2000000,8888,"text,image",1],["openrouter/elephant-alpha",262144,32768,"text",0],["openrouter/free",200000,8888,"text,image",1],["openrouter/healer-alpha",262144,32000,"text,image",1],["openrouter/hunter-alpha",1048576,32000,"text",1],["openrouter/owl-alpha",1048756,262144,"text",0],["poolside/laguna-m.1",262144,32768,"text",1],["poolside/laguna-m.1:free",262144,32768,"text",1],["poolside/laguna-xs.2",262144,32768,"text",1],["poolside/laguna-xs.2:free",262144,32768,"text",1],["prime-intellect/intellect-3",131072,131072,"text",1],["qwen/qwen-2.5-72b-instruct",131072,16384,"text",0],["qwen/qwen-2.5-7b-instruct",131072,32768,"text",0],["qwen/qwen-max",32768,8192,"text",0],["qwen/qwen-plus",1000000,32768,"text",0],["qwen/qwen-plus-2025-07-28",1000000,32768,"text",0],["qwen/qwen-plus-2025-07-28:thinking",1000000,32768,"text",1],["qwen/qwen-turbo",131072,8192,"text",0],["qwen/qwen-vl-max",131072,32768,"text,image",0],["qwen/qwen3-14b",131702,40960,"text",1],["qwen/qwen3-235b-a22b",131072,8192,"text",1],["qwen/qwen3-235b-a22b-2507",262144,16384,"text",1],["qwen/qwen3-235b-a22b-thinking-2507",262144,262144,"text",1],["qwen/qwen3-30b-a3b",131072,16384,"text",1],["qwen/qwen3-30b-a3b-instruct-2507",131072,32000,"text",0],["qwen/qwen3-30b-a3b-thinking-2507",131072,131072,"text",1],["qwen/qwen3-32b",131072,16384,"text",1],["qwen/qwen3-4b",131072,8192,"text",1],["qwen/qwen3-4b:free",40960,8888,"text",1],["qwen/qwen3-8b",131072,8192,"text",1],["qwen/qwen3-coder",1048576,65536,"text",0],["qwen/qwen3-coder-30b-a3b-instruct",160000,32768,"text",0],["qwen/qwen3-coder-flash",1000000,65536,"text",0],["qwen/qwen3-coder-next",262144,262144,"text",0],["qwen/qwen3-coder-plus",1000000,65536,"text",0],["qwen/qwen3-coder:exacto",262144,65536,"text",0],["qwen/qwen3-coder:free",1048576,262000,"text",0],["qwen/qwen3-max",262144,32768,"text",1],["qwen/qwen3-max-thinking",262144,32768,"text",1],["qwen/qwen3-next-80b-a3b-instruct",262144,16384,"text",0],["qwen/qwen3-next-80b-a3b-instruct:free",262144,8888,"text",0],["qwen/qwen3-next-80b-a3b-thinking",262144,32768,"text",1],["qwen/qwen3-vl-235b-a22b-instruct",262144,16384,"text,image",0],["qwen/qwen3-vl-235b-a22b-thinking",131072,32768,"text,image",1],["qwen/qwen3-vl-30b-a3b-instruct",262144,32768,"text,image",0],["qwen/qwen3-vl-30b-a3b-thinking",131072,32768,"text,image",1],["qwen/qwen3-vl-32b-instruct",262144,32768,"text,image",0],["qwen/qwen3-vl-8b-instruct",256000,32768,"text,image",0],["qwen/qwen3-vl-8b-thinking",256000,32768,"text,image",1],["qwen/qwen3.5-122b-a10b",262144,262144,"text,image",1],["qwen/qwen3.5-27b",262144,65536,"text,image",1],["qwen/qwen3.5-35b-a3b",262144,262144,"text,image",1],["qwen/qwen3.5-397b-a17b",256000,8192,"text,image",1],["qwen/qwen3.5-9b",262144,262144,"text,image",1],["qwen/qwen3.5-flash-02-23",1000000,65536,"text,image",1],["qwen/qwen3.5-plus-02-15",1000000,65536,"text,image",1],["qwen/qwen3.5-plus-20260420",1000000,65536,"text,image",1],["qwen/qwen3.6-27b",262144,262140,"text,image",1],["qwen/qwen3.6-35b-a3b",262144,262144,"text,image",1],["qwen/qwen3.6-flash",1000000,65536,"text,image",1],["qwen/qwen3.6-max-preview",262144,65536,"text",1],["qwen/qwen3.6-plus",1000000,65536,"text",1],["qwen/qwen3.6-plus-preview:free",1000000,32000,"text",1],["qwen/qwen3.6-plus:free",1000000,65536,"text,image",1],["qwen/qwen3.7-max",1000000,65536,"text",1],["qwen/qwen3.7-plus",1000000,65536,"text,image",1],["qwen/qwq-32b",131072,131072,"text",1],["reka/reka-edge",16384,16384,"text,image",0],["rekaai/reka-edge",16384,16384,"text,image",0],["relace/relace-search",256000,128000,"text",0],["sao10k/l3-euryale-70b",8192,8192,"text",0],["sao10k/l3.1-euryale-70b",131072,16384,"text",0],["stepfun/step-3.5-flash",262144,16384,"text",0],["stepfun/step-3.5-flash:free",256000,256000,"text",1],["stepfun/step-3.7-flash",256000,256000,"text,image",1],["tencent/hy3-preview",262144,262144,"text",1],["tencent/hy3-preview:free",262144,262144,"text",1],["thedrummer/rocinante-12b",32768,32768,"text",0],["thedrummer/unslopnemo-12b",32768,32768,"text",0],["tngtech/deepseek-r1t2-chimera",163840,163840,"text",1],["tngtech/tng-r1t-chimera",163840,65536,"text",1],["upstage/solar-pro-3",128000,8888,"text",1],["upstage/solar-pro-3:free",128000,8888,"text",1],["x-ai/grok-3",131072,8888,"text",0],["x-ai/grok-3-beta",131072,8888,"text",0],["x-ai/grok-3-mini",131072,8888,"text",1],["x-ai/grok-3-mini-beta",131072,8888,"text",1],["x-ai/grok-4",256000,64000,"text,image",1],["x-ai/grok-4-fast",2000000,30000,"text,image",1],["x-ai/grok-4.1-fast",2000000,30000,"text,image",1],["x-ai/grok-4.20",2000000,8888,"text,image",1],["x-ai/grok-4.20-beta",2000000,8888,"text,image",1],["x-ai/grok-4.3",1000000,1000000,"text,image",1],["x-ai/grok-build-0.1",256000,256000,"text,image",1],["x-ai/grok-code-fast-1",256000,10000,"text",1],["xiaomi/mimo-v2-flash",262144,65536,"text",1],["xiaomi/mimo-v2-omni",262144,65536,"text,image",1],["xiaomi/mimo-v2-pro",1048576,131072,"text",1],["xiaomi/mimo-v2.5",1048576,131072,"text,image",1],["xiaomi/mimo-v2.5-pro",1048576,131072,"text",1],["z-ai/glm-4-32b",128000,8888,"text",0],["z-ai/glm-4.5",131072,98304,"text",1],["z-ai/glm-4.5-air",131072,98304,"text",1],["z-ai/glm-4.5-air:free",131072,96000,"text",1],["z-ai/glm-4.5v",65536,16384,"text,image",1],["z-ai/glm-4.6",202752,131072,"text",1],["z-ai/glm-4.6:exacto",204800,131072,"text",1],["z-ai/glm-4.6v",131072,32768,"text,image",1],["z-ai/glm-4.7",202752,131072,"text",1],["z-ai/glm-4.7-flash",202752,16384,"text",1],["z-ai/glm-5",202752,128000,"text",1],["z-ai/glm-5-turbo",262144,131072,"text",1],["z-ai/glm-5.1",202752,131072,"text",1],["z-ai/glm-5.2",1048576,131072,"text",1],["z-ai/glm-5v-turbo",202752,131072,"text,image",1]],
|
|
38
|
+
"opencode-go": [["deepseek-v4-flash",1000000,384000,"text",1],["deepseek-v4-pro",1000000,384000,"text",1],["glm-5",202752,32768,"text",1],["glm-5.1",202752,32768,"text",1],["glm-5.2",1000000,131072,"text",1],["kimi-k2.5",262144,65536,"text,image",1],["kimi-k2.6",262144,65536,"text,image",1],["kimi-k2.7-code",262144,262144,"text,image",1],["mimo-v2-omni",262144,128000,"text,image",1],["mimo-v2-pro",1048576,128000,"text",1],["mimo-v2.5",1000000,128000,"text,image",1],["mimo-v2.5-pro",1048576,128000,"text",1],["minimax-m2.5",204800,65536,"text",1],["minimax-m2.7",204800,131072,"text",1],["minimax-m3",1000000,131072,"text,image",1],["qwen3.5-plus",262144,65536,"text,image",1],["qwen3.6-plus",1000000,65536,"text,image",1],["qwen3.7-max",1000000,65536,"text",1],["qwen3.7-plus",1000000,65536,"text,image",1]],
|
|
39
|
+
"openrouter": [["~anthropic/claude-fable-latest",1000000,128000,"text,image",1],["~anthropic/claude-haiku-latest",200000,64000,"text,image",1],["~anthropic/claude-opus-latest",1000000,128000,"text,image",1],["~anthropic/claude-sonnet-latest",1000000,128000,"text,image",1],["~google/gemini-flash-latest",1048576,65536,"text,image",1],["~google/gemini-pro-latest",1048576,65536,"text,image",1],["~moonshotai/kimi-latest",262144,262144,"text,image",1],["~openai/gpt-latest",1050000,128000,"text,image",1],["~openai/gpt-mini-latest",400000,128000,"text,image",1],["ai21/jamba-large-1.7",256000,4096,"text",0],["alibaba/tongyi-deepresearch-30b-a3b",131072,131072,"text",1],["allenai/olmo-3.1-32b-instruct",65536,16384,"text",0],["amazon/nova-2-lite-v1",1000000,65535,"text,image",1],["amazon/nova-lite-v1",300000,5120,"text,image",0],["amazon/nova-micro-v1",128000,5120,"text",0],["amazon/nova-premier-v1",1000000,32000,"text,image",0],["amazon/nova-pro-v1",300000,5120,"text,image",0],["anthropic/claude-3-haiku",200000,4096,"text,image",0],["anthropic/claude-3.5-haiku",200000,8192,"text,image",0],["anthropic/claude-3.5-sonnet",200000,8192,"text,image",0],["anthropic/claude-3.7-sonnet",200000,128000,"text,image",1],["anthropic/claude-3.7-sonnet:thinking",200000,64000,"text,image",1],["anthropic/claude-fable-5",1000000,128000,"text,image",1],["anthropic/claude-haiku-4.5",200000,64000,"text,image",0],["anthropic/claude-opus-4",200000,32000,"text,image",1],["anthropic/claude-opus-4.1",200000,32000,"text,image",1],["anthropic/claude-opus-4.5",200000,64000,"text,image",1],["anthropic/claude-opus-4.6",1000000,128000,"text,image",1],["anthropic/claude-opus-4.6-fast",1000000,128000,"text,image",1],["anthropic/claude-opus-4.7",1000000,128000,"text,image",1],["anthropic/claude-opus-4.7-fast",1000000,128000,"text,image",1],["anthropic/claude-opus-4.8",1000000,128000,"text,image",1],["anthropic/claude-opus-4.8-fast",1000000,128000,"text,image",1],["anthropic/claude-sonnet-4",1000000,64000,"text,image",1],["anthropic/claude-sonnet-4.5",1000000,64000,"text,image",1],["anthropic/claude-sonnet-4.6",1000000,128000,"text,image",1],["anthropic/claude-sonnet-5",1000000,128000,"text,image",1],["arcee-ai/trinity-large-preview",131000,8888,"text",0],["arcee-ai/trinity-large-preview:free",131000,8888,"text",0],["arcee-ai/trinity-large-thinking",262144,80000,"text",1],["arcee-ai/trinity-large-thinking:free",262144,80000,"text",1],["arcee-ai/trinity-mini",131072,131072,"text",1],["arcee-ai/trinity-mini:free",131072,8888,"text",1],["arcee-ai/virtuoso-large",131072,64000,"text",0],["auto",2000000,30000,"text,image",1],["baidu/cobuddy:free",131072,65536,"text",1],["baidu/ernie-4.5-21b-a3b",131072,8000,"text",0],["baidu/ernie-4.5-vl-28b-a3b",131072,8000,"text,image",1],["bytedance-seed/seed-1.6",262144,32768,"text,image",1],["bytedance-seed/seed-1.6-flash",262144,32768,"text,image",1],["bytedance-seed/seed-2.0-lite",262144,131072,"text,image",1],["bytedance-seed/seed-2.0-mini",262144,131072,"text,image",1],["cohere/command-r-08-2024",128000,4000,"text",0],["cohere/command-r-plus-08-2024",128000,4000,"text",0],["cohere/north-mini-code:free",256000,64000,"text",1],["deepseek/deepseek-chat",131072,16000,"text",0],["deepseek/deepseek-chat-v3-0324",163840,16384,"text",1],["deepseek/deepseek-chat-v3.1",163840,32768,"text",1],["deepseek/deepseek-r1",163840,16000,"text",1],["deepseek/deepseek-r1-0528",163840,32768,"text",1],["deepseek/deepseek-v3.1-terminus",163840,32768,"text",1],["deepseek/deepseek-v3.1-terminus:exacto",163840,8888,"text",1],["deepseek/deepseek-v3.2",131072,64000,"text",1],["deepseek/deepseek-v3.2-exp",163840,65536,"text",1],["deepseek/deepseek-v4-flash",1048576,384000,"text",1],["deepseek/deepseek-v4-flash:free",1048576,384000,"text",1],["deepseek/deepseek-v4-pro",1048576,384000,"text",1],["essentialai/rnj-1-instruct",32768,8888,"text",0],["google/gemini-2.0-flash-001",1048576,8192,"text,image",0],["google/gemini-2.0-flash-lite-001",1048576,8192,"text,image",0],["google/gemini-2.5-flash",1048576,65535,"text,image",1],["google/gemini-2.5-flash-lite",1048576,65535,"text,image",0],["google/gemini-2.5-flash-lite-preview-09-2025",1048576,65535,"text,image",1],["google/gemini-2.5-flash-preview-09-2025",1048576,65536,"text,image",1],["google/gemini-2.5-pro",1048576,65536,"text,image",1],["google/gemini-2.5-pro-preview",1048576,65536,"text,image",1],["google/gemini-2.5-pro-preview-05-06",1048576,65535,"text,image",1],["google/gemini-3-flash-preview",1048576,65535,"text,image",1],["google/gemini-3-pro-image",65536,32768,"text,image",1],["google/gemini-3-pro-preview",1048000,64000,"text,image",1],["google/gemini-3.1-flash-lite",1048576,65536,"text,image",1],["google/gemini-3.1-flash-lite-preview",1048576,65536,"text,image",0],["google/gemini-3.1-pro-preview",1048576,65536,"text,image",1],["google/gemini-3.1-pro-preview-customtools",1048756,65536,"text,image",1],["google/gemini-3.5-flash",1048576,65536,"text,image",1],["google/gemma-3-12b-it",131072,16384,"text,image",0],["google/gemma-3-27b-it",131072,16384,"text,image",1],["google/gemma-3-27b-it:free",131072,8192,"text,image",0],["google/gemma-4-26b-a4b-it",262144,8888,"text,image",1],["google/gemma-4-26b-a4b-it:free",262144,32768,"text,image",1],["google/gemma-4-31b-it",262144,262144,"text,image",1],["google/gemma-4-31b-it:free",262144,8192,"text,image",1],["ibm-granite/granite-4.1-8b",131072,131072,"text",0],["inception/mercury",128000,32000,"text",0],["inception/mercury-2",128000,50000,"text",1],["inception/mercury-coder",128000,32000,"text",0],["inclusionai/ling-2.6-1t",262144,32768,"text",0],["inclusionai/ling-2.6-1t:free",262144,32768,"text",0],["inclusionai/ling-2.6-flash",262144,32768,"text",0],["inclusionai/ling-2.6-flash:free",262144,32768,"text",0],["inclusionai/ring-2.6-1t",262144,65536,"text",1],["inclusionai/ring-2.6-1t:free",262144,65536,"text",1],["kwaipilot/kat-coder-pro",256000,128000,"text",0],["kwaipilot/kat-coder-pro-v2",256000,80000,"text",0],["liquid/lfm-2.5-1.2b-thinking:free",32768,8888,"text",1],["meituan/longcat-flash-chat",131072,131072,"text",0],["meta-llama/llama-3-8b-instruct",8192,16384,"text",0],["meta-llama/llama-3.1-405b-instruct",131000,8888,"text",0],["meta-llama/llama-3.1-70b-instruct",131072,16384,"text",0],["meta-llama/llama-3.1-8b-instruct",131072,16384,"text",0],["meta-llama/llama-3.3-70b-instruct",131072,16384,"text",0],["meta-llama/llama-3.3-70b-instruct:free",131072,8888,"text",0],["meta-llama/llama-4-maverick",1048576,16384,"text,image",0],["meta-llama/llama-4-scout",10000000,16384,"text,image",0],["minimax/minimax-m1",1000000,40000,"text",1],["minimax/minimax-m2",204800,196608,"text",1],["minimax/minimax-m2.1",204800,196608,"text",1],["minimax/minimax-m2.5",204800,196608,"text",1],["minimax/minimax-m2.5:free",262144,8192,"text",1],["minimax/minimax-m2.7",204800,196608,"text",1],["minimax/minimax-m3",1048576,512000,"text,image",1],["mistralai/codestral-2508",256000,8888,"text",0],["mistralai/devstral-2512",262144,8888,"text",0],["mistralai/devstral-medium",131072,8888,"text",0],["mistralai/devstral-small",131072,8888,"text",0],["mistralai/ministral-14b-2512",262144,8888,"text,image",0],["mistralai/ministral-3b-2512",131072,8888,"text,image",0],["mistralai/ministral-8b-2512",262144,8888,"text,image",0],["mistralai/mistral-large",128000,8888,"text",0],["mistralai/mistral-large-2407",131072,8888,"text",0],["mistralai/mistral-large-2411",131072,8888,"text",0],["mistralai/mistral-large-2512",262144,8888,"text,image",0],["mistralai/mistral-medium-3",131072,8888,"text,image",0],["mistralai/mistral-medium-3-5",262144,8888,"text,image",1],["mistralai/mistral-medium-3.1",131072,8888,"text,image",0],["mistralai/mistral-nemo",131072,8888,"text",0],["mistralai/mistral-saba",32768,8888,"text",0],["mistralai/mistral-small-24b-instruct-2501",32768,16384,"text",0],["mistralai/mistral-small-2603",262144,8888,"text,image",1],["mistralai/mistral-small-3.1-24b-instruct",131072,131072,"text,image",0],["mistralai/mistral-small-3.1-24b-instruct:free",128000,8888,"text,image",0],["mistralai/mistral-small-3.2-24b-instruct",128000,16384,"text,image",0],["mistralai/mistral-small-creative",32768,8888,"text",0],["mistralai/mixtral-8x22b-instruct",65536,13108,"text",0],["mistralai/mixtral-8x7b-instruct",32768,16384,"text",0],["mistralai/pixtral-large-2411",131072,8888,"text,image",0],["mistralai/voxtral-small-24b-2507",32000,8888,"text",0],["moonshotai/kimi-k2",131072,100352,"text",0],["moonshotai/kimi-k2-0905",262144,100352,"text",0],["moonshotai/kimi-k2-0905:exacto",262144,8888,"text",0],["moonshotai/kimi-k2-thinking",262144,262144,"text",1],["moonshotai/kimi-k2.5",262144,64000,"text,image",1],["moonshotai/kimi-k2.6",262144,262144,"text,image",1],["moonshotai/kimi-k2.6:free",262144,8888,"text,image",1],["moonshotai/kimi-k2.7-code",262144,16384,"text,image",1],["nex-agi/deepseek-v3.1-nex-n1",131072,163840,"text",0],["nex-agi/nex-n2-pro:free",262144,262144,"text,image",1],["nousresearch/deephermes-3-mistral-24b-preview",32768,32768,"text",1],["nousresearch/hermes-4-70b",131072,131072,"text",1],["nvidia/llama-3.1-nemotron-70b-instruct",131072,16384,"text",0],["nvidia/llama-3.3-nemotron-super-49b-v1.5",131072,16384,"text",1],["nvidia/nemotron-3-nano-30b-a3b",262144,228000,"text",1],["nvidia/nemotron-3-nano-30b-a3b:free",256000,8888,"text",1],["nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",256000,65536,"text,image",1],["nvidia/nemotron-3-super-120b-a12b",1000000,16384,"text",1],["nvidia/nemotron-3-super-120b-a12b:free",1000000,262144,"text",1],["nvidia/nemotron-3-ultra-550b-a55b",1000000,16384,"text",1],["nvidia/nemotron-3-ultra-550b-a55b:free",1000000,65536,"text",1],["nvidia/nemotron-nano-12b-v2-vl:free",128000,128000,"text,image",1],["nvidia/nemotron-nano-9b-v2",131072,16384,"text",1],["nvidia/nemotron-nano-9b-v2:free",128000,8888,"text",1],["openai/gpt-3.5-turbo",16385,4096,"text",0],["openai/gpt-3.5-turbo-0613",4095,4096,"text",0],["openai/gpt-3.5-turbo-16k",16385,4096,"text",0],["openai/gpt-4",8191,8192,"text",0],["openai/gpt-4-0314",8191,4096,"text",0],["openai/gpt-4-1106-preview",128000,4096,"text",0],["openai/gpt-4-turbo",128000,4096,"text,image",0],["openai/gpt-4-turbo-preview",128000,4096,"text",0],["openai/gpt-4.1",1047576,8888,"text,image",0],["openai/gpt-4.1-mini",1047576,32768,"text,image",0],["openai/gpt-4.1-nano",1047576,32768,"text,image",0],["openai/gpt-4o",128000,16384,"text,image",0],["openai/gpt-4o-2024-05-13",128000,4096,"text,image",0],["openai/gpt-4o-2024-08-06",128000,16384,"text,image",0],["openai/gpt-4o-2024-11-20",128000,16384,"text,image",0],["openai/gpt-4o-audio-preview",128000,16384,"text",0],["openai/gpt-4o-mini",128000,16384,"text,image",0],["openai/gpt-4o-mini-2024-07-18",128000,16384,"text,image",0],["openai/gpt-4o:extended",128000,64000,"text,image",0],["openai/gpt-5",400000,128000,"text,image",1],["openai/gpt-5-codex",272000,128000,"text,image",1],["openai/gpt-5-image",400000,128000,"text,image",1],["openai/gpt-5-image-mini",400000,128000,"text,image",1],["openai/gpt-5-mini",400000,128000,"text,image",1],["openai/gpt-5-nano",400000,8888,"text,image",1],["openai/gpt-5-pro",400000,128000,"text,image",1],["openai/gpt-5.1",400000,128000,"text,image",1],["openai/gpt-5.1-chat",128000,32000,"text,image",0],["openai/gpt-5.1-codex",272000,128000,"text,image",1],["openai/gpt-5.1-codex-max",272000,128000,"text,image",1],["openai/gpt-5.1-codex-mini",272000,100000,"text,image",1],["openai/gpt-5.2",400000,128000,"text,image",1],["openai/gpt-5.2-chat",128000,16384,"text,image",0],["openai/gpt-5.2-codex",272000,128000,"text,image",1],["openai/gpt-5.2-pro",400000,128000,"text,image",1],["openai/gpt-5.3-chat",128000,16384,"text",0],["openai/gpt-5.3-codex",272000,128000,"text,image",1],["openai/gpt-5.4",1050000,128000,"text,image",1],["openai/gpt-5.4-mini",400000,128000,"text",0],["openai/gpt-5.4-nano",400000,128000,"text",0],["openai/gpt-5.4-pro",1050000,128000,"text,image",1],["openai/gpt-5.5",1050000,128000,"text,image",1],["openai/gpt-5.5-pro",1050000,128000,"text,image",1],["openai/gpt-audio",128000,16384,"text",0],["openai/gpt-audio-mini",128000,16384,"text",0],["openai/gpt-chat-latest",400000,128000,"text,image",0],["openai/gpt-oss-120b",131072,131072,"text",1],["openai/gpt-oss-120b:exacto",131072,8888,"text",1],["openai/gpt-oss-120b:free",131072,131072,"text",1],["openai/gpt-oss-20b",131072,65536,"text",1],["openai/gpt-oss-20b:free",131072,32768,"text",1],["openai/gpt-oss-safeguard-20b",131072,65536,"text",1],["openai/o1",200000,100000,"text,image",1],["openai/o3",200000,100000,"text,image",1],["openai/o3-deep-research",200000,100000,"text,image",1],["openai/o3-mini",200000,100000,"text",1],["openai/o3-mini-high",200000,100000,"text",1],["openai/o3-pro",200000,100000,"text,image",1],["openai/o4-mini",200000,100000,"text,image",1],["openai/o4-mini-deep-research",200000,100000,"text,image",1],["openai/o4-mini-high",200000,100000,"text,image",1],["openrouter/aurora-alpha",128000,50000,"text",1],["openrouter/auto",2000000,8888,"text,image",1],["openrouter/elephant-alpha",262144,32768,"text",0],["openrouter/free",200000,8888,"text,image",1],["openrouter/healer-alpha",262144,32000,"text,image",1],["openrouter/hunter-alpha",1048576,32000,"text",1],["openrouter/owl-alpha",1048756,262144,"text",0],["poolside/laguna-m.1",262144,32768,"text",1],["poolside/laguna-m.1:free",262144,32768,"text",1],["poolside/laguna-xs.2",262144,32768,"text",1],["poolside/laguna-xs.2:free",262144,32768,"text",1],["prime-intellect/intellect-3",131072,131072,"text",1],["qwen/qwen-2.5-72b-instruct",131072,16384,"text",0],["qwen/qwen-2.5-7b-instruct",131072,32768,"text",0],["qwen/qwen-max",32768,8192,"text",0],["qwen/qwen-plus",1000000,32768,"text",0],["qwen/qwen-plus-2025-07-28",1000000,32768,"text",0],["qwen/qwen-plus-2025-07-28:thinking",1000000,32768,"text",1],["qwen/qwen-turbo",131072,8192,"text",0],["qwen/qwen-vl-max",131072,32768,"text,image",0],["qwen/qwen3-14b",131702,40960,"text",1],["qwen/qwen3-235b-a22b",131072,8192,"text",1],["qwen/qwen3-235b-a22b-2507",262144,16384,"text",1],["qwen/qwen3-235b-a22b-thinking-2507",262144,262144,"text",1],["qwen/qwen3-30b-a3b",131072,16384,"text",1],["qwen/qwen3-30b-a3b-instruct-2507",131072,32000,"text",0],["qwen/qwen3-30b-a3b-thinking-2507",131072,131072,"text",1],["qwen/qwen3-32b",131072,16384,"text",1],["qwen/qwen3-4b",131072,8192,"text",1],["qwen/qwen3-4b:free",40960,8888,"text",1],["qwen/qwen3-8b",131072,8192,"text",1],["qwen/qwen3-coder",1048576,65536,"text",0],["qwen/qwen3-coder-30b-a3b-instruct",160000,32768,"text",0],["qwen/qwen3-coder-flash",1000000,65536,"text",0],["qwen/qwen3-coder-next",262144,262144,"text",0],["qwen/qwen3-coder-plus",1000000,65536,"text",0],["qwen/qwen3-coder:exacto",262144,65536,"text",0],["qwen/qwen3-coder:free",1048576,262000,"text",0],["qwen/qwen3-max",262144,32768,"text",1],["qwen/qwen3-max-thinking",262144,32768,"text",1],["qwen/qwen3-next-80b-a3b-instruct",262144,16384,"text",0],["qwen/qwen3-next-80b-a3b-instruct:free",262144,8888,"text",0],["qwen/qwen3-next-80b-a3b-thinking",262144,32768,"text",1],["qwen/qwen3-vl-235b-a22b-instruct",262144,16384,"text,image",0],["qwen/qwen3-vl-235b-a22b-thinking",131072,32768,"text,image",1],["qwen/qwen3-vl-30b-a3b-instruct",262144,32768,"text,image",0],["qwen/qwen3-vl-30b-a3b-thinking",131072,32768,"text,image",1],["qwen/qwen3-vl-32b-instruct",262144,32768,"text,image",0],["qwen/qwen3-vl-8b-instruct",256000,32768,"text,image",0],["qwen/qwen3-vl-8b-thinking",256000,32768,"text,image",1],["qwen/qwen3.5-122b-a10b",262144,262144,"text,image",1],["qwen/qwen3.5-27b",262144,65536,"text,image",1],["qwen/qwen3.5-35b-a3b",262144,81920,"text,image",1],["qwen/qwen3.5-397b-a17b",256000,8192,"text,image",1],["qwen/qwen3.5-9b",262144,262144,"text,image",1],["qwen/qwen3.5-flash-02-23",1000000,65536,"text,image",1],["qwen/qwen3.5-plus-02-15",1000000,65536,"text,image",1],["qwen/qwen3.5-plus-20260420",1000000,65536,"text,image",1],["qwen/qwen3.6-27b",262144,262140,"text,image",1],["qwen/qwen3.6-35b-a3b",262144,262144,"text,image",1],["qwen/qwen3.6-flash",1000000,65536,"text,image",1],["qwen/qwen3.6-max-preview",262144,65536,"text",1],["qwen/qwen3.6-plus",1000000,65536,"text",1],["qwen/qwen3.6-plus-preview:free",1000000,32000,"text",1],["qwen/qwen3.6-plus:free",1000000,65536,"text,image",1],["qwen/qwen3.7-max",1000000,65536,"text",1],["qwen/qwen3.7-plus",1000000,65536,"text,image",1],["qwen/qwq-32b",131072,131072,"text",1],["reka/reka-edge",16384,16384,"text,image",0],["rekaai/reka-edge",16384,16384,"text,image",0],["relace/relace-search",256000,128000,"text",0],["sakana/fugu-ultra",1000000,128000,"text,image",1],["sao10k/l3-euryale-70b",8192,8192,"text",0],["sao10k/l3.1-euryale-70b",131072,16384,"text",0],["stepfun/step-3.5-flash",262144,65536,"text",0],["stepfun/step-3.5-flash:free",256000,256000,"text",1],["stepfun/step-3.7-flash",256000,256000,"text,image",1],["tencent/hy3-preview",262144,64000,"text",1],["tencent/hy3-preview:free",262144,262144,"text",1],["thedrummer/rocinante-12b",32768,32768,"text",0],["thedrummer/unslopnemo-12b",32768,32768,"text",0],["tngtech/deepseek-r1t2-chimera",163840,163840,"text",1],["tngtech/tng-r1t-chimera",163840,65536,"text",1],["upstage/solar-pro-3",128000,8888,"text",1],["upstage/solar-pro-3:free",128000,8888,"text",1],["x-ai/grok-3",131072,8888,"text",0],["x-ai/grok-3-beta",131072,8888,"text",0],["x-ai/grok-3-mini",131072,8888,"text",1],["x-ai/grok-3-mini-beta",131072,8888,"text",1],["x-ai/grok-4",256000,64000,"text,image",1],["x-ai/grok-4-fast",2000000,30000,"text,image",1],["x-ai/grok-4.1-fast",2000000,30000,"text,image",1],["x-ai/grok-4.20",2000000,8888,"text,image",1],["x-ai/grok-4.20-beta",2000000,8888,"text,image",1],["x-ai/grok-4.3",1000000,1000000,"text,image",1],["x-ai/grok-build-0.1",256000,256000,"text,image",1],["x-ai/grok-code-fast-1",256000,10000,"text",1],["xiaomi/mimo-v2-flash",262144,65536,"text",1],["xiaomi/mimo-v2-omni",262144,65536,"text,image",1],["xiaomi/mimo-v2-pro",1048576,131072,"text",1],["xiaomi/mimo-v2.5",1048576,131072,"text,image",1],["xiaomi/mimo-v2.5-pro",1048576,131072,"text",1],["z-ai/glm-4-32b",128000,8888,"text",0],["z-ai/glm-4.5",131072,98304,"text",1],["z-ai/glm-4.5-air",131072,98304,"text",1],["z-ai/glm-4.5-air:free",131072,96000,"text",1],["z-ai/glm-4.5v",65536,16384,"text,image",1],["z-ai/glm-4.6",202752,131072,"text",1],["z-ai/glm-4.6:exacto",204800,131072,"text",1],["z-ai/glm-4.6v",131072,32768,"text,image",1],["z-ai/glm-4.7",202752,131072,"text",1],["z-ai/glm-4.7-flash",202752,16384,"text",1],["z-ai/glm-5",202752,128000,"text",1],["z-ai/glm-5-turbo",262144,131072,"text",1],["z-ai/glm-5.1",202752,131072,"text",1],["z-ai/glm-5.2",1048576,32768,"text",1],["z-ai/glm-5v-turbo",202752,131072,"text,image",1]],
|
|
35
40
|
"xai": [["grok-2",131072,8192,"text",0],["grok-2-1212",131072,8192,"text",0],["grok-2-latest",131072,8192,"text",0],["grok-2-vision",8192,4096,"text,image",0],["grok-2-vision-1212",8192,4096,"text,image",0],["grok-2-vision-latest",8192,4096,"text,image",0],["grok-3",131072,8192,"text",0],["grok-3-fast",131072,8192,"text",0],["grok-3-fast-latest",131072,8192,"text",0],["grok-3-latest",131072,8192,"text",0],["grok-3-mini",131072,8192,"text",1],["grok-3-mini-fast",131072,8192,"text",1],["grok-3-mini-fast-latest",131072,8192,"text",1],["grok-3-mini-latest",131072,8192,"text",1],["grok-4",256000,64000,"text",1],["grok-4-1-fast",2000000,30000,"text,image",1],["grok-4-1-fast-non-reasoning",2000000,30000,"text,image",0],["grok-4-fast",2000000,30000,"text,image",1],["grok-4-fast-non-reasoning",2000000,30000,"text,image",0],["grok-4.20-0309-non-reasoning",1000000,30000,"text,image",0],["grok-4.20-0309-reasoning",1000000,30000,"text,image",1],["grok-4.20-beta-latest-non-reasoning",2000000,30000,"text,image",0],["grok-4.20-beta-latest-reasoning",2000000,30000,"text,image",1],["grok-4.20-multi-agent-beta-latest",2000000,30000,"text,image",1],["grok-4.3",1000000,30000,"text,image",1],["grok-beta",131072,4096,"text",0],["grok-build-0.1",256000,256000,"text,image",1],["grok-code-fast-1",256000,10000,"text",1],["grok-composer-2.5-fast",200000,64000,"text",1],["grok-vision-beta",8192,4096,"text,image",0]],
|
|
36
41
|
};
|
|
37
42
|
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
// Google Antigravity (Cloud Code Assist) bundled model list.
|
|
2
2
|
//
|
|
3
3
|
// Single source of truth: the Antigravity `:fetchAvailableModels` backend, the same one the `agy`
|
|
4
|
-
// CLI resolves labels against. The
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
// backend has no OpenAI-style `GET /models`, so this static list is what surfaces in the picker.
|
|
9
|
-
export const ANTIGRAVITY_MODELS = [
|
|
4
|
+
// CLI resolves labels against. The ids below are the CCA WIRE ids followed by CLIProxyAPI-style
|
|
5
|
+
// client aliases. The CCA envelope's `model` field must receive the wire id (for example
|
|
6
|
+
// "Gemini 3.1 Pro (High)" => gemini-pro-agent), while the picker can expose label-shaped aliases.
|
|
7
|
+
const ANTIGRAVITY_WIRE_MODELS = [
|
|
10
8
|
"gemini-3.5-flash-low",
|
|
11
9
|
"gemini-3-flash-agent",
|
|
12
10
|
"gemini-3.5-flash-extra-low",
|
|
@@ -17,8 +15,20 @@ export const ANTIGRAVITY_MODELS = [
|
|
|
17
15
|
"gpt-oss-120b-medium",
|
|
18
16
|
];
|
|
19
17
|
|
|
18
|
+
export const ANTIGRAVITY_MODEL_ALIASES: Record<string, string> = {
|
|
19
|
+
"gemini-3.5-flash-mid": "gemini-3.5-flash-low",
|
|
20
|
+
"gemini-3.5-flash-high": "gemini-3-flash-agent",
|
|
21
|
+
"gemini-3.1-pro-high": "gemini-pro-agent",
|
|
22
|
+
"gemini-3.1-pro-preview": "gemini-pro-agent",
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const ANTIGRAVITY_MODELS = [
|
|
26
|
+
...ANTIGRAVITY_WIRE_MODELS,
|
|
27
|
+
...Object.keys(ANTIGRAVITY_MODEL_ALIASES),
|
|
28
|
+
];
|
|
29
|
+
|
|
20
30
|
// Context windows from the upstream `:fetchAvailableModels` maxTokens per model.
|
|
21
|
-
|
|
31
|
+
const ANTIGRAVITY_WIRE_MODEL_CONTEXT_WINDOWS: Record<string, number> = {
|
|
22
32
|
"gemini-3.5-flash-low": 1_048_576,
|
|
23
33
|
"gemini-3-flash-agent": 1_048_576,
|
|
24
34
|
"gemini-3.5-flash-extra-low": 1_048_576,
|
|
@@ -28,3 +38,17 @@ export const ANTIGRAVITY_MODEL_CONTEXT_WINDOWS: Record<string, number> = {
|
|
|
28
38
|
"claude-opus-4-6-thinking": 1_000_000,
|
|
29
39
|
"gpt-oss-120b-medium": 131_072,
|
|
30
40
|
};
|
|
41
|
+
|
|
42
|
+
export const ANTIGRAVITY_MODEL_CONTEXT_WINDOWS: Record<string, number> = {
|
|
43
|
+
...ANTIGRAVITY_WIRE_MODEL_CONTEXT_WINDOWS,
|
|
44
|
+
...Object.fromEntries(
|
|
45
|
+
Object.entries(ANTIGRAVITY_MODEL_ALIASES).map(([alias, wire]) => [
|
|
46
|
+
alias,
|
|
47
|
+
ANTIGRAVITY_WIRE_MODEL_CONTEXT_WINDOWS[wire],
|
|
48
|
+
]),
|
|
49
|
+
),
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export function resolveAntigravityWireModelId(modelId: string): string {
|
|
53
|
+
return ANTIGRAVITY_MODEL_ALIASES[modelId] ?? modelId;
|
|
54
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const KIRO_MODELS = [
|
|
2
2
|
"kiro-auto",
|
|
3
|
+
"claude-sonnet-5",
|
|
3
4
|
"claude-opus-4.8",
|
|
4
5
|
"claude-opus-4.7",
|
|
5
6
|
"claude-opus-4.6",
|
|
@@ -17,8 +18,11 @@ export const KIRO_MODELS = [
|
|
|
17
18
|
|
|
18
19
|
// Per-model context windows as documented on Kiro's official model catalog
|
|
19
20
|
// (https://kiro.dev/docs/models/ — "Quick comparison", page updated 2026-06-19).
|
|
21
|
+
// claude-sonnet-5 is pre-seeded from Anthropic/OpenRouter 1M metadata until Kiro's
|
|
22
|
+
// public catalog catches up.
|
|
20
23
|
// "Auto" is a router with no fixed window on Kiro's table, so it is intentionally omitted.
|
|
21
24
|
export const KIRO_MODEL_CONTEXT_WINDOWS: Record<string, number> = {
|
|
25
|
+
"claude-sonnet-5": 1_000_000,
|
|
22
26
|
"claude-opus-4.8": 1_000_000,
|
|
23
27
|
"claude-opus-4.7": 1_000_000,
|
|
24
28
|
"claude-opus-4.6": 1_000_000,
|
|
@@ -140,7 +140,8 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
|
|
|
140
140
|
oauthId: "anthropic",
|
|
141
141
|
jawcodeBundle: "anthropic",
|
|
142
142
|
note: "Log in with your Claude account",
|
|
143
|
-
models: ["claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", "claude-sonnet-4-6", "claude-haiku-4-5"],
|
|
143
|
+
models: ["claude-sonnet-5", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", "claude-sonnet-4-6", "claude-haiku-4-5"],
|
|
144
|
+
modelContextWindows: { "claude-sonnet-5": 1_000_000 },
|
|
144
145
|
defaultModel: "claude-sonnet-4-6",
|
|
145
146
|
},
|
|
146
147
|
{
|
|
@@ -174,7 +175,7 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
|
|
|
174
175
|
note: "Import-first: reuses your installed kiro-cli login (no browser). Experimental third-party harness — see Kiro ToS.",
|
|
175
176
|
models: KIRO_MODELS,
|
|
176
177
|
defaultModel: "kiro-auto",
|
|
177
|
-
//
|
|
178
|
+
// Per-model context metadata is maintained next to the Kiro model list.
|
|
178
179
|
modelContextWindows: KIRO_MODEL_CONTEXT_WINDOWS,
|
|
179
180
|
modelReasoningEfforts: KIRO_MODEL_REASONING_EFFORTS,
|
|
180
181
|
},
|
|
@@ -262,7 +263,7 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [
|
|
|
262
263
|
autoToolChoiceOnlyModels: ["kimi-k2.7-code"],
|
|
263
264
|
preserveReasoningContentModels: NEURALWATT_REASONING_HISTORY_MODELS,
|
|
264
265
|
},
|
|
265
|
-
{ id: "openrouter", label: "OpenRouter", adapter: "openai-chat", baseUrl: "https://openrouter.ai/api/v1", authKind: "key", featured: true, dashboardUrl: "https://openrouter.ai/keys", jawcodeBundle: "openrouter" },
|
|
266
|
+
{ id: "openrouter", label: "OpenRouter", adapter: "openai-chat", baseUrl: "https://openrouter.ai/api/v1", authKind: "key", featured: true, dashboardUrl: "https://openrouter.ai/keys", jawcodeBundle: "openrouter", models: ["anthropic/claude-sonnet-5"], modelContextWindows: { "anthropic/claude-sonnet-5": 1_000_000 } },
|
|
266
267
|
{ id: "groq", label: "Groq", adapter: "openai-chat", baseUrl: "https://api.groq.com/openai/v1", authKind: "key", featured: true, dashboardUrl: "https://console.groq.com/keys" },
|
|
267
268
|
{ id: "google", label: "Google Gemini", adapter: "google", baseUrl: "https://generativelanguage.googleapis.com", authKind: "key", featured: true, dashboardUrl: "https://aistudio.google.com/apikey", defaultModel: "gemini-3-pro", jawcodeBundle: "google", extraMetadataAliases: ["gemini"] },
|
|
268
269
|
{ id: "google-vertex", label: "Google Vertex AI", adapter: "google", baseUrl: "https://aiplatform.googleapis.com", authKind: "key", dashboardUrl: "https://console.cloud.google.com/vertex-ai", defaultModel: "gemini-3-pro", googleMode: "vertex", jawcodeBundle: "google", extraMetadataAliases: ["gemini-vertex"] },
|
package/src/responses/parser.ts
CHANGED
|
@@ -396,6 +396,7 @@ export function parseRequest(body: unknown): OcxParsedRequest {
|
|
|
396
396
|
if (data.presence_penalty !== undefined) options.presencePenalty = data.presence_penalty;
|
|
397
397
|
if (data.frequency_penalty !== undefined) options.frequencyPenalty = data.frequency_penalty;
|
|
398
398
|
if (data.service_tier !== undefined) options.serviceTier = data.service_tier;
|
|
399
|
+
if (data.prompt_cache_key !== undefined) options.promptCacheKey = data.prompt_cache_key;
|
|
399
400
|
|
|
400
401
|
// Stash the hosted web_search config (if Codex enabled it) so the proxy can run searches via the
|
|
401
402
|
// gpt-mini sidecar for routed providers. buildTools still drops the hosted tool; the sidecar path
|
package/src/server.ts
CHANGED
|
@@ -1589,6 +1589,7 @@ async function handleManagementAPI(req: Request, url: URL, config: OcxConfig): P
|
|
|
1589
1589
|
generatedAt: now,
|
|
1590
1590
|
summary: {
|
|
1591
1591
|
requests: 0,
|
|
1592
|
+
measuredRequests: 0,
|
|
1592
1593
|
reportedRequests: 0,
|
|
1593
1594
|
unreportedRequests: 0,
|
|
1594
1595
|
unsupportedRequests: 0,
|
package/src/types.ts
CHANGED
|
@@ -171,6 +171,7 @@ export interface OcxRequestOptions {
|
|
|
171
171
|
serviceTier?: string;
|
|
172
172
|
presencePenalty?: number;
|
|
173
173
|
frequencyPenalty?: number;
|
|
174
|
+
/** Responses prompt-cache affinity key. Passthrough preserves it via _rawBody; routed adapters do not consume it unless their upstream wire supports it. */
|
|
174
175
|
promptCacheKey?: string;
|
|
175
176
|
}
|
|
176
177
|
|
package/src/usage-summary.ts
CHANGED
|
@@ -5,6 +5,7 @@ export type UsageRange = "7d" | "30d" | "all";
|
|
|
5
5
|
|
|
6
6
|
export interface UsageSummaryTotals {
|
|
7
7
|
requests: number;
|
|
8
|
+
measuredRequests: number;
|
|
8
9
|
reportedRequests: number;
|
|
9
10
|
unreportedRequests: number;
|
|
10
11
|
unsupportedRequests: number;
|
|
@@ -20,6 +21,7 @@ export interface UsageSummaryTotals {
|
|
|
20
21
|
export interface UsageDay {
|
|
21
22
|
date: string;
|
|
22
23
|
requests: number;
|
|
24
|
+
measuredRequests: number;
|
|
23
25
|
reportedRequests: number;
|
|
24
26
|
totalTokens: number;
|
|
25
27
|
models: UsageDayModel[];
|
|
@@ -37,7 +39,9 @@ export interface UsageModel {
|
|
|
37
39
|
model: string;
|
|
38
40
|
resolvedModel?: string;
|
|
39
41
|
requests: number;
|
|
42
|
+
measuredRequests: number;
|
|
40
43
|
reportedRequests: number;
|
|
44
|
+
estimatedRequests: number;
|
|
41
45
|
totalTokens: number;
|
|
42
46
|
inputTokens: number;
|
|
43
47
|
outputTokens: number;
|
|
@@ -47,7 +51,9 @@ export interface UsageModel {
|
|
|
47
51
|
export interface UsageProvider {
|
|
48
52
|
provider: string;
|
|
49
53
|
requests: number;
|
|
54
|
+
measuredRequests: number;
|
|
50
55
|
reportedRequests: number;
|
|
56
|
+
estimatedRequests: number;
|
|
51
57
|
totalTokens: number;
|
|
52
58
|
shareRatio: number;
|
|
53
59
|
}
|
|
@@ -93,6 +99,7 @@ function dayCountForAllRange(entries: PersistedUsageEntry[], now: number): numbe
|
|
|
93
99
|
function blankTotals(): UsageSummaryTotals {
|
|
94
100
|
return {
|
|
95
101
|
requests: 0,
|
|
102
|
+
measuredRequests: 0,
|
|
96
103
|
reportedRequests: 0,
|
|
97
104
|
unreportedRequests: 0,
|
|
98
105
|
unsupportedRequests: 0,
|
|
@@ -106,8 +113,13 @@ function blankTotals(): UsageSummaryTotals {
|
|
|
106
113
|
};
|
|
107
114
|
}
|
|
108
115
|
|
|
116
|
+
function isMeasuredStatus(status: UsageStatus): boolean {
|
|
117
|
+
return status === "reported" || status === "estimated";
|
|
118
|
+
}
|
|
119
|
+
|
|
109
120
|
function bumpStatus(totals: UsageSummaryTotals, status: UsageStatus): void {
|
|
110
121
|
totals.requests += 1;
|
|
122
|
+
if (isMeasuredStatus(status)) totals.measuredRequests += 1;
|
|
111
123
|
if (status === "reported") totals.reportedRequests += 1;
|
|
112
124
|
else if (status === "unreported") totals.unreportedRequests += 1;
|
|
113
125
|
else if (status === "unsupported") totals.unsupportedRequests += 1;
|
|
@@ -125,7 +137,7 @@ function addTokens(totals: UsageSummaryTotals, entry: PersistedUsageEntry): void
|
|
|
125
137
|
}
|
|
126
138
|
|
|
127
139
|
function finalizeCoverage(totals: UsageSummaryTotals): void {
|
|
128
|
-
totals.coverageRatio = totals.requests === 0 ? 0 : totals.
|
|
140
|
+
totals.coverageRatio = totals.requests === 0 ? 0 : totals.measuredRequests / totals.requests;
|
|
129
141
|
}
|
|
130
142
|
|
|
131
143
|
function buildDayGrid(range: UsageRange, since: number | null, now: number, entries: PersistedUsageEntry[]): UsageDay[] {
|
|
@@ -147,16 +159,17 @@ function buildDayGrid(range: UsageRange, since: number | null, now: number, entr
|
|
|
147
159
|
};
|
|
148
160
|
for (let i = days - 1; i >= 0; i--) {
|
|
149
161
|
const key = localDateKey(now - i * DAY_MS);
|
|
150
|
-
grid.set(key, { date: key, requests: 0, reportedRequests: 0, totalTokens: 0, models: [] });
|
|
162
|
+
grid.set(key, { date: key, requests: 0, measuredRequests: 0, reportedRequests: 0, totalTokens: 0, models: [] });
|
|
151
163
|
}
|
|
152
164
|
for (const entry of entries) {
|
|
153
165
|
const key = localDateKey(entry.timestamp);
|
|
154
166
|
let day = grid.get(key);
|
|
155
167
|
if (!day) {
|
|
156
|
-
day = { date: key, requests: 0, reportedRequests: 0, totalTokens: 0, models: [] };
|
|
168
|
+
day = { date: key, requests: 0, measuredRequests: 0, reportedRequests: 0, totalTokens: 0, models: [] };
|
|
157
169
|
grid.set(key, day);
|
|
158
170
|
}
|
|
159
171
|
day.requests += 1;
|
|
172
|
+
if (isMeasuredStatus(entry.usageStatus)) day.measuredRequests += 1;
|
|
160
173
|
if (entry.usageStatus === "reported") day.reportedRequests += 1;
|
|
161
174
|
if (typeof entry.totalTokens === "number") day.totalTokens += entry.totalTokens;
|
|
162
175
|
else if (entry.usage) day.totalTokens += entry.usage.inputTokens + entry.usage.outputTokens;
|
|
@@ -186,7 +199,9 @@ function buildModels(entries: PersistedUsageEntry[], totalRequests: number): Usa
|
|
|
186
199
|
model: entry.model,
|
|
187
200
|
...(entry.resolvedModel ? { resolvedModel: entry.resolvedModel } : {}),
|
|
188
201
|
requests: 0,
|
|
202
|
+
measuredRequests: 0,
|
|
189
203
|
reportedRequests: 0,
|
|
204
|
+
estimatedRequests: 0,
|
|
190
205
|
totalTokens: 0,
|
|
191
206
|
inputTokens: 0,
|
|
192
207
|
outputTokens: 0,
|
|
@@ -195,7 +210,9 @@ function buildModels(entries: PersistedUsageEntry[], totalRequests: number): Usa
|
|
|
195
210
|
byKey.set(key, model);
|
|
196
211
|
}
|
|
197
212
|
model.requests += 1;
|
|
213
|
+
if (isMeasuredStatus(entry.usageStatus)) model.measuredRequests += 1;
|
|
198
214
|
if (entry.usageStatus === "reported") model.reportedRequests += 1;
|
|
215
|
+
else if (entry.usageStatus === "estimated") model.estimatedRequests += 1;
|
|
199
216
|
if (entry.usage) {
|
|
200
217
|
model.inputTokens += entry.usage.inputTokens;
|
|
201
218
|
model.outputTokens += entry.usage.outputTokens;
|
|
@@ -217,14 +234,18 @@ function buildProviders(entries: PersistedUsageEntry[], totalRequests: number):
|
|
|
217
234
|
provider = {
|
|
218
235
|
provider: providerKey,
|
|
219
236
|
requests: 0,
|
|
237
|
+
measuredRequests: 0,
|
|
220
238
|
reportedRequests: 0,
|
|
239
|
+
estimatedRequests: 0,
|
|
221
240
|
totalTokens: 0,
|
|
222
241
|
shareRatio: 0,
|
|
223
242
|
};
|
|
224
243
|
byKey.set(providerKey, provider);
|
|
225
244
|
}
|
|
226
245
|
provider.requests += 1;
|
|
246
|
+
if (isMeasuredStatus(entry.usageStatus)) provider.measuredRequests += 1;
|
|
227
247
|
if (entry.usageStatus === "reported") provider.reportedRequests += 1;
|
|
248
|
+
else if (entry.usageStatus === "estimated") provider.estimatedRequests += 1;
|
|
228
249
|
if (entry.usage) {
|
|
229
250
|
if (typeof entry.totalTokens === "number") provider.totalTokens += entry.totalTokens;
|
|
230
251
|
else provider.totalTokens += entry.usage.inputTokens + entry.usage.outputTokens;
|