|
1 | 1 | import { |
2 | 2 | CancellationToken, |
| 3 | + l10n, |
3 | 4 | LanguageModelTextPart, |
4 | 5 | LanguageModelTool, |
5 | 6 | LanguageModelToolInvocationOptions, |
@@ -130,9 +131,8 @@ export class GetEnvironmentInfoTool implements LanguageModelTool<IResourceRefere |
130 | 131 | _options: LanguageModelToolInvocationPrepareOptions<IResourceReference>, |
131 | 132 | _token: CancellationToken, |
132 | 133 | ): Promise<PreparedToolInvocation> { |
133 | | - const message = 'Preparing to fetch Python environment information...'; |
134 | 134 | return { |
135 | | - invocationMessage: message, |
| 135 | + invocationMessage: l10n.t('Fetching Python environment information'), |
136 | 136 | }; |
137 | 137 | } |
138 | 138 | } |
@@ -242,13 +242,46 @@ export class InstallPackageTool implements LanguageModelTool<IInstallPackageInpu |
242 | 242 | options: LanguageModelToolInvocationPrepareOptions<IInstallPackageInput>, |
243 | 243 | _token: CancellationToken, |
244 | 244 | ): Promise<PreparedToolInvocation> { |
245 | | - const packageList = options.input.packageList || []; |
246 | | - const packageCount = packageList.length; |
247 | | - const packageText = packageCount === 1 ? 'package' : 'packages'; |
248 | | - const message = `Preparing to install Python ${packageText}: ${packageList.join(', ')}...`; |
| 245 | + const workspacePath = options.input.resourcePath ? Uri.file(options.input.resourcePath) : undefined; |
| 246 | + |
| 247 | + const packageCount = options.input.packageList.length; |
| 248 | + let envName = ''; |
| 249 | + try { |
| 250 | + const environment = await this.api.getEnvironment(workspacePath); |
| 251 | + envName = environment?.displayName || ''; |
| 252 | + } catch { |
| 253 | + // |
| 254 | + } |
| 255 | + |
| 256 | + let title = ''; |
| 257 | + let invocationMessage = ''; |
| 258 | + const message = |
| 259 | + packageCount === 1 |
| 260 | + ? '' |
| 261 | + : l10n.t(`The following packages will be installed: {0}`, options.input.packageList.sort().join(', ')); |
| 262 | + if (envName) { |
| 263 | + title = |
| 264 | + packageCount === 1 |
| 265 | + ? l10n.t(`Install {0} in {1}?`, options.input.packageList[0], envName) |
| 266 | + : l10n.t(`Install packages in {0}?`, envName); |
| 267 | + invocationMessage = |
| 268 | + packageCount === 1 |
| 269 | + ? l10n.t(`Installing {0} in {1}`, options.input.packageList[0], envName) |
| 270 | + : l10n.t(`Installing packages {0} in {1}`, options.input.packageList.sort().join(', '), envName); |
| 271 | + } else { |
| 272 | + title = |
| 273 | + options.input.packageList.length === 1 |
| 274 | + ? l10n.t(`Install Python package '{0}'?`, options.input.packageList[0]) |
| 275 | + : l10n.t(`Install Python packages?`); |
| 276 | + invocationMessage = |
| 277 | + packageCount === 1 |
| 278 | + ? l10n.t(`Installing Python package '{0}'`, options.input.packageList[0]) |
| 279 | + : l10n.t(`Installing Python packages: {0}`, options.input.packageList.sort().join(', ')); |
| 280 | + } |
249 | 281 |
|
250 | 282 | return { |
251 | | - invocationMessage: message, |
| 283 | + confirmationMessages: { title, message }, |
| 284 | + invocationMessage, |
252 | 285 | }; |
253 | 286 | } |
254 | 287 | } |
0 commit comments