fix: add missing i18n keys for windsurf/copilot and apply fetch timeout to streaming requests (#748, #769)

- Add windsurf and copilot entries to toolDescriptions in all 33 locale files
  to fix MISSING_MESSAGE errors on the CLI Tools page (#748)
- Apply FETCH_TIMEOUT_MS to streaming requests' initial fetch() call to prevent
  300s TCP default timeout causing silent failures on long-running requests (#769)
- Previously only non-streaming requests had timeout protection; streaming requests
  relied solely on stream idle detection which doesn't cover initial connection hangs
This commit is contained in:
diegosouzapw
2026-03-29 19:43:21 -03:00
parent 7837fcc657
commit 1c070d16a6
34 changed files with 105 additions and 40 deletions

View File

@@ -264,13 +264,12 @@ export class BaseExecutor {
const transformedBody = this.transformRequest(model, body, stream, credentials);
try {
// For non-streaming requests, apply a fetch timeout to prevent stalled connections.
// Streaming requests skip the timeout — they use stream idle detection instead.
const timeoutSignal = !stream ? AbortSignal.timeout(FETCH_TIMEOUT_MS) : null;
const combinedSignal =
signal && timeoutSignal
? mergeAbortSignals(signal, timeoutSignal)
: signal || timeoutSignal;
// Apply timeout to all requests. Non-streaming requests need this to prevent
// stalled connections. Streaming requests also need it for the initial fetch() call
// to prevent hanging on unresponsive providers (e.g. 300s TCP default timeout — #769).
// Stream idle detection (STREAM_IDLE_TIMEOUT_MS) handles stalls after data starts flowing.
const timeoutSignal = AbortSignal.timeout(FETCH_TIMEOUT_MS);
const combinedSignal = signal ? mergeAbortSignals(signal, timeoutSignal) : timeoutSignal;
// Apply CLI fingerprint ordering if enabled for this provider
let finalHeaders = headers;

View File

@@ -571,7 +571,9 @@
"cursor": "محرر كود المؤشر AI",
"continue": "تابع مساعد الذكاء الاصطناعي",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Cursor AI Code Editor",
"continue": "Продължете AI Assistant",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -643,7 +643,9 @@
"cursor": "Cursor AI Code Editor",
"continue": "Continue AI asistent",
"opencode": "OpenCode AI coding agent (Terminál)",
"kiro": "Amazon Kiro AI poháněné IDE"
"kiro": "Amazon Kiro AI poháněné IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Cursor AI Code Editor",
"continue": "Fortsæt AI Assistant",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Cursor-KI-Code-Editor",
"continue": "Weiter AI Assistant",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -648,7 +648,9 @@
"cursor": "Cursor AI Code Editor",
"continue": "Continue AI Assistant",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Editor de código AI del cursor",
"continue": "Continuar Asistente de IA",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Cursor AI Code Editor",
"continue": "Jatka AI Assistantia",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Éditeur de code AI du curseur",
"continue": "Continuer l'Assistant IA",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "עורך קוד AI של הסמן",
"continue": "המשך עוזר AI",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -489,7 +489,9 @@
"cursor": "कर्सर एआई कोड संपादक",
"continue": "एआई असिस्टेंट जारी रखें",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Kurzor AI kódszerkesztő",
"continue": "Az AI-asszisztens folytatása",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Editor Kode AI Kursor",
"continue": "Lanjutkan Asisten AI",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -643,7 +643,9 @@
"cursor": "कर्सर एआई कोड संपादक",
"continue": "एआई असिस्टेंट जारी रखें",
"opencode": "ओपनकोड एआई कोडिंग एजेंट (टर्मिनल)",
"kiro": "अमेज़ॅन किरो - एआई-संचालित आईडीई"
"kiro": "अमेज़ॅन किरो - एआई-संचालित आईडीई",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Editor del codice AI del cursore",
"continue": "Continua Assistente AI",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "カーソルAIコードエディター",
"continue": "AIアシスタントを続ける",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "커서 AI 코드 편집기",
"continue": "AI 어시스턴트 계속하기",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Editor Kod AI Kursor",
"continue": "Teruskan AI Assistant",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Cursor AI-code-editor",
"continue": "Ga door met AI-assistent",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Cursor AI Code Editor",
"continue": "Fortsett AI Assistant",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Cursor AI Code Editor",
"continue": "Ipagpatuloy ang AI Assistant",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Edytor kodu AI kursora",
"continue": "Kontynuuj Asystenta AI",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Editor de código com IA Cursor",
"continue": "Assistente de IA Continue",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — IDE com IA",
"windsurf": "Windsurf — Editor de Código com IA",
"copilot": "GitHub Copilot — Assistente de IA"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Editor de código do cursor AI",
"continue": "Continuar Assistente de IA",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Cursor AI Code Editor",
"continue": "Continuați Asistentul AI",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Редактор кода курсора AI",
"continue": "Продолжить AI-помощник",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Editor kódu AI kurzora",
"continue": "Pokračovať v Asistentovi AI",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Cursor AI Code Editor",
"continue": "Fortsätt AI Assistant",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "ตัวแก้ไขรหัสเคอร์เซอร์ AI",
"continue": "ดำเนินการต่อผู้ช่วย AI",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -641,7 +641,9 @@
"cursor": "Cursor AI Kod Düzenleyici",
"continue": "Continue AI Asistanı",
"opencode": "OpenCode AI kodlama ajanı (Terminal)",
"kiro": "Amazon Kiro - AI destekli IDE"
"kiro": "Amazon Kiro - AI destekli IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Редактор коду Cursor AI",
"continue": "Продовжити AI Assistant",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -571,7 +571,9 @@
"cursor": "Trình chỉnh sửa mã AI con trỏ",
"continue": "Tiếp tục Trợ lý AI",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE"
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {

View File

@@ -627,7 +627,9 @@
"cursor": "Cursor AI 代码编辑器",
"continue": "继续AI助手",
"opencode": "OpenCode AI 编码智能体(终端)",
"kiro": "Amazon Kiro - AI 驱动 IDE"
"kiro": "Amazon Kiro - AI 驱动 IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant"
},
"guides": {
"cursor": {