diff --git a/src/client/chat/createVirtualEnvTool.ts b/src/client/chat/createVirtualEnvTool.ts index 56760d2b4bef..98faedba35e7 100644 --- a/src/client/chat/createVirtualEnvTool.ts +++ b/src/client/chat/createVirtualEnvTool.ts @@ -104,6 +104,7 @@ export class CreateVirtualEnvTool extends BaseTool createVirtualEnvironment({ interpreter: preferredGlobalPythonEnv.id, workspaceFolder, + selectEnvironment: true, }), token, ); diff --git a/src/client/chat/installPackagesTool.ts b/src/client/chat/installPackagesTool.ts index f7795620cf13..2c2e774f5fd0 100644 --- a/src/client/chat/installPackagesTool.ts +++ b/src/client/chat/installPackagesTool.ts @@ -11,6 +11,7 @@ import { LanguageModelToolResult, PreparedToolInvocation, Uri, + workspace, } from 'vscode'; import { PythonExtension } from '../api/types'; import { IServiceContainer } from '../ioc/types'; @@ -58,7 +59,14 @@ export class InstallPackagesTool extends BaseTool if (useEnvExtension()) { const api = await getEnvExtApi(); - const env = await api.getEnvironment(resourcePath); + // Normalize resourcePath to workspace folder for environment lookup. + // This ensures consistency with CreateVirtualEnvTool which creates environments + // for workspace folders, not individual files. + const workspaceFolder = resourcePath + ? workspace.getWorkspaceFolder(resourcePath) + : workspace.workspaceFolders?.[0]; + const envScope = workspaceFolder?.uri ?? resourcePath; + const env = await api.getEnvironment(envScope); if (env) { await raceCancellationError(api.managePackages(env, { install: options.input.packageList }), token); const resultMessage = `Successfully installed ${packagePlurality}: ${options.input.packageList.join(