mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-04 22:32:12 +03:00
refactor: modularize providerRegistry.ts into 159 individual provider plugins (#3993)
Modularize provider registry (#3594). Integrated into release/v3.8.27 after rebase + behavior-preservation verification (provider-consistency gate 159/232/0, typecheck, registry tests, build 556/556). Co-authored-by: diegosouzapw <diegosouza.pw@gmail.com>
This commit is contained in:
File diff suppressed because it is too large
Load Diff
323
open-sse/config/providers/index.ts
Normal file
323
open-sse/config/providers/index.ts
Normal file
@@ -0,0 +1,323 @@
|
||||
import type { RegistryEntry } from "./shared.ts";
|
||||
|
||||
import { aimlapiProvider } from "./registry/aimlapi/index.ts";
|
||||
import { ollama_cloudProvider } from "./registry/ollama-cloud/index.ts";
|
||||
import { syntheticProvider } from "./registry/synthetic/index.ts";
|
||||
import { ideogramProvider } from "./registry/ideogram/index.ts";
|
||||
import { friendliaiProvider } from "./registry/friendliai/index.ts";
|
||||
import { sunoProvider } from "./registry/suno/index.ts";
|
||||
import { adapta_webProvider } from "./registry/adapta-web/index.ts";
|
||||
import { anthropicProvider } from "./registry/anthropic/index.ts";
|
||||
import { sambanovaProvider } from "./registry/sambanova/index.ts";
|
||||
import { puterProvider } from "./registry/puter/index.ts";
|
||||
import { upstageProvider } from "./registry/upstage/index.ts";
|
||||
import { nebiusProvider } from "./registry/nebius/index.ts";
|
||||
import { fireworksProvider } from "./registry/fireworks/index.ts";
|
||||
import { llamagateProvider } from "./registry/llamagate/index.ts";
|
||||
import { inclusionaiProvider } from "./registry/inclusionai/index.ts";
|
||||
import { glmProvider } from "./registry/glm/index.ts";
|
||||
import { glmtProvider } from "./registry/glm/t/index.ts";
|
||||
import { glm_cnProvider } from "./registry/glm/cn/index.ts";
|
||||
import { traeProvider } from "./registry/trae/index.ts";
|
||||
import { muse_spark_webProvider } from "./registry/muse-spark-web/index.ts";
|
||||
import { kilocodeProvider } from "./registry/kilocode/index.ts";
|
||||
import { github_modelsProvider } from "./registry/github/models/index.ts";
|
||||
import { githubProvider } from "./registry/github/index.ts";
|
||||
import { difyProvider } from "./registry/dify/index.ts";
|
||||
import { ovhcloudProvider } from "./registry/ovhcloud/index.ts";
|
||||
import { claudeProvider } from "./registry/claude/index.ts";
|
||||
import { claude_webProvider } from "./registry/claude/web/index.ts";
|
||||
import { bedrockProvider } from "./registry/bedrock/index.ts";
|
||||
import { inner_aiProvider } from "./registry/inner-ai/index.ts";
|
||||
import { qoderProvider } from "./registry/qoder/index.ts";
|
||||
import { xiaomi_mimoProvider } from "./registry/xiaomi-mimo/index.ts";
|
||||
import { codestralProvider } from "./registry/codestral/index.ts";
|
||||
import { wandbProvider } from "./registry/wandb/index.ts";
|
||||
import { predibaseProvider } from "./registry/predibase/index.ts";
|
||||
import { baichuanProvider } from "./registry/baichuan/index.ts";
|
||||
import { yiProvider } from "./registry/yi/index.ts";
|
||||
import { deepseekProvider } from "./registry/deepseek/index.ts";
|
||||
import { deepseek_webProvider } from "./registry/deepseek/web/index.ts";
|
||||
import { kimi_coding_apikeyProvider } from "./registry/kimi/coding-apikey/index.ts";
|
||||
import { kimi_codingProvider } from "./registry/kimi/coding/index.ts";
|
||||
import { kimiProvider } from "./registry/kimi/index.ts";
|
||||
import { kimi_webProvider } from "./registry/kimi/web/index.ts";
|
||||
import { groqProvider } from "./registry/groq/index.ts";
|
||||
import { inference_netProvider } from "./registry/inference-net/index.ts";
|
||||
import { llm7Provider } from "./registry/llm7/index.ts";
|
||||
import { cerebrasProvider } from "./registry/cerebras/index.ts";
|
||||
import { sparkdeskProvider } from "./registry/sparkdesk/index.ts";
|
||||
import { nlpcloudProvider } from "./registry/nlpcloud/index.ts";
|
||||
import { nvidiaProvider } from "./registry/nvidia/index.ts";
|
||||
import { api_airforceProvider } from "./registry/api-airforce/index.ts";
|
||||
import { mistralProvider } from "./registry/mistral/index.ts";
|
||||
import { togetherProvider } from "./registry/together/index.ts";
|
||||
import { cohereProvider } from "./registry/cohere/index.ts";
|
||||
import { cursorProvider } from "./registry/cursor/index.ts";
|
||||
import { volcengineProvider } from "./registry/volcengine/index.ts";
|
||||
import { hackclubProvider } from "./registry/hackclub/index.ts";
|
||||
import { tencentProvider } from "./registry/tencent/index.ts";
|
||||
import { cozeProvider } from "./registry/coze/index.ts";
|
||||
import { ai21Provider } from "./registry/ai21/index.ts";
|
||||
import { publicaiProvider } from "./registry/publicai/index.ts";
|
||||
import { featherless_aiProvider } from "./registry/featherless-ai/index.ts";
|
||||
import { antigravityProvider } from "./registry/antigravity/index.ts";
|
||||
import { openaiProvider } from "./registry/openai/index.ts";
|
||||
import { snowflakeProvider } from "./registry/snowflake/index.ts";
|
||||
import { huggingfaceProvider } from "./registry/huggingface/index.ts";
|
||||
import { chipotleProvider } from "./registry/chipotle/index.ts";
|
||||
import { freeaiapikeyProvider } from "./registry/freeaiapikey/index.ts";
|
||||
import { qwenProvider } from "./registry/qwen/index.ts";
|
||||
import { qwen_webProvider } from "./registry/qwen/web/index.ts";
|
||||
import { modalProvider } from "./registry/modal/index.ts";
|
||||
import { zenmuxProvider } from "./registry/zenmux/index.ts";
|
||||
import { leonardoProvider } from "./registry/leonardo/index.ts";
|
||||
import { grok_webProvider } from "./registry/grok-web/index.ts";
|
||||
import { kieProvider } from "./registry/kie/index.ts";
|
||||
import { monsterapiProvider } from "./registry/monsterapi/index.ts";
|
||||
import { sensenovaProvider } from "./registry/sensenova/index.ts";
|
||||
import { hyperbolicProvider } from "./registry/hyperbolic/index.ts";
|
||||
import { lambda_aiProvider } from "./registry/lambda-ai/index.ts";
|
||||
import { phindProvider } from "./registry/phind/index.ts";
|
||||
import { t3_webProvider } from "./registry/t3-web/index.ts";
|
||||
import { klusterProvider } from "./registry/kluster/index.ts";
|
||||
import { iflytekProvider } from "./registry/iflytek/index.ts";
|
||||
import { crofProvider } from "./registry/crof/index.ts";
|
||||
import { moonshotProvider } from "./registry/moonshot/index.ts";
|
||||
import { bazaarlinkProvider } from "./registry/bazaarlink/index.ts";
|
||||
import { perplexityProvider } from "./registry/perplexity/index.ts";
|
||||
import { perplexity_webProvider } from "./registry/perplexity/web/index.ts";
|
||||
import { minimaxProvider } from "./registry/minimax/index.ts";
|
||||
import { minimax_cnProvider } from "./registry/minimax/cn/index.ts";
|
||||
import { haiperProvider } from "./registry/haiper/index.ts";
|
||||
import { bytezProvider } from "./registry/bytez/index.ts";
|
||||
import { blackboxProvider } from "./registry/blackbox/index.ts";
|
||||
import { blackbox_webProvider } from "./registry/blackbox/web/index.ts";
|
||||
import { uncloseaiProvider } from "./registry/uncloseai/index.ts";
|
||||
import { nscaleProvider } from "./registry/nscale/index.ts";
|
||||
import { chatgpt_webProvider } from "./registry/chatgpt-web/index.ts";
|
||||
import { openrouterProvider } from "./registry/openrouter/index.ts";
|
||||
import { glhfProvider } from "./registry/glhf/index.ts";
|
||||
import { copilot_webProvider } from "./registry/copilot-web/index.ts";
|
||||
import { stepfunProvider } from "./registry/stepfun/index.ts";
|
||||
import { freemodel_devProvider } from "./registry/freemodel-dev/index.ts";
|
||||
import { gitlawb_gmiProvider } from "./registry/gitlawb/gmi/index.ts";
|
||||
import { gitlawbProvider } from "./registry/gitlawb/index.ts";
|
||||
import { liquidProvider } from "./registry/liquid/index.ts";
|
||||
import { deepinfraProvider } from "./registry/deepinfra/index.ts";
|
||||
import { agyProvider } from "./registry/agy/index.ts";
|
||||
import { udioProvider } from "./registry/udio/index.ts";
|
||||
import { longcatProvider } from "./registry/longcat/index.ts";
|
||||
import { vertex_partnerProvider } from "./registry/vertex/partner/index.ts";
|
||||
import { vertexProvider } from "./registry/vertex/index.ts";
|
||||
import { duckduckgo_webProvider } from "./registry/duckduckgo-web/index.ts";
|
||||
import { xaiProvider } from "./registry/xai/index.ts";
|
||||
import { morphProvider } from "./registry/morph/index.ts";
|
||||
import { siliconflowProvider } from "./registry/siliconflow/index.ts";
|
||||
import { gitlab_duoProvider } from "./registry/gitlab-duo/index.ts";
|
||||
import { command_codeProvider } from "./registry/command-code/index.ts";
|
||||
import { novitaProvider } from "./registry/novita/index.ts";
|
||||
import { windsurfProvider } from "./registry/windsurf/index.ts";
|
||||
import { nanogptProvider } from "./registry/nanogpt/index.ts";
|
||||
import { scalewayProvider } from "./registry/scaleway/index.ts";
|
||||
import { agentrouterProvider } from "./registry/agentrouter/index.ts";
|
||||
import { zaiProvider } from "./registry/zai/index.ts";
|
||||
import { huggingchatProvider } from "./registry/huggingchat/index.ts";
|
||||
import { galadrielProvider } from "./registry/galadriel/index.ts";
|
||||
import { qianfanProvider } from "./registry/qianfan/index.ts";
|
||||
import { meta_llamaProvider } from "./registry/meta-llama/index.ts";
|
||||
import { cloudflare_aiProvider } from "./registry/cloudflare-ai/index.ts";
|
||||
import { nous_researchProvider } from "./registry/nous-research/index.ts";
|
||||
import { alibabaProvider } from "./registry/alibaba/index.ts";
|
||||
import { alibaba_cnProvider } from "./registry/alibaba/cn/index.ts";
|
||||
import { doubaoProvider } from "./registry/doubao/index.ts";
|
||||
import { doubao_webProvider } from "./registry/doubao/web/index.ts";
|
||||
import { kilo_gatewayProvider } from "./registry/kilo-gateway/index.ts";
|
||||
import { bailian_coding_planProvider } from "./registry/bailian-coding-plan/index.ts";
|
||||
import { gigachatProvider } from "./registry/gigachat/index.ts";
|
||||
import { devin_cliProvider } from "./registry/devin-cli/index.ts";
|
||||
import { chutesProvider } from "./registry/chutes/index.ts";
|
||||
import { databricksProvider } from "./registry/databricks/index.ts";
|
||||
import { rekaProvider } from "./registry/reka/index.ts";
|
||||
import { vercel_ai_gatewayProvider } from "./registry/vercel-ai-gateway/index.ts";
|
||||
import { v0_vercelProvider } from "./registry/v0-vercel/index.ts";
|
||||
import { opencode_zenProvider } from "./registry/opencode/zen/index.ts";
|
||||
import { opencode_goProvider } from "./registry/opencode/go/index.ts";
|
||||
import { opencodeProvider } from "./registry/opencode/index.ts";
|
||||
import { maritalkProvider } from "./registry/maritalk/index.ts";
|
||||
import { basetenProvider } from "./registry/baseten/index.ts";
|
||||
import { gemini_cliProvider } from "./registry/gemini/cli/index.ts";
|
||||
import { geminiProvider } from "./registry/gemini/index.ts";
|
||||
import { gemini_webProvider } from "./registry/gemini/web/index.ts";
|
||||
import { clineProvider } from "./registry/cline/index.ts";
|
||||
import { herokuProvider } from "./registry/heroku/index.ts";
|
||||
import { bluesmindsProvider } from "./registry/bluesminds/index.ts";
|
||||
import { theoldllmProvider } from "./registry/theoldllm/index.ts";
|
||||
import { baiduProvider } from "./registry/baidu/index.ts";
|
||||
import { pollinationsProvider } from "./registry/pollinations/index.ts";
|
||||
import { veoaifree_webProvider } from "./registry/veoaifree-web/index.ts";
|
||||
import { codexProvider } from "./registry/codex/index.ts";
|
||||
import { veniceProvider } from "./registry/venice/index.ts";
|
||||
import { kiroProvider } from "./registry/kiro/index.ts";
|
||||
|
||||
export const REGISTRY: Record<string, RegistryEntry> = {
|
||||
aimlapi: aimlapiProvider,
|
||||
"ollama-cloud": ollama_cloudProvider,
|
||||
synthetic: syntheticProvider,
|
||||
ideogram: ideogramProvider,
|
||||
friendliai: friendliaiProvider,
|
||||
suno: sunoProvider,
|
||||
"adapta-web": adapta_webProvider,
|
||||
anthropic: anthropicProvider,
|
||||
sambanova: sambanovaProvider,
|
||||
puter: puterProvider,
|
||||
upstage: upstageProvider,
|
||||
nebius: nebiusProvider,
|
||||
fireworks: fireworksProvider,
|
||||
llamagate: llamagateProvider,
|
||||
inclusionai: inclusionaiProvider,
|
||||
glm: glmProvider,
|
||||
glmt: glmtProvider,
|
||||
"glm-cn": glm_cnProvider,
|
||||
trae: traeProvider,
|
||||
"muse-spark-web": muse_spark_webProvider,
|
||||
kilocode: kilocodeProvider,
|
||||
"github-models": github_modelsProvider,
|
||||
github: githubProvider,
|
||||
dify: difyProvider,
|
||||
ovhcloud: ovhcloudProvider,
|
||||
claude: claudeProvider,
|
||||
"claude-web": claude_webProvider,
|
||||
bedrock: bedrockProvider,
|
||||
"inner-ai": inner_aiProvider,
|
||||
qoder: qoderProvider,
|
||||
"xiaomi-mimo": xiaomi_mimoProvider,
|
||||
codestral: codestralProvider,
|
||||
wandb: wandbProvider,
|
||||
predibase: predibaseProvider,
|
||||
baichuan: baichuanProvider,
|
||||
yi: yiProvider,
|
||||
deepseek: deepseekProvider,
|
||||
"deepseek-web": deepseek_webProvider,
|
||||
"kimi-coding-apikey": kimi_coding_apikeyProvider,
|
||||
"kimi-coding": kimi_codingProvider,
|
||||
kimi: kimiProvider,
|
||||
"kimi-web": kimi_webProvider,
|
||||
groq: groqProvider,
|
||||
"inference-net": inference_netProvider,
|
||||
llm7: llm7Provider,
|
||||
cerebras: cerebrasProvider,
|
||||
sparkdesk: sparkdeskProvider,
|
||||
nlpcloud: nlpcloudProvider,
|
||||
nvidia: nvidiaProvider,
|
||||
"api-airforce": api_airforceProvider,
|
||||
mistral: mistralProvider,
|
||||
together: togetherProvider,
|
||||
cohere: cohereProvider,
|
||||
cursor: cursorProvider,
|
||||
volcengine: volcengineProvider,
|
||||
hackclub: hackclubProvider,
|
||||
tencent: tencentProvider,
|
||||
coze: cozeProvider,
|
||||
ai21: ai21Provider,
|
||||
publicai: publicaiProvider,
|
||||
"featherless-ai": featherless_aiProvider,
|
||||
antigravity: antigravityProvider,
|
||||
openai: openaiProvider,
|
||||
snowflake: snowflakeProvider,
|
||||
huggingface: huggingfaceProvider,
|
||||
chipotle: chipotleProvider,
|
||||
freeaiapikey: freeaiapikeyProvider,
|
||||
qwen: qwenProvider,
|
||||
"qwen-web": qwen_webProvider,
|
||||
modal: modalProvider,
|
||||
zenmux: zenmuxProvider,
|
||||
leonardo: leonardoProvider,
|
||||
"grok-web": grok_webProvider,
|
||||
kie: kieProvider,
|
||||
monsterapi: monsterapiProvider,
|
||||
sensenova: sensenovaProvider,
|
||||
hyperbolic: hyperbolicProvider,
|
||||
"lambda-ai": lambda_aiProvider,
|
||||
phind: phindProvider,
|
||||
"t3-web": t3_webProvider,
|
||||
kluster: klusterProvider,
|
||||
iflytek: iflytekProvider,
|
||||
crof: crofProvider,
|
||||
moonshot: moonshotProvider,
|
||||
bazaarlink: bazaarlinkProvider,
|
||||
perplexity: perplexityProvider,
|
||||
"perplexity-web": perplexity_webProvider,
|
||||
minimax: minimaxProvider,
|
||||
"minimax-cn": minimax_cnProvider,
|
||||
haiper: haiperProvider,
|
||||
bytez: bytezProvider,
|
||||
blackbox: blackboxProvider,
|
||||
"blackbox-web": blackbox_webProvider,
|
||||
uncloseai: uncloseaiProvider,
|
||||
nscale: nscaleProvider,
|
||||
"chatgpt-web": chatgpt_webProvider,
|
||||
openrouter: openrouterProvider,
|
||||
glhf: glhfProvider,
|
||||
"copilot-web": copilot_webProvider,
|
||||
stepfun: stepfunProvider,
|
||||
"freemodel-dev": freemodel_devProvider,
|
||||
"gitlawb-gmi": gitlawb_gmiProvider,
|
||||
gitlawb: gitlawbProvider,
|
||||
liquid: liquidProvider,
|
||||
deepinfra: deepinfraProvider,
|
||||
agy: agyProvider,
|
||||
udio: udioProvider,
|
||||
longcat: longcatProvider,
|
||||
"vertex-partner": vertex_partnerProvider,
|
||||
vertex: vertexProvider,
|
||||
"duckduckgo-web": duckduckgo_webProvider,
|
||||
xai: xaiProvider,
|
||||
morph: morphProvider,
|
||||
siliconflow: siliconflowProvider,
|
||||
"gitlab-duo": gitlab_duoProvider,
|
||||
"command-code": command_codeProvider,
|
||||
novita: novitaProvider,
|
||||
windsurf: windsurfProvider,
|
||||
nanogpt: nanogptProvider,
|
||||
scaleway: scalewayProvider,
|
||||
agentrouter: agentrouterProvider,
|
||||
zai: zaiProvider,
|
||||
huggingchat: huggingchatProvider,
|
||||
galadriel: galadrielProvider,
|
||||
qianfan: qianfanProvider,
|
||||
"meta-llama": meta_llamaProvider,
|
||||
"cloudflare-ai": cloudflare_aiProvider,
|
||||
"nous-research": nous_researchProvider,
|
||||
alibaba: alibabaProvider,
|
||||
"alibaba-cn": alibaba_cnProvider,
|
||||
doubao: doubaoProvider,
|
||||
"doubao-web": doubao_webProvider,
|
||||
"kilo-gateway": kilo_gatewayProvider,
|
||||
"bailian-coding-plan": bailian_coding_planProvider,
|
||||
gigachat: gigachatProvider,
|
||||
"devin-cli": devin_cliProvider,
|
||||
chutes: chutesProvider,
|
||||
databricks: databricksProvider,
|
||||
reka: rekaProvider,
|
||||
"vercel-ai-gateway": vercel_ai_gatewayProvider,
|
||||
"v0-vercel": v0_vercelProvider,
|
||||
"opencode-zen": opencode_zenProvider,
|
||||
"opencode-go": opencode_goProvider,
|
||||
opencode: opencodeProvider,
|
||||
maritalk: maritalkProvider,
|
||||
baseten: basetenProvider,
|
||||
"gemini-cli": gemini_cliProvider,
|
||||
gemini: geminiProvider,
|
||||
"gemini-web": gemini_webProvider,
|
||||
cline: clineProvider,
|
||||
heroku: herokuProvider,
|
||||
bluesminds: bluesmindsProvider,
|
||||
theoldllm: theoldllmProvider,
|
||||
baidu: baiduProvider,
|
||||
pollinations: pollinationsProvider,
|
||||
"veoaifree-web": veoaifree_webProvider,
|
||||
codex: codexProvider,
|
||||
venice: veniceProvider,
|
||||
kiro: kiroProvider,
|
||||
};
|
||||
20
open-sse/config/providers/registry/adapta-web/index.ts
Normal file
20
open-sse/config/providers/registry/adapta-web/index.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const adapta_webProvider: RegistryEntry = {
|
||||
id: "adapta-web",
|
||||
alias: "adp-web",
|
||||
format: "openai",
|
||||
executor: "adapta-web",
|
||||
baseUrl: "https://agent.adapta.one/api/chat/stream/v1",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "adapta-one", name: "Adapta ONE (Auto)" },
|
||||
{ id: "adapta-gpt", name: "GPT-5 (via Adapta)" },
|
||||
{ id: "adapta-claude", name: "Claude Sonnet 4.6 (via Adapta)" },
|
||||
{ id: "adapta-gemini", name: "Gemini 2.5 Pro (via Adapta)" },
|
||||
{ id: "adapta-grok", name: "Grok 4 (via Adapta)" },
|
||||
{ id: "adapta-deepseek", name: "DeepSeek R2 (via Adapta)" },
|
||||
{ id: "adapta-llama", name: "Llama 4 (via Adapta)" },
|
||||
],
|
||||
};
|
||||
30
open-sse/config/providers/registry/agentrouter/index.ts
Normal file
30
open-sse/config/providers/registry/agentrouter/index.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import {
|
||||
getClaudeCliHeaders,
|
||||
mapStainlessOs,
|
||||
mapStainlessArch,
|
||||
ANTHROPIC_BETA_CLAUDE_OAUTH,
|
||||
ANTHROPIC_VERSION_HEADER,
|
||||
CLAUDE_CLI_STAINLESS_PACKAGE_VERSION,
|
||||
CLAUDE_CLI_STAINLESS_RUNTIME_VERSION,
|
||||
CLAUDE_CLI_USER_AGENT,
|
||||
} from "../../shared.ts";
|
||||
|
||||
export const agentrouterProvider: RegistryEntry = {
|
||||
id: "agentrouter",
|
||||
alias: "agentrouter",
|
||||
format: "claude",
|
||||
executor: "default",
|
||||
baseUrl: "https://agentrouter.org/v1/messages",
|
||||
authType: "apikey",
|
||||
authHeader: "x-api-key",
|
||||
defaultContextLength: 128000,
|
||||
headers: getClaudeCliHeaders(),
|
||||
models: [
|
||||
{ id: "claude-opus-4-6", name: "Claude 4.6 Opus" },
|
||||
{ id: "claude-haiku-4-5-20251001", name: "Claude 4.5 Haiku" },
|
||||
{ id: "glm-5.1", name: "GLM 5.1" },
|
||||
{ id: "deepseek-v3.2", name: "DeepSeek V3.2" },
|
||||
],
|
||||
passthroughModels: true,
|
||||
};
|
||||
28
open-sse/config/providers/registry/agy/index.ts
Normal file
28
open-sse/config/providers/registry/agy/index.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import {
|
||||
buildAntigravityUrl,
|
||||
ANTIGRAVITY_BASE_URLS,
|
||||
AGY_PUBLIC_MODELS,
|
||||
getAntigravityProviderHeaders,
|
||||
resolvePublicCred,
|
||||
} from "../../shared.ts";
|
||||
|
||||
export const agyProvider: RegistryEntry = {
|
||||
id: "agy",
|
||||
alias: "agy",
|
||||
format: "antigravity",
|
||||
executor: "antigravity",
|
||||
baseUrls: [...ANTIGRAVITY_BASE_URLS],
|
||||
urlBuilder: buildAntigravityUrl,
|
||||
authType: "oauth",
|
||||
authHeader: "bearer",
|
||||
headers: getAntigravityProviderHeaders(),
|
||||
oauth: {
|
||||
clientIdEnv: "ANTIGRAVITY_OAUTH_CLIENT_ID",
|
||||
clientIdDefault: resolvePublicCred("antigravity_id"),
|
||||
clientSecretEnv: "ANTIGRAVITY_OAUTH_CLIENT_SECRET",
|
||||
clientSecretDefault: resolvePublicCred("antigravity_alt"),
|
||||
},
|
||||
models: [...AGY_PUBLIC_MODELS],
|
||||
passthroughModels: true,
|
||||
};
|
||||
13
open-sse/config/providers/registry/ai21/index.ts
Normal file
13
open-sse/config/providers/registry/ai21/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const ai21Provider: RegistryEntry = {
|
||||
id: "ai21",
|
||||
alias: "ai21",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.ai21.com/studio/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.ai21,
|
||||
};
|
||||
21
open-sse/config/providers/registry/aimlapi/index.ts
Normal file
21
open-sse/config/providers/registry/aimlapi/index.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const aimlapiProvider: RegistryEntry = {
|
||||
id: "aimlapi",
|
||||
alias: "aiml",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.aimlapi.com/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
// $0.025/day free credits — 200+ models via single aggregator endpoint
|
||||
models: [
|
||||
{ id: "gpt-4o", name: "GPT-4o (via AI/ML API)" },
|
||||
{ id: "claude-3-5-sonnet-20241022", name: "Claude 3.5 Sonnet (via AI/ML API)" },
|
||||
{ id: "gemini-1.5-pro", name: "Gemini 1.5 Pro (via AI/ML API)" },
|
||||
{ id: "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo", name: "Llama 3.1 70B (via AI/ML API)" },
|
||||
{ id: "deepseek-chat", name: "DeepSeek Chat (via AI/ML API)" },
|
||||
{ id: "mistral-large-latest", name: "Mistral Large (via AI/ML API)" },
|
||||
],
|
||||
passthroughModels: true,
|
||||
};
|
||||
15
open-sse/config/providers/registry/alibaba/cn/index.ts
Normal file
15
open-sse/config/providers/registry/alibaba/cn/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
import { ALIBABA_DASHSCOPE_MODELS } from "../../../shared.ts";
|
||||
|
||||
export const alibaba_cnProvider: RegistryEntry = {
|
||||
id: "alibaba-cn",
|
||||
alias: "ali-cn",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",
|
||||
modelsUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: ALIBABA_DASHSCOPE_MODELS,
|
||||
passthroughModels: true,
|
||||
};
|
||||
15
open-sse/config/providers/registry/alibaba/index.ts
Normal file
15
open-sse/config/providers/registry/alibaba/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { ALIBABA_DASHSCOPE_MODELS } from "../../shared.ts";
|
||||
|
||||
export const alibabaProvider: RegistryEntry = {
|
||||
id: "alibaba",
|
||||
alias: "ali",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",
|
||||
modelsUrl: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: ALIBABA_DASHSCOPE_MODELS,
|
||||
passthroughModels: true,
|
||||
};
|
||||
25
open-sse/config/providers/registry/anthropic/index.ts
Normal file
25
open-sse/config/providers/registry/anthropic/index.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { ANTHROPIC_BETA_API_KEY, ANTHROPIC_VERSION_HEADER } from "../../shared.ts";
|
||||
|
||||
export const anthropicProvider: RegistryEntry = {
|
||||
id: "anthropic",
|
||||
alias: "anthropic",
|
||||
format: "claude",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.anthropic.com/v1/messages",
|
||||
urlSuffix: "?beta=true",
|
||||
authType: "apikey",
|
||||
authHeader: "x-api-key",
|
||||
defaultContextLength: 200000,
|
||||
headers: {
|
||||
"Anthropic-Version": ANTHROPIC_VERSION_HEADER,
|
||||
"Anthropic-Beta": ANTHROPIC_BETA_API_KEY,
|
||||
},
|
||||
models: [
|
||||
{ id: "claude-opus-4.7", name: "Claude Opus 4.7" },
|
||||
{ id: "claude-opus-4.6", name: "Claude Opus 4.6" },
|
||||
{ id: "claude-sonnet-4.6", name: "Claude Sonnet 4.6" },
|
||||
{ id: "claude-sonnet-4.5", name: "Claude Sonnet 4.6" },
|
||||
{ id: "claude-haiku-4.5", name: "Claude Haiku 4.5" },
|
||||
],
|
||||
};
|
||||
28
open-sse/config/providers/registry/antigravity/index.ts
Normal file
28
open-sse/config/providers/registry/antigravity/index.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import {
|
||||
buildAntigravityUrl,
|
||||
ANTIGRAVITY_BASE_URLS,
|
||||
ANTIGRAVITY_PUBLIC_MODELS,
|
||||
getAntigravityProviderHeaders,
|
||||
resolvePublicCred,
|
||||
} from "../../shared.ts";
|
||||
|
||||
export const antigravityProvider: RegistryEntry = {
|
||||
id: "antigravity",
|
||||
alias: undefined,
|
||||
format: "antigravity",
|
||||
executor: "antigravity",
|
||||
baseUrls: [...ANTIGRAVITY_BASE_URLS],
|
||||
urlBuilder: buildAntigravityUrl,
|
||||
authType: "oauth",
|
||||
authHeader: "bearer",
|
||||
headers: getAntigravityProviderHeaders(),
|
||||
oauth: {
|
||||
clientIdEnv: "ANTIGRAVITY_OAUTH_CLIENT_ID",
|
||||
clientIdDefault: resolvePublicCred("antigravity_id"),
|
||||
clientSecretEnv: "ANTIGRAVITY_OAUTH_CLIENT_SECRET",
|
||||
clientSecretDefault: resolvePublicCred("antigravity_alt"),
|
||||
},
|
||||
models: [...ANTIGRAVITY_PUBLIC_MODELS],
|
||||
passthroughModels: true,
|
||||
};
|
||||
57
open-sse/config/providers/registry/api-airforce/index.ts
Normal file
57
open-sse/config/providers/registry/api-airforce/index.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const api_airforceProvider: RegistryEntry = {
|
||||
id: "api-airforce",
|
||||
alias: "af",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.airforce/v1/chat/completions",
|
||||
modelsUrl: "https://api.airforce/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 128000,
|
||||
headers: {
|
||||
"HTTP-Referer": "https://endpoint-proxy.local",
|
||||
"X-Title": "Endpoint Proxy",
|
||||
},
|
||||
models: [
|
||||
// Free tier models (55 available)
|
||||
{ id: "x-ai/grok-3", name: "Grok-3 (Free)", contextLength: 131072, maxOutputTokens: 65536 },
|
||||
{
|
||||
id: "x-ai/grok-2-1212",
|
||||
name: "Grok-2 1212 (Free)",
|
||||
contextLength: 131072,
|
||||
maxOutputTokens: 65536,
|
||||
},
|
||||
{
|
||||
id: "anthropic/claude-3.7-sonnet",
|
||||
name: "Claude 3.7 Sonnet (Free)",
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 8192,
|
||||
},
|
||||
{
|
||||
id: "qwen/qwen3-32b",
|
||||
name: "Qwen3 32B (Free)",
|
||||
contextLength: 128000,
|
||||
maxOutputTokens: 8192,
|
||||
},
|
||||
{
|
||||
id: "moonshot/kimi-k2.6",
|
||||
name: "Kimi K2.6 (Free)",
|
||||
contextLength: 262144,
|
||||
maxOutputTokens: 65536,
|
||||
},
|
||||
{
|
||||
id: "google/gemini-2.5-flash",
|
||||
name: "Gemini 2.5 Flash (Free)",
|
||||
contextLength: 1048576,
|
||||
maxOutputTokens: 65536,
|
||||
},
|
||||
{
|
||||
id: "deepseek/deepseek-v3",
|
||||
name: "DeepSeek V3 (Free)",
|
||||
contextLength: 262144,
|
||||
maxOutputTokens: 16384,
|
||||
},
|
||||
],
|
||||
};
|
||||
12
open-sse/config/providers/registry/baichuan/index.ts
Normal file
12
open-sse/config/providers/registry/baichuan/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const baichuanProvider: RegistryEntry = {
|
||||
id: "baichuan",
|
||||
alias: "baichuan",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.baichuan-ai.com/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "Baichuan4", name: "Baichuan 4" }],
|
||||
};
|
||||
12
open-sse/config/providers/registry/baidu/index.ts
Normal file
12
open-sse/config/providers/registry/baidu/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const baiduProvider: RegistryEntry = {
|
||||
id: "baidu",
|
||||
alias: "baidu",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://qianfan.baidubce.com/v2/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "ernie-4.0-8k", name: "ERNIE 4.0 8K" }],
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { getAnthropicCompatHeaders, ANTHROPIC_VERSION_HEADER } from "../../shared.ts";
|
||||
|
||||
export const bailian_coding_planProvider: RegistryEntry = {
|
||||
id: "bailian-coding-plan",
|
||||
alias: "bcp",
|
||||
format: "claude",
|
||||
executor: "default",
|
||||
baseUrl: "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1",
|
||||
chatPath: "/messages",
|
||||
authType: "apikey",
|
||||
authHeader: "x-api-key",
|
||||
headers: getAnthropicCompatHeaders(),
|
||||
models: [
|
||||
{ id: "qwen3.6-plus", name: "Qwen3.6 Plus(vision)" },
|
||||
{ id: "qwen3.5-plus", name: "Qwen3.5 Plus(vision)" },
|
||||
{ id: "qwen3-max-2026-01-23", name: "Qwen3 Max" },
|
||||
{ id: "kimi-k2.5", name: "Kimi K2.5(vision)" },
|
||||
{ id: "glm-5", name: "GLM 5" },
|
||||
{ id: "MiniMax-M2.5", name: "MiniMax M2.5" },
|
||||
],
|
||||
};
|
||||
13
open-sse/config/providers/registry/baseten/index.ts
Normal file
13
open-sse/config/providers/registry/baseten/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const basetenProvider: RegistryEntry = {
|
||||
id: "baseten",
|
||||
alias: "baseten",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://inference.baseten.co/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.baseten,
|
||||
};
|
||||
48
open-sse/config/providers/registry/bazaarlink/index.ts
Normal file
48
open-sse/config/providers/registry/bazaarlink/index.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const bazaarlinkProvider: RegistryEntry = {
|
||||
id: "bazaarlink",
|
||||
alias: "bzl",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://bazaarlink.ai/api/v1/chat/completions",
|
||||
modelsUrl: "https://bazaarlink.ai/api/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "auto:free", name: "Auto Free (Zero Cost)" },
|
||||
{ id: "claude-opus-4.7", name: "Claude Opus 4.7" },
|
||||
{ id: "claude-sonnet-4.6", name: "Claude Sonnet 4.6" },
|
||||
{ id: "claude-haiku-4.5", name: "Claude Haiku 4.5" },
|
||||
{ id: "gpt-5.5", name: "GPT-5.5" },
|
||||
{ id: "gpt-5.4", name: "GPT-5.4" },
|
||||
{ id: "gpt-5.4-mini", name: "GPT-5.4 Mini" },
|
||||
{ id: "gpt-5.4-nano", name: "GPT-5.4 Nano" },
|
||||
{ id: "grok-4.3", name: "Grok 4.3" },
|
||||
{ id: "grok-4.20", name: "Grok 4.20" },
|
||||
{ id: "gemini-3.1-pro-preview", name: "Gemini 3.1 Pro" },
|
||||
{ id: "gemini-3-flash-preview", name: "Gemini 3 Flash" },
|
||||
{ id: "gemini-3.1-flash-lite-preview", name: "Gemini 3.1 Flash Lite" },
|
||||
{ id: "gemma-4-31b-it", name: "Gemma 4 31B" },
|
||||
{ id: "gemma-4-26b-a4b-it", name: "Gemma 4 26B A4B" },
|
||||
{ id: "deepseek-v3.2", name: "DeepSeek V3.2" },
|
||||
{ id: "kimi-k2.6", name: "Kimi K2.6" },
|
||||
{ id: "kimi-k2.5", name: "Kimi K2.5" },
|
||||
{ id: "glm-5.1", name: "GLM 5.1" },
|
||||
{ id: "glm-5", name: "GLM 5" },
|
||||
{ id: "mimo-v2.5-pro", name: "MiMo-V2.5-Pro" },
|
||||
{ id: "mimo-v2.5", name: "MiMo-V2.5" },
|
||||
// #3110: MiniMax M3 via OpenCode Zen
|
||||
{ id: "minimax-m3", name: "MiniMax M3", contextLength: 1048576, supportsVision: true },
|
||||
{ id: "minimax-m2.7", name: "MiniMax M2.7" },
|
||||
{ id: "minimax-m2.5", name: "MiniMax M2.5" },
|
||||
{ id: "llama-4-maverick", name: "Llama 4 Maverick" },
|
||||
{ id: "llama-4-scout", name: "Llama 4 Scout" },
|
||||
{ id: "llama-3.3-70b-instruct", name: "Llama 3.3 70B" },
|
||||
{ id: "qwen3.6-plus", name: "Qwen 3.6 Plus" },
|
||||
{ id: "mistral-large-2512", name: "Mistral Large 3" },
|
||||
{ id: "mistral-medium-3.1", name: "Mistral Medium 3.1" },
|
||||
{ id: "mistral-small-2603", name: "Mistral Small 4" },
|
||||
{ id: "nemotron-3-super-120b-a12b", name: "Nemotron 3 Super" },
|
||||
],
|
||||
};
|
||||
49
open-sse/config/providers/registry/bedrock/index.ts
Normal file
49
open-sse/config/providers/registry/bedrock/index.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const bedrockProvider: RegistryEntry = {
|
||||
id: "bedrock",
|
||||
alias: "bedrock",
|
||||
format: "openai",
|
||||
executor: "bedrock",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 200000,
|
||||
models: [
|
||||
{
|
||||
id: "anthropic.claude-sonnet-4-6",
|
||||
name: "Claude Sonnet 4.6 (Bedrock)",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
contextLength: 1000000,
|
||||
},
|
||||
{
|
||||
id: "anthropic.claude-sonnet-4-5",
|
||||
name: "Claude Sonnet 4.5 (Bedrock)",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
contextLength: 200000,
|
||||
},
|
||||
{
|
||||
id: "anthropic.claude-opus-4-6",
|
||||
name: "Claude Opus 4.6 (Bedrock)",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
contextLength: 1000000,
|
||||
},
|
||||
{
|
||||
id: "anthropic.claude-opus-4-7",
|
||||
name: "Claude Opus 4.7 (Bedrock)",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
contextLength: 1000000,
|
||||
},
|
||||
{
|
||||
id: "anthropic.claude-haiku-4-5",
|
||||
name: "Claude Haiku 4.5 (Bedrock)",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
},
|
||||
{ id: "openai.gpt-oss-120b-1:0", name: "GPT-OSS 120B (Bedrock)" },
|
||||
],
|
||||
passthroughModels: true,
|
||||
};
|
||||
20
open-sse/config/providers/registry/blackbox/index.ts
Normal file
20
open-sse/config/providers/registry/blackbox/index.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const blackboxProvider: RegistryEntry = {
|
||||
id: "blackbox",
|
||||
alias: "bb",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.blackbox.ai/v1/chat/completions",
|
||||
modelsUrl: "https://api.blackbox.ai/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "gpt-4o", name: "GPT-4o" },
|
||||
{ id: "gemini-2.5-flash", name: "Gemini 2.5 Flash" },
|
||||
{ id: "claude-sonnet-4", name: "Claude Sonnet 4" },
|
||||
{ id: "deepseek-v3", name: "DeepSeek V3" },
|
||||
{ id: "blackboxai", name: "Blackbox AI" },
|
||||
{ id: "blackboxai-pro", name: "Blackbox AI Pro" },
|
||||
],
|
||||
};
|
||||
19
open-sse/config/providers/registry/blackbox/web/index.ts
Normal file
19
open-sse/config/providers/registry/blackbox/web/index.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
|
||||
export const blackbox_webProvider: RegistryEntry = {
|
||||
id: "blackbox-web",
|
||||
alias: "bb-web",
|
||||
format: "openai",
|
||||
executor: "blackbox-web",
|
||||
baseUrl: "https://app.blackbox.ai/api/chat",
|
||||
authType: "apikey",
|
||||
authHeader: "cookie",
|
||||
models: [
|
||||
{ id: "gpt-4-turbo", name: "GPT-4 Turbo" },
|
||||
{ id: "gpt-4", name: "GPT-4" },
|
||||
{ id: "gpt-3.5-turbo", name: "GPT-3.5 Turbo" },
|
||||
{ id: "claude-3-opus", name: "Claude 3 Opus" },
|
||||
{ id: "claude-3-sonnet", name: "Claude 3 Sonnet" },
|
||||
{ id: "gemini-pro", name: "Gemini Pro" },
|
||||
],
|
||||
};
|
||||
39
open-sse/config/providers/registry/bluesminds/index.ts
Normal file
39
open-sse/config/providers/registry/bluesminds/index.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const bluesmindsProvider: RegistryEntry = {
|
||||
id: "bluesminds",
|
||||
alias: "bm",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.bluesminds.com/v1/chat/completions",
|
||||
modelsUrl: "https://api.bluesminds.com/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 128000,
|
||||
models: [
|
||||
// Default free models
|
||||
{ id: "gpt-4o", name: "GPT-4o" },
|
||||
{ id: "gpt-4o-mini", name: "GPT-4o Mini" },
|
||||
{ id: "gpt-4.1", name: "GPT-4.1" },
|
||||
{ id: "gpt-4.1-mini", name: "GPT-4.1 Mini" },
|
||||
{ id: "gpt-4.1-nano", name: "GPT-4.1 Nano" },
|
||||
{ id: "claude-sonnet-4-5", name: "Claude Sonnet 4.5" },
|
||||
{ id: "claude-haiku-4-5", name: "Claude Haiku 4.5" },
|
||||
{ id: "gemini-2.0-flash", name: "Gemini 2.0 Flash" },
|
||||
{ id: "gemini-2.0-flash-exp", name: "Gemini 2.0 Flash (Exp)" },
|
||||
{ id: "deepseek-reasoner", name: "DeepSeek Reasoner", supportsReasoning: true },
|
||||
{ id: "deepseek-chat", name: "DeepSeek Chat" },
|
||||
{ id: "qwen-plus", name: "Qwen Plus" },
|
||||
{ id: "qwen-turbo", name: "Qwen Turbo" },
|
||||
{ id: "kimi-k2", name: "Kimi K2" },
|
||||
{ id: "kimi-k2-thinking", name: "Kimi K2 Thinking" },
|
||||
{ id: "glm-4.7", name: "GLM 4.7" },
|
||||
{ id: "glm-4-flash", name: "GLM 4 Flash" },
|
||||
{ id: "minimax-m2.5", name: "MiniMax M2.5" },
|
||||
// VIP models (cost pi credits)
|
||||
{ id: "claude-opus-4-5", name: "Claude Opus 4.5 (VIP)", contextLength: 200000 },
|
||||
{ id: "gemini-2.5-pro", name: "Gemini 2.5 Pro (VIP)", contextLength: 1048576 },
|
||||
{ id: "grok-3", name: "Grok-3 (VIP)", contextLength: 131072 },
|
||||
{ id: "qwen-max", name: "Qwen Max (VIP)" },
|
||||
],
|
||||
};
|
||||
13
open-sse/config/providers/registry/bytez/index.ts
Normal file
13
open-sse/config/providers/registry/bytez/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const bytezProvider: RegistryEntry = {
|
||||
id: "bytez",
|
||||
alias: "bytez",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.bytez.com/models/v2",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.bytez,
|
||||
};
|
||||
15
open-sse/config/providers/registry/cerebras/index.ts
Normal file
15
open-sse/config/providers/registry/cerebras/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const cerebrasProvider: RegistryEntry = {
|
||||
id: "cerebras",
|
||||
alias: "cerebras",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.cerebras.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "zai-glm-4.7", name: "GLM 4.7" },
|
||||
{ id: "gpt-oss-120b", name: "GPT OSS 120B" },
|
||||
],
|
||||
};
|
||||
26
open-sse/config/providers/registry/chatgpt-web/index.ts
Normal file
26
open-sse/config/providers/registry/chatgpt-web/index.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const chatgpt_webProvider: RegistryEntry = {
|
||||
id: "chatgpt-web",
|
||||
alias: "cgpt-web",
|
||||
format: "openai",
|
||||
executor: "chatgpt-web",
|
||||
baseUrl: "https://chatgpt.com/backend-api/conversation",
|
||||
authType: "apikey",
|
||||
authHeader: "cookie",
|
||||
models: [
|
||||
{ id: "gpt-5.5-pro", name: "GPT-5.5 Pro" }, //pro tier only
|
||||
{ id: "gpt-5.5-thinking", name: "GPT-5.5 Thinking" }, //plus, pro tier
|
||||
{ id: "gpt-5.5", name: "GPT-5.5 Instant" }, //free, plus, pro tier
|
||||
{ id: "gpt-5.4-pro", name: "GPT-5.4 Pro" }, //pro tier only
|
||||
{ id: "gpt-5.4-thinking", name: "GPT-5.4 Thinking" }, //plus, pro tier
|
||||
{ id: "gpt-5.4-thinking-mini", name: "GPT-5.4 Thinking Mini" }, //free-login only
|
||||
{ id: "gpt-5.3", name: "GPT-5.3 Instant" }, //free, free-login, plus, pro tier
|
||||
{ id: "gpt-5.3-mini", name: "GPT-5.3 Mini" }, //limit fallback
|
||||
{ id: "gpt-5.2-pro", name: "GPT-5.2 Pro" }, //pro tier only
|
||||
{ id: "gpt-5.2-thinking", name: "GPT-5.2 Thinking" }, //plus ~ tier
|
||||
{ id: "gpt-5.2-instant", name: "GPT-5.2 Instant" }, //plus ~ tier
|
||||
{ id: "o3", name: "o3" }, //plus ~ tier
|
||||
{ id: "gpt-4-5", name: "GPT-4.5" }, //pro tier only
|
||||
],
|
||||
};
|
||||
14
open-sse/config/providers/registry/chipotle/index.ts
Normal file
14
open-sse/config/providers/registry/chipotle/index.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const chipotleProvider: RegistryEntry = {
|
||||
id: "chipotle",
|
||||
alias: "pepper",
|
||||
format: "openai",
|
||||
executor: "chipotle",
|
||||
baseUrl: "https://amelia.chipotle.com",
|
||||
baseUrls: ["https://amelia.chipotle.com"],
|
||||
authType: "none",
|
||||
authHeader: "none",
|
||||
models: [{ id: "pepper-1", name: "Pepper (Chipotle AI 🌯)" }],
|
||||
passthroughModels: true,
|
||||
};
|
||||
12
open-sse/config/providers/registry/chutes/index.ts
Normal file
12
open-sse/config/providers/registry/chutes/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const chutesProvider: RegistryEntry = {
|
||||
id: "chutes",
|
||||
alias: "chutes",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.chutesai.com/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "Qwen2.5-72B-Instruct", name: "Qwen2.5 72B" }],
|
||||
};
|
||||
85
open-sse/config/providers/registry/claude/index.ts
Normal file
85
open-sse/config/providers/registry/claude/index.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import {
|
||||
getClaudeCliHeaders,
|
||||
mapStainlessOs,
|
||||
mapStainlessArch,
|
||||
ANTHROPIC_BETA_CLAUDE_OAUTH,
|
||||
ANTHROPIC_VERSION_HEADER,
|
||||
CLAUDE_CLI_STAINLESS_PACKAGE_VERSION,
|
||||
CLAUDE_CLI_STAINLESS_RUNTIME_VERSION,
|
||||
CLAUDE_CLI_USER_AGENT,
|
||||
resolvePublicCred,
|
||||
} from "../../shared.ts";
|
||||
|
||||
export const claudeProvider: RegistryEntry = {
|
||||
id: "claude",
|
||||
alias: "cc",
|
||||
format: "claude",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.anthropic.com/v1/messages",
|
||||
urlSuffix: "?beta=true",
|
||||
authType: "oauth",
|
||||
authHeader: "x-api-key",
|
||||
defaultContextLength: 200000,
|
||||
headers: getClaudeCliHeaders(),
|
||||
oauth: {
|
||||
clientIdEnv: "CLAUDE_OAUTH_CLIENT_ID",
|
||||
clientIdDefault: resolvePublicCred("claude_id"),
|
||||
tokenUrl: "https://api.anthropic.com/v1/oauth/token",
|
||||
},
|
||||
models: [
|
||||
{
|
||||
id: "claude-fable-5",
|
||||
name: "Claude Fable 5",
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "claude-opus-4-8",
|
||||
name: "Claude Opus 4.8",
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "claude-opus-4-7",
|
||||
name: "Claude Opus 4.7",
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "claude-opus-4-6",
|
||||
name: "Claude Opus 4.6",
|
||||
supportsXHighEffort: false,
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "claude-opus-4-5-20251101",
|
||||
name: "Claude Opus 4.5",
|
||||
supportsXHighEffort: false,
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 64000,
|
||||
},
|
||||
{
|
||||
id: "claude-sonnet-4-6",
|
||||
name: "Claude 4.6 Sonnet",
|
||||
supportsXHighEffort: false,
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 64000,
|
||||
},
|
||||
{
|
||||
id: "claude-sonnet-4-5-20250929",
|
||||
name: "Claude 4.5 Sonnet",
|
||||
supportsXHighEffort: false,
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 64000,
|
||||
},
|
||||
{
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
name: "Claude 4.5 Haiku",
|
||||
supportsXHighEffort: false,
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 64000,
|
||||
},
|
||||
],
|
||||
};
|
||||
15
open-sse/config/providers/registry/claude/web/index.ts
Normal file
15
open-sse/config/providers/registry/claude/web/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
|
||||
export const claude_webProvider: RegistryEntry = {
|
||||
id: "claude-web",
|
||||
alias: "cw",
|
||||
format: "openai",
|
||||
executor: "claude-web",
|
||||
baseUrl: "https://claude.ai/api/organizations",
|
||||
authType: "apikey",
|
||||
authHeader: "cookie",
|
||||
models: [
|
||||
{ id: "claude-sonnet-4-6", name: "Claude 4.6 Sonnet (web)" },
|
||||
{ id: "claude-haiku-4-5", name: "Claude 4.5 Haiku (web)" },
|
||||
],
|
||||
};
|
||||
32
open-sse/config/providers/registry/cline/index.ts
Normal file
32
open-sse/config/providers/registry/cline/index.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const clineProvider: RegistryEntry = {
|
||||
id: "cline",
|
||||
alias: "cl",
|
||||
format: "openai",
|
||||
executor: "openai",
|
||||
baseUrl: "https://api.cline.bot/api/v1/chat/completions",
|
||||
authType: "oauth",
|
||||
authHeader: "Authorization",
|
||||
authPrefix: "Bearer ",
|
||||
oauth: {
|
||||
tokenUrl: "https://api.cline.bot/api/v1/auth/token",
|
||||
refreshUrl: "https://api.cline.bot/api/v1/auth/refresh",
|
||||
authUrl: "https://api.cline.bot/api/v1/auth/authorize",
|
||||
},
|
||||
extraHeaders: {
|
||||
"HTTP-Referer": "https://cline.bot",
|
||||
"X-Title": "Cline",
|
||||
},
|
||||
models: [
|
||||
{ id: "moonshotai/kimi-k2.6", name: "Kimi K2.6 (Free)" },
|
||||
{ id: "anthropic/claude-sonnet-4.6", name: "Claude Sonnet 4.6" },
|
||||
{ id: "anthropic/claude-opus-4.7", name: "Claude Opus 4.7" },
|
||||
{ id: "google/gemini-3.1-pro-preview", name: "Gemini 3.1 Pro" },
|
||||
{ id: "google/gemini-3-flash-preview", name: "Gemini 3 Flash" },
|
||||
{ id: "openai/gpt-5.5", name: "GPT-5.5" },
|
||||
{ id: "deepseek/deepseek-v4-flash", name: "DeepSeek V4 Flash", supportsReasoning: true },
|
||||
{ id: "deepseek/deepseek-v4-pro", name: "DeepSeek V4 Pro", supportsReasoning: true },
|
||||
],
|
||||
passthroughModels: true,
|
||||
};
|
||||
21
open-sse/config/providers/registry/cloudflare-ai/index.ts
Normal file
21
open-sse/config/providers/registry/cloudflare-ai/index.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const cloudflare_aiProvider: RegistryEntry = {
|
||||
id: "cloudflare-ai",
|
||||
alias: "cf",
|
||||
format: "openai",
|
||||
executor: "cloudflare-ai",
|
||||
// URL is dynamic: uses accountId from credentials. The executor builds it.
|
||||
baseUrl: "https://api.cloudflare.com/client/v4/accounts",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
// 10K Neurons/day free: ~150 LLM responses or 500s Whisper audio — global edge
|
||||
models: [
|
||||
{ id: "@cf/meta/llama-3.3-70b-instruct", name: "Llama 3.3 70B (🆓 ~150 resp/day)" },
|
||||
{ id: "@cf/meta/llama-3.1-8b-instruct", name: "Llama 3.1 8B (🆓)" },
|
||||
{ id: "@cf/google/gemma-3-12b-it", name: "Gemma 3 12B (🆓)" },
|
||||
{ id: "@cf/mistral/mistral-7b-instruct-v0.2-lora", name: "Mistral 7B (🆓)" },
|
||||
{ id: "@cf/qwen/qwen2.5-coder-15b-instruct", name: "Qwen 2.5 Coder 15B (🆓)" },
|
||||
{ id: "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b", name: "DeepSeek R1 Distill 32B (🆓)" },
|
||||
],
|
||||
};
|
||||
13
open-sse/config/providers/registry/codestral/index.ts
Normal file
13
open-sse/config/providers/registry/codestral/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const codestralProvider: RegistryEntry = {
|
||||
id: "codestral",
|
||||
alias: "codestral",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://codestral.mistral.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.codestral,
|
||||
};
|
||||
102
open-sse/config/providers/registry/codex/index.ts
Normal file
102
open-sse/config/providers/registry/codex/index.ts
Normal file
@@ -0,0 +1,102 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import {
|
||||
GPT_5_5_CODEX_CAPABILITIES,
|
||||
GPT_5_4_CODEX_CAPABILITIES,
|
||||
getCodexDefaultHeaders,
|
||||
resolvePublicCred,
|
||||
} from "../../shared.ts";
|
||||
|
||||
export const codexProvider: RegistryEntry = {
|
||||
id: "codex",
|
||||
alias: "cx",
|
||||
format: "openai-responses",
|
||||
executor: "codex",
|
||||
baseUrl: "https://chatgpt.com/backend-api/codex/responses",
|
||||
authType: "oauth",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 400000,
|
||||
headers: getCodexDefaultHeaders(),
|
||||
oauth: {
|
||||
clientIdEnv: "CODEX_OAUTH_CLIENT_ID",
|
||||
clientIdDefault: resolvePublicCred("codex_id"),
|
||||
clientSecretEnv: "CODEX_OAUTH_CLIENT_SECRET",
|
||||
clientSecretDefault: "",
|
||||
tokenUrl: "https://auth.openai.com/oauth/token",
|
||||
},
|
||||
models: [
|
||||
// gpt-5.5 codex OAuth backend caps context at 400K (not the public-API
|
||||
// 1.05M). Public refs : openai/codex#19208, #19319, #19464 ;
|
||||
// opencode#24171. max_output_tokens is stripped server-side
|
||||
// (litellm#21193, codex#4138) so 128K is informational only.
|
||||
{
|
||||
id: "gpt-5.5",
|
||||
name: "GPT 5.5",
|
||||
...GPT_5_5_CODEX_CAPABILITIES,
|
||||
contextLength: 400000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.5-xhigh",
|
||||
name: "GPT 5.5 (xHigh)",
|
||||
...GPT_5_5_CODEX_CAPABILITIES,
|
||||
contextLength: 400000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.5-high",
|
||||
name: "GPT 5.5 (High)",
|
||||
...GPT_5_5_CODEX_CAPABILITIES,
|
||||
contextLength: 400000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.5-medium",
|
||||
name: "GPT 5.5 (Medium)",
|
||||
...GPT_5_5_CODEX_CAPABILITIES,
|
||||
contextLength: 400000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.5-low",
|
||||
name: "GPT 5.5 (Low)",
|
||||
...GPT_5_5_CODEX_CAPABILITIES,
|
||||
contextLength: 400000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.4",
|
||||
name: "GPT 5.4",
|
||||
...GPT_5_4_CODEX_CAPABILITIES,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.4-xhigh",
|
||||
name: "GPT 5.4 (xHigh)",
|
||||
...GPT_5_4_CODEX_CAPABILITIES,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.4-high",
|
||||
name: "GPT 5.4 (High)",
|
||||
...GPT_5_4_CODEX_CAPABILITIES,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.4-medium",
|
||||
name: "GPT 5.4 (Medium)",
|
||||
...GPT_5_4_CODEX_CAPABILITIES,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.4-low",
|
||||
name: "GPT 5.4 (Low)",
|
||||
...GPT_5_4_CODEX_CAPABILITIES,
|
||||
},
|
||||
{ id: "gpt-5.4-mini", name: "GPT 5.4 Mini", targetFormat: "openai-responses" },
|
||||
{ id: "gpt-5.3-codex-spark", name: "GPT 5.3 Codex Spark" },
|
||||
{
|
||||
id: "gpt-5.3-codex",
|
||||
name: "GPT 5.3 Codex",
|
||||
targetFormat: "openai-responses",
|
||||
supportsReasoning: true,
|
||||
supportsXHighEffort: true,
|
||||
},
|
||||
{ id: "gpt-5.2", name: "GPT 5.2" },
|
||||
],
|
||||
};
|
||||
28
open-sse/config/providers/registry/cohere/index.ts
Normal file
28
open-sse/config/providers/registry/cohere/index.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const cohereProvider: RegistryEntry = {
|
||||
id: "cohere",
|
||||
alias: "cohere",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
// Issue #2360: Cohere's native /v2/chat endpoint returns the upstream
|
||||
// proprietary shape ({ message: { content: [{type:"text", text:...}] } })
|
||||
// which the combo test validator (extractComboTestResponseText) does not
|
||||
// know how to read, surfacing as "Provider returned HTTP 200 but no text
|
||||
// content." Cohere also publishes an OpenAI-compatible compatibility
|
||||
// layer at /compatibility/v1 that returns the canonical
|
||||
// { choices: [{ message: { content: "..." } }] } shape, so we route
|
||||
// through it instead of needing a Cohere-specific response translator.
|
||||
baseUrl: "https://api.cohere.com/compatibility/v1/chat/completions",
|
||||
modelsUrl: "https://api.cohere.com/compatibility/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "command-a-reasoning-08-2025", name: "Command A Reasoning (Aug 2025)" },
|
||||
{ id: "command-a-vision-07-2025", name: "Command A Vision (Jul 2025)" },
|
||||
{ id: "command-a-03-2025", name: "Command A (Mar 2025)" },
|
||||
{ id: "command-r7b-12-2024", name: "Command R7B (Dec 2024)" },
|
||||
{ id: "command-r-plus-08-2024", name: "Command R Plus (Aug 2024)" },
|
||||
{ id: "command-r-08-2024", name: "Command R (Aug 2024)" },
|
||||
],
|
||||
};
|
||||
143
open-sse/config/providers/registry/command-code/index.ts
Normal file
143
open-sse/config/providers/registry/command-code/index.ts
Normal file
@@ -0,0 +1,143 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const command_codeProvider: RegistryEntry = {
|
||||
id: "command-code",
|
||||
alias: "cmd",
|
||||
format: "openai",
|
||||
executor: "command-code",
|
||||
baseUrl: "https://api.commandcode.ai",
|
||||
chatPath: "/alpha/generate",
|
||||
modelsUrl: "https://api.commandcode.ai/provider/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "Authorization",
|
||||
authPrefix: "Bearer ",
|
||||
defaultContextLength: 200000,
|
||||
models: [
|
||||
{
|
||||
id: "claude-opus-4-7",
|
||||
name: "Claude Opus 4.7 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 32000,
|
||||
},
|
||||
{
|
||||
id: "claude-opus-4-6",
|
||||
name: "Claude Opus 4.6 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 32000,
|
||||
},
|
||||
{
|
||||
id: "claude-sonnet-4-6",
|
||||
name: "Claude Sonnet 4.6 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 16384,
|
||||
},
|
||||
{
|
||||
id: "claude-haiku-4-5-20251001",
|
||||
name: "Claude Haiku 4.5 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 8192,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.5",
|
||||
name: "GPT-5.5 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 256000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.4",
|
||||
name: "GPT-5.4 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 256000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.3-codex",
|
||||
name: "GPT-5.3 Codex (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 256000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "gpt-5.4-mini",
|
||||
name: "GPT-5.4 Mini (CC)",
|
||||
supportsReasoning: false,
|
||||
contextLength: 256000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "deepseek/deepseek-v4-pro",
|
||||
name: "DeepSeek V4 Pro (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 384000,
|
||||
},
|
||||
{
|
||||
id: "deepseek/deepseek-v4-flash",
|
||||
name: "DeepSeek V4 Flash (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 384000,
|
||||
},
|
||||
{
|
||||
id: "moonshotai/Kimi-K2.6",
|
||||
name: "Kimi K2.6 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 262144,
|
||||
maxOutputTokens: 131072,
|
||||
},
|
||||
{
|
||||
id: "moonshotai/Kimi-K2.5",
|
||||
name: "Kimi K2.5 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 262144,
|
||||
maxOutputTokens: 131072,
|
||||
},
|
||||
{
|
||||
id: "zai-org/GLM-5.1",
|
||||
name: "GLM-5.1 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 131072,
|
||||
},
|
||||
{
|
||||
id: "zai-org/GLM-5",
|
||||
name: "GLM-5 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 131072,
|
||||
},
|
||||
{
|
||||
id: "MiniMaxAI/MiniMax-M2.7",
|
||||
name: "MiniMax M2.7 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 1048576,
|
||||
maxOutputTokens: 131072,
|
||||
},
|
||||
{
|
||||
id: "MiniMaxAI/MiniMax-M2.5",
|
||||
name: "MiniMax M2.5 (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 1048576,
|
||||
maxOutputTokens: 131072,
|
||||
},
|
||||
{
|
||||
id: "Qwen/Qwen3.6-Max-Preview",
|
||||
name: "Qwen 3.6 Max (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 131072,
|
||||
},
|
||||
{
|
||||
id: "Qwen/Qwen3.6-Plus",
|
||||
name: "Qwen 3.6 Plus (CC)",
|
||||
supportsReasoning: true,
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 131072,
|
||||
},
|
||||
],
|
||||
};
|
||||
16
open-sse/config/providers/registry/copilot-web/index.ts
Normal file
16
open-sse/config/providers/registry/copilot-web/index.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const copilot_webProvider: RegistryEntry = {
|
||||
id: "copilot-web",
|
||||
alias: "copilot-web",
|
||||
format: "openai",
|
||||
executor: "copilot-web",
|
||||
baseUrl: "wss://copilot.microsoft.com/c/api/chat?api-version=2",
|
||||
authType: "apikey",
|
||||
authHeader: "cookie",
|
||||
models: [
|
||||
{ id: "copilot-pro", name: "Copilot Pro (web)" },
|
||||
{ id: "gpt-4-turbo", name: "GPT-4 Turbo (via Copilot)" },
|
||||
{ id: "gpt-4", name: "GPT-4 (via Copilot)" },
|
||||
],
|
||||
};
|
||||
12
open-sse/config/providers/registry/coze/index.ts
Normal file
12
open-sse/config/providers/registry/coze/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const cozeProvider: RegistryEntry = {
|
||||
id: "coze",
|
||||
alias: "coze",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.coze.com/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "claude-3-7-sonnet-20250514", name: "Claude 3.7 Sonnet" }],
|
||||
};
|
||||
38
open-sse/config/providers/registry/crof/index.ts
Normal file
38
open-sse/config/providers/registry/crof/index.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const crofProvider: RegistryEntry = {
|
||||
id: "crof",
|
||||
alias: "crof",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://crof.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
// Seed list — runtime /v1/models discovery keeps this fresh.
|
||||
// Source: GET https://crof.ai/v1/models (2026-05-17).
|
||||
models: [
|
||||
{
|
||||
id: "deepseek-v4-pro-precision",
|
||||
name: "DeepSeek V4 Pro (Precision)",
|
||||
supportsReasoning: true,
|
||||
},
|
||||
{ id: "deepseek-v4-pro", name: "DeepSeek V4 Pro", supportsReasoning: true },
|
||||
{ id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", supportsReasoning: true },
|
||||
{ id: "deepseek-v3.2", name: "DeepSeek V3.2" },
|
||||
{ id: "kimi-k2.6-precision", name: "Kimi K2.6 (Precision)", supportsReasoning: true },
|
||||
{ id: "kimi-k2.6", name: "Kimi K2.6", supportsReasoning: true },
|
||||
{ id: "kimi-k2.5-lightning", name: "Kimi K2.5 (Lightning)", supportsReasoning: true },
|
||||
{ id: "kimi-k2.5", name: "Kimi K2.5", supportsReasoning: true },
|
||||
{ id: "glm-5.1-precision", name: "GLM 5.1 (Precision)", supportsReasoning: true },
|
||||
{ id: "glm-5.1", name: "GLM 5.1", supportsReasoning: true },
|
||||
{ id: "glm-4.7", name: "GLM 4.7" },
|
||||
{ id: "glm-4.7-flash", name: "GLM 4.7 Flash" },
|
||||
{ id: "mimo-v2.5-pro-precision", name: "Mimo 2.5 Pro (Precision)", supportsReasoning: true },
|
||||
{ id: "mimo-v2.5-pro", name: "Mimo 2.5 Pro", supportsReasoning: true },
|
||||
{ id: "gemma-4-31b-it", name: "Gemma 4 31B", supportsReasoning: true },
|
||||
{ id: "minimax-m2.5", name: "MiniMax M2.5" },
|
||||
{ id: "qwen3.6-27b", name: "Qwen3.6 27B", supportsReasoning: true },
|
||||
{ id: "qwen3.5-397b-a17b", name: "Qwen3.5 397B A17B", supportsReasoning: true },
|
||||
{ id: "qwen3.5-9b", name: "Qwen3.5 9B", supportsReasoning: true },
|
||||
],
|
||||
};
|
||||
111
open-sse/config/providers/registry/cursor/index.ts
Normal file
111
open-sse/config/providers/registry/cursor/index.ts
Normal file
@@ -0,0 +1,111 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CURSOR_REGISTRY_VERSION, getCursorRegistryHeaders } from "../../shared.ts";
|
||||
|
||||
export const cursorProvider: RegistryEntry = {
|
||||
id: "cursor",
|
||||
alias: "cu",
|
||||
format: "cursor",
|
||||
executor: "cursor",
|
||||
baseUrl: "https://api2.cursor.sh",
|
||||
chatPath: "/aiserver.v1.ChatService/StreamUnifiedChatWithTools",
|
||||
authType: "oauth",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 200000,
|
||||
headers: getCursorRegistryHeaders(),
|
||||
clientVersion: CURSOR_REGISTRY_VERSION,
|
||||
models: [
|
||||
{ id: "auto", name: "Auto (Server Picks)" },
|
||||
{ id: "composer-2.5-fast", name: "Composer 2.5 Fast" },
|
||||
{ id: "composer-2.5", name: "Composer 2.5" },
|
||||
{ id: "composer-2-fast", name: "Composer 2 Fast" },
|
||||
{ id: "composer-2", name: "Composer 2" },
|
||||
//
|
||||
{ id: "gpt-5.5-none", name: "GPT 5.5 None" },
|
||||
{ id: "gpt-5.5-none-fast", name: "GPT 5.5 None Fast" },
|
||||
{ id: "gpt-5.5-low", name: "GPT 5.5 Low" },
|
||||
{ id: "gpt-5.5-low-fast", name: "GPT 5.5 Low Fast" },
|
||||
{ id: "gpt-5.5-medium", name: "GPT 5.5 Medium" },
|
||||
{ id: "gpt-5.5-medium-fast", name: "GPT 5.5 Medium Fast" },
|
||||
{ id: "gpt-5.5-high", name: "GPT 5.5 High" },
|
||||
{ id: "gpt-5.5-high-fast", name: "GPT 5.5 High Fast" },
|
||||
{ id: "gpt-5.5-extra-high", name: "GPT 5.5 Extra High" },
|
||||
{ id: "gpt-5.5-extra-high-fast", name: "GPT 5.5 Extra High Fast" },
|
||||
//
|
||||
{ id: "gpt-5.4-low", name: "GPT 5.4 Low" },
|
||||
{ id: "gpt-5.4-low-fast", name: "GPT 5.4 Low Fast" },
|
||||
{ id: "gpt-5.4-medium", name: "GPT 5.4 Medium" },
|
||||
{ id: "gpt-5.4-medium-fast", name: "GPT 5.4 Medium Fast" },
|
||||
{ id: "gpt-5.4-high", name: "GPT 5.4 High" },
|
||||
{ id: "gpt-5.4-high-fast", name: "GPT 5.4 High Fast" },
|
||||
{ id: "gpt-5.4-xhigh", name: "GPT 5.4 XHigh" },
|
||||
{ id: "gpt-5.4-xhigh-fast", name: "GPT 5.4 XHigh Fast" },
|
||||
//
|
||||
{ id: "gpt-5.4-mini-none", name: "GPT 5.4 Mini None" },
|
||||
{ id: "gpt-5.4-mini-low", name: "GPT 5.4 Mini Low" },
|
||||
{ id: "gpt-5.4-mini-medium", name: "GPT 5.4 Mini Medium" },
|
||||
{ id: "gpt-5.4-mini-high", name: "GPT 5.4 Mini High" },
|
||||
{ id: "gpt-5.4-mini-xhigh", name: "GPT 5.4 Mini XHigh" },
|
||||
//
|
||||
{ id: "gpt-5.4-nano-none", name: "GPT 5.4 Nano None" },
|
||||
{ id: "gpt-5.4-nano-low", name: "GPT 5.4 Nano Low" },
|
||||
{ id: "gpt-5.4-nano-medium", name: "GPT 5.4 Nano Medium" },
|
||||
{ id: "gpt-5.4-nano-high", name: "GPT 5.4 Nano High" },
|
||||
{ id: "gpt-5.4-nano-xhigh", name: "GPT 5.4 Nano XHigh" },
|
||||
//
|
||||
{ id: "gpt-5.3-codex-spark-preview-low", name: "GPT 5.3 Codex Spark Preview Low" },
|
||||
{ id: "gpt-5.3-codex-spark-preview", name: "GPT 5.3 Codex Spark Preview" },
|
||||
{ id: "gpt-5.3-codex-spark-preview-high", name: "GPT 5.3 Codex Spark Preview High" },
|
||||
{ id: "gpt-5.3-codex-spark-preview-xhigh", name: "GPT 5.3 Codex Spark Preview XHigh" },
|
||||
//
|
||||
{ id: "gpt-5.3-codex-low", name: "GPT 5.3 Codex Low" },
|
||||
{ id: "gpt-5.3-codex-low-fast", name: "GPT 5.3 Codex Low Fast" },
|
||||
{ id: "gpt-5.3-codex", name: "GPT 5.3 Codex" },
|
||||
{ id: "gpt-5.3-codex-fast", name: "GPT 5.3 Codex Fast" },
|
||||
{ id: "gpt-5.3-codex-high", name: "GPT 5.3 Codex High" },
|
||||
{ id: "gpt-5.3-codex-high-fast", name: "GPT 5.3 Codex High Fast" },
|
||||
{ id: "gpt-5.3-codex-xhigh", name: "GPT 5.3 Codex XHigh" },
|
||||
{ id: "gpt-5.3-codex-xhigh-fast", name: "GPT 5.3 Codex XHigh Fast" },
|
||||
//
|
||||
{ id: "gpt-5.2-low", name: "GPT 5.2 Low" },
|
||||
{ id: "gpt-5.2-low-fast", name: "GPT 5.2 Low Fast" },
|
||||
{ id: "gpt-5.2", name: "GPT 5.2" },
|
||||
{ id: "gpt-5.2-fast", name: "GPT 5.2 Fast" },
|
||||
{ id: "gpt-5.2-high", name: "GPT 5.2 High" },
|
||||
{ id: "gpt-5.2-high-fast", name: "GPT 5.2 High Fast" },
|
||||
{ id: "gpt-5.2-xhigh", name: "GPT 5.2 XHigh" },
|
||||
{ id: "gpt-5.2-xhigh-fast", name: "GPT 5.2 XHigh Fast" },
|
||||
//
|
||||
{ id: "claude-opus-4-7-low", name: "Claude Opus 4.7 Low" },
|
||||
{ id: "claude-opus-4-7-medium", name: "Claude Opus 4.7 Medium" },
|
||||
{ id: "claude-opus-4-7-high", name: "Claude Opus 4.7 High" },
|
||||
{ id: "claude-opus-4-7-xhigh", name: "Claude Opus 4.7 XHigh" },
|
||||
{ id: "claude-opus-4-7-max", name: "Claude Opus 4.7 Max" },
|
||||
|
||||
{ id: "claude-opus-4-7-thinking-low", name: "Claude Opus 4.7 Thinking Low" },
|
||||
{ id: "claude-opus-4-7-thinking-medium", name: "Claude Opus 4.7 Thinking Medium" },
|
||||
{ id: "claude-opus-4-7-thinking-high", name: "Claude Opus 4.7 Thinking High" },
|
||||
{ id: "claude-opus-4-7-thinking-xhigh", name: "Claude Opus 4.7 Thinking XHigh" },
|
||||
{ id: "claude-opus-4-7-thinking-max", name: "Claude Opus 4.7 Thinking Max" },
|
||||
//
|
||||
{ id: "claude-4.6-opus-high", name: "Claude 4.6 Opus High" },
|
||||
{ id: "claude-4.6-opus-high-thinking", name: "Claude 4.6 Opus High Thinking" },
|
||||
{ id: "claude-4.6-opus-high-thinking-fast", name: "Claude 4.6 Opus High Thinking Fast" },
|
||||
{ id: "claude-4.6-opus-max", name: "Claude 4.6 Opus Max" },
|
||||
{ id: "claude-4.6-opus-max-thinking", name: "Claude 4.6 Opus Max Thinking" },
|
||||
{ id: "claude-4.6-opus-max-thinking-fast", name: "Claude 4.6 Opus Max Thinking Fast" },
|
||||
//
|
||||
{ id: "claude-4.6-sonnet-medium", name: "Claude 4.6 Sonnet Medium" },
|
||||
{ id: "claude-4.6-sonnet-medium-thinking", name: "Claude 4.6 Sonnet Medium Thinking" },
|
||||
//
|
||||
{ id: "claude-4.5-sonnet", name: "Claude 4.5 Sonnet" },
|
||||
{ id: "claude-4.5-sonnet-thinking", name: "Claude 4.5 Sonnet Thinking" },
|
||||
//
|
||||
{ id: "gemini-3.1-pro", name: "Gemini 3.1 Pro" },
|
||||
//
|
||||
{ id: "gemini-3-flash", name: "Gemini 3 Flash" },
|
||||
//
|
||||
{ id: "grok-4.3", name: "Grok 4.3" },
|
||||
//
|
||||
{ id: "kimi-k2.5", name: "Kimi K2.5" },
|
||||
],
|
||||
};
|
||||
13
open-sse/config/providers/registry/databricks/index.ts
Normal file
13
open-sse/config/providers/registry/databricks/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const databricksProvider: RegistryEntry = {
|
||||
id: "databricks",
|
||||
alias: "databricks",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://adb-0000000000000000.0.azuredatabricks.net/serving-endpoints",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.databricks,
|
||||
};
|
||||
13
open-sse/config/providers/registry/deepinfra/index.ts
Normal file
13
open-sse/config/providers/registry/deepinfra/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const deepinfraProvider: RegistryEntry = {
|
||||
id: "deepinfra",
|
||||
alias: "deepinfra",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.deepinfra.com/v1/openai/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.deepinfra,
|
||||
};
|
||||
15
open-sse/config/providers/registry/deepseek/index.ts
Normal file
15
open-sse/config/providers/registry/deepseek/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const deepseekProvider: RegistryEntry = {
|
||||
id: "deepseek",
|
||||
alias: "ds",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.deepseek.com/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "deepseek-v4-pro", name: "DeepSeek V4 Pro", supportsReasoning: true },
|
||||
{ id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", supportsReasoning: true },
|
||||
],
|
||||
};
|
||||
35
open-sse/config/providers/registry/deepseek/web/index.ts
Normal file
35
open-sse/config/providers/registry/deepseek/web/index.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
|
||||
export const deepseek_webProvider: RegistryEntry = {
|
||||
id: "deepseek-web",
|
||||
alias: "ds-web",
|
||||
format: "openai",
|
||||
executor: "deepseek-web",
|
||||
baseUrl: "https://chat.deepseek.com/api/v0/chat/completion",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "deepseek-v4-pro", name: "DeepSeek V4 Pro" },
|
||||
{ id: "deepseek-v4-pro-think", name: "DeepSeek V4 Pro Think", supportsReasoning: true },
|
||||
{ id: "deepseek-v4-pro-search", name: "DeepSeek V4 Pro Search" },
|
||||
{
|
||||
id: "deepseek-v4-pro-think-search",
|
||||
name: "DeepSeek V4 Pro Think+Search",
|
||||
supportsReasoning: true,
|
||||
},
|
||||
{ id: "deepseek-v4-flash", name: "DeepSeek V4 Flash" },
|
||||
{ id: "deepseek-v4-flash-think", name: "DeepSeek V4 Flash Think", supportsReasoning: true },
|
||||
{ id: "deepseek-v4-flash-search", name: "DeepSeek V4 Flash Search" },
|
||||
{
|
||||
id: "deepseek-v4-flash-think-search",
|
||||
name: "DeepSeek V4 Flash Think+Search",
|
||||
supportsReasoning: true,
|
||||
},
|
||||
{ id: "deepseek-chat", name: "DeepSeek Chat" },
|
||||
{ id: "deepseek-reasoner", name: "DeepSeek Reasoner", supportsReasoning: true },
|
||||
{ id: "DeepSeek-R1", name: "DeepSeek R1", supportsReasoning: true },
|
||||
{ id: "DeepSeek-R1-Search", name: "DeepSeek R1 Search", supportsReasoning: true },
|
||||
{ id: "DeepSeek-V3.2", name: "DeepSeek V3.2" },
|
||||
{ id: "DeepSeek-Search", name: "DeepSeek Search" },
|
||||
],
|
||||
};
|
||||
68
open-sse/config/providers/registry/devin-cli/index.ts
Normal file
68
open-sse/config/providers/registry/devin-cli/index.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const devin_cliProvider: RegistryEntry = {
|
||||
id: "devin-cli",
|
||||
alias: "dv",
|
||||
format: "openai",
|
||||
executor: "devin-cli",
|
||||
baseUrl: "devin://acp/stdio",
|
||||
authType: "oauth",
|
||||
authHeader: "Authorization",
|
||||
authPrefix: "Bearer ",
|
||||
defaultContextLength: 200000,
|
||||
models: [
|
||||
// Cognition / SWE — default model family recommended for coding tasks
|
||||
{ id: "swe-1.6-fast", name: "SWE-1.6 Fast" },
|
||||
{ id: "swe-1.6", name: "SWE-1.6" },
|
||||
{ id: "swe-1.5-fast", name: "SWE-1.5 Fast" },
|
||||
{ id: "swe-1.5", name: "SWE-1.5" },
|
||||
// Claude Opus 4.7
|
||||
{ id: "claude-opus-4.7-max", name: "Claude Opus 4.7 Max", contextLength: 200000 },
|
||||
{ id: "claude-opus-4.7-high", name: "Claude Opus 4.7 High", contextLength: 200000 },
|
||||
{ id: "claude-opus-4.7-medium", name: "Claude Opus 4.7 Medium", contextLength: 200000 },
|
||||
{ id: "claude-opus-4.7-low", name: "Claude Opus 4.7 Low", contextLength: 200000 },
|
||||
// Claude Sonnet/Opus 4.6
|
||||
{
|
||||
id: "claude-sonnet-4.6-thinking-1m",
|
||||
name: "Claude Sonnet 4.6 Thinking 1M",
|
||||
contextLength: 1000000,
|
||||
},
|
||||
{
|
||||
id: "claude-sonnet-4.6-thinking",
|
||||
name: "Claude Sonnet 4.6 Thinking",
|
||||
contextLength: 200000,
|
||||
},
|
||||
{ id: "claude-sonnet-4.6", name: "Claude Sonnet 4.6", contextLength: 200000 },
|
||||
{ id: "claude-opus-4.6-thinking", name: "Claude Opus 4.6 Thinking", contextLength: 200000 },
|
||||
{ id: "claude-opus-4.6", name: "Claude Opus 4.6", contextLength: 200000 },
|
||||
// Claude 4.5
|
||||
{ id: "claude-sonnet-4.5", name: "Claude Sonnet 4.5", contextLength: 200000 },
|
||||
{ id: "claude-haiku-4.5", name: "Claude Haiku 4.5", contextLength: 200000 },
|
||||
// GPT-5.5
|
||||
{ id: "gpt-5.5-xhigh", name: "GPT-5.5 XHigh", contextLength: 200000 },
|
||||
{ id: "gpt-5.5-high", name: "GPT-5.5 High", contextLength: 200000 },
|
||||
{ id: "gpt-5.5-medium", name: "GPT-5.5 Medium", contextLength: 200000 },
|
||||
{ id: "gpt-5.5-low", name: "GPT-5.5 Low", contextLength: 200000 },
|
||||
// GPT-5.4
|
||||
{ id: "gpt-5.4-high", name: "GPT-5.4 High", contextLength: 200000 },
|
||||
{ id: "gpt-5.4-medium", name: "GPT-5.4 Medium", contextLength: 200000 },
|
||||
{ id: "gpt-5.4-low", name: "GPT-5.4 Low", contextLength: 200000 },
|
||||
// GPT-5.3 Codex
|
||||
{ id: "gpt-5.3-codex-high", name: "GPT-5.3 Codex High", contextLength: 200000 },
|
||||
{ id: "gpt-5.3-codex-medium", name: "GPT-5.3 Codex Medium", contextLength: 200000 },
|
||||
{ id: "gpt-5.3-codex-low", name: "GPT-5.3 Codex Low", contextLength: 200000 },
|
||||
// GPT-5.2
|
||||
{ id: "gpt-5.2-high", name: "GPT-5.2 High", contextLength: 200000 },
|
||||
{ id: "gpt-5.2-medium", name: "GPT-5.2 Medium", contextLength: 200000 },
|
||||
{ id: "gpt-5.2-low", name: "GPT-5.2 Low", contextLength: 200000 },
|
||||
// Gemini
|
||||
{ id: "gemini-3.1-pro-high", name: "Gemini 3.1 Pro High", contextLength: 1000000 },
|
||||
{ id: "gemini-3.1-pro-low", name: "Gemini 3.1 Pro Low", contextLength: 1000000 },
|
||||
{ id: "gemini-3.0-flash-high", name: "Gemini 3 Flash High", contextLength: 1000000 },
|
||||
{ id: "gemini-2.5-pro", name: "Gemini 2.5 Pro", contextLength: 1000000 },
|
||||
// Others
|
||||
{ id: "deepseek-v4", name: "DeepSeek V4", contextLength: 64000 },
|
||||
{ id: "kimi-k2.6", name: "Kimi K2.6", contextLength: 131000 },
|
||||
{ id: "glm-5.1", name: "GLM-5.1", contextLength: 128000 },
|
||||
],
|
||||
};
|
||||
12
open-sse/config/providers/registry/dify/index.ts
Normal file
12
open-sse/config/providers/registry/dify/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const difyProvider: RegistryEntry = {
|
||||
id: "dify",
|
||||
alias: "dify",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.dify.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "auto", name: "Auto" }],
|
||||
};
|
||||
12
open-sse/config/providers/registry/doubao/index.ts
Normal file
12
open-sse/config/providers/registry/doubao/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const doubaoProvider: RegistryEntry = {
|
||||
id: "doubao",
|
||||
alias: "doubao",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://ark.cn-beijing.volces.com/api/v3/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "doubao-pro-32k", name: "Doubao Pro 32K" }],
|
||||
};
|
||||
15
open-sse/config/providers/registry/doubao/web/index.ts
Normal file
15
open-sse/config/providers/registry/doubao/web/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
|
||||
export const doubao_webProvider: RegistryEntry = {
|
||||
id: "doubao-web",
|
||||
alias: "db",
|
||||
format: "openai",
|
||||
executor: "doubao-web",
|
||||
baseUrl: "https://www.doubao.com/api/chat",
|
||||
authType: "apikey",
|
||||
authHeader: "cookie",
|
||||
models: [
|
||||
{ id: "doubao-default", name: "Doubao Default" },
|
||||
{ id: "doubao-pro", name: "Doubao Pro" },
|
||||
],
|
||||
};
|
||||
19
open-sse/config/providers/registry/duckduckgo-web/index.ts
Normal file
19
open-sse/config/providers/registry/duckduckgo-web/index.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const duckduckgo_webProvider: RegistryEntry = {
|
||||
id: "duckduckgo-web",
|
||||
alias: "ddgw",
|
||||
format: "openai",
|
||||
executor: "duckduckgo-web",
|
||||
baseUrl: "https://duckduckgo.com/duckchat/v1/chat",
|
||||
authType: "none",
|
||||
authHeader: "none",
|
||||
models: [
|
||||
{ id: "gpt-4o-mini", name: "GPT-4o Mini" },
|
||||
{ id: "gpt-5-mini", name: "GPT-5 Mini" },
|
||||
{ id: "claude-3-5-haiku-20241022", name: "Claude 3.5 Haiku" },
|
||||
{ id: "llama-4-scout", name: "Llama 4 Scout" },
|
||||
{ id: "mistral-small-2501", name: "Mistral Small" },
|
||||
{ id: "o3-mini", name: "O3 Mini" },
|
||||
],
|
||||
};
|
||||
13
open-sse/config/providers/registry/featherless-ai/index.ts
Normal file
13
open-sse/config/providers/registry/featherless-ai/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const featherless_aiProvider: RegistryEntry = {
|
||||
id: "featherless-ai",
|
||||
alias: "featherless",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.featherless.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS["featherless-ai"],
|
||||
};
|
||||
35
open-sse/config/providers/registry/fireworks/index.ts
Normal file
35
open-sse/config/providers/registry/fireworks/index.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const fireworksProvider: RegistryEntry = {
|
||||
id: "fireworks",
|
||||
alias: "fireworks",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.fireworks.ai/inference/v1/chat/completions",
|
||||
modelsUrl:
|
||||
"https://api.fireworks.ai/v1/accounts/fireworks/models?filter=supports_serverless=true",
|
||||
modelIdPrefix: "accounts/fireworks/models/",
|
||||
acceptedModelIdPrefixes: ["accounts/fireworks/models/", "accounts/fireworks/routers/"],
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{
|
||||
id: "deepseek-v4-flash",
|
||||
name: "DeepSeek V4 Flash",
|
||||
supportsReasoning: true,
|
||||
},
|
||||
{
|
||||
id: "deepseek-v4-pro",
|
||||
name: "DeepSeek V4 Pro",
|
||||
supportsReasoning: true,
|
||||
},
|
||||
{ id: "glm-5p1", name: "GLM 5.1" },
|
||||
{ id: "gpt-oss-120b", name: "OpenAI gpt-oss-120b" },
|
||||
{ id: "gpt-oss-20b", name: "OpenAI gpt-oss-20b" },
|
||||
{ id: "kimi-k2p5", name: "Kimi K2.5" },
|
||||
{ id: "kimi-k2p6", name: "Kimi K2.6" },
|
||||
{ id: "minimax-m2p5", name: "MiniMax M2.5" },
|
||||
{ id: "minimax-m2p7", name: "MiniMax M2.7" },
|
||||
{ id: "qwen3p6-plus", name: "Qwen3.6 Plus" },
|
||||
],
|
||||
};
|
||||
38
open-sse/config/providers/registry/freeaiapikey/index.ts
Normal file
38
open-sse/config/providers/registry/freeaiapikey/index.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const freeaiapikeyProvider: RegistryEntry = {
|
||||
id: "freeaiapikey",
|
||||
alias: "faik",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://freeaiapikey.com/v1/chat/completions",
|
||||
modelsUrl: "https://freeaiapikey.com/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 128000,
|
||||
models: [
|
||||
{ id: "openai/gpt-5", name: "GPT-5 (via FreeAIAPIKey)", contextLength: 400000 },
|
||||
{ id: "openai/gpt-4o", name: "GPT-4o (via FreeAIAPIKey)" },
|
||||
{ id: "openai/gpt-5.2-codex", name: "GPT-5.2 Codex (via FreeAIAPIKey)" },
|
||||
{
|
||||
id: "anthropic/claude-opus-4.6",
|
||||
name: "Claude Opus 4.6 (via FreeAIAPIKey)",
|
||||
contextLength: 1000000,
|
||||
},
|
||||
{
|
||||
id: "anthropic/claude-sonnet-4.6",
|
||||
name: "Claude Sonnet 4.6 (via FreeAIAPIKey)",
|
||||
contextLength: 1000000,
|
||||
},
|
||||
{
|
||||
id: "Alibaba/qwen3.5",
|
||||
name: "Qwen 3.5 (via FreeAIAPIKey)",
|
||||
contextLength: 128000,
|
||||
},
|
||||
{
|
||||
id: "Alibaba/qwen3-vl:235b",
|
||||
name: "Qwen 3 VL 235B (via FreeAIAPIKey)",
|
||||
contextLength: 128000,
|
||||
},
|
||||
],
|
||||
};
|
||||
19
open-sse/config/providers/registry/freemodel-dev/index.ts
Normal file
19
open-sse/config/providers/registry/freemodel-dev/index.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const freemodel_devProvider: RegistryEntry = {
|
||||
id: "freemodel-dev",
|
||||
alias: "fmd",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.freemodel.dev/v1/chat/completions",
|
||||
modelsUrl: "https://api.freemodel.dev/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 128000,
|
||||
models: [
|
||||
{ id: "gpt-5.5", name: "GPT-5.5", contextLength: 400000 },
|
||||
{ id: "gpt-5.4", name: "GPT-5.4", contextLength: 400000 },
|
||||
{ id: "gpt-5.4-mini", name: "GPT-5.4 Mini" },
|
||||
{ id: "gpt-5.3-codex", name: "GPT-5.3 Codex" },
|
||||
],
|
||||
};
|
||||
13
open-sse/config/providers/registry/friendliai/index.ts
Normal file
13
open-sse/config/providers/registry/friendliai/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const friendliaiProvider: RegistryEntry = {
|
||||
id: "friendliai",
|
||||
alias: "friendli",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.friendli.ai/dedicated/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.friendliai,
|
||||
};
|
||||
13
open-sse/config/providers/registry/galadriel/index.ts
Normal file
13
open-sse/config/providers/registry/galadriel/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const galadrielProvider: RegistryEntry = {
|
||||
id: "galadriel",
|
||||
alias: "galadriel",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.galadriel.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.galadriel,
|
||||
};
|
||||
34
open-sse/config/providers/registry/gemini/cli/index.ts
Normal file
34
open-sse/config/providers/registry/gemini/cli/index.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
import { resolvePublicCred } from "../../../shared.ts";
|
||||
|
||||
export const gemini_cliProvider: RegistryEntry = {
|
||||
id: "gemini-cli",
|
||||
alias: "gemini-cli",
|
||||
format: "gemini-cli",
|
||||
executor: "gemini-cli",
|
||||
baseUrl: "https://cloudcode-pa.googleapis.com/v1internal",
|
||||
urlBuilder: (base, model, stream) => {
|
||||
const action = stream ? "streamGenerateContent?alt=sse" : "generateContent";
|
||||
return `${base}:${action}`;
|
||||
},
|
||||
authType: "apikey",
|
||||
authHeader: "x-goog-api-key",
|
||||
defaultContextLength: 1048576,
|
||||
oauth: {
|
||||
clientIdEnv: "GEMINI_CLI_OAUTH_CLIENT_ID",
|
||||
clientIdDefault: resolvePublicCred("gemini_id"),
|
||||
clientSecretEnv: "GEMINI_CLI_OAUTH_CLIENT_SECRET",
|
||||
clientSecretDefault: resolvePublicCred("gemini_alt"),
|
||||
},
|
||||
models: [
|
||||
{ id: "gemini-2.0-flash", name: "Gemini 2.0 Flash" },
|
||||
{ id: "gemini-2.0-flash-thinking", name: "Gemini 2.0 Flash Thinking" },
|
||||
{ id: "gemini-2.0-pro-exp-02-05", name: "Gemini 2.0 Pro Experimental" },
|
||||
{ id: "gemini-1.5-pro", name: "Gemini 1.5 Pro" },
|
||||
{ id: "gemini-1.5-flash", name: "Gemini 1.5 Flash" },
|
||||
{ id: "gemini-3.1-pro-preview", name: "Gemini 3.1 Pro Preview" },
|
||||
{ id: "gemini-3.1-pro-preview-customtools", name: "Gemini 3.1 Pro Preview Custom Tools" },
|
||||
{ id: "gemini-3-flash-preview", name: "Gemini 3 Flash Preview" },
|
||||
{ id: "gemini-3.1-flash-lite-preview", name: "Gemini 3.1 Flash Lite" },
|
||||
],
|
||||
};
|
||||
76
open-sse/config/providers/registry/gemini/index.ts
Normal file
76
open-sse/config/providers/registry/gemini/index.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { resolvePublicCred } from "../../shared.ts";
|
||||
|
||||
export const geminiProvider: RegistryEntry = {
|
||||
id: "gemini",
|
||||
alias: "gemini",
|
||||
format: "gemini",
|
||||
executor: "default",
|
||||
baseUrl: "https://generativelanguage.googleapis.com/v1beta/models",
|
||||
urlBuilder: (base, model, stream) => {
|
||||
const action = stream ? "streamGenerateContent?alt=sse" : "generateContent";
|
||||
return `${base}/${model}:${action}`;
|
||||
},
|
||||
authType: "apikey",
|
||||
authHeader: "x-goog-api-key",
|
||||
defaultContextLength: 1048576,
|
||||
oauth: {
|
||||
clientIdEnv: "GEMINI_OAUTH_CLIENT_ID",
|
||||
clientIdDefault: resolvePublicCred("gemini_id"),
|
||||
clientSecretEnv: "GEMINI_OAUTH_CLIENT_SECRET",
|
||||
clientSecretDefault: resolvePublicCred("gemini_alt"),
|
||||
},
|
||||
models: [
|
||||
{ id: "gemini-2.0-flash", name: "Gemini 2.0 Flash", toolCalling: true, supportsVision: true },
|
||||
{
|
||||
id: "gemini-3.1-pro-preview",
|
||||
name: "Gemini 3.1 Pro Preview",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
},
|
||||
{
|
||||
id: "gemini-3-flash-preview",
|
||||
name: "Gemini 3 Flash Preview",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
},
|
||||
{
|
||||
id: "gemini-3.1-flash-lite-preview",
|
||||
name: "Gemini 3.1 Flash Lite Preview",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
},
|
||||
{
|
||||
id: "gemini-3.5-flash",
|
||||
name: "Gemini 3.5 Flash",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
},
|
||||
{ id: "gemini-2.5-pro", name: "Gemini 2.5 Pro", toolCalling: true, supportsVision: true },
|
||||
{
|
||||
id: "gemini-2.5-flash",
|
||||
name: "Gemini 2.5 Flash",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
},
|
||||
{
|
||||
id: "gemini-2.5-flash-lite",
|
||||
name: "Gemini 2.5 Flash Lite",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
},
|
||||
{
|
||||
id: "gemini-2.0-flash-thinking-exp-01-21",
|
||||
name: "Gemini 2.0 Flash Thinking",
|
||||
supportsReasoning: true,
|
||||
},
|
||||
{
|
||||
id: "gemini-2.0-pro-exp-02-05",
|
||||
name: "Gemini 2.0 Pro Experimental",
|
||||
toolCalling: true,
|
||||
supportsVision: true,
|
||||
},
|
||||
{ id: "gemini-1.5-pro", name: "Gemini 1.5 Pro", toolCalling: true, supportsVision: true },
|
||||
{ id: "gemini-1.5-flash", name: "Gemini 1.5 Flash", toolCalling: true, supportsVision: true },
|
||||
],
|
||||
};
|
||||
19
open-sse/config/providers/registry/gemini/web/index.ts
Normal file
19
open-sse/config/providers/registry/gemini/web/index.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
|
||||
export const gemini_webProvider: RegistryEntry = {
|
||||
id: "gemini-web",
|
||||
alias: "gweb",
|
||||
format: "openai",
|
||||
executor: "gemini-web",
|
||||
baseUrl: "https://gemini.google.com/app",
|
||||
authType: "apikey",
|
||||
authHeader: "cookie",
|
||||
models: [
|
||||
{ id: "gemini-2.5-pro", name: "Gemini 2.5 Pro" },
|
||||
{ id: "gemini-2.5-flash", name: "Gemini 2.5 Flash" },
|
||||
{ id: "gemini-2.0-pro", name: "Gemini 2.0 Pro" },
|
||||
{ id: "gemini-2.0-flash", name: "Gemini 2.0 Flash" },
|
||||
{ id: "gemini-1.5-pro", name: "Gemini 1.5 Pro" },
|
||||
{ id: "gemini-1.5-flash", name: "Gemini 1.5 Flash" },
|
||||
],
|
||||
};
|
||||
13
open-sse/config/providers/registry/gigachat/index.ts
Normal file
13
open-sse/config/providers/registry/gigachat/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const gigachatProvider: RegistryEntry = {
|
||||
id: "gigachat",
|
||||
alias: "gigachat",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://gigachat.devices.sberbank.ru/api/v1",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.gigachat,
|
||||
};
|
||||
71
open-sse/config/providers/registry/github/index.ts
Normal file
71
open-sse/config/providers/registry/github/index.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { GPT_5_5_CODEX_CAPABILITIES, getGitHubCopilotChatHeaders } from "../../shared.ts";
|
||||
|
||||
export const githubProvider: RegistryEntry = {
|
||||
id: "github",
|
||||
alias: "gh",
|
||||
format: "openai",
|
||||
executor: "github",
|
||||
baseUrl: "https://api.githubcopilot.com/chat/completions",
|
||||
responsesBaseUrl: "https://api.githubcopilot.com/responses",
|
||||
authType: "oauth",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 128000,
|
||||
headers: getGitHubCopilotChatHeaders(),
|
||||
models: [
|
||||
{ id: "gpt-5-mini", name: "GPT-5 Mini", targetFormat: "openai-responses" },
|
||||
{ id: "gpt-5.3-codex", name: "GPT-5.3 Codex", targetFormat: "openai-responses" },
|
||||
{ id: "gpt-5.4-mini", name: "GPT-5.4 Mini", targetFormat: "openai-responses" },
|
||||
{
|
||||
id: "gpt-5.4",
|
||||
name: "GPT-5.4",
|
||||
targetFormat: "openai-responses",
|
||||
supportsXHighEffort: true,
|
||||
},
|
||||
{ id: "gpt-5.5", name: "GPT-5.5", ...GPT_5_5_CODEX_CAPABILITIES },
|
||||
{
|
||||
id: "claude-haiku-4.5",
|
||||
name: "Claude Haiku 4.5",
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 64000,
|
||||
},
|
||||
{
|
||||
id: "claude-sonnet-4.5",
|
||||
name: "Claude Sonnet 4.5",
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 64000,
|
||||
},
|
||||
{
|
||||
id: "claude-sonnet-4.6",
|
||||
name: "Claude Sonnet 4.6",
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 64000,
|
||||
},
|
||||
{
|
||||
// #2911: GitHub Copilot's Responses API does not serve Claude/Gemini —
|
||||
// route them via chat/completions (provider default) like claude-opus-4.6.
|
||||
id: "claude-opus-4-5-20251101",
|
||||
name: "Claude Opus 4.5 (Full ID)",
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 64000,
|
||||
},
|
||||
{
|
||||
id: "claude-opus-4.6",
|
||||
name: "Claude Opus 4.6",
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
// #2911: Claude on Copilot must use chat/completions, not the Responses API.
|
||||
id: "claude-opus-4.7",
|
||||
name: "Claude Opus 4.7",
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
// #2911: Gemini on Copilot must use chat/completions, not the Responses API.
|
||||
{ id: "gemini-3.1-pro-preview", name: "Gemini 3.1 Pro" },
|
||||
{ id: "gemini-3-flash-preview", name: "Gemini 3 Flash" },
|
||||
{ id: "oswe-vscode-prime", name: "Raptor Mini", targetFormat: "openai-responses" },
|
||||
//{ id: "?", name: "Goldeneye" },
|
||||
],
|
||||
};
|
||||
38
open-sse/config/providers/registry/github/models/index.ts
Normal file
38
open-sse/config/providers/registry/github/models/index.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
|
||||
export const github_modelsProvider: RegistryEntry = {
|
||||
id: "github-models",
|
||||
alias: "ghm",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://models.github.ai/inference/chat/completions",
|
||||
modelsUrl: "https://models.github.ai/inference/models",
|
||||
authType: "apikey",
|
||||
authHeader: "Authorization",
|
||||
authPrefix: "Bearer",
|
||||
headers: {
|
||||
"X-GitHub-Api-Version": "2022-11-28",
|
||||
Accept: "application/vnd.github+json",
|
||||
},
|
||||
defaultContextLength: 128000,
|
||||
models: [
|
||||
{ id: "openai/gpt-4.1", name: "GPT-4.1 (Free)", contextLength: 1047576 },
|
||||
{ id: "openai/gpt-4o", name: "GPT-4o (Free)", contextLength: 128000 },
|
||||
{ id: "openai/gpt-4o-mini", name: "GPT-4o Mini (Free)", contextLength: 128000 },
|
||||
{ id: "openai/o1", name: "o1 (Free)", contextLength: 200000 },
|
||||
{ id: "openai/o3", name: "o3 (Free)", contextLength: 200000 },
|
||||
{ id: "openai/o4-mini", name: "o4-mini (Free)", contextLength: 200000 },
|
||||
{ id: "deepseek/DeepSeek-R1", name: "DeepSeek R1 (Free)", contextLength: 131072 },
|
||||
{
|
||||
id: "meta/Llama-4-Maverick-17B-128E-Instruct",
|
||||
name: "Llama 4 Maverick (Free)",
|
||||
contextLength: 131072,
|
||||
},
|
||||
{ id: "xai/grok-3", name: "Grok 3 (Free)", contextLength: 131072 },
|
||||
{ id: "mistral-ai/Mistral-Medium-3", name: "Mistral Medium 3 (Free)", contextLength: 128000 },
|
||||
{ id: "cohere/Cohere-command-a", name: "Cohere Command A (Free)", contextLength: 128000 },
|
||||
{ id: "microsoft/Phi-4", name: "Phi-4 (Free)", contextLength: 16384 },
|
||||
{ id: "openai/text-embedding-3-large", name: "Text Embedding 3 Large (Free)" },
|
||||
{ id: "openai/text-embedding-3-small", name: "Text Embedding 3 Small (Free)" },
|
||||
],
|
||||
};
|
||||
29
open-sse/config/providers/registry/gitlab-duo/index.ts
Normal file
29
open-sse/config/providers/registry/gitlab-duo/index.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { buildGitLabOAuthEndpoints, GITLAB_DUO_DEFAULT_BASE_URL } from "../../shared.ts";
|
||||
|
||||
export const gitlab_duoProvider: RegistryEntry = {
|
||||
id: "gitlab-duo",
|
||||
alias: "gld",
|
||||
format: "openai",
|
||||
executor: "gitlab",
|
||||
// baseUrl is dynamic: resolved at request time from providerSpecificData.baseUrl
|
||||
// by GitlabExecutor.buildUrl() via buildGitLabOAuthEndpoints().
|
||||
// The default here keeps the PROVIDERS map non-null so refreshAccessToken()
|
||||
// can look up this provider.
|
||||
baseUrl: buildGitLabOAuthEndpoints(GITLAB_DUO_DEFAULT_BASE_URL).publicCompletionsUrl,
|
||||
authType: "oauth",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 128000,
|
||||
oauth: {
|
||||
clientIdEnv: "GITLAB_DUO_OAUTH_CLIENT_ID",
|
||||
clientIdDefault: process.env.GITLAB_OAUTH_CLIENT_ID || "",
|
||||
clientSecretEnv: "GITLAB_DUO_OAUTH_CLIENT_SECRET",
|
||||
clientSecretDefault: process.env.GITLAB_OAUTH_CLIENT_SECRET || "",
|
||||
tokenUrl: buildGitLabOAuthEndpoints(GITLAB_DUO_DEFAULT_BASE_URL).tokenUrl,
|
||||
authUrl: buildGitLabOAuthEndpoints(GITLAB_DUO_DEFAULT_BASE_URL).authorizeUrl,
|
||||
},
|
||||
models: [
|
||||
{ id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6 (GitLab Duo)" },
|
||||
{ id: "claude-haiku-4-5", name: "Claude Haiku 4.5 (GitLab Duo)" },
|
||||
],
|
||||
};
|
||||
19
open-sse/config/providers/registry/gitlawb/gmi/index.ts
Normal file
19
open-sse/config/providers/registry/gitlawb/gmi/index.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../../shared.ts";
|
||||
|
||||
export const gitlawb_gmiProvider: RegistryEntry = {
|
||||
id: "gitlawb-gmi",
|
||||
alias: "glb-gmi",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://opengateway.gitlawb.com/v1/gmi-cloud",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
headers: {
|
||||
"User-Agent": "OpenClaude/1.0 (linux; x86_64)",
|
||||
"X-Title": "OpenClaude CLI",
|
||||
"HTTP-Referer": "https://github.com/Gitlawb/openclaude",
|
||||
},
|
||||
passthroughModels: true,
|
||||
models: CHAT_OPENAI_COMPAT_MODELS["gitlawb-gmi"],
|
||||
};
|
||||
18
open-sse/config/providers/registry/gitlawb/index.ts
Normal file
18
open-sse/config/providers/registry/gitlawb/index.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const gitlawbProvider: RegistryEntry = {
|
||||
id: "gitlawb",
|
||||
alias: "glb",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://opengateway.gitlawb.com/v1/xiaomi-mimo",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
headers: {
|
||||
"User-Agent": "OpenClaude/1.0 (linux; x86_64)",
|
||||
"X-Title": "OpenClaude CLI",
|
||||
"HTTP-Referer": "https://github.com/Gitlawb/openclaude",
|
||||
},
|
||||
models: CHAT_OPENAI_COMPAT_MODELS["gitlawb"],
|
||||
};
|
||||
12
open-sse/config/providers/registry/glhf/index.ts
Normal file
12
open-sse/config/providers/registry/glhf/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const glhfProvider: RegistryEntry = {
|
||||
id: "glhf",
|
||||
alias: "glhf",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.laf.run/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "deepseek-7b-chat", name: "DeepSeek 7B Chat" }],
|
||||
};
|
||||
17
open-sse/config/providers/registry/glm/cn/index.ts
Normal file
17
open-sse/config/providers/registry/glm/cn/index.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
import { GLM_REQUEST_DEFAULTS, GLM_TIMEOUT_MS, GLM_SHARED_MODELS } from "../../../shared.ts";
|
||||
|
||||
export const glm_cnProvider: RegistryEntry = {
|
||||
id: "glm-cn",
|
||||
alias: "glmcn",
|
||||
format: "openai",
|
||||
executor: "glm",
|
||||
baseUrl: "https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 200000,
|
||||
requestDefaults: GLM_REQUEST_DEFAULTS,
|
||||
timeoutMs: GLM_TIMEOUT_MS,
|
||||
models: [...GLM_SHARED_MODELS],
|
||||
passthroughModels: true,
|
||||
};
|
||||
16
open-sse/config/providers/registry/glm/index.ts
Normal file
16
open-sse/config/providers/registry/glm/index.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { GLM_REQUEST_DEFAULTS, GLM_TIMEOUT_MS, GLM_SHARED_MODELS } from "../../shared.ts";
|
||||
|
||||
export const glmProvider: RegistryEntry = {
|
||||
id: "glm",
|
||||
alias: "glm",
|
||||
format: "openai",
|
||||
executor: "glm",
|
||||
baseUrl: "https://api.z.ai/api/coding/paas/v4/chat/completions",
|
||||
defaultContextLength: 200000,
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
requestDefaults: GLM_REQUEST_DEFAULTS,
|
||||
timeoutMs: GLM_TIMEOUT_MS,
|
||||
models: [...GLM_SHARED_MODELS],
|
||||
};
|
||||
16
open-sse/config/providers/registry/glm/t/index.ts
Normal file
16
open-sse/config/providers/registry/glm/t/index.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
import { GLMT_REQUEST_DEFAULTS, GLMT_TIMEOUT_MS, GLM_SHARED_MODELS } from "../../../shared.ts";
|
||||
|
||||
export const glmtProvider: RegistryEntry = {
|
||||
id: "glmt",
|
||||
alias: "glmt",
|
||||
format: "openai",
|
||||
executor: "glm",
|
||||
baseUrl: "https://api.z.ai/api/coding/paas/v4/chat/completions",
|
||||
defaultContextLength: 200000,
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
requestDefaults: GLMT_REQUEST_DEFAULTS,
|
||||
timeoutMs: GLMT_TIMEOUT_MS,
|
||||
models: [...GLM_SHARED_MODELS],
|
||||
};
|
||||
18
open-sse/config/providers/registry/grok-web/index.ts
Normal file
18
open-sse/config/providers/registry/grok-web/index.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const grok_webProvider: RegistryEntry = {
|
||||
id: "grok-web",
|
||||
alias: "gw",
|
||||
format: "openai",
|
||||
executor: "grok-web",
|
||||
baseUrl: "https://grok.com/rest/app-chat/conversations/new",
|
||||
authType: "apikey",
|
||||
authHeader: "cookie",
|
||||
passthroughModels: true,
|
||||
models: [
|
||||
{ id: "fast", name: "Grok 4.20", toolCalling: true },
|
||||
{ id: "expert", name: "Grok 4.20 Thinking", toolCalling: true },
|
||||
{ id: "heavy", name: "Grok 4.20 Multi Agent", toolCalling: true },
|
||||
{ id: "grok-420-computer-use-sa", name: "Grok 4.3 (Beta)", toolCalling: true },
|
||||
],
|
||||
};
|
||||
23
open-sse/config/providers/registry/groq/index.ts
Normal file
23
open-sse/config/providers/registry/groq/index.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const groqProvider: RegistryEntry = {
|
||||
id: "groq",
|
||||
alias: "groq",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.groq.com/openai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
// Non-reasoning Llama models: Groq returns HTTP 400 if reasoning_effort is sent (#3258).
|
||||
{
|
||||
id: "meta-llama/llama-4-scout-17b-16e-instruct",
|
||||
name: "Llama 4 Scout",
|
||||
supportsReasoning: false,
|
||||
},
|
||||
{ id: "llama-3.3-70b-versatile", name: "Llama 3.3 70B", supportsReasoning: false },
|
||||
{ id: "openai/gpt-oss-120b", name: "GPT-OSS 120B" },
|
||||
{ id: "openai/gpt-oss-20b", name: "GPT-OSS 20B" },
|
||||
{ id: "qwen/qwen3-32b", name: "Qwen3 32B" },
|
||||
],
|
||||
};
|
||||
19
open-sse/config/providers/registry/hackclub/index.ts
Normal file
19
open-sse/config/providers/registry/hackclub/index.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const hackclubProvider: RegistryEntry = {
|
||||
id: "hackclub",
|
||||
alias: "hc",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://ai.hackclub.com/proxy/v1/chat/completions",
|
||||
modelsUrl: "https://ai.hackclub.com/proxy/v1/models",
|
||||
authType: "optional",
|
||||
authHeader: "bearer",
|
||||
passthroughModels: true,
|
||||
defaultContextLength: 128000,
|
||||
models: [
|
||||
{ id: "meta-llama/llama-3.3-70b-instruct", name: "Llama 3.3 70B" },
|
||||
{ id: "mistralai/mistral-7b-instruct", name: "Mistral 7B" },
|
||||
{ id: "deepseek-ai/deepseek-coder-33b", name: "DeepSeek Coder 33B" },
|
||||
],
|
||||
};
|
||||
15
open-sse/config/providers/registry/haiper/index.ts
Normal file
15
open-sse/config/providers/registry/haiper/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const haiperProvider: RegistryEntry = {
|
||||
id: "haiper",
|
||||
alias: "hp",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.haiper.ai/v1",
|
||||
authType: "apikey",
|
||||
authHeader: "HAIPER_KEY",
|
||||
models: [
|
||||
{ id: "gen2", name: "Gen 2 Video" },
|
||||
{ id: "gen2-image", name: "Gen 2 Image" },
|
||||
],
|
||||
};
|
||||
13
open-sse/config/providers/registry/heroku/index.ts
Normal file
13
open-sse/config/providers/registry/heroku/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const herokuProvider: RegistryEntry = {
|
||||
id: "heroku",
|
||||
alias: "heroku",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://us.inference.heroku.com/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.heroku,
|
||||
};
|
||||
19
open-sse/config/providers/registry/huggingchat/index.ts
Normal file
19
open-sse/config/providers/registry/huggingchat/index.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const huggingchatProvider: RegistryEntry = {
|
||||
id: "huggingchat",
|
||||
// Distinct alias: "hc" belongs to the hackclub provider; huggingchat is
|
||||
// addressed by its own id to avoid the alias collision.
|
||||
alias: "huggingchat",
|
||||
format: "openai",
|
||||
executor: "huggingchat",
|
||||
baseUrl: "https://huggingface.co/chat/conversation",
|
||||
authType: "apikey",
|
||||
authHeader: "cookie",
|
||||
models: [
|
||||
{ id: "meta-llama/Llama-3.3-70B-Instruct", name: "Llama 3.3 70B" },
|
||||
{ id: "Qwen/Qwen2.5-72B-Instruct", name: "Qwen 2.5 72B" },
|
||||
{ id: "mistralai/Mistral-Small-24B-Instruct-2501", name: "Mistral Small 24B" },
|
||||
{ id: "deepseek-ai/DeepSeek-R1", name: "DeepSeek R1" },
|
||||
],
|
||||
};
|
||||
20
open-sse/config/providers/registry/huggingface/index.ts
Normal file
20
open-sse/config/providers/registry/huggingface/index.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const huggingfaceProvider: RegistryEntry = {
|
||||
id: "huggingface",
|
||||
alias: "hf",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://router.huggingface.co/v1/chat/completions",
|
||||
modelsUrl: "https://router.huggingface.co/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "meta-llama/llama-3.1-8b-instruct", name: "Llama 3.1 8B" },
|
||||
{ id: "meta-llama/llama-3.2-11b-instruct", name: "Llama 3.2 11B" },
|
||||
{ id: "mistralai/mistral-7b-instruct", name: "Mistral 7B" },
|
||||
{ id: "google/gemma-2-9b-it", name: "Gemma 2 9B" },
|
||||
{ id: "Qwen/Qwen2.5-7B-Instruct", name: "Qwen 2.5 7B" },
|
||||
{ id: "deepseek-ai/DeepSeek-V3", name: "DeepSeek V3" },
|
||||
],
|
||||
};
|
||||
21
open-sse/config/providers/registry/hyperbolic/index.ts
Normal file
21
open-sse/config/providers/registry/hyperbolic/index.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const hyperbolicProvider: RegistryEntry = {
|
||||
id: "hyperbolic",
|
||||
alias: "hyp",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.hyperbolic.xyz/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "Qwen/QwQ-32B", name: "QwQ 32B" },
|
||||
{ id: "deepseek-ai/DeepSeek-R1", name: "DeepSeek R1" },
|
||||
{ id: "deepseek-ai/DeepSeek-V3", name: "DeepSeek V3" },
|
||||
{ id: "meta-llama/Llama-3.3-70B-Instruct", name: "Llama 3.3 70B" },
|
||||
{ id: "meta-llama/Llama-3.2-3B-Instruct", name: "Llama 3.2 3B" },
|
||||
{ id: "Qwen/Qwen2.5-72B-Instruct", name: "Qwen 2.5 72B" },
|
||||
{ id: "Qwen/Qwen2.5-Coder-32B-Instruct", name: "Qwen 2.5 Coder 32B" },
|
||||
{ id: "NousResearch/Hermes-3-Llama-3.1-70B", name: "Hermes 3 70B" },
|
||||
],
|
||||
};
|
||||
15
open-sse/config/providers/registry/ideogram/index.ts
Normal file
15
open-sse/config/providers/registry/ideogram/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const ideogramProvider: RegistryEntry = {
|
||||
id: "ideogram",
|
||||
alias: "ideo",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.ideogram.ai",
|
||||
authType: "apikey",
|
||||
authHeader: "Api-Key",
|
||||
models: [
|
||||
{ id: "V_3", name: "Ideogram V3" },
|
||||
{ id: "V_2A", name: "Ideogram V2A" },
|
||||
],
|
||||
};
|
||||
12
open-sse/config/providers/registry/iflytek/index.ts
Normal file
12
open-sse/config/providers/registry/iflytek/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const iflytekProvider: RegistryEntry = {
|
||||
id: "iflytek",
|
||||
alias: "iflytek",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://spark-api.xf-yun.com/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "generalv3.5", name: "General V3.5" }],
|
||||
};
|
||||
12
open-sse/config/providers/registry/inclusionai/index.ts
Normal file
12
open-sse/config/providers/registry/inclusionai/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const inclusionaiProvider: RegistryEntry = {
|
||||
id: "inclusionai",
|
||||
alias: "inclusionai",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.inclusionai.tech/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "inclusion-model", name: "Inclusion Model" }],
|
||||
};
|
||||
13
open-sse/config/providers/registry/inference-net/index.ts
Normal file
13
open-sse/config/providers/registry/inference-net/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const inference_netProvider: RegistryEntry = {
|
||||
id: "inference-net",
|
||||
alias: "inet",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.inference.net/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS["inference-net"],
|
||||
};
|
||||
43
open-sse/config/providers/registry/inner-ai/index.ts
Normal file
43
open-sse/config/providers/registry/inner-ai/index.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const inner_aiProvider: RegistryEntry = {
|
||||
id: "inner-ai",
|
||||
alias: "in-ai",
|
||||
format: "openai",
|
||||
executor: "inner-ai",
|
||||
baseUrl: "https://chatapi.innerai.com/chat",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
// OpenAI
|
||||
{ id: "gpt-4o", name: "GPT-4o (via Inner.ai)" },
|
||||
{ id: "gpt-4.1", name: "GPT-4.1 (via Inner.ai)" },
|
||||
{ id: "gpt-4.1-mini", name: "GPT-4.1 Mini (via Inner.ai)" },
|
||||
{ id: "o3", name: "o3 (via Inner.ai)", supportsReasoning: true },
|
||||
{ id: "o4-mini", name: "o4-mini (via Inner.ai)", supportsReasoning: true },
|
||||
// Anthropic
|
||||
{ id: "claude-opus-4-5", name: "Claude Opus 4.5 (via Inner.ai)" },
|
||||
{ id: "claude-sonnet-4-5", name: "Claude Sonnet 4.5 (via Inner.ai)" },
|
||||
{ id: "claude-3-7-sonnet-20250219", name: "Claude 3.7 Sonnet (via Inner.ai)" },
|
||||
{ id: "claude-3-5-sonnet-20241022", name: "Claude 3.5 Sonnet (via Inner.ai)" },
|
||||
// Google
|
||||
{ id: "gemini-2.5-pro", name: "Gemini 2.5 Pro (via Inner.ai)" },
|
||||
{ id: "gemini-2.5-flash", name: "Gemini 2.5 Flash (via Inner.ai)" },
|
||||
{ id: "gemini-2.0-flash", name: "Gemini 2.0 Flash (via Inner.ai)" },
|
||||
// DeepSeek
|
||||
{
|
||||
id: "deepseek-r1",
|
||||
name: "DeepSeek R1 (via Inner.ai)",
|
||||
supportsReasoning: true,
|
||||
},
|
||||
{ id: "deepseek-v3", name: "DeepSeek V3 (via Inner.ai)" },
|
||||
// xAI
|
||||
{ id: "grok-3", name: "Grok 3 (via Inner.ai)" },
|
||||
{ id: "grok-3-mini", name: "Grok 3 Mini (via Inner.ai)", supportsReasoning: true },
|
||||
// Meta
|
||||
{ id: "llama-4-maverick", name: "Llama 4 Maverick (via Inner.ai)" },
|
||||
{ id: "llama-3.3-70b-instruct", name: "Llama 3.3 70B (via Inner.ai)" },
|
||||
// Mistral
|
||||
{ id: "mistral-large-2411", name: "Mistral Large (via Inner.ai)" },
|
||||
],
|
||||
};
|
||||
23
open-sse/config/providers/registry/kie/index.ts
Normal file
23
open-sse/config/providers/registry/kie/index.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const kieProvider: RegistryEntry = {
|
||||
id: "kie",
|
||||
alias: "kie",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.kie.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 128000,
|
||||
models: [
|
||||
{ id: "claude-opus-4-7", name: "Claude 4.7 Opus" },
|
||||
{ id: "claude-sonnet-4-6", name: "Claude 4.6 Sonnet" },
|
||||
{ id: "claude-haiku-4-5", name: "Claude 4.5 Haiku" },
|
||||
{ id: "gpt-5-5", name: "GPT 5.5" },
|
||||
{ id: "gpt-5-4", name: "GPT 5.4" },
|
||||
{ id: "gpt-5-2", name: "GPT 5.2" },
|
||||
{ id: "gemini-3-1-pro", name: "Gemini 3.1 Pro" },
|
||||
{ id: "gemini-2-5-pro", name: "Gemini 2.5 Pro" },
|
||||
{ id: "gemini-3-flash", name: "Gemini 3 Flash" },
|
||||
],
|
||||
};
|
||||
21
open-sse/config/providers/registry/kilo-gateway/index.ts
Normal file
21
open-sse/config/providers/registry/kilo-gateway/index.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const kilo_gatewayProvider: RegistryEntry = {
|
||||
id: "kilo-gateway",
|
||||
alias: "kg",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.kilo.ai/api/gateway/chat/completions",
|
||||
modelsUrl: "https://api.kilo.ai/api/gateway/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "kilo-auto/frontier", name: "Kilo Auto Frontier" },
|
||||
{ id: "kilo-auto/balanced", name: "Kilo Auto Balanced" },
|
||||
{ id: "kilo-auto/free", name: "Kilo Auto Free" },
|
||||
{ id: "nvidia/nemotron-3-super-120b-a12b:free", name: "Nemotron 3 Super 120B (Free)" },
|
||||
{ id: "minimax/minimax-m2.5:free", name: "MiniMax M2.5 (Free)" },
|
||||
{ id: "arcee-ai/trinity-large-preview:free", name: "Trinity Large Preview (Free)" },
|
||||
],
|
||||
passthroughModels: true,
|
||||
};
|
||||
34
open-sse/config/providers/registry/kilocode/index.ts
Normal file
34
open-sse/config/providers/registry/kilocode/index.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const kilocodeProvider: RegistryEntry = {
|
||||
id: "kilocode",
|
||||
alias: "kc",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.kilo.ai/api/openrouter/chat/completions",
|
||||
modelsUrl: "https://api.kilo.ai/api/openrouter/models",
|
||||
authType: "oauth",
|
||||
authHeader: "Authorization",
|
||||
authPrefix: "Bearer ",
|
||||
oauth: {
|
||||
initiateUrl: "https://api.kilo.ai/api/device-auth/codes",
|
||||
pollUrlBase: "https://api.kilo.ai/api/device-auth/codes",
|
||||
},
|
||||
models: [
|
||||
{ id: "openrouter/free", name: "Free Models Router" },
|
||||
{ id: "qwen/qwen3.6-plus", name: "Qwen3.6 Plus" },
|
||||
{ id: "qwen/qwen3.5-397b-a17b", name: "Qwen3.5 397B A17B" },
|
||||
{ id: "openai/gpt-5.5", name: "GPT-5.5" },
|
||||
{ id: "openai/gpt-5.4-mini", name: "GPT-5.4 Mini" },
|
||||
{ id: "anthropic/claude-opus-4.7", name: "Claude Opus 4.7" },
|
||||
{ id: "anthropic/claude-sonnet-4.6", name: "Claude Sonnet 4.6" },
|
||||
{ id: "anthropic/claude-haiku-4.5", name: "Claude Haiku 4.5" },
|
||||
{ id: "google/gemini-3.1-pro-preview", name: "Gemini 3.1 Pro" },
|
||||
{ id: "google/gemini-3-flash-preview", name: "Gemini 3 Flash" },
|
||||
{ id: "google/gemini-3.1-flash-lite", name: "Gemini 3.1 Flash Lite" },
|
||||
{ id: "deepseek/deepseek-v4-pro", name: "DeepSeek V4 Pro", supportsReasoning: true },
|
||||
{ id: "deepseek/deepseek-v4-flash", name: "DeepSeek V4 Flash", supportsReasoning: true },
|
||||
{ id: "moonshotai/kimi-k2.6", name: "Kimi K2.6" },
|
||||
],
|
||||
passthroughModels: true,
|
||||
};
|
||||
@@ -0,0 +1,9 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
import { KIMI_CODING_SHARED } from "../../../shared.ts";
|
||||
|
||||
export const kimi_coding_apikeyProvider: RegistryEntry = {
|
||||
id: "kimi-coding-apikey",
|
||||
alias: "kmca",
|
||||
...KIMI_CODING_SHARED,
|
||||
authType: "apikey",
|
||||
};
|
||||
17
open-sse/config/providers/registry/kimi/coding/index.ts
Normal file
17
open-sse/config/providers/registry/kimi/coding/index.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
import { KIMI_CODING_SHARED, resolvePublicCred } from "../../../shared.ts";
|
||||
|
||||
export const kimi_codingProvider: RegistryEntry = {
|
||||
id: "kimi-coding",
|
||||
alias: "kmc",
|
||||
...KIMI_CODING_SHARED,
|
||||
urlSuffix: "?beta=true",
|
||||
authType: "oauth",
|
||||
oauth: {
|
||||
clientIdEnv: "KIMI_CODING_OAUTH_CLIENT_ID",
|
||||
clientIdDefault: resolvePublicCred("kimi_id"),
|
||||
tokenUrl: "https://auth.kimi.com/api/oauth/token",
|
||||
refreshUrl: "https://auth.kimi.com/api/oauth/token",
|
||||
authUrl: "https://auth.kimi.com/api/oauth/device_authorization",
|
||||
},
|
||||
};
|
||||
15
open-sse/config/providers/registry/kimi/index.ts
Normal file
15
open-sse/config/providers/registry/kimi/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const kimiProvider: RegistryEntry = {
|
||||
id: "kimi",
|
||||
alias: "kimi",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.moonshot.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "kimi-k2.6", name: "Kimi K2.6" },
|
||||
{ id: "kimi-k2.5", name: "Kimi K2.5" },
|
||||
],
|
||||
};
|
||||
17
open-sse/config/providers/registry/kimi/web/index.ts
Normal file
17
open-sse/config/providers/registry/kimi/web/index.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
|
||||
export const kimi_webProvider: RegistryEntry = {
|
||||
id: "kimi-web",
|
||||
// Distinct alias: the primary "kimi" provider (dedicated KimiExecutor) keeps
|
||||
// the short "kimi" alias; this web/cookie variant is addressed by its own id.
|
||||
alias: "kimi-web",
|
||||
format: "openai",
|
||||
executor: "kimi-web",
|
||||
baseUrl: "https://kimi.moonshot.cn/api/chat",
|
||||
authType: "apikey",
|
||||
authHeader: "cookie",
|
||||
models: [
|
||||
{ id: "kimi-default", name: "Kimi Default" },
|
||||
{ id: "kimi-128k", name: "Kimi 128K (Long Context)" },
|
||||
],
|
||||
};
|
||||
69
open-sse/config/providers/registry/kiro/index.ts
Normal file
69
open-sse/config/providers/registry/kiro/index.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { getKiroServiceHeaders } from "../../shared.ts";
|
||||
|
||||
export const kiroProvider: RegistryEntry = {
|
||||
id: "kiro",
|
||||
alias: "kr",
|
||||
format: "kiro",
|
||||
executor: "kiro",
|
||||
baseUrl: "https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",
|
||||
authType: "oauth",
|
||||
authHeader: "bearer",
|
||||
defaultContextLength: 200000,
|
||||
headers: getKiroServiceHeaders(),
|
||||
oauth: {
|
||||
tokenUrl: "https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",
|
||||
authUrl: "https://prod.us-east-1.auth.desktop.kiro.dev",
|
||||
},
|
||||
models: [
|
||||
{ id: "auto-kiro", name: "Auto (Kiro picks best model)" },
|
||||
{
|
||||
id: "claude-fable-5",
|
||||
name: "Claude Fable 5",
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "claude-opus-4.8",
|
||||
name: "Claude Opus 4.8",
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "claude-opus-4.7",
|
||||
name: "Claude Opus 4.7",
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "claude-opus-4.6",
|
||||
name: "Claude Opus 4.6",
|
||||
contextLength: 1000000,
|
||||
maxOutputTokens: 128000,
|
||||
},
|
||||
{
|
||||
id: "claude-sonnet-4.6",
|
||||
name: "Claude Sonnet 4.6",
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 64000,
|
||||
},
|
||||
// models for kiro free tier
|
||||
{
|
||||
id: "claude-sonnet-4.5",
|
||||
name: "Claude Sonnet 4.5",
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 64000,
|
||||
},
|
||||
{
|
||||
id: "claude-haiku-4.5",
|
||||
name: "Claude Haiku 4.5",
|
||||
contextLength: 200000,
|
||||
maxOutputTokens: 64000,
|
||||
},
|
||||
{ id: "deepseek-3.2", name: "DeepSeek V3.2" },
|
||||
{ id: "minimax-m2.5", name: "MiniMax M2.5" },
|
||||
{ id: "minimax-m2.1", name: "MiniMax M2.1" },
|
||||
{ id: "glm-5", name: "GLM-5" },
|
||||
{ id: "qwen3-coder-next", name: "Qwen3 Coder Next" },
|
||||
],
|
||||
};
|
||||
12
open-sse/config/providers/registry/kluster/index.ts
Normal file
12
open-sse/config/providers/registry/kluster/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const klusterProvider: RegistryEntry = {
|
||||
id: "kluster",
|
||||
alias: "kluster",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.kluster.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "auto", name: "Auto" }],
|
||||
};
|
||||
13
open-sse/config/providers/registry/lambda-ai/index.ts
Normal file
13
open-sse/config/providers/registry/lambda-ai/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const lambda_aiProvider: RegistryEntry = {
|
||||
id: "lambda-ai",
|
||||
alias: "lambda",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.lambda.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS["lambda-ai"],
|
||||
};
|
||||
15
open-sse/config/providers/registry/leonardo/index.ts
Normal file
15
open-sse/config/providers/registry/leonardo/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const leonardoProvider: RegistryEntry = {
|
||||
id: "leonardo",
|
||||
alias: "leo",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://cloud.leonardo.ai/api/rest/v1",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "phoenix", name: "Phoenix" },
|
||||
{ id: "sdxl", name: "SDXL" },
|
||||
],
|
||||
};
|
||||
12
open-sse/config/providers/registry/liquid/index.ts
Normal file
12
open-sse/config/providers/registry/liquid/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const liquidProvider: RegistryEntry = {
|
||||
id: "liquid",
|
||||
alias: "liquid",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.liquid.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "liquid-lfm-40b", name: "Liquid LFM 40B" }],
|
||||
};
|
||||
13
open-sse/config/providers/registry/llamagate/index.ts
Normal file
13
open-sse/config/providers/registry/llamagate/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const llamagateProvider: RegistryEntry = {
|
||||
id: "llamagate",
|
||||
alias: "llamagate",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://llamagate.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.llamagate,
|
||||
};
|
||||
27
open-sse/config/providers/registry/llm7/index.ts
Normal file
27
open-sse/config/providers/registry/llm7/index.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const llm7Provider: RegistryEntry = {
|
||||
id: "llm7",
|
||||
alias: "llm7",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.llm7.io/v1/chat/completions",
|
||||
modelsUrl: "https://api.llm7.io/v1/models",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
poolConfig: {
|
||||
minSessions: 1,
|
||||
maxSessions: 3,
|
||||
cooldownBase: 2000,
|
||||
cooldownMax: 5000,
|
||||
cooldownJitter: 100,
|
||||
requestTimeout: 30000,
|
||||
requestJitter: 50,
|
||||
},
|
||||
models: [
|
||||
{ id: "gpt-4o-mini-2024-07-18", name: "GPT-4o mini (LLM7)" },
|
||||
{ id: "gpt-4.1-nano-2025-04-14", name: "GPT-4.1 nano (LLM7)" },
|
||||
{ id: "deepseek-r1-0528", name: "DeepSeek R1 (LLM7)" },
|
||||
{ id: "qwen2.5-coder-32b-instruct", name: "Qwen2.5 Coder 32B (LLM7)" },
|
||||
],
|
||||
};
|
||||
20
open-sse/config/providers/registry/longcat/index.ts
Normal file
20
open-sse/config/providers/registry/longcat/index.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const longcatProvider: RegistryEntry = {
|
||||
id: "longcat",
|
||||
alias: "lc",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.longcat.chat/openai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "Authorization",
|
||||
authPrefix: "Bearer",
|
||||
// Free tier: 50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta
|
||||
models: [
|
||||
{ id: "LongCat-Flash-Lite", name: "LongCat Flash-Lite (50M tok/day 🆓)" },
|
||||
{ id: "LongCat-Flash-Chat", name: "LongCat Flash-Chat (500K tok/day 🆓)" },
|
||||
{ id: "LongCat-Flash-Thinking", name: "LongCat Flash-Thinking (500K tok/day 🆓)" },
|
||||
{ id: "LongCat-Flash-Omni-2603", name: "LongCat Flash-Omni-2603 (500K tok/day 🆓)" },
|
||||
//{ id: "LongCat-2.0-Preview", name: "LongCat 2.0 Preview (10M tok/day 🆓)" },
|
||||
],
|
||||
};
|
||||
13
open-sse/config/providers/registry/maritalk/index.ts
Normal file
13
open-sse/config/providers/registry/maritalk/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS, MARITALK_DEFAULT_BASE_URL } from "../../shared.ts";
|
||||
|
||||
export const maritalkProvider: RegistryEntry = {
|
||||
id: "maritalk",
|
||||
alias: "maritalk",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: MARITALK_DEFAULT_BASE_URL,
|
||||
authType: "apikey",
|
||||
authHeader: "key",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS.maritalk,
|
||||
};
|
||||
13
open-sse/config/providers/registry/meta-llama/index.ts
Normal file
13
open-sse/config/providers/registry/meta-llama/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { CHAT_OPENAI_COMPAT_MODELS } from "../../shared.ts";
|
||||
|
||||
export const meta_llamaProvider: RegistryEntry = {
|
||||
id: "meta-llama",
|
||||
alias: "meta",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.llama.com/compat/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: CHAT_OPENAI_COMPAT_MODELS["meta-llama"],
|
||||
};
|
||||
23
open-sse/config/providers/registry/minimax/cn/index.ts
Normal file
23
open-sse/config/providers/registry/minimax/cn/index.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { RegistryEntry } from "../../../shared.ts";
|
||||
import { getAnthropicCompatHeaders, ANTHROPIC_VERSION_HEADER } from "../../../shared.ts";
|
||||
|
||||
export const minimax_cnProvider: RegistryEntry = {
|
||||
id: "minimax-cn",
|
||||
alias: "minimax-cn", // unique alias (was colliding with minimax)
|
||||
format: "claude",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.minimaxi.com/anthropic/v1/messages",
|
||||
urlSuffix: "?beta=true",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
headers: getAnthropicCompatHeaders(),
|
||||
models: [
|
||||
// Keep parity with minimax to ensure model discovery works for minimax-cn connections.
|
||||
// #3110: MiniMax M3 — frontier coding model with 1M context
|
||||
{ id: "MiniMax-M3", name: "MiniMax M3", contextLength: 1048576, supportsVision: true },
|
||||
{ id: "MiniMax-M2.7", name: "MiniMax M2.7" },
|
||||
{ id: "MiniMax-M2.7-highspeed", name: "MiniMax M2.7 Highspeed" },
|
||||
{ id: "MiniMax-M2.5", name: "MiniMax M2.5" },
|
||||
{ id: "MiniMax-M2.5-highspeed", name: "MiniMax M2.5 Highspeed" },
|
||||
],
|
||||
};
|
||||
23
open-sse/config/providers/registry/minimax/index.ts
Normal file
23
open-sse/config/providers/registry/minimax/index.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
import { getAnthropicCompatHeaders, ANTHROPIC_VERSION_HEADER } from "../../shared.ts";
|
||||
|
||||
export const minimaxProvider: RegistryEntry = {
|
||||
id: "minimax",
|
||||
alias: "minimax",
|
||||
format: "claude",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.minimax.io/anthropic/v1/messages",
|
||||
urlSuffix: "?beta=true",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
headers: getAnthropicCompatHeaders(),
|
||||
models: [
|
||||
// T12/T28: MiniMax default upgraded from M2.5 to M2.7
|
||||
// #3110: MiniMax M3 — frontier coding model with 1M context
|
||||
{ id: "MiniMax-M3", name: "MiniMax M3", contextLength: 1048576, supportsVision: true },
|
||||
{ id: "MiniMax-M2.7", name: "MiniMax M2.7" },
|
||||
{ id: "MiniMax-M2.7-highspeed", name: "MiniMax M2.7 Highspeed" },
|
||||
{ id: "MiniMax-M2.5", name: "MiniMax M2.5" },
|
||||
{ id: "MiniMax-M2.5-highspeed", name: "MiniMax M2.5 Highspeed" },
|
||||
],
|
||||
};
|
||||
18
open-sse/config/providers/registry/mistral/index.ts
Normal file
18
open-sse/config/providers/registry/mistral/index.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const mistralProvider: RegistryEntry = {
|
||||
id: "mistral",
|
||||
alias: "mistral",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.mistral.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [
|
||||
{ id: "mistral-large-latest", name: "Mistral Large 3" },
|
||||
{ id: "mistral-medium-3-5", name: "Mistral Medium 3.5" },
|
||||
{ id: "mistral-small-latest", name: "Mistral Small 4" },
|
||||
{ id: "devstral-latest", name: "Devstral 2" },
|
||||
{ id: "codestral-latest", name: "Codestral" },
|
||||
],
|
||||
};
|
||||
12
open-sse/config/providers/registry/modal/index.ts
Normal file
12
open-sse/config/providers/registry/modal/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { RegistryEntry } from "../../shared.ts";
|
||||
|
||||
export const modalProvider: RegistryEntry = {
|
||||
id: "modal",
|
||||
alias: "modal",
|
||||
format: "openai",
|
||||
executor: "default",
|
||||
baseUrl: "https://api.modal.ai/v1/chat/completions",
|
||||
authType: "apikey",
|
||||
authHeader: "bearer",
|
||||
models: [{ id: "google/gemini-2.0-flash", name: "Gemini 2.0 Flash" }],
|
||||
};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user