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:
@@ -256,7 +256,6 @@ export const AGENT_COLORS: Record<AgentType, string> = {
|
||||
// ACP connection status (matches Rust ConnectionStatus)
|
||||
export type ConnectionStatus =
|
||||
| "connecting"
|
||||
| "downloading"
|
||||
| "connected"
|
||||
| "prompting"
|
||||
| "disconnected"
|
||||
@@ -442,7 +441,14 @@ export type AcpEvent =
|
||||
connection_id: string
|
||||
status: ConnectionStatus
|
||||
}
|
||||
| { type: "error"; connection_id: string; message: string }
|
||||
| {
|
||||
type: "error"
|
||||
connection_id: string
|
||||
message: string
|
||||
agent_type: string
|
||||
/** Stable backend error identifier for localization (e.g. "initialize_timeout"). */
|
||||
code: string | null
|
||||
}
|
||||
| {
|
||||
type: "available_commands"
|
||||
connection_id: string
|
||||
|
||||
Reference in New Issue
Block a user