diff --git a/package-lock.json b/package-lock.json index f488aa3..af6b4cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8495,7 +8495,7 @@ }, "packages/agent": { "name": "@jaeswift/jae-agent-core", - "version": "0.62.0", + "version": "0.62.1", "license": "MIT", "dependencies": { "@jaeswift/jae-ai": "^0.62.0" @@ -8733,7 +8733,7 @@ }, "packages/tui": { "name": "@jaeswift/jae-tui", - "version": "0.62.0", + "version": "0.62.1", "license": "MIT", "dependencies": { "@types/mime-types": "^2.1.4", diff --git a/packages/agent/package.json b/packages/agent/package.json index 3c9abbd..1a38946 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -1,6 +1,6 @@ { "name": "@jaeswift/jae-agent-core", - "version": "0.62.0", + "version": "0.62.1", "description": "General-purpose agent with transport abstraction, state management, and attachment support", "type": "module", "main": "./dist/index.js", diff --git a/packages/ai/src/env-api-keys.ts b/packages/ai/src/env-api-keys.ts index 95e9141..35adf84 100644 --- a/packages/ai/src/env-api-keys.ts +++ b/packages/ai/src/env-api-keys.ts @@ -126,6 +126,7 @@ export function getEnvApiKey(provider: any): string | undefined { opencode: "OPENCODE_API_KEY", "opencode-go": "OPENCODE_API_KEY", "kimi-coding": "KIMI_API_KEY", + venice: "VENICE_API_KEY", }; const envVar = envMap[provider]; diff --git a/packages/ai/src/models.generated.ts b/packages/ai/src/models.generated.ts index 20cde66..100834c 100644 --- a/packages/ai/src/models.generated.ts +++ b/packages/ai/src/models.generated.ts @@ -13896,4 +13896,2068 @@ export const MODELS = { maxTokens: 131072, } satisfies Model<"openai-completions">, }, -} as const; + "venice": { + // ===== TEXT MODELS (59) ===== + "venice-uncensored": { + id: "venice-uncensored", + name: "Venice Uncensored 1.1", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["json-schema", "web-search"], + cost: { input: 0.2, output: 0.9, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 32000, + maxTokens: 8192, + } satisfies Model<"openai-completions">, + "venice-uncensored-role-play": { + id: "venice-uncensored-role-play", + name: "Venice Role Play Uncensored", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["json-schema", "multi-image", "tools", "vision", "web-search"], + cost: { input: 0.5, output: 2.0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "zai-org-glm-4.6": { + id: "zai-org-glm-4.6", + name: "GLM 4.6", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["json-schema", "tools", "web-search"], + cost: { input: 0.85, output: 2.75, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "olafangensan-glm-4.7-flash-heretic": { + id: "olafangensan-glm-4.7-flash-heretic", + name: "GLM 4.7 Flash Heretic", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["json-schema", "reasoning", "tools", "web-search"], + cost: { input: 0.14, output: 0.8, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 200000, + maxTokens: 24000, + } satisfies Model<"openai-completions">, + "zai-org-glm-4.7-flash": { + id: "zai-org-glm-4.7-flash", + name: "GLM 4.7 Flash", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["json-schema", "reasoning", "reasoning-effort", "tools", "web-search"], + cost: { input: 0.125, output: 0.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "zai-org-glm-5": { + id: "zai-org-glm-5", + name: "GLM 5", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["code", "json-schema", "reasoning", "tools", "web-search"], + cost: { input: 1.0, output: 3.2, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 32000, + } satisfies Model<"openai-completions">, + "zai-org-glm-4.7": { + id: "zai-org-glm-4.7", + name: "GLM 4.7", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["json-schema", "reasoning", "tools", "web-search"], + cost: { input: 0.55, output: 2.65, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "qwen3-4b": { + id: "qwen3-4b", + name: "Venice Small", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["json-schema", "logprobs", "reasoning", "tools", "web-search"], + cost: { input: 0.05, output: 0.15, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 32000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "qwen3-5-9b": { + id: "qwen3-5-9b", + name: "Qwen 3.5 9B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["json-schema", "logprobs", "multi-image", "reasoning", "tools", "vision", "web-search"], + cost: { input: 0.05, output: 0.15, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 65536, + } satisfies Model<"openai-completions">, + "mistral-31-24b": { + id: "mistral-31-24b", + name: "Venice Medium", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["json-schema", "multi-image", "tools", "vision", "web-search"], + cost: { input: 0.5, output: 2.0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "mistral-small-3-2-24b-instruct": { + id: "mistral-small-3-2-24b-instruct", + name: "Mistral Small 3.2 24B Instruct", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["json-schema", "tools", "web-search"], + cost: { input: 0.0938, output: 0.25, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "qwen3-235b-a22b-thinking-2507": { + id: "qwen3-235b-a22b-thinking-2507", + name: "Qwen 3 235B A22B Thinking 2507", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["json-schema", "reasoning", "tools", "web-search"], + cost: { input: 0.45, output: 3.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "qwen3-235b-a22b-instruct-2507": { + id: "qwen3-235b-a22b-instruct-2507", + name: "Qwen 3 235B A22B Instruct 2507", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["json-schema", "tools", "web-search"], + cost: { input: 0.15, output: 0.75, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "qwen3-next-80b": { + id: "qwen3-next-80b", + name: "Qwen 3 Next 80b", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["json-schema", "tools", "web-search"], + cost: { input: 0.35, output: 1.9, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "qwen3-coder-480b-a35b-instruct": { + id: "qwen3-coder-480b-a35b-instruct", + name: "Qwen 3 Coder 480b", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["code", "json-schema", "tools", "web-search"], + cost: { input: 0.75, output: 3.0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 65536, + } satisfies Model<"openai-completions">, + "hermes-3-llama-3.1-405b": { + id: "hermes-3-llama-3.1-405b", + name: "Hermes 3 Llama 3.1 405b", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["web-search"], + cost: { input: 1.1, output: 3.0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "google-gemma-3-27b-it": { + id: "google-gemma-3-27b-it", + name: "Google Gemma 3 27B Instruct", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["json-schema", "multi-image", "tools", "vision", "web-search"], + cost: { input: 0.12, output: 0.2, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "grok-41-fast": { + id: "grok-41-fast", + name: "Grok 4.1 Fast", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "vision", "web-search"], + cost: { input: 0.25, output: 0.625, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 1000000, + maxTokens: 30000, + } satisfies Model<"openai-completions">, + "grok-4-20-beta": { + id: "grok-4-20-beta", + name: "Grok 4.20 Beta", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "vision", "web-search", "x-search"], + cost: { input: 2.5, output: 7.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 2000000, + maxTokens: 128000, + } satisfies Model<"openai-completions">, + "grok-4-20-multi-agent-beta": { + id: "grok-4-20-multi-agent-beta", + name: "Grok 4.20 Multi-Agent Beta", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["json-schema", "multi-image", "reasoning", "reasoning-effort", "vision", "web-search", "x-search"], + cost: { input: 2.5, output: 7.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 2000000, + maxTokens: 128000, + } satisfies Model<"openai-completions">, + "gemini-3-pro-preview": { + id: "gemini-3-pro-preview", + name: "Gemini 3 Pro Preview", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["audio-input", "json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "video-input", "vision", "web-search"], + cost: { input: 2.5, output: 15.0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "gemini-3-1-pro-preview": { + id: "gemini-3-1-pro-preview", + name: "Gemini 3.1 Pro Preview", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["audio-input", "json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "video-input", "vision", "web-search"], + cost: { input: 2.5, output: 15.0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 1000000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "gemini-3-flash-preview": { + id: "gemini-3-flash-preview", + name: "Gemini 3 Flash Preview", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["audio-input", "json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "video-input", "vision", "web-search"], + cost: { input: 0.7, output: 3.75, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 65536, + } satisfies Model<"openai-completions">, + "claude-opus-4-6": { + id: "claude-opus-4-6", + name: "Claude Opus 4.6", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["code", "json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "vision", "web-search"], + cost: { input: 6.0, output: 30.0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 1000000, + maxTokens: 128000, + } satisfies Model<"openai-completions">, + "claude-opus-4-5": { + id: "claude-opus-4-5", + name: "Claude Opus 4.5", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["code", "json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "vision", "web-search"], + cost: { input: 6.0, output: 30.0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "claude-sonnet-4-6": { + id: "claude-sonnet-4-6", + name: "Claude Sonnet 4.6", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["code", "json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "vision", "web-search"], + cost: { input: 3.6, output: 18.0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 1000000, + maxTokens: 64000, + } satisfies Model<"openai-completions">, + "claude-sonnet-4-5": { + id: "claude-sonnet-4-5", + name: "Claude Sonnet 4.5", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["code", "json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "vision", "web-search"], + cost: { input: 3.75, output: 18.75, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 64000, + } satisfies Model<"openai-completions">, + "openai-gpt-oss-120b": { + id: "openai-gpt-oss-120b", + name: "OpenAI GPT OSS 120B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["tools", "web-search"], + cost: { input: 0.07, output: 0.3, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "kimi-k2-thinking": { + id: "kimi-k2-thinking", + name: "Kimi K2 Thinking", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["code", "json-schema", "reasoning", "reasoning-effort", "tools", "web-search"], + cost: { input: 0.75, output: 3.2, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 65536, + } satisfies Model<"openai-completions">, + "kimi-k2-5": { + id: "kimi-k2-5", + name: "Kimi K2.5", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["code", "json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "vision", "web-search"], + cost: { input: 0.56, output: 3.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 65536, + } satisfies Model<"openai-completions">, + "deepseek-v3.2": { + id: "deepseek-v3.2", + name: "DeepSeek V3.2", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["json-schema", "reasoning", "tools", "web-search"], + cost: { input: 0.33, output: 0.48, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 160000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "llama-3.2-3b": { + id: "llama-3.2-3b", + name: "Llama 3.2 3B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["tools", "web-search"], + cost: { input: 0.15, output: 0.6, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "llama-3.3-70b": { + id: "llama-3.3-70b", + name: "Llama 3.3 70B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["tools", "web-search"], + cost: { input: 0.7, output: 2.8, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "openai-gpt-52": { + id: "openai-gpt-52", + name: "GPT-5.2", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["json-schema", "reasoning", "reasoning-effort", "tools", "web-search"], + cost: { input: 2.19, output: 17.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 65536, + } satisfies Model<"openai-completions">, + "openai-gpt-52-codex": { + id: "openai-gpt-52-codex", + name: "GPT-5.2 Codex", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["code", "json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "vision", "web-search"], + cost: { input: 2.19, output: 17.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 65536, + } satisfies Model<"openai-completions">, + "openai-gpt-53-codex": { + id: "openai-gpt-53-codex", + name: "GPT-5.3 Codex", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["code", "json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "vision", "web-search"], + cost: { input: 2.19, output: 17.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 400000, + maxTokens: 128000, + } satisfies Model<"openai-completions">, + "openai-gpt-54": { + id: "openai-gpt-54", + name: "GPT-5.4", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "vision", "web-search"], + cost: { input: 3.13, output: 18.8, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 1000000, + maxTokens: 131072, + } satisfies Model<"openai-completions">, + "openai-gpt-54-pro": { + id: "openai-gpt-54-pro", + name: "GPT-5.4 Pro", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["json-schema", "multi-image", "reasoning", "reasoning-effort", "tools", "vision", "web-search"], + cost: { input: 37.5, output: 225.0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 1000000, + maxTokens: 128000, + } satisfies Model<"openai-completions">, + "openai-gpt-4o-2024-11-20": { + id: "openai-gpt-4o-2024-11-20", + name: "GPT-4o", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["json-schema", "logprobs", "multi-image", "tools", "vision", "web-search"], + cost: { input: 3.125, output: 12.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "openai-gpt-4o-mini-2024-07-18": { + id: "openai-gpt-4o-mini-2024-07-18", + name: "GPT-4o Mini", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["json-schema", "logprobs", "multi-image", "tools", "vision", "web-search"], + cost: { input: 0.1875, output: 0.75, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "minimax-m21": { + id: "minimax-m21", + name: "MiniMax M2.1", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["code", "json-schema", "logprobs", "reasoning", "reasoning-effort", "tools", "web-search"], + cost: { input: 0.35, output: 1.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "minimax-m25": { + id: "minimax-m25", + name: "MiniMax M2.5", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["code", "reasoning", "reasoning-effort", "tools", "web-search"], + cost: { input: 0.34, output: 1.19, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "minimax-m27": { + id: "minimax-m27", + name: "MiniMax M2.7", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["code", "reasoning", "reasoning-effort", "tools", "web-search"], + cost: { input: 0.375, output: 1.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "grok-code-fast-1": { + id: "grok-code-fast-1", + name: "Grok Code Fast 1", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["code", "json-schema", "logprobs", "reasoning", "reasoning-effort", "tools", "web-search"], + cost: { input: 0.25, output: 1.87, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 10000, + } satisfies Model<"openai-completions">, + "qwen3-5-35b-a3b": { + id: "qwen3-5-35b-a3b", + name: "Qwen 3.5 35B A3B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text", "image"], + tags: ["code", "json-schema", "logprobs", "multi-image", "reasoning", "tools", "video-input", "vision", "web-search"], + cost: { input: 0.3125, output: 1.25, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 65536, + } satisfies Model<"openai-completions">, + "qwen3-vl-235b-a22b": { + id: "qwen3-vl-235b-a22b", + name: "Qwen3 VL 235B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["json-schema", "multi-image", "tools", "vision", "web-search"], + cost: { input: 0.25, output: 1.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "qwen3-coder-480b-a35b-instruct-turbo": { + id: "qwen3-coder-480b-a35b-instruct-turbo", + name: "Qwen 3 Coder 480B Turbo", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["code", "json-schema", "logprobs", "tools", "web-search"], + cost: { input: 0.35, output: 1.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 65536, + } satisfies Model<"openai-completions">, + "nvidia-nemotron-3-nano-30b-a3b": { + id: "nvidia-nemotron-3-nano-30b-a3b", + name: "NVIDIA Nemotron 3 Nano 30B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["json-schema", "tools", "web-search"], + cost: { input: 0.075, output: 0.3, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 16384, + } satisfies Model<"openai-completions">, + "e2ee-venice-uncensored-24b-p": { + id: "e2ee-venice-uncensored-24b-p", + name: "Venice Uncensored 1.1", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["e2ee", "tee", "web-search"], + cost: { input: 0.25, output: 1.15, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 32000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "e2ee-gemma-3-27b-p": { + id: "e2ee-gemma-3-27b-p", + name: "Gemma 3 27B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["e2ee", "tee", "web-search"], + cost: { input: 0.14, output: 0.5, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 40000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "e2ee-glm-4-7-p": { + id: "e2ee-glm-4-7-p", + name: "GLM 4.7", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["code", "e2ee", "reasoning", "tee", "web-search"], + cost: { input: 1.1, output: 4.15, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "e2ee-glm-4-7-flash-p": { + id: "e2ee-glm-4-7-flash-p", + name: "GLM 4.7 Flash", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["code", "e2ee", "tee", "web-search"], + cost: { input: 0.13, output: 0.55, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "e2ee-gpt-oss-20b-p": { + id: "e2ee-gpt-oss-20b-p", + name: "GPT OSS 20B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["e2ee", "reasoning", "tee", "web-search"], + cost: { input: 0.05, output: 0.19, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "e2ee-gpt-oss-120b-p": { + id: "e2ee-gpt-oss-120b-p", + name: "GPT OSS 120B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["e2ee", "reasoning", "tee", "web-search"], + cost: { input: 0.13, output: 0.65, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "e2ee-qwen-2-5-7b-p": { + id: "e2ee-qwen-2-5-7b-p", + name: "Qwen 2.5 7B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["e2ee", "tee", "web-search"], + cost: { input: 0.05, output: 0.13, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 32000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "e2ee-qwen3-30b-a3b-p": { + id: "e2ee-qwen3-30b-a3b-p", + name: "Qwen3 30B A3B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["e2ee", "tee", "web-search"], + cost: { input: 0.19, output: 0.69, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 256000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "e2ee-qwen3-vl-30b-a3b-p": { + id: "e2ee-qwen3-vl-30b-a3b-p", + name: "Qwen3 VL 30B A3B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["e2ee", "tee", "vision", "web-search"], + cost: { input: 0.25, output: 0.9, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 4096, + } satisfies Model<"openai-completions">, + "e2ee-glm-5": { + id: "e2ee-glm-5", + name: "GLM 5", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["e2ee", "reasoning", "tee", "web-search"], + cost: { input: 1.1, output: 4.15, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 198000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + "e2ee-qwen3-5-122b-a10b": { + id: "e2ee-qwen3-5-122b-a10b", + name: "Qwen3.5 122B A10B", + api: "openai-completions", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: true, + input: ["text"], + tags: ["e2ee", "reasoning", "tee", "web-search"], + cost: { input: 0.5, output: 4.0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 128000, + maxTokens: 32768, + } satisfies Model<"openai-completions">, + // ===== IMAGE GENERATION MODELS (23) ===== + "venice-sd35": { + id: "venice-sd35", + name: "Venice SD35", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "hidream": { + id: "hidream", + name: "HiDream", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "flux-2-pro": { + id: "flux-2-pro", + name: "Flux 2 Pro", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "flux-2-max": { + id: "flux-2-max", + name: "Flux 2 Max", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "gpt-image-1-5": { + id: "gpt-image-1-5", + name: "GPT Image 1.5", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "grok-imagine": { + id: "grok-imagine", + name: "Grok Imagine", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "hunyuan-image-v3": { + id: "hunyuan-image-v3", + name: "Hunyuan Image 3.0", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "imagineart-1.5-pro": { + id: "imagineart-1.5-pro", + name: "ImagineArt 1.5 Pro", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "nano-banana-2": { + id: "nano-banana-2", + name: "Nano Banana 2", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "nano-banana-pro": { + id: "nano-banana-pro", + name: "Nano Banana Pro", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "recraft-v4": { + id: "recraft-v4", + name: "Recraft V4", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "recraft-v4-pro": { + id: "recraft-v4-pro", + name: "Recraft V4 Pro", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "seedream-v4": { + id: "seedream-v4", + name: "SeedreamV4.5", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "seedream-v5-lite": { + id: "seedream-v5-lite", + name: "SeedreamV5 Lite", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "qwen-image-2": { + id: "qwen-image-2", + name: "Qwen Image 2", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "qwen-image-2-pro": { + id: "qwen-image-2-pro", + name: "Qwen Image 2 Pro", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "lustify-sdxl": { + id: "lustify-sdxl", + name: "Lustify SDXL", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "lustify-v7": { + id: "lustify-v7", + name: "Lustify v7", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "qwen-image": { + id: "qwen-image", + name: "Qwen Image", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "wai-Illustrious": { + id: "wai-Illustrious", + name: "Anime (WAI)", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "z-image-turbo": { + id: "z-image-turbo", + name: "Z-Image Turbo", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "chroma": { + id: "chroma", + name: "Chroma", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "bria-bg-remover": { + id: "bria-bg-remover", + name: "Background Remover", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["image-generation", "text-to-image"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + // ===== IMAGE EDITING / INPAINTING MODELS (10) ===== + "qwen-edit": { + id: "qwen-edit", + name: "Qwen Edit 2511", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-editing", "inpainting"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "qwen-image-2-edit": { + id: "qwen-image-2-edit", + name: "Qwen Image 2", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-editing", "inpainting"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "qwen-image-2-pro-edit": { + id: "qwen-image-2-pro-edit", + name: "Qwen Image 2 Pro", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-editing", "inpainting"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "flux-2-max-edit": { + id: "flux-2-max-edit", + name: "Flux 2 Max", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-editing", "inpainting"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "gpt-image-1-5-edit": { + id: "gpt-image-1-5-edit", + name: "GPT Image 1.5", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-editing", "inpainting"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "grok-imagine-edit": { + id: "grok-imagine-edit", + name: "Grok Imagine", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-editing", "inpainting"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "nano-banana-2-edit": { + id: "nano-banana-2-edit", + name: "Nano Banana 2", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-editing", "inpainting"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "nano-banana-pro-edit": { + id: "nano-banana-pro-edit", + name: "Nano Banana Pro", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-editing", "inpainting"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "seedream-v4-edit": { + id: "seedream-v4-edit", + name: "SeedreamV4.5", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-editing", "inpainting"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + "seedream-v5-lite-edit": { + id: "seedream-v5-lite-edit", + name: "SeedreamV5 Lite", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-editing", "inpainting"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, + // ===== VIDEO GENERATION MODELS (59) ===== + "seedance-1-5-pro-text-to-video": { + id: "seedance-1-5-pro-text-to-video", + name: "Seedance 1.5 Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "seedance-1-5-pro-image-to-video": { + id: "seedance-1-5-pro-image-to-video", + name: "Seedance 1.5 Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "wan-2.6-image-to-video": { + id: "wan-2.6-image-to-video", + name: "Wan 2.6", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "wan-2.6-flash-image-to-video": { + id: "wan-2.6-flash-image-to-video", + name: "Wan 2.6 Flash", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "wan-2.6-text-to-video": { + id: "wan-2.6-text-to-video", + name: "Wan 2.6", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "wan-2.5-preview-image-to-video": { + id: "wan-2.5-preview-image-to-video", + name: "Wan 2.5 Preview", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "wan-2.5-preview-text-to-video": { + id: "wan-2.5-preview-text-to-video", + name: "Wan 2.5 Preview", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "grok-imagine-text-to-video": { + id: "grok-imagine-text-to-video", + name: "Grok Imagine", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "grok-imagine-image-to-video": { + id: "grok-imagine-image-to-video", + name: "Grok Imagine", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "wan-2.2-a14b-text-to-video": { + id: "wan-2.2-a14b-text-to-video", + name: "Wan 2.2 A14B", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "wan-2.1-pro-image-to-video": { + id: "wan-2.1-pro-image-to-video", + name: "Wan 2.1 Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-fast-image-to-video": { + id: "ltx-2-fast-image-to-video", + name: "LTX Video 2.0 Fast", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-fast-text-to-video": { + id: "ltx-2-fast-text-to-video", + name: "LTX Video 2.0 Fast", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-full-image-to-video": { + id: "ltx-2-full-image-to-video", + name: "LTX Video 2.0 Full Quality", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-full-text-to-video": { + id: "ltx-2-full-text-to-video", + name: "LTX Video 2.0 Full Quality", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-v2-3-fast-image-to-video": { + id: "ltx-2-v2-3-fast-image-to-video", + name: "LTX Video 2.3 Fast", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-v2-3-fast-text-to-video": { + id: "ltx-2-v2-3-fast-text-to-video", + name: "LTX Video 2.3 Fast", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-v2-3-full-image-to-video": { + id: "ltx-2-v2-3-full-image-to-video", + name: "LTX Video 2.3 Full Quality", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-v2-3-full-text-to-video": { + id: "ltx-2-v2-3-full-text-to-video", + name: "LTX Video 2.3 Full Quality", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-19b-full-text-to-video": { + id: "ltx-2-19b-full-text-to-video", + name: "LTX Video 2.0 19B", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-19b-full-image-to-video": { + id: "ltx-2-19b-full-image-to-video", + name: "LTX Video 2.0 19B", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-19b-distilled-text-to-video": { + id: "ltx-2-19b-distilled-text-to-video", + name: "LTX Video 2.0 19B Distilled", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ltx-2-19b-distilled-image-to-video": { + id: "ltx-2-19b-distilled-image-to-video", + name: "LTX Video 2.0 19B Distilled", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "ovi-image-to-video": { + id: "ovi-image-to-video", + name: "Ovi", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-2.6-pro-text-to-video": { + id: "kling-2.6-pro-text-to-video", + name: "Kling 2.6 Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-2.6-pro-image-to-video": { + id: "kling-2.6-pro-image-to-video", + name: "Kling 2.6 Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-2.5-turbo-pro-text-to-video": { + id: "kling-2.5-turbo-pro-text-to-video", + name: "Kling 2.5 Turbo Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-2.5-turbo-pro-image-to-video": { + id: "kling-2.5-turbo-pro-image-to-video", + name: "Kling 2.5 Turbo Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-o3-pro-text-to-video": { + id: "kling-o3-pro-text-to-video", + name: "Kling O3 Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-o3-pro-image-to-video": { + id: "kling-o3-pro-image-to-video", + name: "Kling O3 Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-o3-pro-reference-to-video": { + id: "kling-o3-pro-reference-to-video", + name: "Kling O3 Pro R2V", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["reference-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-o3-standard-text-to-video": { + id: "kling-o3-standard-text-to-video", + name: "Kling O3 Standard", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-o3-standard-image-to-video": { + id: "kling-o3-standard-image-to-video", + name: "Kling O3 Standard", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-o3-standard-reference-to-video": { + id: "kling-o3-standard-reference-to-video", + name: "Kling O3 Standard R2V", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["reference-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-v3-pro-text-to-video": { + id: "kling-v3-pro-text-to-video", + name: "Kling V3 Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-v3-pro-image-to-video": { + id: "kling-v3-pro-image-to-video", + name: "Kling V3 Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-v3-standard-text-to-video": { + id: "kling-v3-standard-text-to-video", + name: "Kling V3 Standard", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "kling-v3-standard-image-to-video": { + id: "kling-v3-standard-image-to-video", + name: "Kling V3 Standard", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "longcat-distilled-image-to-video": { + id: "longcat-distilled-image-to-video", + name: "Longcat Distilled", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "longcat-distilled-text-to-video": { + id: "longcat-distilled-text-to-video", + name: "Longcat Distilled", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "longcat-image-to-video": { + id: "longcat-image-to-video", + name: "Longcat Full Quality", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "longcat-text-to-video": { + id: "longcat-text-to-video", + name: "Longcat Full Quality", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "veo3-fast-text-to-video": { + id: "veo3-fast-text-to-video", + name: "Veo 3 Fast", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "veo3-fast-image-to-video": { + id: "veo3-fast-image-to-video", + name: "Veo 3 Fast", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "veo3-full-text-to-video": { + id: "veo3-full-text-to-video", + name: "Veo 3 Full Quality", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "veo3-full-image-to-video": { + id: "veo3-full-image-to-video", + name: "Veo 3 Full Quality", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "veo3.1-fast-text-to-video": { + id: "veo3.1-fast-text-to-video", + name: "Veo 3.1 Fast", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "veo3.1-fast-image-to-video": { + id: "veo3.1-fast-image-to-video", + name: "Veo 3.1 Fast", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "veo3.1-full-text-to-video": { + id: "veo3.1-full-text-to-video", + name: "Veo 3.1 Full Quality", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "veo3.1-full-image-to-video": { + id: "veo3.1-full-image-to-video", + name: "Veo 3.1 Full Quality", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "sora-2-image-to-video": { + id: "sora-2-image-to-video", + name: "Sora 2", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "sora-2-pro-image-to-video": { + id: "sora-2-pro-image-to-video", + name: "Sora 2 Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "sora-2-text-to-video": { + id: "sora-2-text-to-video", + name: "Sora 2", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "sora-2-pro-text-to-video": { + id: "sora-2-pro-text-to-video", + name: "Sora 2 Pro", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "pixverse-v5.6-text-to-video": { + id: "pixverse-v5.6-text-to-video", + name: "PixVerse v5.6", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "pixverse-v5.6-image-to-video": { + id: "pixverse-v5.6-image-to-video", + name: "PixVerse v5.6", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "pixverse-v5.6-transition": { + id: "pixverse-v5.6-transition", + name: "PixVerse v5.6 Transition", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "vidu-q3-text-to-video": { + id: "vidu-q3-text-to-video", + name: "Vidu Q3", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + "vidu-q3-image-to-video": { + id: "vidu-q3-image-to-video", + name: "Vidu Q3", + api: "venice-video", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text", "image"], + tags: ["image-to-video", "video-generation"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-video">, + // ===== TEXT-TO-SPEECH MODELS (3) ===== + "tts-kokoro": { + id: "tts-kokoro", + name: "Kokoro Text to Speech", + api: "venice-tts", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-speech", "voice"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-tts">, + "tts-qwen3-0-6b": { + id: "tts-qwen3-0-6b", + name: "Qwen 3 TTS 0.6B", + api: "venice-tts", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-speech", "voice"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-tts">, + "tts-qwen3-1-7b": { + id: "tts-qwen3-1-7b", + name: "Qwen 3 TTS 1.7B", + api: "venice-tts", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["text-to-speech", "voice"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-tts">, + // ===== SPEECH-TO-TEXT / ASR MODELS (2) ===== + "nvidia/parakeet-tdt-0.6b-v3": { + id: "nvidia/parakeet-tdt-0.6b-v3", + name: "Parakeet ASR", + api: "venice-asr", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["audio-input", "speech-to-text", "transcription"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-asr">, + "openai/whisper-large-v3": { + id: "openai/whisper-large-v3", + name: "Whisper Large V3", + api: "venice-asr", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["audio-input", "speech-to-text", "transcription"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-asr">, + // ===== EMBEDDING MODELS (1) ===== + "text-embedding-bge-m3": { + id: "text-embedding-bge-m3", + name: "BGE-M3", + api: "venice-embedding", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["text"], + tags: ["embeddings", "vector"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-embedding">, + // ===== IMAGE UPSCALING MODELS (1) ===== + "upscaler": { + id: "upscaler", + name: "Upscaler", + api: "venice-image", + provider: "venice", + baseUrl: "https://api.venice.ai/api/v1", + reasoning: false, + input: ["image"], + tags: ["image-upscaling"], + cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, + contextWindow: 0, + maxTokens: 0, + } satisfies Model<"venice-image">, +} +} as const; \ No newline at end of file diff --git a/packages/ai/src/types.ts b/packages/ai/src/types.ts index f87f462..522d691 100644 --- a/packages/ai/src/types.ts +++ b/packages/ai/src/types.ts @@ -39,7 +39,8 @@ export type KnownProvider = | "huggingface" | "opencode" | "opencode-go" - | "kimi-coding"; + | "kimi-coding" +| "venice"; export type Provider = KnownProvider | string; export type ThinkingLevel = "minimal" | "low" | "medium" | "high" | "xhigh"; @@ -89,6 +90,8 @@ export interface StreamOptions { * Not supported by all providers (e.g., AWS Bedrock uses SDK auth). */ headers?: Record; + /** Capability tags (e.g. 'tools', 'vision', 'reasoning', 'code', 'image-generation', etc.) */ + tags?: string[]; /** * Maximum delay in milliseconds to wait for a retry when the server requests a long wait. * If the server's requested delay exceeds this value, the request fails immediately @@ -328,6 +331,8 @@ export interface Model { contextWindow: number; maxTokens: number; headers?: Record; + /** Capability tags (e.g. 'tools', 'vision', 'reasoning', 'code', 'image-generation', etc.) */ + tags?: string[]; /** Compatibility overrides for OpenAI-compatible APIs. If not set, auto-detected from baseUrl. */ compat?: TApi extends "openai-completions" ? OpenAICompletionsCompat diff --git a/packages/ai/src/utils/oauth/index.ts b/packages/ai/src/utils/oauth/index.ts index 256562a..503786f 100644 --- a/packages/ai/src/utils/oauth/index.ts +++ b/packages/ai/src/utils/oauth/index.ts @@ -25,6 +25,8 @@ export { antigravityOAuthProvider, loginAntigravity, refreshAntigravityToken } f export { geminiCliOAuthProvider, loginGeminiCli, refreshGoogleCloudToken } from "./google-gemini-cli.js"; // OpenAI Codex (ChatGPT OAuth) export { loginOpenAICodex, openaiCodexOAuthProvider, refreshOpenAICodexToken } from "./openai-codex.js"; +// Venice AI (API Key) +export { loginVenice, veniceOAuthProvider, refreshVeniceToken } from "./venice.js"; export * from "./types.js"; @@ -37,6 +39,7 @@ import { githubCopilotOAuthProvider } from "./github-copilot.js"; import { antigravityOAuthProvider } from "./google-antigravity.js"; import { geminiCliOAuthProvider } from "./google-gemini-cli.js"; import { openaiCodexOAuthProvider } from "./openai-codex.js"; +import { veniceOAuthProvider } from "./venice.js"; import type { OAuthCredentials, OAuthProviderId, OAuthProviderInfo, OAuthProviderInterface } from "./types.js"; const BUILT_IN_OAUTH_PROVIDERS: OAuthProviderInterface[] = [ @@ -45,6 +48,7 @@ const BUILT_IN_OAUTH_PROVIDERS: OAuthProviderInterface[] = [ geminiCliOAuthProvider, antigravityOAuthProvider, openaiCodexOAuthProvider, + veniceOAuthProvider, ]; const oauthProviderRegistry = new Map( diff --git a/packages/ai/src/utils/oauth/venice.ts b/packages/ai/src/utils/oauth/venice.ts new file mode 100644 index 0000000..b4c152c --- /dev/null +++ b/packages/ai/src/utils/oauth/venice.ts @@ -0,0 +1,54 @@ +import type { OAuthCredentials, OAuthLoginCallbacks, OAuthProviderInterface } from "./types.js"; + +/** + * Venice AI API key provider. + * + * Venice uses API key authentication rather than OAuth, but implements + * OAuthProviderInterface so it integrates cleanly with JAE's /login flow. + * + * Get your API key at: https://venice.ai/settings/api + */ +export async function loginVenice(callbacks: OAuthLoginCallbacks): Promise { + callbacks.onProgress?.("To get an API key, visit https://venice.ai/settings/api"); + + const apiKey = await callbacks.onPrompt({ + message: "Enter your Venice AI API key:", + placeholder: "e.g. your_venice_api_key", + }); + + if (!apiKey || !apiKey.trim()) { + throw new Error("No API key provided"); + } + + return { + access: apiKey.trim(), + refresh: "", + // API keys don't expire — set a 10-year window so the refresh path is never hit + expires: Date.now() + 1000 * 60 * 60 * 24 * 365 * 10, + }; +} + +export async function refreshVeniceToken(credentials: OAuthCredentials): Promise { + // API keys don't expire, just bump the expiry forward + return { + ...credentials, + expires: Date.now() + 1000 * 60 * 60 * 24 * 365 * 10, + }; +} + +export const veniceOAuthProvider: OAuthProviderInterface = { + id: "venice", + name: "Venice AI (API Key)", + + async login(callbacks: OAuthLoginCallbacks): Promise { + return loginVenice(callbacks); + }, + + async refreshToken(credentials: OAuthCredentials): Promise { + return refreshVeniceToken(credentials); + }, + + getApiKey(credentials: OAuthCredentials): string { + return credentials.access; + }, +}; diff --git a/packages/coding-agent/src/core/model-resolver.ts b/packages/coding-agent/src/core/model-resolver.ts index 41f6354..a94ee52 100644 --- a/packages/coding-agent/src/core/model-resolver.ts +++ b/packages/coding-agent/src/core/model-resolver.ts @@ -35,6 +35,7 @@ export const defaultModelPerProvider: Record = { opencode: "claude-opus-4-6", "opencode-go": "kimi-k2.5", "kimi-coding": "kimi-k2-thinking", + venice: "llama-3.3-70b", }; export interface ScopedModel { diff --git a/packages/tui/package.json b/packages/tui/package.json index 5bc2697..194e1ce 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,6 +1,6 @@ { "name": "@jaeswift/jae-tui", - "version": "0.62.0", + "version": "0.62.1", "description": "Terminal User Interface library with differential rendering for efficient text-based applications", "type": "module", "main": "dist/index.js",