Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,13 @@ ANTIGRAVITY_OAUTH_CLIENT_SECRET=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
# ── GitHub Copilot ──
GITHUB_OAUTH_CLIENT_ID=Iv1.b507a08c87ecfe98

# ── Windsurf / Devin CLI ──
# Public Firebase Web API key used by Windsurf's Secure Token Service to refresh
# short-lived browser-flow tokens. This is a client-side credential embedded in
# the Windsurf app itself (not a secret). Long-lived import tokens skip this entirely.
# Source: extracted from Devin CLI binary (devin.exe / model_configs_v2.bin).
WINDSURF_FIREBASE_API_KEY=AIzaSyBpLTEGSt59AUPKxBb7lIWjSE2ZXQH7mgU

# ── GitLab Duo ──
# Register an OAuth app at: https://gitlab.com/-/profile/applications
# Set redirect URI to: http://localhost:20128/callback (or your NEXT_PUBLIC_BASE_URL + /callback)
Expand Down
4 changes: 4 additions & 0 deletions docs/i18n/in/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@

### 🐛 Bug Fixes

- **fix(providers):** strip OpenAI-specific fields in Kiro translator to prevent 400 errors (#2037)
- **fix(ui):** resolve text contrast issues for zero-config warning banner in light mode (#2050)
- **fix(core):** inject global system prompt correctly into downstream chat completions pipeline (#2080)
- **fix(routing):** add missing v1beta rewrites to next.config to resolve 404 on Gemini models endpoint (#2102)
- **fix(cache):** optimize cache_control preservation logic and explicitly align tool schema with upstream Claude Code expectations
- **fix(db):** preserve legacy SQLite database path on Windows to prevent data loss (#1973)
- **fix(settings):** resolve model alias persistence double stringification preventing UI updates (#2018)
Expand Down
221 changes: 221 additions & 0 deletions open-sse/config/providerRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1207,6 +1207,227 @@ export const REGISTRY: Record<string, RegistryEntry> = {
passthroughModels: true,
},

windsurf: {
id: "windsurf",
alias: "ws",
format: "windsurf",
executor: "windsurf",
// gRPC-web endpoint — handled entirely inside WindsurfExecutor.
// Model IDs are the canonical Windsurf catalog names (with dots), auto-synced
// from the Windsurf cloud via GetCascadeModelConfigs. Source: guanxiaol/WindsurfPoolAPI.
baseUrl: "https://server.self-serve.windsurf.com",
authType: "oauth",
authHeader: "Authorization",
authPrefix: "Bearer ",
defaultContextLength: 200000,
// Model IDs verified against model_configs_v2.bin from Devin CLI binary (2026.5.x).
// dot-notation = OmniRoute ID; executor MODEL_ALIAS_MAP maps it to Windsurf modelUid.
models: [
// ── Cognition / SWE ──────────────────────────────────────────────────
{ 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" },
{ id: "swe-check", name: "SWE Check" },
// ── Claude Opus 4.7 — effort-tiered ─────────────────────────────────
{ id: "claude-opus-4.7-max", name: "Claude Opus 4.7 Max", contextLength: 200000 },
{ id: "claude-opus-4.7-xhigh", name: "Claude Opus 4.7 XHigh", 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 },
{ id: "claude-opus-4.7-review", name: "Claude Opus 4.7 Review", 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-1m", name: "Claude Sonnet 4.6 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-opus-4.5-thinking", name: "Claude Opus 4.5 Thinking", contextLength: 200000 },
{ id: "claude-opus-4.5", name: "Claude Opus 4.5", contextLength: 200000 },
{
id: "claude-sonnet-4.5-thinking",
name: "Claude Sonnet 4.5 Thinking",
contextLength: 200000,
},
{ id: "claude-sonnet-4.5", name: "Claude Sonnet 4.5", contextLength: 200000 },
{ id: "claude-haiku-4.5", name: "Claude Haiku 4.5", contextLength: 200000 },
// ── Claude 4.1 / 4 ──────────────────────────────────────────────────
{ id: "claude-4.1-opus-thinking", name: "Claude 4.1 Opus Thinking", contextLength: 200000 },
{ id: "claude-4.1-opus", name: "Claude 4.1 Opus", contextLength: 200000 },
{ id: "claude-4-opus-thinking", name: "Claude 4 Opus Thinking", contextLength: 200000 },
{ id: "claude-4-opus", name: "Claude 4 Opus", contextLength: 200000 },
{ id: "claude-4-sonnet-thinking", name: "Claude 4 Sonnet Thinking", contextLength: 200000 },
{ id: "claude-4-sonnet", name: "Claude 4 Sonnet", contextLength: 200000 },
// ── Claude 3.x ──────────────────────────────────────────────────────
{
id: "claude-3.7-sonnet-thinking",
name: "Claude 3.7 Sonnet Thinking",
contextLength: 200000,
},
{ id: "claude-3.7-sonnet", name: "Claude 3.7 Sonnet", contextLength: 200000 },
{ id: "claude-3.5-sonnet", name: "Claude 3.5 Sonnet", contextLength: 200000 },
// ── GPT-5.5 — effort-tiered (+ fast/priority variants) ──────────────
{ id: "gpt-5.5-xhigh-fast", name: "GPT-5.5 XHigh Fast", contextLength: 200000 },
{ id: "gpt-5.5-xhigh", name: "GPT-5.5 XHigh", contextLength: 200000 },
{ id: "gpt-5.5-high-fast", name: "GPT-5.5 High Fast", contextLength: 200000 },
{ id: "gpt-5.5-high", name: "GPT-5.5 High", contextLength: 200000 },
{ id: "gpt-5.5-medium-fast", name: "GPT-5.5 Medium Fast", contextLength: 200000 },
{ id: "gpt-5.5-medium", name: "GPT-5.5 Medium", contextLength: 200000 },
{ id: "gpt-5.5-low-fast", name: "GPT-5.5 Low Fast", contextLength: 200000 },
{ id: "gpt-5.5-low", name: "GPT-5.5 Low", contextLength: 200000 },
{ id: "gpt-5.5-none-fast", name: "GPT-5.5 None Fast", contextLength: 200000 },
{ id: "gpt-5.5-none", name: "GPT-5.5 None", contextLength: 200000 },
{ id: "gpt-5.5-review", name: "GPT-5.5 Review", contextLength: 200000 },
// ── GPT-5.4 — effort-tiered (+ mini + fast variants) ────────────────
{ id: "gpt-5.4-xhigh-fast", name: "GPT-5.4 XHigh Fast", contextLength: 200000 },
{ id: "gpt-5.4-xhigh", name: "GPT-5.4 XHigh", contextLength: 200000 },
{ id: "gpt-5.4-high-fast", name: "GPT-5.4 High Fast", contextLength: 200000 },
{ id: "gpt-5.4-high", name: "GPT-5.4 High", contextLength: 200000 },
{ id: "gpt-5.4-medium-fast", name: "GPT-5.4 Medium Fast", contextLength: 200000 },
{ id: "gpt-5.4-medium", name: "GPT-5.4 Medium", contextLength: 200000 },
{ id: "gpt-5.4-low-fast", name: "GPT-5.4 Low Fast", contextLength: 200000 },
{ id: "gpt-5.4-low", name: "GPT-5.4 Low", contextLength: 200000 },
{ id: "gpt-5.4-none-fast", name: "GPT-5.4 None Fast", contextLength: 200000 },
{ id: "gpt-5.4-none", name: "GPT-5.4 None", contextLength: 200000 },
{ id: "gpt-5.4-mini-xhigh", name: "GPT-5.4 Mini XHigh", contextLength: 128000 },
{ id: "gpt-5.4-mini-high", name: "GPT-5.4 Mini High", contextLength: 128000 },
{ id: "gpt-5.4-mini-medium", name: "GPT-5.4 Mini Medium", contextLength: 128000 },
{ id: "gpt-5.4-mini-low", name: "GPT-5.4 Mini Low", contextLength: 128000 },
// ── GPT-5.3 Codex — effort-tiered (+ fast variants) ─────────────────
{ id: "gpt-5.3-codex-xhigh-fast", name: "GPT-5.3 Codex XHigh Fast", contextLength: 200000 },
{ id: "gpt-5.3-codex-xhigh", name: "GPT-5.3 Codex XHigh", contextLength: 200000 },
{ id: "gpt-5.3-codex-high-fast", name: "GPT-5.3 Codex High Fast", contextLength: 200000 },
{ id: "gpt-5.3-codex-high", name: "GPT-5.3 Codex High", contextLength: 200000 },
{ id: "gpt-5.3-codex-medium-fast", name: "GPT-5.3 Codex Medium Fast", contextLength: 200000 },
{ id: "gpt-5.3-codex-medium", name: "GPT-5.3 Codex Medium", contextLength: 200000 },
{ id: "gpt-5.3-codex-low-fast", name: "GPT-5.3 Codex Low Fast", contextLength: 200000 },
{ id: "gpt-5.3-codex-low", name: "GPT-5.3 Codex Low", contextLength: 200000 },
// ── GPT-5.2 ─────────────────────────────────────────────────────────
{ id: "gpt-5.2-xhigh", name: "GPT-5.2 XHigh", contextLength: 200000 },
{ 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 },
{ id: "gpt-5.2-none", name: "GPT-5.2 None", contextLength: 200000 },
// ── GPT-5 ────────────────────────────────────────────────────────────
{ id: "gpt-5-codex", name: "GPT-5 Codex", contextLength: 200000 },
{ id: "gpt-5", name: "GPT-5", contextLength: 200000 },
// ── GPT-4.1 / 4o ────────────────────────────────────────────────────
{ id: "gpt-4.1", name: "GPT-4.1", contextLength: 200000 },
{ id: "gpt-4.1-mini", name: "GPT-4.1 Mini", contextLength: 128000 },
{ id: "gpt-4.1-nano", name: "GPT-4.1 Nano", contextLength: 32000 },
{ id: "gpt-4o", name: "GPT-4o", contextLength: 128000 },
{ id: "gpt-4o-mini", name: "GPT-4o Mini", contextLength: 128000 },
// ── 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-pro", name: "Gemini 3.0 Pro", contextLength: 1000000 },
{ id: "gemini-3.0-flash-high", name: "Gemini 3.0 Flash High", contextLength: 1000000 },
{ id: "gemini-3.0-flash-medium", name: "Gemini 3.0 Flash Medium", contextLength: 1000000 },
{ id: "gemini-3.0-flash-low", name: "Gemini 3.0 Flash Low", contextLength: 1000000 },
{ id: "gemini-3.0-flash-minimal", name: "Gemini 3.0 Flash Minimal", contextLength: 1000000 },
{ id: "gemini-2.5-pro", name: "Gemini 2.5 Pro", contextLength: 1000000 },
{ id: "gemini-2.5-flash", name: "Gemini 2.5 Flash", contextLength: 1000000 },
// ── Others ───────────────────────────────────────────────────────────
{ id: "deepseek-v4", name: "DeepSeek V4", contextLength: 64000 },
{ id: "deepseek-r1", name: "DeepSeek R1", contextLength: 64000 },
{ id: "deepseek-v3-2", name: "DeepSeek V3-2", contextLength: 64000 },
{ id: "deepseek-v3", name: "DeepSeek V3", contextLength: 64000 },
{ id: "grok-3-mini-thinking", name: "Grok 3 Mini Thinking", contextLength: 131000 },
{ id: "grok-3-mini", name: "Grok 3 Mini", contextLength: 131000 },
{ id: "grok-3", name: "Grok 3", contextLength: 131000 },
{ id: "grok-code-fast-1", name: "Grok Code Fast 1", contextLength: 131000 },
{ id: "kimi-k2.6", name: "Kimi K2.6", contextLength: 131000 },
{ id: "kimi-k2.5", name: "Kimi K2.5", contextLength: 131000 },
{ id: "kimi-k2", name: "Kimi K2", contextLength: 131000 },
{ id: "glm-5.1", name: "GLM-5.1", contextLength: 128000 },
{ id: "glm-5", name: "GLM-5", contextLength: 128000 },
{ id: "glm-4.7", name: "GLM-4.7", contextLength: 128000 },
],
},

// ── Devin CLI (Official — ACP JSON-RPC over stdio) ──────────────────────────
// Uses the official `devin` binary via `devin acp --agent-type summarizer`.
// Requires devin CLI installed (https://cli.devin.ai) and authenticated
// via `devin auth login` or WINDSURF_API_KEY env var.
// Model IDs are passed directly to the ACP session/new `model` param.
"devin-cli": {
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" },
{ id: "swe-check", name: "SWE Check" },
// 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.0-pro", name: "Gemini 3.0 Pro", contextLength: 1000000 },
{ id: "gemini-3.0-flash-high", name: "Gemini 3.0 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 },
],
},

minimax: {
id: "minimax",
alias: "minimax",
Expand Down
Loading