Skip to content

Commit 9f1d9ce

Browse files
committed
Rename agent sandbox settings
1 parent b1b8217 commit 9f1d9ce

10 files changed

Lines changed: 111 additions & 126 deletions

File tree

extensions/vscode-api-tests/src/singlefolder-tests/chat.runInTerminal.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import { DeferredPromise, assertNoRpc, closeAllEditors, disposeAll } from '../ut
1111
const isWindows = process.platform === 'win32';
1212
const isMacOS = process.platform === 'darwin';
1313
const sandboxFileSystemSetting = isMacOS
14-
? 'chat.agent.sandboxFileSystem.mac'
15-
: 'chat.agent.sandboxFileSystem.linux';
14+
? 'chat.agent.sandbox.fileSystem.mac'
15+
: 'chat.agent.sandbox.fileSystem.linux';
1616

1717
/**
1818
* Extracts all text content from a LanguageModelToolResult.
@@ -264,12 +264,12 @@ function extractTextContent(result: vscode.LanguageModelToolResult): string {
264264

265265
setup(async () => {
266266
const configuration = vscode.workspace.getConfiguration();
267-
await configuration.update('chat.agent.sandbox', true, vscode.ConfigurationTarget.Global);
267+
await configuration.update('chat.agent.sandbox.enabled', 'on', vscode.ConfigurationTarget.Global);
268268
});
269269

270270
teardown(async () => {
271271
const configuration = vscode.workspace.getConfiguration();
272-
await configuration.update('chat.agent.sandbox', undefined, vscode.ConfigurationTarget.Global);
272+
await configuration.update('chat.agent.sandbox.enabled', undefined, vscode.ConfigurationTarget.Global);
273273
});
274274

275275
// Flaky: #305722
@@ -286,7 +286,7 @@ function extractTextContent(result: vscode.LanguageModelToolResult): string {
286286
this.timeout(60000);
287287

288288
const configuration = vscode.workspace.getConfiguration();
289-
await configuration.update('chat.agent.sandboxNetwork.allowedDomains', ['example.com'], vscode.ConfigurationTarget.Global);
289+
await configuration.update('chat.agent.sandbox.allowedNetworkDomains', ['example.com'], vscode.ConfigurationTarget.Global);
290290
try {
291291
const output = await invokeRunInTerminal('curl -s --max-time 5 https://example.com');
292292
const trimmed = output.trim();
@@ -296,7 +296,7 @@ function extractTextContent(result: vscode.LanguageModelToolResult): string {
296296
];
297297
assert.ok(acceptable.some(value => trimmed.includes(value) || trimmed === value), `Unexpected output: ${JSON.stringify(trimmed)}`);
298298
} finally {
299-
await configuration.update('chat.agent.sandboxNetwork.allowedDomains', undefined, vscode.ConfigurationTarget.Global);
299+
await configuration.update('chat.agent.sandbox.allowedNetworkDomains', undefined, vscode.ConfigurationTarget.Global);
300300
}
301301
});
302302

@@ -337,7 +337,7 @@ function extractTextContent(result: vscode.LanguageModelToolResult): string {
337337
? `/bin/bash: /tmp/${marker}.txt: Operation not permitted`
338338
: `/usr/bin/bash: line 1: /tmp/${marker}.txt: Read-only file system`;
339339
const sandboxBody = [
340-
`- If it would be reasonable to extend the sandbox rules, work with the user to update allowWrite for file system access problems in ${sandboxFileSystemSetting}, or to add required domains to chat.agent.sandboxNetwork.allowedDomains.`,
340+
`- If it would be reasonable to extend the sandbox rules, work with the user to update allowWrite for file system access problems in ${sandboxFileSystemSetting}, or to add required domains to chat.agent.sandbox.allowedNetworkDomains.`,
341341
'- Otherwise, immediately retry the command with requestUnsandboxedExecution=true. Do NOT ask the user \u2014 setting this flag automatically shows a confirmation prompt to the user.',
342342
'',
343343
'Here is the output of the command:',

src/vs/workbench/contrib/telemetry/browser/telemetry.contribution.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ class ConfigurationTelemetryContribution extends Disposable implements IWorkbenc
445445
}>('terminal.integrated.suggest.enabled', { settingValue: this.getValueToReport(key, target), source });
446446
return;
447447
case TerminalContribSettingId.AgentSandboxEnabled:
448+
case TerminalContribSettingId.DeprecatedAgentSandboxEnabled:
448449
this.telemetryService.publicLog2<UpdatedSettingEvent, {
449450
owner: 'isidorn';
450451
comment: 'This is used to know if agent sandbox is enabled or not';

src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts

Lines changed: 26 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -712,83 +712,67 @@ export async function registerTerminalConfiguration(getFontSnippets: () => Promi
712712

713713
Registry.as<IConfigurationMigrationRegistry>(WorkbenchExtensions.ConfigurationMigration)
714714
.registerConfigurationMigrations([{
715-
key: TerminalSettingId.EnableBell,
716-
migrateFn: (enableBell, accessor) => {
717-
const configurationKeyValuePairs: ConfigurationKeyValuePairs = [];
718-
let announcement = accessor('accessibility.signals.terminalBell')?.announcement ?? accessor('accessibility.alert.terminalBell');
719-
if (announcement !== undefined && !isString(announcement)) {
720-
announcement = announcement ? 'auto' : 'off';
721-
}
722-
configurationKeyValuePairs.push(['accessibility.signals.terminalBell', { value: { sound: enableBell ? 'on' : 'off', announcement } }]);
723-
configurationKeyValuePairs.push([TerminalSettingId.EnableBell, { value: undefined }]);
724-
configurationKeyValuePairs.push([TerminalSettingId.EnableVisualBell, { value: enableBell }]);
725-
return configurationKeyValuePairs;
726-
}
727-
}]);
728-
729-
Registry.as<IConfigurationMigrationRegistry>(WorkbenchExtensions.ConfigurationMigration)
730-
.registerConfigurationMigrations([{
731-
key: TerminalContribSettingId.DeprecatedTerminalSandboxEnabled,
715+
key: TerminalContribSettingId.DeprecatedAgentSandboxEnabled,
732716
migrateFn: (value: boolean, valueAccessor) => {
733717
const configurationKeyValuePairs: ConfigurationKeyValuePairs = [];
734718
if (value !== undefined && valueAccessor(TerminalContribSettingId.AgentSandboxEnabled) === undefined) {
735-
configurationKeyValuePairs.push([TerminalContribSettingId.AgentSandboxEnabled, { value }]);
736-
}
737-
configurationKeyValuePairs.push([TerminalContribSettingId.DeprecatedTerminalSandboxEnabled, { value: undefined }]);
738-
return configurationKeyValuePairs;
739-
}
740-
}, {
741-
key: TerminalContribSettingId.DeprecatedTerminalSandboxNetwork,
742-
migrateFn: (value: { allowedDomains?: string[]; deniedDomains?: string[] }, valueAccessor) => {
743-
const configurationKeyValuePairs: ConfigurationKeyValuePairs = [];
744-
if (value?.allowedDomains !== undefined && valueAccessor(TerminalContribSettingId.AgentSandboxNetworkAllowedDomains) === undefined) {
745-
configurationKeyValuePairs.push([TerminalContribSettingId.AgentSandboxNetworkAllowedDomains, { value: value.allowedDomains }]);
746-
}
747-
if (value?.deniedDomains !== undefined && valueAccessor(TerminalContribSettingId.AgentSandboxNetworkDeniedDomains) === undefined) {
748-
configurationKeyValuePairs.push([TerminalContribSettingId.AgentSandboxNetworkDeniedDomains, { value: value.deniedDomains }]);
719+
configurationKeyValuePairs.push([TerminalContribSettingId.AgentSandboxEnabled, { value: value ? 'on' : 'off' }]);
749720
}
750-
configurationKeyValuePairs.push([TerminalContribSettingId.DeprecatedTerminalSandboxNetwork, { value: undefined }]);
721+
configurationKeyValuePairs.push([TerminalContribSettingId.DeprecatedAgentSandboxEnabled, { value: undefined }]);
751722
return configurationKeyValuePairs;
752723
}
753724
}, {
754-
key: TerminalContribSettingId.DeprecatedTerminalSandboxNetworkAllowedDomains,
725+
key: TerminalContribSettingId.DeprecatedAgentSandboxNetworkAllowedDomains,
755726
migrateFn: (value: string[], valueAccessor) => {
756727
const configurationKeyValuePairs: ConfigurationKeyValuePairs = [];
757728
if (value !== undefined && valueAccessor(TerminalContribSettingId.AgentSandboxNetworkAllowedDomains) === undefined) {
758729
configurationKeyValuePairs.push([TerminalContribSettingId.AgentSandboxNetworkAllowedDomains, { value }]);
759730
}
760-
configurationKeyValuePairs.push([TerminalContribSettingId.DeprecatedTerminalSandboxNetworkAllowedDomains, { value: undefined }]);
731+
configurationKeyValuePairs.push([TerminalContribSettingId.DeprecatedAgentSandboxNetworkAllowedDomains, { value: undefined }]);
761732
return configurationKeyValuePairs;
762733
}
763734
}, {
764-
key: TerminalContribSettingId.DeprecatedTerminalSandboxNetworkDeniedDomains,
735+
key: TerminalContribSettingId.DeprecatedAgentSandboxNetworkDeniedDomains,
765736
migrateFn: (value: string[], valueAccessor) => {
766737
const configurationKeyValuePairs: ConfigurationKeyValuePairs = [];
767738
if (value !== undefined && valueAccessor(TerminalContribSettingId.AgentSandboxNetworkDeniedDomains) === undefined) {
768739
configurationKeyValuePairs.push([TerminalContribSettingId.AgentSandboxNetworkDeniedDomains, { value }]);
769740
}
770-
configurationKeyValuePairs.push([TerminalContribSettingId.DeprecatedTerminalSandboxNetworkDeniedDomains, { value: undefined }]);
741+
configurationKeyValuePairs.push([TerminalContribSettingId.DeprecatedAgentSandboxNetworkDeniedDomains, { value: undefined }]);
771742
return configurationKeyValuePairs;
772743
}
773-
},
774-
{
775-
key: TerminalContribSettingId.DeprecatedTerminalSandboxLinuxFileSystem,
744+
}, {
745+
key: TerminalContribSettingId.DeprecatedAgentSandboxLinuxFileSystem,
776746
migrateFn: (value: { denyRead?: string[]; allowWrite?: string[]; denyWrite?: string[] }, valueAccessor) => {
777747
const configurationKeyValuePairs: ConfigurationKeyValuePairs = [];
778748
if (value !== undefined && valueAccessor(TerminalContribSettingId.AgentSandboxLinuxFileSystem) === undefined) {
779749
configurationKeyValuePairs.push([TerminalContribSettingId.AgentSandboxLinuxFileSystem, { value }]);
780750
}
781-
configurationKeyValuePairs.push([TerminalContribSettingId.DeprecatedTerminalSandboxLinuxFileSystem, { value: undefined }]);
751+
configurationKeyValuePairs.push([TerminalContribSettingId.DeprecatedAgentSandboxLinuxFileSystem, { value: undefined }]);
782752
return configurationKeyValuePairs;
783753
}
784754
}, {
785-
key: TerminalContribSettingId.DeprecatedTerminalSandboxMacFileSystem,
755+
key: TerminalContribSettingId.DeprecatedAgentSandboxMacFileSystem,
786756
migrateFn: (value: { denyRead?: string[]; allowWrite?: string[]; denyWrite?: string[] }, valueAccessor) => {
787757
const configurationKeyValuePairs: ConfigurationKeyValuePairs = [];
788758
if (value !== undefined && valueAccessor(TerminalContribSettingId.AgentSandboxMacFileSystem) === undefined) {
789759
configurationKeyValuePairs.push([TerminalContribSettingId.AgentSandboxMacFileSystem, { value }]);
790760
}
791-
configurationKeyValuePairs.push([TerminalContribSettingId.DeprecatedTerminalSandboxMacFileSystem, { value: undefined }]);
761+
configurationKeyValuePairs.push([TerminalContribSettingId.DeprecatedAgentSandboxMacFileSystem, { value: undefined }]);
762+
return configurationKeyValuePairs;
763+
}
764+
}, {
765+
key: TerminalSettingId.EnableBell,
766+
migrateFn: (enableBell, accessor) => {
767+
const configurationKeyValuePairs: ConfigurationKeyValuePairs = [];
768+
let announcement = accessor('accessibility.signals.terminalBell')?.announcement ?? accessor('accessibility.alert.terminalBell');
769+
if (announcement !== undefined && !isString(announcement)) {
770+
announcement = announcement ? 'auto' : 'off';
771+
}
772+
configurationKeyValuePairs.push(['accessibility.signals.terminalBell', { value: { sound: enableBell ? 'on' : 'off', announcement } }]);
773+
configurationKeyValuePairs.push([TerminalSettingId.EnableBell, { value: undefined }]);
774+
configurationKeyValuePairs.push([TerminalSettingId.EnableVisualBell, { value: enableBell }]);
792775
return configurationKeyValuePairs;
793776
}
794777
}]);
778+

src/vs/workbench/contrib/terminal/terminalContribExports.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,11 @@ export const enum TerminalContribSettingId {
4747
ShellIntegrationTimeout = TerminalChatAgentToolsSettingId.ShellIntegrationTimeout,
4848
OutputLocation = TerminalChatAgentToolsSettingId.OutputLocation,
4949
AgentSandboxEnabled = TerminalChatAgentToolsSettingId.AgentSandboxEnabled,
50-
DeprecatedTerminalSandboxNetwork = TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxNetwork,
51-
DeprecatedTerminalSandboxEnabled = TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxEnabled,
52-
DeprecatedTerminalSandboxNetworkAllowedDomains = TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxNetworkAllowedDomains,
53-
DeprecatedTerminalSandboxNetworkDeniedDomains = TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxNetworkDeniedDomains,
54-
DeprecatedTerminalSandboxLinuxFileSystem = TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxLinuxFileSystem,
55-
DeprecatedTerminalSandboxMacFileSystem = TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxMacFileSystem,
50+
DeprecatedAgentSandboxEnabled = TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxEnabled,
51+
DeprecatedAgentSandboxNetworkAllowedDomains = TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxNetworkAllowedDomains,
52+
DeprecatedAgentSandboxNetworkDeniedDomains = TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxNetworkDeniedDomains,
53+
DeprecatedAgentSandboxLinuxFileSystem = TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxLinuxFileSystem,
54+
DeprecatedAgentSandboxMacFileSystem = TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxMacFileSystem,
5655
AgentSandboxNetworkAllowedDomains = TerminalChatAgentToolsSettingId.AgentSandboxNetworkAllowedDomains,
5756
AgentSandboxNetworkDeniedDomains = TerminalChatAgentToolsSettingId.AgentSandboxNetworkDeniedDomains,
5857
AgentSandboxLinuxFileSystem = TerminalChatAgentToolsSettingId.AgentSandboxLinuxFileSystem,

src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,15 @@ export class ChatAgentToolsContribution extends Disposable implements IWorkbench
140140
this._register(this._configurationService.onDidChangeConfiguration(e => {
141141
if (
142142
e.affectsConfiguration(TerminalChatAgentToolsSettingId.AgentSandboxEnabled) ||
143+
e.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxEnabled) ||
143144
e.affectsConfiguration(TerminalChatAgentToolsSettingId.AgentSandboxNetworkAllowedDomains) ||
145+
e.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxNetworkAllowedDomains) ||
144146
e.affectsConfiguration(TerminalChatAgentToolsSettingId.AgentSandboxNetworkDeniedDomains) ||
145-
e.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxEnabled) ||
146-
e.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxNetworkAllowedDomains) ||
147-
e.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedTerminalSandboxNetworkDeniedDomains)
147+
e.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxNetworkDeniedDomains) ||
148+
e.affectsConfiguration(TerminalChatAgentToolsSettingId.AgentSandboxLinuxFileSystem) ||
149+
e.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxLinuxFileSystem) ||
150+
e.affectsConfiguration(TerminalChatAgentToolsSettingId.AgentSandboxMacFileSystem) ||
151+
e.affectsConfiguration(TerminalChatAgentToolsSettingId.DeprecatedAgentSandboxMacFileSystem)
148152
) {
149153
this._registerRunInTerminalTool();
150154
}

src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -901,20 +901,20 @@ export class RunInTerminalTool extends Disposable implements IToolImpl {
901901
private _getBlockedDomainReason(blockedDomains: string[], deniedDomains: string[] = []): string {
902902
if (deniedDomains.length === blockedDomains.length && deniedDomains.length > 0) {
903903
if (blockedDomains.length === 1) {
904-
return localize('runInTerminal.unsandboxed.domain.reason.denied.single', "This command accesses {0}, which is blocked by chat.agent.sandboxNetwork.deniedDomains.", blockedDomains[0]);
904+
return localize('runInTerminal.unsandboxed.domain.reason.denied.single', "This command accesses {0}, which is blocked by chat.agent.sandbox.deniedNetworkDomains.", blockedDomains[0]);
905905
}
906-
return localize('runInTerminal.unsandboxed.domain.reason.denied.multi', "This command accesses {0} and {1} more domains that are blocked by chat.agent.sandboxNetwork.deniedDomains.", blockedDomains[0], blockedDomains.length - 1);
906+
return localize('runInTerminal.unsandboxed.domain.reason.denied.multi', "This command accesses {0} and {1} more domains that are blocked by chat.agent.sandbox.deniedNetworkDomains.", blockedDomains[0], blockedDomains.length - 1);
907907
}
908908
if (deniedDomains.length > 0) {
909909
if (blockedDomains.length === 1) {
910-
return localize('runInTerminal.unsandboxed.domain.reason.mixed.single', "This command accesses {0}, which is blocked by chat.agent.sandboxNetwork.deniedDomains or not added to chat.agent.sandboxNetwork.allowedDomains.", blockedDomains[0]);
910+
return localize('runInTerminal.unsandboxed.domain.reason.mixed.single', "This command accesses {0}, which is blocked by chat.agent.sandbox.deniedNetworkDomains or not added to chat.agent.sandbox.allowedNetworkDomains.", blockedDomains[0]);
911911
}
912-
return localize('runInTerminal.unsandboxed.domain.reason.mixed.multi', "This command accesses {0} and {1} more domains that are blocked by chat.agent.sandboxNetwork.deniedDomains or not added to chat.agent.sandboxNetwork.allowedDomains.", blockedDomains[0], blockedDomains.length - 1);
912+
return localize('runInTerminal.unsandboxed.domain.reason.mixed.multi', "This command accesses {0} and {1} more domains that are blocked by chat.agent.sandbox.deniedNetworkDomains or not added to chat.agent.sandbox.allowedNetworkDomains.", blockedDomains[0], blockedDomains.length - 1);
913913
}
914914
if (blockedDomains.length === 1) {
915-
return localize('runInTerminal.unsandboxed.domain.reason.single', "This command accesses {0}, which is not permitted by the current chat.agent.sandboxNetwork configuration.", blockedDomains[0]);
915+
return localize('runInTerminal.unsandboxed.domain.reason.single', "This command accesses {0}, which is not permitted by the current chat.agent.sandbox configuration.", blockedDomains[0]);
916916
}
917-
return localize('runInTerminal.unsandboxed.domain.reason.multi', "This command accesses {0} and {1} more domains that are not permitted by the current chat.agent.sandboxNetwork configuration.", blockedDomains[0], blockedDomains.length - 1);
917+
return localize('runInTerminal.unsandboxed.domain.reason.multi', "This command accesses {0} and {1} more domains that are not permitted by the current chat.agent.sandbox configuration.", blockedDomains[0], blockedDomains.length - 1);
918918
}
919919

920920
async invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult> {

0 commit comments

Comments
 (0)