This commit is contained in:
Harivansh Rathi 2026-03-10 13:17:18 -04:00
parent 536241053c
commit 7896a91262
2 changed files with 222 additions and 103 deletions

104
package-lock.json generated
View file

@ -11,8 +11,8 @@
"packages/*" "packages/*"
], ],
"dependencies": { "dependencies": {
"@mariozechner/jiti": "^2.6.5",
"@mariozechner/companion-coding-agent": "^0.30.2", "@mariozechner/companion-coding-agent": "^0.30.2",
"@mariozechner/jiti": "^2.6.5",
"get-east-asian-width": "^1.4.0" "get-east-asian-width": "^1.4.0"
}, },
"devDependencies": { "devDependencies": {
@ -1613,19 +1613,6 @@
"node": ">= 10" "node": ">= 10"
} }
}, },
"node_modules/@mariozechner/jiti": {
"version": "2.6.5",
"resolved": "https://registry.npmjs.org/@mariozechner/jiti/-/jiti-2.6.5.tgz",
"integrity": "sha512-faGUlTcXka5l7rv0lP3K3vGW/ejRuOS24RR2aSFWREUQqzjgdsuWNo/IiPqL3kWRGt6Ahl2+qcDAwtdeWeuGUw==",
"license": "MIT",
"dependencies": {
"std-env": "^3.10.0",
"yoctocolors": "^2.1.2"
},
"bin": {
"jiti": "lib/jiti-cli.mjs"
}
},
"node_modules/@mariozechner/companion-agent-core": { "node_modules/@mariozechner/companion-agent-core": {
"resolved": "packages/agent", "resolved": "packages/agent",
"link": true "link": true
@ -1642,6 +1629,19 @@
"resolved": "packages/tui", "resolved": "packages/tui",
"link": true "link": true
}, },
"node_modules/@mariozechner/jiti": {
"version": "2.6.5",
"resolved": "https://registry.npmjs.org/@mariozechner/jiti/-/jiti-2.6.5.tgz",
"integrity": "sha512-faGUlTcXka5l7rv0lP3K3vGW/ejRuOS24RR2aSFWREUQqzjgdsuWNo/IiPqL3kWRGt6Ahl2+qcDAwtdeWeuGUw==",
"license": "MIT",
"dependencies": {
"std-env": "^3.10.0",
"yoctocolors": "^2.1.2"
},
"bin": {
"jiti": "lib/jiti-cli.mjs"
}
},
"node_modules/@mistralai/mistralai": { "node_modules/@mistralai/mistralai": {
"version": "1.14.1", "version": "1.14.1",
"resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-1.14.1.tgz", "resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-1.14.1.tgz",
@ -3709,6 +3709,14 @@
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/companion-grind": {
"resolved": "packages/companion-grind",
"link": true
},
"node_modules/companion-teams": {
"resolved": "packages/companion-teams",
"link": true
},
"node_modules/concurrently": { "node_modules/concurrently": {
"version": "9.2.1", "version": "9.2.1",
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz",
@ -5819,14 +5827,6 @@
"integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/companion-grind": {
"resolved": "packages/companion-grind",
"link": true
},
"node_modules/companion-teams": {
"resolved": "packages/companion-teams",
"link": true
},
"node_modules/picocolors": { "node_modules/picocolors": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@ -7466,10 +7466,10 @@
"version": "0.56.2", "version": "0.56.2",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@mariozechner/jiti": "^2.6.2",
"@mariozechner/companion-agent-core": "^0.56.2", "@mariozechner/companion-agent-core": "^0.56.2",
"@mariozechner/companion-ai": "^0.56.2", "@mariozechner/companion-ai": "^0.56.2",
"@mariozechner/companion-tui": "^0.56.2", "@mariozechner/companion-tui": "^0.56.2",
"@mariozechner/jiti": "^2.6.2",
"@silvia-odwyer/photon-node": "^0.3.4", "@silvia-odwyer/photon-node": "^0.3.4",
"chalk": "^5.5.0", "chalk": "^5.5.0",
"cli-highlight": "^2.1.11", "cli-highlight": "^2.1.11",
@ -7552,35 +7552,6 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"packages/mom": {
"name": "@mariozechner/companion-mom",
"version": "0.56.2",
"extraneous": true,
"license": "MIT",
"dependencies": {
"@anthropic-ai/sandbox-runtime": "^0.0.16",
"@mariozechner/companion-agent-core": "^0.56.2",
"@mariozechner/companion-ai": "^0.56.2",
"@mariozechner/companion-coding-agent": "^0.56.2",
"@sinclair/typebox": "^0.34.0",
"@slack/socket-mode": "^2.0.0",
"@slack/web-api": "^7.0.0",
"chalk": "^5.6.2",
"croner": "^9.1.0",
"diff": "^8.0.2"
},
"bin": {
"mom": "dist/main.js"
},
"devDependencies": {
"@types/diff": "^7.0.2",
"@types/node": "^24.3.0",
"typescript": "^5.7.3"
},
"engines": {
"node": ">=20.0.0"
}
},
"packages/companion-channels": { "packages/companion-channels": {
"name": "@e9n/companion-channels", "name": "@e9n/companion-channels",
"version": "0.1.0", "version": "0.1.0",
@ -7907,6 +7878,35 @@
} }
} }
}, },
"packages/mom": {
"name": "@mariozechner/companion-mom",
"version": "0.56.2",
"extraneous": true,
"license": "MIT",
"dependencies": {
"@anthropic-ai/sandbox-runtime": "^0.0.16",
"@mariozechner/companion-agent-core": "^0.56.2",
"@mariozechner/companion-ai": "^0.56.2",
"@mariozechner/companion-coding-agent": "^0.56.2",
"@sinclair/typebox": "^0.34.0",
"@slack/socket-mode": "^2.0.0",
"@slack/web-api": "^7.0.0",
"chalk": "^5.6.2",
"croner": "^9.1.0",
"diff": "^8.0.2"
},
"bin": {
"mom": "dist/main.js"
},
"devDependencies": {
"@types/diff": "^7.0.2",
"@types/node": "^24.3.0",
"typescript": "^5.7.3"
},
"engines": {
"node": ">=20.0.0"
}
},
"packages/pods": { "packages/pods": {
"name": "@mariozechner/companion", "name": "@mariozechner/companion",
"version": "0.56.2", "version": "0.56.2",

View file

@ -889,6 +889,23 @@ export const MODELS = {
contextWindow: 204800, contextWindow: 204800,
maxTokens: 131072, maxTokens: 131072,
} satisfies Model<"bedrock-converse-stream">, } satisfies Model<"bedrock-converse-stream">,
"mistral.devstral-2-123b": {
id: "mistral.devstral-2-123b",
name: "Devstral 2 135B",
api: "bedrock-converse-stream",
provider: "amazon-bedrock",
baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
reasoning: false,
input: ["text"],
cost: {
input: 0.4,
output: 2,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 256000,
maxTokens: 8192,
} satisfies Model<"bedrock-converse-stream">,
"mistral.ministral-3-14b-instruct": { "mistral.ministral-3-14b-instruct": {
id: "mistral.ministral-3-14b-instruct", id: "mistral.ministral-3-14b-instruct",
name: "Ministral 14B 3.0", name: "Ministral 14B 3.0",
@ -3393,9 +3410,9 @@ export const MODELS = {
reasoning: true, reasoning: true,
input: ["text", "image"], input: ["text", "image"],
cost: { cost: {
input: 0, input: 0.5,
output: 0, output: 3,
cacheRead: 0, cacheRead: 0.05,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 1048576, contextWindow: 1048576,
@ -4714,7 +4731,7 @@ export const MODELS = {
mistral: { mistral: {
"codestral-latest": { "codestral-latest": {
id: "codestral-latest", id: "codestral-latest",
name: "Codestral", name: "Codestral (latest)",
api: "mistral-conversations", api: "mistral-conversations",
provider: "mistral", provider: "mistral",
baseUrl: "https://api.mistral.ai", baseUrl: "https://api.mistral.ai",
@ -4765,7 +4782,7 @@ export const MODELS = {
} satisfies Model<"mistral-conversations">, } satisfies Model<"mistral-conversations">,
"devstral-medium-latest": { "devstral-medium-latest": {
id: "devstral-medium-latest", id: "devstral-medium-latest",
name: "Devstral 2", name: "Devstral 2 (latest)",
api: "mistral-conversations", api: "mistral-conversations",
provider: "mistral", provider: "mistral",
baseUrl: "https://api.mistral.ai", baseUrl: "https://api.mistral.ai",
@ -4833,7 +4850,7 @@ export const MODELS = {
} satisfies Model<"mistral-conversations">, } satisfies Model<"mistral-conversations">,
"magistral-medium-latest": { "magistral-medium-latest": {
id: "magistral-medium-latest", id: "magistral-medium-latest",
name: "Magistral Medium", name: "Magistral Medium (latest)",
api: "mistral-conversations", api: "mistral-conversations",
provider: "mistral", provider: "mistral",
baseUrl: "https://api.mistral.ai", baseUrl: "https://api.mistral.ai",
@ -4867,7 +4884,7 @@ export const MODELS = {
} satisfies Model<"mistral-conversations">, } satisfies Model<"mistral-conversations">,
"ministral-3b-latest": { "ministral-3b-latest": {
id: "ministral-3b-latest", id: "ministral-3b-latest",
name: "Ministral 3B", name: "Ministral 3B (latest)",
api: "mistral-conversations", api: "mistral-conversations",
provider: "mistral", provider: "mistral",
baseUrl: "https://api.mistral.ai", baseUrl: "https://api.mistral.ai",
@ -4884,7 +4901,7 @@ export const MODELS = {
} satisfies Model<"mistral-conversations">, } satisfies Model<"mistral-conversations">,
"ministral-8b-latest": { "ministral-8b-latest": {
id: "ministral-8b-latest", id: "ministral-8b-latest",
name: "Ministral 8B", name: "Ministral 8B (latest)",
api: "mistral-conversations", api: "mistral-conversations",
provider: "mistral", provider: "mistral",
baseUrl: "https://api.mistral.ai", baseUrl: "https://api.mistral.ai",
@ -4935,7 +4952,7 @@ export const MODELS = {
} satisfies Model<"mistral-conversations">, } satisfies Model<"mistral-conversations">,
"mistral-large-latest": { "mistral-large-latest": {
id: "mistral-large-latest", id: "mistral-large-latest",
name: "Mistral Large", name: "Mistral Large (latest)",
api: "mistral-conversations", api: "mistral-conversations",
provider: "mistral", provider: "mistral",
baseUrl: "https://api.mistral.ai", baseUrl: "https://api.mistral.ai",
@ -4986,7 +5003,7 @@ export const MODELS = {
} satisfies Model<"mistral-conversations">, } satisfies Model<"mistral-conversations">,
"mistral-medium-latest": { "mistral-medium-latest": {
id: "mistral-medium-latest", id: "mistral-medium-latest",
name: "Mistral Medium", name: "Mistral Medium (latest)",
api: "mistral-conversations", api: "mistral-conversations",
provider: "mistral", provider: "mistral",
baseUrl: "https://api.mistral.ai", baseUrl: "https://api.mistral.ai",
@ -5037,7 +5054,7 @@ export const MODELS = {
} satisfies Model<"mistral-conversations">, } satisfies Model<"mistral-conversations">,
"mistral-small-latest": { "mistral-small-latest": {
id: "mistral-small-latest", id: "mistral-small-latest",
name: "Mistral Small", name: "Mistral Small (latest)",
api: "mistral-conversations", api: "mistral-conversations",
provider: "mistral", provider: "mistral",
baseUrl: "https://api.mistral.ai", baseUrl: "https://api.mistral.ai",
@ -5122,7 +5139,7 @@ export const MODELS = {
} satisfies Model<"mistral-conversations">, } satisfies Model<"mistral-conversations">,
"pixtral-large-latest": { "pixtral-large-latest": {
id: "pixtral-large-latest", id: "pixtral-large-latest",
name: "Pixtral Large", name: "Pixtral Large (latest)",
api: "mistral-conversations", api: "mistral-conversations",
provider: "mistral", provider: "mistral",
baseUrl: "https://api.mistral.ai", baseUrl: "https://api.mistral.ai",
@ -6401,6 +6418,23 @@ export const MODELS = {
contextWindow: 262144, contextWindow: 262144,
maxTokens: 65536, maxTokens: 65536,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"mimo-v2-flash-free": {
id: "mimo-v2-flash-free",
name: "MiMo V2 Flash 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,
},
contextWindow: 262144,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
"minimax-m2.1": { "minimax-m2.1": {
id: "minimax-m2.1", id: "minimax-m2.1",
name: "MiniMax M2.1", name: "MiniMax M2.1",
@ -7017,6 +7051,23 @@ export const MODELS = {
contextWindow: 262144, contextWindow: 262144,
maxTokens: 32768, maxTokens: 32768,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"bytedance-seed/seed-2.0-lite": {
id: "bytedance-seed/seed-2.0-lite",
name: "ByteDance Seed: Seed-2.0-Lite",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.25,
output: 2,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"bytedance-seed/seed-2.0-mini": { "bytedance-seed/seed-2.0-mini": {
id: "bytedance-seed/seed-2.0-mini", id: "bytedance-seed/seed-2.0-mini",
name: "ByteDance Seed: Seed-2.0-Mini", name: "ByteDance Seed: Seed-2.0-Mini",
@ -7096,11 +7147,11 @@ export const MODELS = {
cost: { cost: {
input: 0.19999999999999998, input: 0.19999999999999998,
output: 0.77, output: 0.77,
cacheRead: 0.13, cacheRead: 0.135,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 163840, contextWindow: 163840,
maxTokens: 163840, maxTokens: 4096,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"deepseek/deepseek-chat-v3.1": { "deepseek/deepseek-chat-v3.1": {
id: "deepseek/deepseek-chat-v3.1", id: "deepseek/deepseek-chat-v3.1",
@ -7468,9 +7519,9 @@ export const MODELS = {
reasoning: false, reasoning: false,
input: ["text", "image"], input: ["text", "image"],
cost: { cost: {
input: 0.04, input: 0.03,
output: 0.15, output: 0.11,
cacheRead: 0.02, cacheRead: 0.015,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 128000, contextWindow: 128000,
@ -7774,13 +7825,13 @@ export const MODELS = {
reasoning: true, reasoning: true,
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.295, input: 0.27,
output: 1.2, output: 0.95,
cacheRead: 0.03, cacheRead: 0.0299999997,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 196608, contextWindow: 196608,
maxTokens: 196608, maxTokens: 4096,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"mistralai/codestral-2508": { "mistralai/codestral-2508": {
id: "mistralai/codestral-2508", id: "mistralai/codestral-2508",
@ -9836,7 +9887,7 @@ export const MODELS = {
cacheRead: 0, cacheRead: 0,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 262144, contextWindow: 131072,
maxTokens: 4096, maxTokens: 4096,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"qwen/qwen3-next-80b-a3b-instruct:free": { "qwen/qwen3-next-80b-a3b-instruct:free": {
@ -10060,6 +10111,23 @@ export const MODELS = {
contextWindow: 262144, contextWindow: 262144,
maxTokens: 65536, maxTokens: 65536,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"qwen/qwen3.5-9b": {
id: "qwen/qwen3.5-9b",
name: "Qwen: Qwen3.5-9B",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.09999999999999999,
output: 0.15,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 4096,
} satisfies Model<"openai-completions">,
"qwen/qwen3.5-flash-02-23": { "qwen/qwen3.5-flash-02-23": {
id: "qwen/qwen3.5-flash-02-23", id: "qwen/qwen3.5-flash-02-23",
name: "Qwen: Qwen3.5-Flash", name: "Qwen: Qwen3.5-Flash",
@ -10154,13 +10222,13 @@ export const MODELS = {
reasoning: false, reasoning: false,
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.65, input: 0.85,
output: 0.75, output: 0.85,
cacheRead: 0, cacheRead: 0,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 32768, contextWindow: 131072,
maxTokens: 32768, maxTokens: 16384,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"stepfun/step-3.5-flash": { "stepfun/step-3.5-flash": {
id: "stepfun/step-3.5-flash", id: "stepfun/step-3.5-flash",
@ -10731,7 +10799,7 @@ export const MODELS = {
api: "anthropic-messages", api: "anthropic-messages",
provider: "vercel-ai-gateway", provider: "vercel-ai-gateway",
baseUrl: "https://ai-gateway.vercel.sh", baseUrl: "https://ai-gateway.vercel.sh",
reasoning: true, reasoning: false,
input: ["text"], input: ["text"],
cost: { cost: {
input: 0.5, input: 0.5,
@ -11915,23 +11983,6 @@ export const MODELS = {
contextWindow: 131072, contextWindow: 131072,
maxTokens: 131072, maxTokens: 131072,
} satisfies Model<"anthropic-messages">, } satisfies Model<"anthropic-messages">,
"openai/codex-mini": {
id: "openai/codex-mini",
name: "Codex Mini",
api: "anthropic-messages",
provider: "vercel-ai-gateway",
baseUrl: "https://ai-gateway.vercel.sh",
reasoning: true,
input: ["text", "image"],
cost: {
input: 1.5,
output: 6,
cacheRead: 0.375,
cacheWrite: 0,
},
contextWindow: 200000,
maxTokens: 100000,
} satisfies Model<"anthropic-messages">,
"openai/gpt-4-turbo": { "openai/gpt-4-turbo": {
id: "openai/gpt-4-turbo", id: "openai/gpt-4-turbo",
name: "GPT-4 Turbo", name: "GPT-4 Turbo",
@ -12337,7 +12388,7 @@ export const MODELS = {
cacheRead: 0.25, cacheRead: 0.25,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 1050000, contextWindow: 200000,
maxTokens: 128000, maxTokens: 128000,
} satisfies Model<"anthropic-messages">, } satisfies Model<"anthropic-messages">,
"openai/gpt-5.4-pro": { "openai/gpt-5.4-pro": {
@ -12354,7 +12405,7 @@ export const MODELS = {
cacheRead: 0, cacheRead: 0,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 1050000, contextWindow: 200000,
maxTokens: 128000, maxTokens: 128000,
} satisfies Model<"anthropic-messages">, } satisfies Model<"anthropic-messages">,
"openai/gpt-oss-120b": { "openai/gpt-oss-120b": {
@ -12918,6 +12969,23 @@ export const MODELS = {
contextWindow: 202752, contextWindow: 202752,
maxTokens: 120000, maxTokens: 120000,
} satisfies Model<"anthropic-messages">, } satisfies Model<"anthropic-messages">,
"zai/glm-4.7-flash": {
id: "zai/glm-4.7-flash",
name: "GLM 4.7 Flash",
api: "anthropic-messages",
provider: "vercel-ai-gateway",
baseUrl: "https://ai-gateway.vercel.sh",
reasoning: true,
input: ["text"],
cost: {
input: 0.07,
output: 0.39999999999999997,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 200000,
maxTokens: 131000,
} satisfies Model<"anthropic-messages">,
"zai/glm-4.7-flashx": { "zai/glm-4.7-flashx": {
id: "zai/glm-4.7-flashx", id: "zai/glm-4.7-flashx",
name: "GLM 4.7 FlashX", name: "GLM 4.7 FlashX",
@ -12937,20 +13005,20 @@ export const MODELS = {
} satisfies Model<"anthropic-messages">, } satisfies Model<"anthropic-messages">,
"zai/glm-5": { "zai/glm-5": {
id: "zai/glm-5", id: "zai/glm-5",
name: "GLM-5", name: "GLM 5",
api: "anthropic-messages", api: "anthropic-messages",
provider: "vercel-ai-gateway", provider: "vercel-ai-gateway",
baseUrl: "https://ai-gateway.vercel.sh", baseUrl: "https://ai-gateway.vercel.sh",
reasoning: true, reasoning: true,
input: ["text"], input: ["text"],
cost: { cost: {
input: 1, input: 0.7999999999999999,
output: 3.1999999999999997, output: 2.56,
cacheRead: 0.19999999999999998, cacheRead: 0.16,
cacheWrite: 0, cacheWrite: 0,
}, },
contextWindow: 202800, contextWindow: 202800,
maxTokens: 131072, maxTokens: 131100,
} satisfies Model<"anthropic-messages">, } satisfies Model<"anthropic-messages">,
}, },
xai: { xai: {
@ -13277,6 +13345,57 @@ export const MODELS = {
contextWindow: 2000000, contextWindow: 2000000,
maxTokens: 30000, maxTokens: 30000,
} satisfies Model<"openai-completions">, } satisfies Model<"openai-completions">,
"grok-4.20-experimental-beta-0304-non-reasoning": {
id: "grok-4.20-experimental-beta-0304-non-reasoning",
name: "Grok 4.20 (Experimental, Non-Reasoning)",
api: "openai-completions",
provider: "xai",
baseUrl: "https://api.x.ai/v1",
reasoning: false,
input: ["text", "image"],
cost: {
input: 2,
output: 6,
cacheRead: 0.2,
cacheWrite: 0,
},
contextWindow: 2000000,
maxTokens: 30000,
} satisfies Model<"openai-completions">,
"grok-4.20-experimental-beta-0304-reasoning": {
id: "grok-4.20-experimental-beta-0304-reasoning",
name: "Grok 4.20 (Experimental, Reasoning)",
api: "openai-completions",
provider: "xai",
baseUrl: "https://api.x.ai/v1",
reasoning: true,
input: ["text", "image"],
cost: {
input: 2,
output: 6,
cacheRead: 0.2,
cacheWrite: 0,
},
contextWindow: 2000000,
maxTokens: 30000,
} satisfies Model<"openai-completions">,
"grok-4.20-multi-agent-experimental-beta-0304": {
id: "grok-4.20-multi-agent-experimental-beta-0304",
name: "Grok 4.20 Multi-Agent (Experimental)",
api: "openai-completions",
provider: "xai",
baseUrl: "https://api.x.ai/v1",
reasoning: true,
input: ["text", "image"],
cost: {
input: 2,
output: 6,
cacheRead: 0.2,
cacheWrite: 0,
},
contextWindow: 2000000,
maxTokens: 30000,
} satisfies Model<"openai-completions">,
"grok-beta": { "grok-beta": {
id: "grok-beta", id: "grok-beta",
name: "Grok Beta", name: "Grok Beta",