From f8bd0989904dd876397816fdc27ccea0bb8c201d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 21:00:24 +0000 Subject: [PATCH 1/3] Initial plan From 9e30debaf389be90ce6d3853b12d6adacc097e87 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 21:07:35 +0000 Subject: [PATCH 2/3] Add error event handlers and UI error messages for environment creation failures Co-authored-by: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com> --- src/managers/builtin/helpers.ts | 11 +++++++++++ src/managers/builtin/venvManager.ts | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/src/managers/builtin/helpers.ts b/src/managers/builtin/helpers.ts index 4f71b9b4..7dc0bee4 100644 --- a/src/managers/builtin/helpers.ts +++ b/src/managers/builtin/helpers.ts @@ -38,6 +38,11 @@ export async function runUV( reject(new CancellationError()); }); + proc.on('error', (err) => { + log?.error(`Error spawning uv: ${err}`); + reject(new Error(`Error spawning uv: ${err.message}`)); + }); + let builder = ''; proc.stdout?.on('data', (data) => { const s = data.toString('utf-8'); @@ -72,6 +77,12 @@ export async function runPython( proc.kill(); reject(new CancellationError()); }); + + proc.on('error', (err) => { + log?.error(`Error spawning python: ${err}`); + reject(new Error(`Error spawning python: ${err.message}`)); + }); + let builder = ''; proc.stdout?.on('data', (data) => { const s = data.toString('utf-8'); diff --git a/src/managers/builtin/venvManager.ts b/src/managers/builtin/venvManager.ts index 80bbd637..f0a2af14 100644 --- a/src/managers/builtin/venvManager.ts +++ b/src/managers/builtin/venvManager.ts @@ -230,6 +230,11 @@ export class VenvManager implements EnvironmentManager { }`, ); } + } else if (result?.envCreationErr) { + // Show error message to user when environment creation failed + showErrorMessage( + l10n.t('Failed to create virtual environment: {0}', result.envCreationErr), + ); } return result?.environment ?? undefined; } finally { From 7f86804f1c5b047b298153ebd44881d4492e41bc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 21:12:12 +0000 Subject: [PATCH 3/3] Add error handling for conda environment creation and spawn errors Co-authored-by: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com> --- src/managers/conda/condaEnvManager.ts | 3 +++ src/managers/conda/condaUtils.ts | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/managers/conda/condaEnvManager.ts b/src/managers/conda/condaEnvManager.ts index d43743d8..82143cae 100644 --- a/src/managers/conda/condaEnvManager.ts +++ b/src/managers/conda/condaEnvManager.ts @@ -191,6 +191,9 @@ export class CondaEnvManager implements EnvironmentManager, Disposable { return result; } catch (error) { this.log.error('Failed to create conda environment:', error); + showErrorMessage( + l10n.t('Failed to create conda environment: {0}', error instanceof Error ? error.message : String(error)), + ); return undefined; } } diff --git a/src/managers/conda/condaUtils.ts b/src/managers/conda/condaUtils.ts index b83be769..80ffed55 100644 --- a/src/managers/conda/condaUtils.ts +++ b/src/managers/conda/condaUtils.ts @@ -212,6 +212,11 @@ async function _runConda( deferred.reject(new CancellationError()); }); + proc.on('error', (err) => { + log?.error(`Error spawning conda: ${err}`); + deferred.reject(new Error(`Error spawning conda: ${err.message}`)); + }); + let stdout = ''; let stderr = ''; proc.stdout?.on('data', (data) => {