Fix auto approve links for new rules

Fixes #270736
This commit is contained in:
Daniel Imms
2025-10-10 17:58:11 +09:00
parent f0e1593e4f
commit d9d9335d2c

View File

@@ -9,7 +9,7 @@ import { Separator } from '../../../../../../base/common/actions.js';
import { asArray } from '../../../../../../base/common/arrays.js';
import { Codicon } from '../../../../../../base/common/codicons.js';
import { ErrorNoTelemetry } from '../../../../../../base/common/errors.js';
import { MarkdownString, type IMarkdownString } from '../../../../../../base/common/htmlContent.js';
import { createCommandUri, MarkdownString, type IMarkdownString } from '../../../../../../base/common/htmlContent.js';
import { thenIfNotDisposed, thenRegisterOrDispose } from '../../../../../../base/common/lifecycle.js';
import { Schemas } from '../../../../../../base/common/network.js';
import Severity from '../../../../../../base/common/severity.js';
@@ -41,6 +41,7 @@ import { ChatCustomConfirmationWidget, IChatConfirmationButton } from '../chatCo
import { IChatContentPartRenderContext } from '../chatContentParts.js';
import { ChatMarkdownContentPart, EditorPool } from '../chatMarkdownContentPart.js';
import { BaseChatToolInvocationSubPart } from './chatToolInvocationSubPart.js';
import { openTerminalSettingsLinkCommandId } from './chatTerminalToolProgressPart.js';
export const enum TerminalToolConfirmationStorageKeys {
TerminalAutoApproveWarningAccepted = 'chat.tools.terminal.autoApprove.warningAccepted'
@@ -269,13 +270,19 @@ export class ChatTerminalToolConfirmationSubPart extends BaseChatToolInvocationS
await this.configurationService.updateValue(TerminalContribSettingId.AutoApprove, newValue, ConfigurationTarget.USER);
function formatRuleLinks(newRules: ITerminalNewAutoApproveRule[]): string {
return newRules.map(e => {
return `[\`${e.key}\`](settings_${ConfigurationTarget.USER} "${localize('ruleTooltip', 'View rule in settings')}")`;
const settingsUri = createCommandUri(openTerminalSettingsLinkCommandId, ConfigurationTarget.USER);
return `[\`${e.key}\`](${settingsUri.toString()} "${localize('ruleTooltip', 'View rule in settings')}")`;
}).join(', ');
}
const mdTrustSettings = {
isTrusted: {
enabledCommands: [openTerminalSettingsLinkCommandId]
}
};
if (newRules.length === 1) {
terminalData.autoApproveInfo = new MarkdownString(`_${localize('newRule', 'Auto approve rule {0} added', formatRuleLinks(newRules))}_`);
terminalData.autoApproveInfo = new MarkdownString(`_${localize('newRule', 'Auto approve rule {0} added', formatRuleLinks(newRules))}_`, mdTrustSettings);
} else if (newRules.length > 1) {
terminalData.autoApproveInfo = new MarkdownString(`_${localize('newRule.plural', 'Auto approve rules {0} added', formatRuleLinks(newRules))}_`);
terminalData.autoApproveInfo = new MarkdownString(`_${localize('newRule.plural', 'Auto approve rules {0} added', formatRuleLinks(newRules))}_`, mdTrustSettings);
}
toolConfirmKind = ToolConfirmKind.UserAction;
break;