fix(acp): harden session-page connection and localize backend errors
- Session-page connect never triggers download/install; returns SdkNotInstalled immediately and prompts the user to install from Agent Settings instead - Binary agents now accept any cached version via find_best_cached_binary_for_agent so stale caches still connect - Bound Initialize handshake with a 60s timeout and convert it to AcpError::InitializeTimeout via a sentinel in run_connection - Spawn background task owns ConnectionManager map insertion and removes the entry on exit through an RAII guard that survives panics, preventing leaked stale entries - AcpError gains SdkNotInstalled and InitializeTimeout variants plus a stable code() identifier; AcpEvent::Error carries code so the frontend can render localized messages by key - Frontend preflight now runs for all connect sources; error event handler switches on code to show translated text for initialize_timeout, sdk_not_installed, platform_not_supported, process_exited, spawn_failed and download_failed - Remove ConnectionStatus::Downloading enum variant, all frontend branches, and i18n strings; drop obsolete autoLinkFailedTitle, autoLinkPreflightFailed, preflightCheckFailedDefault and preflightFailedTitle keys across 10 locales - Add backendErrors.* translations in 10 languages - Diagnostic logging: always log agent stderr plus binary path/size/args/env keys and Initialize timing; gate stdin/stdout JSON-RPC tracing behind CODEG_ACP_DEBUG to avoid persisting user content into OS log files Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -851,7 +851,6 @@
|
||||
"connection": {
|
||||
"connected": "متصل",
|
||||
"connecting": "جارٍ الاتصال...",
|
||||
"downloading": "جارٍ التنزيل...",
|
||||
"prompting": "جارٍ الرد...",
|
||||
"error": "خطأ في الاتصال",
|
||||
"disconnected": "غير متصل",
|
||||
@@ -1422,11 +1421,13 @@
|
||||
"unavailable": "{agent} غير متاح على المنصة الحالية.",
|
||||
"sdkMissing": "لم يتم تثبيت SDK الخاص بـ {agent}"
|
||||
},
|
||||
"backendErrors": {
|
||||
"initializeTimeout": "انتهت مهلة مصافحة اتصال {agent} (لا استجابة بعد 60 ثانية). افتح الإعدادات للتحقق من إعدادات الوكيل والشبكة.",
|
||||
"processExited": "انتهت عملية {agent} بشكل غير متوقع.",
|
||||
"spawnFailed": "تعذر بدء تشغيل {agent}: {message}",
|
||||
"downloadFailed": "فشل تنزيل {agent}: {message}"
|
||||
},
|
||||
"unableReadAgentConfig": "تعذر قراءة إعدادات الوكيل: {message}",
|
||||
"autoLinkFailedTitle": "فشل الربط التلقائي لـ {agent}",
|
||||
"preflightCheckFailedDefault": "فشلت فحوصات ما قبل التشغيل. تحقق من إعدادات الوكلاء.",
|
||||
"preflightFailedTitle": "فشل فحص ما قبل التشغيل لـ {agent}",
|
||||
"autoLinkPreflightFailed": "فشل فحص ما قبل التشغيل للربط التلقائي: {message}",
|
||||
"connectFailedTitle": "فشل اتصال {agent}",
|
||||
"toolFallbackTitle": "أداة",
|
||||
"eventErrorTitle": "خطأ الوكيل",
|
||||
|
||||
@@ -851,7 +851,6 @@
|
||||
"connection": {
|
||||
"connected": "Verbunden",
|
||||
"connecting": "Verbinde...",
|
||||
"downloading": "Lade herunter...",
|
||||
"prompting": "Antworte...",
|
||||
"error": "Verbindungsfehler",
|
||||
"disconnected": "Getrennt",
|
||||
@@ -1422,11 +1421,13 @@
|
||||
"unavailable": "{agent} ist auf der aktuellen Plattform nicht verfügbar.",
|
||||
"sdkMissing": "{agent} SDK ist nicht installiert"
|
||||
},
|
||||
"backendErrors": {
|
||||
"initializeTimeout": "Der Verbindungs-Handshake von {agent} hat nach 60 Sekunden das Zeitlimit überschritten. Öffnen Sie die Einstellungen, um Agenten- und Netzwerkkonfiguration zu prüfen.",
|
||||
"processExited": "{agent}-Prozess wurde unerwartet beendet.",
|
||||
"spawnFailed": "{agent} konnte nicht gestartet werden: {message}",
|
||||
"downloadFailed": "{agent}-Download fehlgeschlagen: {message}"
|
||||
},
|
||||
"unableReadAgentConfig": "Agenten-Konfiguration kann nicht gelesen werden: {message}",
|
||||
"autoLinkFailedTitle": "{agent} Auto-Link fehlgeschlagen",
|
||||
"preflightCheckFailedDefault": "Preflight-Prüfungen fehlgeschlagen. Prüfen Sie die Agenten-Einstellungen.",
|
||||
"preflightFailedTitle": "{agent} Preflight fehlgeschlagen",
|
||||
"autoLinkPreflightFailed": "Auto-Link-Preflight fehlgeschlagen: {message}",
|
||||
"connectFailedTitle": "{agent} Verbindung fehlgeschlagen",
|
||||
"toolFallbackTitle": "Werkzeug",
|
||||
"eventErrorTitle": "Agentenfehler",
|
||||
|
||||
@@ -851,7 +851,6 @@
|
||||
"connection": {
|
||||
"connected": "Connected",
|
||||
"connecting": "Connecting...",
|
||||
"downloading": "Downloading...",
|
||||
"prompting": "Responding...",
|
||||
"error": "Connection error",
|
||||
"disconnected": "Disconnected",
|
||||
@@ -1422,11 +1421,13 @@
|
||||
"unavailable": "{agent} is unavailable on the current platform.",
|
||||
"sdkMissing": "{agent} SDK is not installed"
|
||||
},
|
||||
"backendErrors": {
|
||||
"initializeTimeout": "{agent} connection handshake timed out after 60 seconds. Please open Settings to check Agent configuration and network settings.",
|
||||
"processExited": "{agent} process exited unexpectedly.",
|
||||
"spawnFailed": "Failed to start {agent}: {message}",
|
||||
"downloadFailed": "{agent} download failed: {message}"
|
||||
},
|
||||
"unableReadAgentConfig": "Unable to read Agent config: {message}",
|
||||
"autoLinkFailedTitle": "{agent} auto-link failed",
|
||||
"preflightCheckFailedDefault": "Preflight checks failed. Check Agent settings.",
|
||||
"preflightFailedTitle": "{agent} preflight failed",
|
||||
"autoLinkPreflightFailed": "Auto-link preflight failed: {message}",
|
||||
"connectFailedTitle": "{agent} connection failed",
|
||||
"toolFallbackTitle": "Tool",
|
||||
"eventErrorTitle": "Agent Error",
|
||||
|
||||
@@ -851,7 +851,6 @@
|
||||
"connection": {
|
||||
"connected": "Conectado",
|
||||
"connecting": "Conectando...",
|
||||
"downloading": "Descargando...",
|
||||
"prompting": "Respondiendo...",
|
||||
"error": "Error de conexión",
|
||||
"disconnected": "Desconectado",
|
||||
@@ -1422,11 +1421,13 @@
|
||||
"unavailable": "{agent} no está disponible en la plataforma actual.",
|
||||
"sdkMissing": "El SDK de {agent} no está instalado"
|
||||
},
|
||||
"backendErrors": {
|
||||
"initializeTimeout": "Se agotó el tiempo del handshake de conexión de {agent} (sin respuesta tras 60 segundos). Abre Ajustes para revisar la configuración del agente y de la red.",
|
||||
"processExited": "El proceso de {agent} terminó inesperadamente.",
|
||||
"spawnFailed": "No se pudo iniciar {agent}: {message}",
|
||||
"downloadFailed": "La descarga de {agent} falló: {message}"
|
||||
},
|
||||
"unableReadAgentConfig": "No se puede leer la configuración del agente: {message}",
|
||||
"autoLinkFailedTitle": "Falló el autovínculo de {agent}",
|
||||
"preflightCheckFailedDefault": "Fallaron las comprobaciones previas. Revisa los ajustes de agentes.",
|
||||
"preflightFailedTitle": "Falló la verificación previa de {agent}",
|
||||
"autoLinkPreflightFailed": "Falló la verificación previa del autovínculo: {message}",
|
||||
"connectFailedTitle": "Falló la conexión de {agent}",
|
||||
"toolFallbackTitle": "Herramienta",
|
||||
"eventErrorTitle": "Error del agente",
|
||||
|
||||
@@ -851,7 +851,6 @@
|
||||
"connection": {
|
||||
"connected": "Connecté",
|
||||
"connecting": "Connexion...",
|
||||
"downloading": "Téléchargement...",
|
||||
"prompting": "Réponse...",
|
||||
"error": "Erreur de connexion",
|
||||
"disconnected": "Déconnecté",
|
||||
@@ -1422,11 +1421,13 @@
|
||||
"unavailable": "{agent} n'est pas disponible sur la plateforme actuelle.",
|
||||
"sdkMissing": "Le SDK de {agent} n'est pas installé"
|
||||
},
|
||||
"backendErrors": {
|
||||
"initializeTimeout": "Le handshake de connexion de {agent} a expiré (aucune réponse après 60 secondes). Ouvrez Paramètres pour vérifier la configuration de l'agent et du réseau.",
|
||||
"processExited": "Le processus {agent} s'est arrêté de manière inattendue.",
|
||||
"spawnFailed": "Impossible de démarrer {agent} : {message}",
|
||||
"downloadFailed": "Échec du téléchargement de {agent} : {message}"
|
||||
},
|
||||
"unableReadAgentConfig": "Impossible de lire la configuration de l'agent : {message}",
|
||||
"autoLinkFailedTitle": "Échec de l'auto-liaison de {agent}",
|
||||
"preflightCheckFailedDefault": "Les vérifications préalables ont échoué. Vérifiez les paramètres des agents.",
|
||||
"preflightFailedTitle": "Échec de la vérification préalable de {agent}",
|
||||
"autoLinkPreflightFailed": "Échec de la vérification préalable de l'auto-liaison : {message}",
|
||||
"connectFailedTitle": "Échec de la connexion de {agent}",
|
||||
"toolFallbackTitle": "Outil",
|
||||
"eventErrorTitle": "Erreur de l'agent",
|
||||
|
||||
@@ -851,7 +851,6 @@
|
||||
"connection": {
|
||||
"connected": "接続済み",
|
||||
"connecting": "接続中...",
|
||||
"downloading": "ダウンロード中...",
|
||||
"prompting": "応答中...",
|
||||
"error": "接続エラー",
|
||||
"disconnected": "未接続",
|
||||
@@ -1422,11 +1421,13 @@
|
||||
"unavailable": "{agent} は現在のプラットフォームでは利用できません。",
|
||||
"sdkMissing": "{agent} SDK がインストールされていません"
|
||||
},
|
||||
"backendErrors": {
|
||||
"initializeTimeout": "{agent} の接続ハンドシェイクがタイムアウトしました(60 秒以内に応答なし)。設定を開いてエージェントとネットワーク設定を確認してください。",
|
||||
"processExited": "{agent} プロセスが予期せず終了しました。",
|
||||
"spawnFailed": "{agent} の起動に失敗しました: {message}",
|
||||
"downloadFailed": "{agent} のダウンロードに失敗しました: {message}"
|
||||
},
|
||||
"unableReadAgentConfig": "エージェント設定を読み取れません: {message}",
|
||||
"autoLinkFailedTitle": "{agent} の自動リンクに失敗しました",
|
||||
"preflightCheckFailedDefault": "事前チェックに失敗しました。エージェント設定を確認してください。",
|
||||
"preflightFailedTitle": "{agent} の事前チェックに失敗しました",
|
||||
"autoLinkPreflightFailed": "自動リンクの事前チェックに失敗しました: {message}",
|
||||
"connectFailedTitle": "{agent} の接続に失敗しました",
|
||||
"toolFallbackTitle": "ツール",
|
||||
"eventErrorTitle": "エージェントエラー",
|
||||
|
||||
@@ -851,7 +851,6 @@
|
||||
"connection": {
|
||||
"connected": "연결됨",
|
||||
"connecting": "연결 중...",
|
||||
"downloading": "다운로드 중...",
|
||||
"prompting": "응답 중...",
|
||||
"error": "연결 오류",
|
||||
"disconnected": "연결 끊김",
|
||||
@@ -1422,11 +1421,13 @@
|
||||
"unavailable": "{agent}은(는) 현재 플랫폼에서 사용할 수 없습니다.",
|
||||
"sdkMissing": "{agent} SDK가 설치되어 있지 않습니다"
|
||||
},
|
||||
"backendErrors": {
|
||||
"initializeTimeout": "{agent} 연결 핸드셰이크가 시간 초과되었습니다(60초 동안 응답 없음). 설정을 열어 에이전트 및 네트워크 구성을 확인하세요.",
|
||||
"processExited": "{agent} 프로세스가 예기치 않게 종료되었습니다.",
|
||||
"spawnFailed": "{agent} 시작 실패: {message}",
|
||||
"downloadFailed": "{agent} 다운로드 실패: {message}"
|
||||
},
|
||||
"unableReadAgentConfig": "에이전트 구성을 읽을 수 없습니다: {message}",
|
||||
"autoLinkFailedTitle": "{agent} 자동 연결 실패",
|
||||
"preflightCheckFailedDefault": "사전 점검에 실패했습니다. 에이전트 설정을 확인하세요.",
|
||||
"preflightFailedTitle": "{agent} 사전 점검 실패",
|
||||
"autoLinkPreflightFailed": "자동 연결 사전 점검 실패: {message}",
|
||||
"connectFailedTitle": "{agent} 연결 실패",
|
||||
"toolFallbackTitle": "도구",
|
||||
"eventErrorTitle": "에이전트 오류",
|
||||
|
||||
@@ -851,7 +851,6 @@
|
||||
"connection": {
|
||||
"connected": "Conectado",
|
||||
"connecting": "Conectando...",
|
||||
"downloading": "Baixando...",
|
||||
"prompting": "Respondendo...",
|
||||
"error": "Erro de conexão",
|
||||
"disconnected": "Desconectado",
|
||||
@@ -1422,11 +1421,13 @@
|
||||
"unavailable": "{agent} está indisponível na plataforma atual.",
|
||||
"sdkMissing": "O SDK de {agent} não está instalado"
|
||||
},
|
||||
"backendErrors": {
|
||||
"initializeTimeout": "O handshake de conexão de {agent} expirou (sem resposta após 60 segundos). Abra Configurações para verificar a configuração do agente e da rede.",
|
||||
"processExited": "O processo de {agent} encerrou inesperadamente.",
|
||||
"spawnFailed": "Falha ao iniciar {agent}: {message}",
|
||||
"downloadFailed": "Falha no download de {agent}: {message}"
|
||||
},
|
||||
"unableReadAgentConfig": "Não foi possível ler a configuração do agente: {message}",
|
||||
"autoLinkFailedTitle": "Falha no vínculo automático de {agent}",
|
||||
"preflightCheckFailedDefault": "As verificações de pré-voo falharam. Verifique as configurações de agentes.",
|
||||
"preflightFailedTitle": "Pré-voo de {agent} falhou",
|
||||
"autoLinkPreflightFailed": "Pré-voo do vínculo automático falhou: {message}",
|
||||
"connectFailedTitle": "Falha na conexão de {agent}",
|
||||
"toolFallbackTitle": "Ferramenta",
|
||||
"eventErrorTitle": "Erro do agente",
|
||||
|
||||
@@ -851,7 +851,6 @@
|
||||
"connection": {
|
||||
"connected": "已连接",
|
||||
"connecting": "连接中...",
|
||||
"downloading": "下载中...",
|
||||
"prompting": "响应中...",
|
||||
"error": "连接异常",
|
||||
"disconnected": "未连接",
|
||||
@@ -1422,11 +1421,13 @@
|
||||
"unavailable": "{agent} 当前平台不可用。",
|
||||
"sdkMissing": "{agent} SDK 尚未安装"
|
||||
},
|
||||
"backendErrors": {
|
||||
"initializeTimeout": "{agent} 连接握手超时(60 秒未响应),请前往设置页面检查智能体和网络配置。",
|
||||
"processExited": "{agent} 进程意外退出。",
|
||||
"spawnFailed": "启动 {agent} 失败:{message}",
|
||||
"downloadFailed": "{agent} 下载失败:{message}"
|
||||
},
|
||||
"unableReadAgentConfig": "无法读取 Agent 配置:{message}",
|
||||
"autoLinkFailedTitle": "{agent} 自动链接失败",
|
||||
"preflightCheckFailedDefault": "预检查未通过,请检查 Agent 配置。",
|
||||
"preflightFailedTitle": "{agent} 预检查失败",
|
||||
"autoLinkPreflightFailed": "自动链接预检查失败:{message}",
|
||||
"connectFailedTitle": "{agent} 连接失败",
|
||||
"toolFallbackTitle": "工具",
|
||||
"eventErrorTitle": "Agent 错误",
|
||||
|
||||
@@ -851,7 +851,6 @@
|
||||
"connection": {
|
||||
"connected": "已連線",
|
||||
"connecting": "連線中...",
|
||||
"downloading": "下載中...",
|
||||
"prompting": "回應中...",
|
||||
"error": "連線異常",
|
||||
"disconnected": "未連線",
|
||||
@@ -1422,11 +1421,13 @@
|
||||
"unavailable": "{agent} 目前平台不可用。",
|
||||
"sdkMissing": "{agent} SDK 尚未安裝"
|
||||
},
|
||||
"backendErrors": {
|
||||
"initializeTimeout": "{agent} 連線交握逾時(60 秒未回應),請前往設定頁面檢查智能體與網路設定。",
|
||||
"processExited": "{agent} 處理程序意外結束。",
|
||||
"spawnFailed": "啟動 {agent} 失敗:{message}",
|
||||
"downloadFailed": "{agent} 下載失敗:{message}"
|
||||
},
|
||||
"unableReadAgentConfig": "無法讀取 Agent 設定:{message}",
|
||||
"autoLinkFailedTitle": "{agent} 自動連結失敗",
|
||||
"preflightCheckFailedDefault": "預檢查未通過,請檢查 Agent 設定。",
|
||||
"preflightFailedTitle": "{agent} 預檢查失敗",
|
||||
"autoLinkPreflightFailed": "自動連結預檢查失敗:{message}",
|
||||
"connectFailedTitle": "{agent} 連線失敗",
|
||||
"toolFallbackTitle": "工具",
|
||||
"eventErrorTitle": "Agent 錯誤",
|
||||
|
||||
Reference in New Issue
Block a user