Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
1 line
23 KiB
JSON
1 line
23 KiB
JSON
{"repo": "amey-thakur/notebooklab", "files": {"src/features/model-manager/data/cloud-providers.ts": {"d12763c8b80379c2a13b664500f9af0ca655bece": {"t": 1785746043.909544, "n": 4466, "h": "471c4a0b3703c187", "c": "/*\n * Name: cloud-providers.ts\n * Purpose: Registry of first-class cloud AI providers and their guided setup.\n * Description: Everything the connect wizard needs to walk a user through each\n * provider: where to create an API key, what the key looks like, which\n * models to suggest, and an honest note about cost and free tiers. Model\n * suggestions are editable in the wizard, so a newer model id can always be\n * typed in. Base URLs are the official endpoints; the backend enforces\n * https and re-validates everything. Adding a provider the backend already\n * speaks (openai-compatible, anthropic, gemini) is one more entry here.\n * Model ids expire: providers retire them on a schedule and a retired id\n * fails every request with a 404, so these lists need a look whenever a\n * provider announces a shutdown. The custom field is the escape hatch until\n * then.\n * Tech Stack: TypeScript\n * License: MIT\n * Authors: Amey Thakur (https://github.com/Amey-Thakur)\n * Archit Konde (https://github.com/Archit-Konde)\n * Date: 2026-07-27\n */\n\nexport interface CloudModelSuggestion {\n id: string;\n label: string;\n note: string;\n}\n\nexport interface CloudProviderDef {\n kind: \"openai\" | \"anthropic\" | \"gemini\" | \"deepseek\";\n name: string;\n baseUrl: string;\n /** Where to create an API key. */\n keyUrl: string;\n /** Prefixes a key from this provider may start with, shown as a soft hint.\n A list because providers add new key formats without retiring the old\n ones: Google issues both \"AIza...\" and the newer \"AQ...\" keys, and\n warning on a valid key is worse than not warning at all. */\n keyPrefixes: string[];\n keyPlaceholder: string;\n blurb: string;\n costNote: string;\n models: CloudModelSuggestion[];\n}\n\nexport const CLOUD_PROVIDERS: CloudProviderDef[] = [\n {\n kind: \"anthropic\",\n name: \"Anthropic\",\n baseUrl: \"https://api.anthropic.com\",\n keyUrl: \"https://console.anthropic.com/settings/keys\",\n keyPrefixes: [\"sk-ant-\"],\n keyPlaceholder: \"sk-ant-...\",\n blurb: \"Claude models: strong reasoning, careful writing, and long documents.\",\n costNote: \"Paid API. New consoles usually include trial credit.\",\n models: [\n { id: \"claude-sonnet-5\", label: \"Claude Sonnet 5\", note: \"Best balance of quality and cost\" },\n { id: \"claude-opus-5\", label: \"Claude Opus 5\", note: \"Deepest reasoning\" },\n { id: \"claude-haiku-4-5-20251001\", label: \"Claude Haiku 4.5\", note: \"Fast and inexpensive\" },\n ],\n },\n {\n kind: \"openai\",\n name: \"OpenAI\",\n baseUrl: \"https://api.openai.com\",\n keyUrl: \"https://platform.openai.com/api-keys\",\n keyPrefixes: [\"sk-\"],\n keyPlaceholder: \"sk-...\",\n blurb: \"GPT models: broad knowledge and strong all-round capability.\",\n costNote: \"Paid API, billed per token.\",\n models: [\n { id: \"gpt-5.1\", label: \"GPT-5.1\", note: \"Flagship quality\" },\n { id: \"gpt-5-mini\", label: \"GPT-5 mini\", note: \"Fast and inexpensive\" },\n { id: \"gpt-4o\", label: \"GPT-4o\", note: \"Proven previous generation\" },\n ],\n },\n {\n kind: \"gemini\",\n name: \"Google Gemini\",\n baseUrl: \"https://generativelanguage.googleapis.com\",\n keyUrl: \"https://aistudio.google.com/apikey\",\n keyPrefixes: [\"AIza\", \"AQ.\"],\n keyPlaceholder: \"AIza...\",\n blurb: \"Gemini models: fast, capable, and generous with long context.\",\n costNote: \"Has a real free tier; a Google account is enough to start.\",\n models: [\n { id: \"gemini-3.6-flash\", label: \"Gemini 3.6 Flash\", note: \"Latest; fast and capable\" },\n { id: \"gemini-3.5-flash\", label: \"Gemini 3.5 Flash\", note: \"Strongest for hard questions\" },\n { id: \"gemini-3.5-flash-lite\", label: \"Gemini 3.5 Flash-Lite\", note: \"Cheapest and fastest\" },\n ],\n },\n {\n kind: \"deepseek\",\n name: \"DeepSeek\",\n baseUrl: \"https://api.deepseek.com\",\n keyUrl: \"https://platform.deepseek.com/api_keys\",\n keyPrefixes: [\"sk-\"],\n keyPlaceholder: \"sk-...\",\n blurb: \"Very capable models at some of the lowest API prices anywhere.\",\n costNote: \"Paid API, but markedly cheaper than the big labs.\",\n models: [\n { id: \"deepseek-chat\", label: \"DeepSeek Chat\", note: \"General purpose\" },\n { id: \"deepseek-reasoner\", label: \"DeepSeek Reasoner\", note: \"Step-by-step reasoning\" },\n ],\n },\n];\n\n/** The display name a connected provider of this kind gets in the router. */\nexport function providerDisplayName(def: CloudProviderDef): string {\n return def.name;\n}\n"}, "0e547247154f9d557eeedbac8e42c29892f2f038": {"t": 1785759153.6423945, "n": 4466, "h": "471c4a0b3703c187", "c": "/*\n * Name: cloud-providers.ts\n * Purpose: Registry of first-class cloud AI providers and their guided setup.\n * Description: Everything the connect wizard needs to walk a user through each\n * provider: where to create an API key, what the key looks like, which\n * models to suggest, and an honest note about cost and free tiers. Model\n * suggestions are editable in the wizard, so a newer model id can always be\n * typed in. Base URLs are the official endpoints; the backend enforces\n * https and re-validates everything. Adding a provider the backend already\n * speaks (openai-compatible, anthropic, gemini) is one more entry here.\n * Model ids expire: providers retire them on a schedule and a retired id\n * fails every request with a 404, so these lists need a look whenever a\n * provider announces a shutdown. The custom field is the escape hatch until\n * then.\n * Tech Stack: TypeScript\n * License: MIT\n * Authors: Amey Thakur (https://github.com/Amey-Thakur)\n * Archit Konde (https://github.com/Archit-Konde)\n * Date: 2026-07-27\n */\n\nexport interface CloudModelSuggestion {\n id: string;\n label: string;\n note: string;\n}\n\nexport interface CloudProviderDef {\n kind: \"openai\" | \"anthropic\" | \"gemini\" | \"deepseek\";\n name: string;\n baseUrl: string;\n /** Where to create an API key. */\n keyUrl: string;\n /** Prefixes a key from this provider may start with, shown as a soft hint.\n A list because providers add new key formats without retiring the old\n ones: Google issues both \"AIza...\" and the newer \"AQ...\" keys, and\n warning on a valid key is worse than not warning at all. */\n keyPrefixes: string[];\n keyPlaceholder: string;\n blurb: string;\n costNote: string;\n models: CloudModelSuggestion[];\n}\n\nexport const CLOUD_PROVIDERS: CloudProviderDef[] = [\n {\n kind: \"anthropic\",\n name: \"Anthropic\",\n baseUrl: \"https://api.anthropic.com\",\n keyUrl: \"https://console.anthropic.com/settings/keys\",\n keyPrefixes: [\"sk-ant-\"],\n keyPlaceholder: \"sk-ant-...\",\n blurb: \"Claude models: strong reasoning, careful writing, and long documents.\",\n costNote: \"Paid API. New consoles usually include trial credit.\",\n models: [\n { id: \"claude-sonnet-5\", label: \"Claude Sonnet 5\", note: \"Best balance of quality and cost\" },\n { id: \"claude-opus-5\", label: \"Claude Opus 5\", note: \"Deepest reasoning\" },\n { id: \"claude-haiku-4-5-20251001\", label: \"Claude Haiku 4.5\", note: \"Fast and inexpensive\" },\n ],\n },\n {\n kind: \"openai\",\n name: \"OpenAI\",\n baseUrl: \"https://api.openai.com\",\n keyUrl: \"https://platform.openai.com/api-keys\",\n keyPrefixes: [\"sk-\"],\n keyPlaceholder: \"sk-...\",\n blurb: \"GPT models: broad knowledge and strong all-round capability.\",\n costNote: \"Paid API, billed per token.\",\n models: [\n { id: \"gpt-5.1\", label: \"GPT-5.1\", note: \"Flagship quality\" },\n { id: \"gpt-5-mini\", label: \"GPT-5 mini\", note: \"Fast and inexpensive\" },\n { id: \"gpt-4o\", label: \"GPT-4o\", note: \"Proven previous generation\" },\n ],\n },\n {\n kind: \"gemini\",\n name: \"Google Gemini\",\n baseUrl: \"https://generativelanguage.googleapis.com\",\n keyUrl: \"https://aistudio.google.com/apikey\",\n keyPrefixes: [\"AIza\", \"AQ.\"],\n keyPlaceholder: \"AIza...\",\n blurb: \"Gemini models: fast, capable, and generous with long context.\",\n costNote: \"Has a real free tier; a Google account is enough to start.\",\n models: [\n { id: \"gemini-3.6-flash\", label: \"Gemini 3.6 Flash\", note: \"Latest; fast and capable\" },\n { id: \"gemini-3.5-flash\", label: \"Gemini 3.5 Flash\", note: \"Strongest for hard questions\" },\n { id: \"gemini-3.5-flash-lite\", label: \"Gemini 3.5 Flash-Lite\", note: \"Cheapest and fastest\" },\n ],\n },\n {\n kind: \"deepseek\",\n name: \"DeepSeek\",\n baseUrl: \"https://api.deepseek.com\",\n keyUrl: \"https://platform.deepseek.com/api_keys\",\n keyPrefixes: [\"sk-\"],\n keyPlaceholder: \"sk-...\",\n blurb: \"Very capable models at some of the lowest API prices anywhere.\",\n costNote: \"Paid API, but markedly cheaper than the big labs.\",\n models: [\n { id: \"deepseek-chat\", label: \"DeepSeek Chat\", note: \"General purpose\" },\n { id: \"deepseek-reasoner\", label: \"DeepSeek Reasoner\", note: \"Step-by-step reasoning\" },\n ],\n },\n];\n\n/** The display name a connected provider of this kind gets in the router. */\nexport function providerDisplayName(def: CloudProviderDef): string {\n return def.name;\n}\n"}, "692abb4274163f72d7a1032bd4e4780a7e8487dc": {"t": 1785759155.081083, "n": 4219, "h": "a5e8964c43484451", "c": "/*\n * Name: cloud-providers.ts\n * Purpose: Registry of first-class cloud AI providers and their guided setup.\n * Description: Everything the connect wizard needs to walk a user through each\n * provider: where to create an API key, what the key looks like, which\n * models to suggest, and an honest note about cost and free tiers. Model\n * suggestions are editable in the wizard, so a newer model id can always be\n * typed in. Base URLs are the official endpoints; the backend enforces\n * https and re-validates everything. Adding a provider the backend already\n * speaks (openai-compatible, anthropic, gemini) is one more entry here.\n * Model ids expire: providers retire them on a schedule and a retired id\n * fails every request with a 404, so these lists need a look whenever a\n * provider announces a shutdown. The custom field is the escape hatch until\n * then.\n * Tech Stack: TypeScript\n * License: MIT\n * Authors: Amey Thakur (https://github.com/Amey-Thakur)\n * Archit Konde (https://github.com/Archit-Konde)\n * Date: 2026-07-27\n */\n\nexport interface CloudModelSuggestion {\n id: string;\n label: string;\n note: string;\n}\n\nexport interface CloudProviderDef {\n kind: \"openai\" | \"anthropic\" | \"gemini\" | \"deepseek\";\n name: string;\n baseUrl: string;\n /** Where to create an API key. */\n keyUrl: string;\n /** What a key from this provider looks like, shown as a soft hint. */\n keyPrefix: string;\n keyPlaceholder: string;\n blurb: string;\n costNote: string;\n models: CloudModelSuggestion[];\n}\n\nexport const CLOUD_PROVIDERS: CloudProviderDef[] = [\n {\n kind: \"anthropic\",\n name: \"Anthropic\",\n baseUrl: \"https://api.anthropic.com\",\n keyUrl: \"https://console.anthropic.com/settings/keys\",\n keyPrefix: \"sk-ant-\",\n keyPlaceholder: \"sk-ant-...\",\n blurb: \"Claude models: strong reasoning, careful writing, and long documents.\",\n costNote: \"Paid API. New consoles usually include trial credit.\",\n models: [\n { id: \"claude-sonnet-5\", label: \"Claude Sonnet 5\", note: \"Best balance of quality and cost\" },\n { id: \"claude-opus-5\", label: \"Claude Opus 5\", note: \"Deepest reasoning\" },\n { id: \"claude-haiku-4-5-20251001\", label: \"Claude Haiku 4.5\", note: \"Fast and inexpensive\" },\n ],\n },\n {\n kind: \"openai\",\n name: \"OpenAI\",\n baseUrl: \"https://api.openai.com\",\n keyUrl: \"https://platform.openai.com/api-keys\",\n keyPrefix: \"sk-\",\n keyPlaceholder: \"sk-...\",\n blurb: \"GPT models: broad knowledge and strong all-round capability.\",\n costNote: \"Paid API, billed per token.\",\n models: [\n { id: \"gpt-5.1\", label: \"GPT-5.1\", note: \"Flagship quality\" },\n { id: \"gpt-5-mini\", label: \"GPT-5 mini\", note: \"Fast and inexpensive\" },\n { id: \"gpt-4o\", label: \"GPT-4o\", note: \"Proven previous generation\" },\n ],\n },\n {\n kind: \"gemini\",\n name: \"Google Gemini\",\n baseUrl: \"https://generativelanguage.googleapis.com\",\n keyUrl: \"https://aistudio.google.com/apikey\",\n keyPrefix: \"AIza\",\n keyPlaceholder: \"AIza...\",\n blurb: \"Gemini models: fast, capable, and generous with long context.\",\n costNote: \"Has a real free tier; a Google account is enough to start.\",\n models: [\n { id: \"gemini-3.6-flash\", label: \"Gemini 3.6 Flash\", note: \"Latest; fast and capable\" },\n { id: \"gemini-3.5-flash\", label: \"Gemini 3.5 Flash\", note: \"Strongest for hard questions\" },\n { id: \"gemini-3.5-flash-lite\", label: \"Gemini 3.5 Flash-Lite\", note: \"Cheapest and fastest\" },\n ],\n },\n {\n kind: \"deepseek\",\n name: \"DeepSeek\",\n baseUrl: \"https://api.deepseek.com\",\n keyUrl: \"https://platform.deepseek.com/api_keys\",\n keyPrefix: \"sk-\",\n keyPlaceholder: \"sk-...\",\n blurb: \"Very capable models at some of the lowest API prices anywhere.\",\n costNote: \"Paid API, but markedly cheaper than the big labs.\",\n models: [\n { id: \"deepseek-chat\", label: \"DeepSeek Chat\", note: \"General purpose\" },\n { id: \"deepseek-reasoner\", label: \"DeepSeek Reasoner\", note: \"Step-by-step reasoning\" },\n ],\n },\n];\n\n/** The display name a connected provider of this kind gets in the router. */\nexport function providerDisplayName(def: CloudProviderDef): string {\n return def.name;\n}\n"}, "4f9ee4b33cbe5013bf90033c8b9dd17ebb2da5bb": {"t": 1785759156.6914868, "n": 3966, "h": "eacfad197fa1e9a5", "c": "/*\n * Name: cloud-providers.ts\n * Purpose: Registry of first-class cloud AI providers and their guided setup.\n * Description: Everything the connect wizard needs to walk a user through each\n * provider: where to create an API key, what the key looks like, which\n * models to suggest, and an honest note about cost and free tiers. Model\n * suggestions are editable in the wizard, so a newer model id can always be\n * typed in. Base URLs are the official endpoints; the backend enforces\n * https and re-validates everything. Adding a provider the backend already\n * speaks (openai-compatible, anthropic, gemini) is one more entry here.\n * Tech Stack: TypeScript\n * License: MIT\n * Authors: Amey Thakur (https://github.com/Amey-Thakur)\n * Archit Konde (https://github.com/Archit-Konde)\n * Date: 2026-07-17\n */\n\nexport interface CloudModelSuggestion {\n id: string;\n label: string;\n note: string;\n}\n\nexport interface CloudProviderDef {\n kind: \"openai\" | \"anthropic\" | \"gemini\" | \"deepseek\";\n name: string;\n baseUrl: string;\n /** Where to create an API key. */\n keyUrl: string;\n /** What a key from this provider looks like, shown as a soft hint. */\n keyPrefix: string;\n keyPlaceholder: string;\n blurb: string;\n costNote: string;\n models: CloudModelSuggestion[];\n}\n\nexport const CLOUD_PROVIDERS: CloudProviderDef[] = [\n {\n kind: \"anthropic\",\n name: \"Anthropic\",\n baseUrl: \"https://api.anthropic.com\",\n keyUrl: \"https://console.anthropic.com/settings/keys\",\n keyPrefix: \"sk-ant-\",\n keyPlaceholder: \"sk-ant-...\",\n blurb: \"Claude models: strong reasoning, careful writing, and long documents.\",\n costNote: \"Paid API. New consoles usually include trial credit.\",\n models: [\n { id: \"claude-sonnet-5\", label: \"Claude Sonnet 5\", note: \"Best balance of quality and cost\" },\n { id: \"claude-opus-4-8\", label: \"Claude Opus 4.8\", note: \"Deepest reasoning\" },\n { id: \"claude-haiku-4-5-20251001\", label: \"Claude Haiku 4.5\", note: \"Fast and inexpensive\" },\n ],\n },\n {\n kind: \"openai\",\n name: \"OpenAI\",\n baseUrl: \"https://api.openai.com\",\n keyUrl: \"https://platform.openai.com/api-keys\",\n keyPrefix: \"sk-\",\n keyPlaceholder: \"sk-...\",\n blurb: \"GPT models: broad knowledge and strong all-round capability.\",\n costNote: \"Paid API, billed per token.\",\n models: [\n { id: \"gpt-5.1\", label: \"GPT-5.1\", note: \"Flagship quality\" },\n { id: \"gpt-5-mini\", label: \"GPT-5 mini\", note: \"Fast and inexpensive\" },\n { id: \"gpt-4o\", label: \"GPT-4o\", note: \"Proven previous generation\" },\n ],\n },\n {\n kind: \"gemini\",\n name: \"Google Gemini\",\n baseUrl: \"https://generativelanguage.googleapis.com\",\n keyUrl: \"https://aistudio.google.com/apikey\",\n keyPrefix: \"AIza\",\n keyPlaceholder: \"AIza...\",\n blurb: \"Gemini models: fast, capable, and generous with long context.\",\n costNote: \"Has a real free tier; a Google account is enough to start.\",\n models: [\n { id: \"gemini-2.5-flash\", label: \"Gemini 2.5 Flash\", note: \"Fast; free tier available\" },\n { id: \"gemini-2.5-pro\", label: \"Gemini 2.5 Pro\", note: \"Highest quality\" },\n { id: \"gemini-2.5-flash-lite\", label: \"Gemini 2.5 Flash-Lite\", note: \"Cheapest and fastest\" },\n ],\n },\n {\n kind: \"deepseek\",\n name: \"DeepSeek\",\n baseUrl: \"https://api.deepseek.com\",\n keyUrl: \"https://platform.deepseek.com/api_keys\",\n keyPrefix: \"sk-\",\n keyPlaceholder: \"sk-...\",\n blurb: \"Very capable models at some of the lowest API prices anywhere.\",\n costNote: \"Paid API, but markedly cheaper than the big labs.\",\n models: [\n { id: \"deepseek-chat\", label: \"DeepSeek Chat\", note: \"General purpose\" },\n { id: \"deepseek-reasoner\", label: \"DeepSeek Reasoner\", note: \"Step-by-step reasoning\" },\n ],\n },\n];\n\n/** The display name a connected provider of this kind gets in the router. */\nexport function providerDisplayName(def: CloudProviderDef): string {\n return def.name;\n}\n"}, "a8cf23f93a5751463d99e4045502a2a928af5fe4": {"t": 1786067562.3639588, "n": 4466, "h": "471c4a0b3703c187", "c": "/*\n * Name: cloud-providers.ts\n * Purpose: Registry of first-class cloud AI providers and their guided setup.\n * Description: Everything the connect wizard needs to walk a user through each\n * provider: where to create an API key, what the key looks like, which\n * models to suggest, and an honest note about cost and free tiers. Model\n * suggestions are editable in the wizard, so a newer model id can always be\n * typed in. Base URLs are the official endpoints; the backend enforces\n * https and re-validates everything. Adding a provider the backend already\n * speaks (openai-compatible, anthropic, gemini) is one more entry here.\n * Model ids expire: providers retire them on a schedule and a retired id\n * fails every request with a 404, so these lists need a look whenever a\n * provider announces a shutdown. The custom field is the escape hatch until\n * then.\n * Tech Stack: TypeScript\n * License: MIT\n * Authors: Amey Thakur (https://github.com/Amey-Thakur)\n * Archit Konde (https://github.com/Archit-Konde)\n * Date: 2026-07-27\n */\n\nexport interface CloudModelSuggestion {\n id: string;\n label: string;\n note: string;\n}\n\nexport interface CloudProviderDef {\n kind: \"openai\" | \"anthropic\" | \"gemini\" | \"deepseek\";\n name: string;\n baseUrl: string;\n /** Where to create an API key. */\n keyUrl: string;\n /** Prefixes a key from this provider may start with, shown as a soft hint.\n A list because providers add new key formats without retiring the old\n ones: Google issues both \"AIza...\" and the newer \"AQ...\" keys, and\n warning on a valid key is worse than not warning at all. */\n keyPrefixes: string[];\n keyPlaceholder: string;\n blurb: string;\n costNote: string;\n models: CloudModelSuggestion[];\n}\n\nexport const CLOUD_PROVIDERS: CloudProviderDef[] = [\n {\n kind: \"anthropic\",\n name: \"Anthropic\",\n baseUrl: \"https://api.anthropic.com\",\n keyUrl: \"https://console.anthropic.com/settings/keys\",\n keyPrefixes: [\"sk-ant-\"],\n keyPlaceholder: \"sk-ant-...\",\n blurb: \"Claude models: strong reasoning, careful writing, and long documents.\",\n costNote: \"Paid API. New consoles usually include trial credit.\",\n models: [\n { id: \"claude-sonnet-5\", label: \"Claude Sonnet 5\", note: \"Best balance of quality and cost\" },\n { id: \"claude-opus-5\", label: \"Claude Opus 5\", note: \"Deepest reasoning\" },\n { id: \"claude-haiku-4-5-20251001\", label: \"Claude Haiku 4.5\", note: \"Fast and inexpensive\" },\n ],\n },\n {\n kind: \"openai\",\n name: \"OpenAI\",\n baseUrl: \"https://api.openai.com\",\n keyUrl: \"https://platform.openai.com/api-keys\",\n keyPrefixes: [\"sk-\"],\n keyPlaceholder: \"sk-...\",\n blurb: \"GPT models: broad knowledge and strong all-round capability.\",\n costNote: \"Paid API, billed per token.\",\n models: [\n { id: \"gpt-5.1\", label: \"GPT-5.1\", note: \"Flagship quality\" },\n { id: \"gpt-5-mini\", label: \"GPT-5 mini\", note: \"Fast and inexpensive\" },\n { id: \"gpt-4o\", label: \"GPT-4o\", note: \"Proven previous generation\" },\n ],\n },\n {\n kind: \"gemini\",\n name: \"Google Gemini\",\n baseUrl: \"https://generativelanguage.googleapis.com\",\n keyUrl: \"https://aistudio.google.com/apikey\",\n keyPrefixes: [\"AIza\", \"AQ.\"],\n keyPlaceholder: \"AIza...\",\n blurb: \"Gemini models: fast, capable, and generous with long context.\",\n costNote: \"Has a real free tier; a Google account is enough to start.\",\n models: [\n { id: \"gemini-3.6-flash\", label: \"Gemini 3.6 Flash\", note: \"Latest; fast and capable\" },\n { id: \"gemini-3.5-flash\", label: \"Gemini 3.5 Flash\", note: \"Strongest for hard questions\" },\n { id: \"gemini-3.5-flash-lite\", label: \"Gemini 3.5 Flash-Lite\", note: \"Cheapest and fastest\" },\n ],\n },\n {\n kind: \"deepseek\",\n name: \"DeepSeek\",\n baseUrl: \"https://api.deepseek.com\",\n keyUrl: \"https://platform.deepseek.com/api_keys\",\n keyPrefixes: [\"sk-\"],\n keyPlaceholder: \"sk-...\",\n blurb: \"Very capable models at some of the lowest API prices anywhere.\",\n costNote: \"Paid API, but markedly cheaper than the big labs.\",\n models: [\n { id: \"deepseek-chat\", label: \"DeepSeek Chat\", note: \"General purpose\" },\n { id: \"deepseek-reasoner\", label: \"DeepSeek Reasoner\", note: \"Step-by-step reasoning\" },\n ],\n },\n];\n\n/** The display name a connected provider of this kind gets in the router. */\nexport function providerDisplayName(def: CloudProviderDef): string {\n return def.name;\n}\n"}}}} |