Skip to content

Commit 3d2a04d

Browse files
authored
add opt-in setting for new task tools (microsoft#257178)
1 parent 16c5a9a commit 3d2a04d

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { IConfigurationService } from '../../../../../platform/configuration/com
88
import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';
99
import { registerWorkbenchContribution2, WorkbenchPhase, type IWorkbenchContribution } from '../../../../common/contributions.js';
1010
import { ILanguageModelToolsService } from '../../../chat/common/languageModelToolsService.js';
11+
import { TerminalChatAgentToolsSettingId } from '../common/terminalChatAgentToolsConfiguration.js';
1112
import { GetTaskOutputTool, GetTaskOutputToolData } from './task/getTaskOutputTool.js';
1213
import { RunTaskTool, RunTaskToolData } from './task/runTaskTool.js';
1314

@@ -23,14 +24,15 @@ class ChatAgentToolsContribution extends Disposable implements IWorkbenchContrib
2324
@ILanguageModelToolsService toolsService: ILanguageModelToolsService,
2425
) {
2526
super();
26-
27-
const runTaskTool = instantiationService.createInstance(RunTaskTool);
28-
this._register(toolsService.registerToolData(RunTaskToolData));
29-
this._register(toolsService.registerToolImplementation(RunTaskToolData.id, runTaskTool));
30-
31-
const getTaskOutputTool = instantiationService.createInstance(GetTaskOutputTool);
32-
this._register(toolsService.registerToolData(GetTaskOutputToolData));
33-
this._register(toolsService.registerToolImplementation(GetTaskOutputToolData.id, getTaskOutputTool));
27+
if (configurationService.getValue(TerminalChatAgentToolsSettingId.NewTaskToolsEnabled)) {
28+
const runTaskTool = instantiationService.createInstance(RunTaskTool);
29+
this._register(toolsService.registerToolData(RunTaskToolData));
30+
this._register(toolsService.registerToolImplementation(RunTaskToolData.id, runTaskTool));
31+
32+
const getTaskOutputTool = instantiationService.createInstance(GetTaskOutputTool);
33+
this._register(toolsService.registerToolData(GetTaskOutputToolData));
34+
this._register(toolsService.registerToolImplementation(GetTaskOutputToolData.id, getTaskOutputTool));
35+
}
3436
}
3537
}
3638
registerWorkbenchContribution2(ChatAgentToolsContribution.ID, ChatAgentToolsContribution, WorkbenchPhase.AfterRestored);

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { Codicon } from '../../../../../base/common/codicons.js';
77
import { Disposable } from '../../../../../base/common/lifecycle.js';
88
import { ThemeIcon } from '../../../../../base/common/themables.js';
99
import { localize } from '../../../../../nls.js';
10-
import { IConfigurationService } from '../../../../../platform/configuration/common/configuration.js';
1110
import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';
1211
import { registerWorkbenchContribution2, WorkbenchPhase, type IWorkbenchContribution } from '../../../../common/contributions.js';
1312
import { ILanguageModelToolsService, ToolDataSource } from '../../../chat/common/languageModelToolsService.js';
@@ -21,12 +20,10 @@ class ChatAgentToolsContribution extends Disposable implements IWorkbenchContrib
2120
static readonly ID = 'terminal.chatAgentTools';
2221

2322
constructor(
24-
@IConfigurationService configurationService: IConfigurationService,
2523
@IInstantiationService instantiationService: IInstantiationService,
2624
@ILanguageModelToolsService toolsService: ILanguageModelToolsService,
2725
) {
2826
super();
29-
3027
const runInTerminalTool = instantiationService.createInstance(RunInTerminalTool);
3128
this._register(toolsService.registerToolData(RunInTerminalToolData));
3229
this._register(toolsService.registerToolImplementation(RunInTerminalToolData.id, runInTerminalTool));

src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ import { ConfigurationScope, type IConfigurationPropertySchema } from '../../../
1010

1111
export const enum TerminalChatAgentToolsSettingId {
1212
AutoApprove = 'chat.agent.terminal.autoApprove',
13+
NewTaskToolsEnabled = 'chat.agent.terminal.newTaskToolsEnabled',
1314
}
1415

1516
export interface ITerminalChatAgentToolsConfiguration {
1617
autoApprove: { [key: string]: boolean };
18+
newTaskToolsEnabled: boolean;
1719
}
1820

1921
const autoApproveBoolean: IJSONSchema = {
@@ -30,6 +32,11 @@ const autoApproveBoolean: IJSONSchema = {
3032
};
3133

3234
export const terminalChatAgentToolsConfiguration: IStringDictionary<IConfigurationPropertySchema> = {
35+
[TerminalChatAgentToolsSettingId.NewTaskToolsEnabled]: {
36+
markdownDescription: localize('newTaskToolsEnabled.description', "Whether the new task tools are enabled."),
37+
type: 'boolean',
38+
default: false
39+
},
3340
[TerminalChatAgentToolsSettingId.AutoApprove]: {
3441
markdownDescription: [
3542
localize('autoApprove.description.intro', "A list of commands or regular expressions that control whether the run in terminal tool commands require explicit approval. These will be matched against the start of a command. A regular expression can be provided by wrapping the string in {0} characters followed by optional flags such as {1} for case-insensitivity.", '`/`', '`i`'),

0 commit comments

Comments
 (0)