@codingame/monaco-vscode-katex-common 32.0.1 → 33.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
  3. package/vscode/src/vs/platform/agentHost/common/claudeSessionConfigKeys.d.ts +30 -0
  4. package/vscode/src/vs/platform/agentHost/common/claudeSessionConfigKeys.js +8 -0
  5. package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.d.ts +32 -0
  6. package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.js +13 -0
  7. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +56 -36
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.d.ts +45 -0
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.js +114 -0
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.d.ts +87 -0
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.js +502 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.d.ts +45 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.js +188 -0
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/media/agentHostChatInputPicker.css +153 -0
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +2 -2
  23. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
  24. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  25. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +30 -30
  26. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +52 -52
  27. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +13 -13
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -34
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +4 -4
  31. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  32. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  33. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
  34. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.d.ts +1 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +23 -20
  36. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +13 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +40 -13
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +4 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +217 -13
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +30 -30
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +44 -44
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +10 -10
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +6 -6
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +2 -0
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +36 -23
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +12 -9
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +1 -3
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +8 -13
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +16 -0
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +2 -2
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +6 -6
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +24 -21
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +6 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +72 -23
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +8 -8
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +6 -6
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.d.ts +2 -4
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +7 -22
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +3 -3
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/media/toolRiskBadge.css +3 -3
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.d.ts +1 -0
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +25 -5
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +9 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +41 -27
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +31 -25
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +1 -1
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +4 -0
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +89 -27
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +4 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +203 -107
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +6 -1
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +3 -3
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +2 -2
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +5 -5
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +5 -5
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +1 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +18 -18
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +3 -3
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +32 -81
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +4 -4
  112. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
  113. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +6 -6
  114. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +18 -18
  115. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
  116. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  117. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  118. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +2 -2
  119. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +30 -30
  120. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  121. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  122. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  123. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
  124. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
  125. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
  126. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
  127. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
  128. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
  129. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
  130. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  131. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  132. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  133. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +4 -0
  134. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  135. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  136. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +4 -4
  137. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +29 -7
  138. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +27 -8
  139. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +17 -8
  140. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +150 -69
  141. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +1 -2
  142. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +9 -14
@@ -56,7 +56,7 @@ class TodoListRenderer {
56
56
  statusIcon.style.color = this.getStatusIconColor(todo.status);
57
57
  iconLabel.setLabel(todo.title);
58
58
  const statusText = this.getStatusText(todo.status);
59
- const ariaLabel = ( localize(7272, "{0}, {1}", todo.title, statusText));
59
+ const ariaLabel = ( localize(7347, "{0}, {1}", todo.title, statusText));
60
60
  todoElement.setAttribute("aria-label", ariaLabel);
61
61
  }
62
62
  disposeTemplate(templateData) {
@@ -65,12 +65,12 @@ class TodoListRenderer {
65
65
  getStatusText(status) {
66
66
  switch (status) {
67
67
  case "completed":
68
- return localize(7273, "completed");
68
+ return localize(7348, "completed");
69
69
  case "in-progress":
70
- return localize(7274, "in progress");
70
+ return localize(7349, "in progress");
71
71
  case "not-started":
72
72
  default:
73
- return localize(7275, "not started");
73
+ return localize(7350, "not started");
74
74
  }
75
75
  }
76
76
  getStatusIconClass(status) {
@@ -142,7 +142,7 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
142
142
  this.expandIcon.setAttribute("aria-hidden", "true");
143
143
  this.titleElement = $(".todo-list-title");
144
144
  this.titleElement.id = "todo-list-title";
145
- this.titleElement.textContent = ( localize(7276, "Todos"));
145
+ this.titleElement.textContent = ( localize(7351, "Todos"));
146
146
  this.clearButtonContainer = $(".todo-clear-button-container");
147
147
  this.createClearButton();
148
148
  titleSection.appendChild(this.expandIcon);
@@ -164,7 +164,7 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
164
164
  createClearButton() {
165
165
  this.clearButton = ( new Button(this.clearButtonContainer, {
166
166
  supportIcons: true,
167
- ariaLabel: ( localize(7277, "Clear all todos"))
167
+ ariaLabel: ( localize(7352, "Clear all todos"))
168
168
  }));
169
169
  this.clearButton.element.tabIndex = 0;
170
170
  this.clearButton.icon = Codicon.clearAll;
@@ -249,9 +249,9 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
249
249
  accessibilityProvider: {
250
250
  getAriaLabel: todo => {
251
251
  const statusText = this.getStatusText(todo.status);
252
- return localize(7272, "{0}, {1}", todo.title, statusText);
252
+ return localize(7347, "{0}, {1}", todo.title, statusText);
253
253
  },
254
- getWidgetAriaLabel: () => ( localize(7278, "Chat Todo List"))
254
+ getWidgetAriaLabel: () => ( localize(7353, "Chat Todo List"))
255
255
  }
256
256
  }
257
257
  ));
@@ -307,9 +307,9 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
307
307
  const shouldDisable = isRequestInProgress && hasInProgressTask;
308
308
  this.clearButton.enabled = !shouldDisable;
309
309
  if (shouldDisable) {
310
- this.clearButton.setTitle(( localize(7279, "Cannot clear todos while a task is in progress")));
310
+ this.clearButton.setTitle(( localize(7354, "Cannot clear todos while a task is in progress")));
311
311
  } else {
312
- this.clearButton.setTitle(( localize(7277, "Clear all todos")));
312
+ this.clearButton.setTitle(( localize(7352, "Clear all todos")));
313
313
  }
314
314
  }
315
315
  updateTitleElement(titleElement, todoList) {
@@ -321,12 +321,12 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
321
321
  const notStartedTodos = todoList.filter(todo => todo.status === "not-started");
322
322
  const firstNotStartedTodo = notStartedTodos.length > 0 ? notStartedTodos[0] : undefined;
323
323
  const currentTaskNumber = inProgressTodos.length > 0 ? completedCount + 1 : Math.max(1, completedCount);
324
- const expandButtonLabel = this._isExpanded ? ( localize(7280, "Collapse Todos")) : ( localize(7281, "Expand Todos"));
324
+ const expandButtonLabel = this._isExpanded ? ( localize(7355, "Collapse Todos")) : ( localize(7356, "Expand Todos"));
325
325
  this.expandoButton.element.setAttribute("aria-label", expandButtonLabel);
326
326
  this.expandoButton.element.setAttribute("aria-expanded", this._isExpanded ? "true" : "false");
327
327
  if (this._isExpanded) {
328
328
  const titleText = $("span");
329
- titleText.textContent = totalCount > 0 ? ( localize(7282, "Todos ({0}/{1})", currentTaskNumber, totalCount)) : ( localize(7276, "Todos"));
329
+ titleText.textContent = totalCount > 0 ? ( localize(7357, "Todos ({0}/{1})", currentTaskNumber, totalCount)) : ( localize(7351, "Todos"));
330
330
  titleElement.appendChild(titleText);
331
331
  } else {
332
332
  const todoToShow = firstInProgressTodo || firstNotStartedTodo;
@@ -343,7 +343,7 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
343
343
  icon.style.verticalAlign = "middle";
344
344
  titleElement.appendChild(icon);
345
345
  const todoText = $("span");
346
- todoText.textContent = ( localize(7283, "{0} ({1}/{2})", todoToShow.title, currentTaskNumber, totalCount));
346
+ todoText.textContent = ( localize(7358, "{0} ({1}/{2})", todoToShow.title, currentTaskNumber, totalCount));
347
347
  todoText.style.verticalAlign = "middle";
348
348
  todoText.style.overflow = "hidden";
349
349
  todoText.style.textOverflow = "ellipsis";
@@ -353,7 +353,7 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
353
353
  }
354
354
  else if (completedCount > 0 && completedCount === totalCount) {
355
355
  const doneText = $("span");
356
- doneText.textContent = ( localize(7282, "Todos ({0}/{1})", totalCount, totalCount));
356
+ doneText.textContent = ( localize(7357, "Todos ({0}/{1})", totalCount, totalCount));
357
357
  doneText.style.verticalAlign = "middle";
358
358
  titleElement.appendChild(doneText);
359
359
  }
@@ -362,12 +362,12 @@ let ChatTodoListWidget = class ChatTodoListWidget extends Disposable {
362
362
  getStatusText(status) {
363
363
  switch (status) {
364
364
  case "completed":
365
- return localize(7273, "completed");
365
+ return localize(7348, "completed");
366
366
  case "in-progress":
367
- return localize(7274, "in progress");
367
+ return localize(7349, "in progress");
368
368
  case "not-started":
369
369
  default:
370
- return localize(7275, "not started");
370
+ return localize(7350, "not started");
371
371
  }
372
372
  }
373
373
  };
@@ -10,7 +10,6 @@ import { LanguageModelPartAudience } from "@codingame/monaco-vscode-api/vscode/v
10
10
  import { ChatTreeItem, IChatCodeBlockInfo } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
11
11
  import { ICodeBlockRenderOptions } from "./codeBlockPart.js";
12
12
  import { IChatContentPartRenderContext } from "./chatContentParts.js";
13
- import { IChatMarkdownAnchorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.service";
14
13
  export interface IChatCollapsibleIOCodePart {
15
14
  kind: "code";
16
15
  data: string;
@@ -44,7 +43,6 @@ export declare class ChatCollapsibleInputOutputContentPart extends Disposable {
44
43
  private readonly output;
45
44
  private readonly contextKeyService;
46
45
  private readonly _instantiationService;
47
- private readonly chatMarkdownAnchorService;
48
46
  private readonly configurationService;
49
47
  private readonly _editorReferences;
50
48
  private readonly _titlePart;
@@ -56,7 +54,7 @@ export declare class ChatCollapsibleInputOutputContentPart extends Disposable {
56
54
  get title(): string | IMarkdownString;
57
55
  private readonly _expanded;
58
56
  get expanded(): boolean;
59
- constructor(title: IMarkdownString | string, subtitle: string | IMarkdownString | undefined, progressTooltip: IMarkdownString | string | undefined, context: IChatContentPartRenderContext, input: IChatCollapsibleInputData, output: IChatCollapsibleOutputData | undefined, isError: boolean, initiallyExpanded: boolean, shimmer: boolean, contextKeyService: IContextKeyService, _instantiationService: IInstantiationService, hoverService: IHoverService, chatMarkdownAnchorService: IChatMarkdownAnchorService, configurationService: IConfigurationService);
57
+ constructor(title: IMarkdownString | string, subtitle: string | IMarkdownString | undefined, progressTooltip: IMarkdownString | string | undefined, context: IChatContentPartRenderContext, input: IChatCollapsibleInputData, output: IChatCollapsibleOutputData | undefined, isError: boolean, initiallyExpanded: boolean, shimmer: boolean, contextKeyService: IContextKeyService, _instantiationService: IInstantiationService, hoverService: IHoverService, configurationService: IConfigurationService);
60
58
  private createMessageContents;
61
59
  private addCodeBlock;
62
60
  hasSameContent(other: IChatRendererContent, followingContent: IChatRendererContent[], element: ChatTreeItem): boolean;
@@ -17,8 +17,7 @@ import { AccessibilityWorkbenchSettingId } from '@codingame/monaco-vscode-api/vs
17
17
  import { CodeBlockPart } from './codeBlockPart.js';
18
18
  import { ChatQueryTitlePart } from './chatConfirmationWidget.js';
19
19
  import { ChatToolOutputContentSubPart } from './chatToolOutputContentSubPart.js';
20
- import { renderFileWidgets } from './chatInlineAnchorWidget.js';
21
- import { IChatMarkdownAnchorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.service';
20
+ import { getChatMarkdownRenderOptions } from '../chatContentMarkdownRenderer.js';
22
21
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
23
22
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
24
23
 
@@ -49,7 +48,6 @@ let ChatCollapsibleInputOutputContentPart = class ChatCollapsibleInputOutputCont
49
48
  contextKeyService,
50
49
  _instantiationService,
51
50
  hoverService,
52
- chatMarkdownAnchorService,
53
51
  configurationService
54
52
  ) {
55
53
  super();
@@ -58,7 +56,6 @@ let ChatCollapsibleInputOutputContentPart = class ChatCollapsibleInputOutputCont
58
56
  this.output = output;
59
57
  this.contextKeyService = contextKeyService;
60
58
  this._instantiationService = _instantiationService;
61
- this.chatMarkdownAnchorService = chatMarkdownAnchorService;
62
59
  this.configurationService = configurationService;
63
60
  this._editorReferences = [];
64
61
  this._contentInitialized = false;
@@ -70,12 +67,10 @@ let ChatCollapsibleInputOutputContentPart = class ChatCollapsibleInputOutputCont
70
67
  this._titlePart = this._register(
71
68
  _instantiationService.createInstance(ChatQueryTitlePart, titleEl.root, title, subtitle)
72
69
  );
73
- renderFileWidgets(
74
- titleEl.root,
75
- this._instantiationService,
76
- this.chatMarkdownAnchorService,
77
- this._store
78
- );
70
+ this._titlePart.setOptions({
71
+ markdownRenderOptions: getChatMarkdownRenderOptions(),
72
+ renderFileWidgets: true
73
+ });
79
74
  const spacer = createElement("span");
80
75
  spacer.style.flexGrow = "1";
81
76
  const btn = this._register(( new ButtonWithIcon(elements.root, {})));
@@ -143,13 +138,13 @@ let ChatCollapsibleInputOutputContentPart = class ChatCollapsibleInputOutputCont
143
138
  input,
144
139
  output
145
140
  } = this;
146
- contents.inputTitle.textContent = ( localize(7284, "Input"));
141
+ contents.inputTitle.textContent = ( localize(7359, "Input"));
147
142
  this.addCodeBlock(input, contents.input);
148
143
  if (!output) {
149
144
  contents.output.remove();
150
145
  contents.outputTitle.remove();
151
146
  } else {
152
- contents.outputTitle.textContent = ( localize(7285, "Output"));
147
+ contents.outputTitle.textContent = ( localize(7360, "Output"));
153
148
  const outputSubPart = this._register(
154
149
  this._instantiationService.createInstance(ChatToolOutputContentSubPart, this.context, output.parts)
155
150
  );
@@ -182,6 +177,6 @@ let ChatCollapsibleInputOutputContentPart = class ChatCollapsibleInputOutputCont
182
177
  this._outputSubPart?.layout(width);
183
178
  }
184
179
  };
185
- ChatCollapsibleInputOutputContentPart = ( __decorate([( __param(9, IContextKeyService)), ( __param(10, IInstantiationService)), ( __param(11, IHoverService)), ( __param(12, IChatMarkdownAnchorService)), ( __param(13, IConfigurationService))], ChatCollapsibleInputOutputContentPart));
180
+ ChatCollapsibleInputOutputContentPart = ( __decorate([( __param(9, IContextKeyService)), ( __param(10, IInstantiationService)), ( __param(11, IHoverService)), ( __param(12, IConfigurationService))], ChatCollapsibleInputOutputContentPart));
186
181
 
187
182
  export { ChatCollapsibleInputOutputContentPart };
@@ -83,7 +83,7 @@ let TreePool = class TreePool extends Disposable {
83
83
  },
84
84
  accessibilityProvider: {
85
85
  getAriaLabel: element => element.label,
86
- getWidgetAriaLabel: () => ( localize(7286, "File Tree"))
86
+ getWidgetAriaLabel: () => ( localize(7361, "File Tree"))
87
87
  },
88
88
  alwaysConsumeMouseWheel: false
89
89
  }
@@ -45,15 +45,15 @@ let ChatWorkspaceEditContentPart = class ChatWorkspaceEditContentPart extends Di
45
45
  for (const edit of workspaceEdit.edits) {
46
46
  if (edit.oldResource && !edit.newResource) {
47
47
  renderEntry(( localize(
48
- 7287,
48
+ 7362,
49
49
  "Deleted `{0}`",
50
50
  this.labelService.getUriBasenameLabel(edit.oldResource)
51
51
  )), Codicon.trash);
52
52
  } else if (!edit.oldResource && edit.newResource) {
53
- renderEntry(( localize(7288, "Created []({0})", (edit.newResource.toString()))), Codicon.newFile);
53
+ renderEntry(( localize(7363, "Created []({0})", (edit.newResource.toString()))), Codicon.newFile);
54
54
  } else if (edit.oldResource && edit.newResource) {
55
55
  renderEntry(( localize(
56
- 7289,
56
+ 7364,
57
57
  "Renamed {0} to []({1})",
58
58
  this.labelService.getUriBasenameLabel(edit.oldResource),
59
59
  (edit.newResource.toString())
@@ -135,7 +135,7 @@ let CodeBlockPart = class CodeBlockPart extends Disposable {
135
135
  multipleDefinitions: "goto",
136
136
  multipleImplementations: "goto"
137
137
  },
138
- ariaLabel: ( localize(7290, "Code block")),
138
+ ariaLabel: ( localize(7365, "Code block")),
139
139
  overflowWidgetsDomNode,
140
140
  tabFocusMode: true,
141
141
  ...this.getEditorOptionsFromConfig()
@@ -387,11 +387,11 @@ let CodeBlockPart = class CodeBlockPart extends Disposable {
387
387
  });
388
388
  if (!this.editor.getOption(EditorOption.ariaLabel)) {
389
389
  this.editor.updateOptions({
390
- ariaLabel: ( localize(7291, "Code block {0}", data.codeBlockIndex + 1))
390
+ ariaLabel: ( localize(7366, "Code block {0}", data.codeBlockIndex + 1))
391
391
  });
392
392
  }
393
393
  this.layout(width);
394
- const toolbarAriaLabel = ( localize(7292, "Code block {0}", data.codeBlockIndex + 1));
394
+ const toolbarAriaLabel = ( localize(7367, "Code block {0}", data.codeBlockIndex + 1));
395
395
  if (this.toolbar) {
396
396
  this.toolbar.setAriaLabel(toolbarAriaLabel);
397
397
  } else {
@@ -454,7 +454,7 @@ let CodeBlockPart = class CodeBlockPart extends Disposable {
454
454
  if (!this.currentCodeBlockData || !this.currentCodeBlockData.vulns) {
455
455
  return "";
456
456
  }
457
- const referencesLabel = this.currentCodeBlockData.vulns.length > 1 ? ( localize(7293, "{0} vulnerabilities", this.currentCodeBlockData.vulns.length)) : ( localize(7294, "{0} vulnerability", 1));
457
+ const referencesLabel = this.currentCodeBlockData.vulns.length > 1 ? ( localize(7368, "{0} vulnerabilities", this.currentCodeBlockData.vulns.length)) : ( localize(7369, "{0} vulnerability", 1));
458
458
  const icon = element => element.vulnerabilitiesListExpanded ? Codicon.chevronDown : Codicon.chevronRight;
459
459
  return `${referencesLabel} $(${icon(this.currentCodeBlockData.element).id})`;
460
460
  }
@@ -589,7 +589,7 @@ let CodeCompareBlockPart = class CodeCompareBlockPart extends Disposable {
589
589
  multipleDefinitions: "goto",
590
590
  multipleImplementations: "goto"
591
591
  },
592
- ariaLabel: ( localize(7290, "Code block")),
592
+ ariaLabel: ( localize(7365, "Code block")),
593
593
  overflowWidgetsDomNode,
594
594
  ...this.getEditorOptionsFromConfig()
595
595
  });
@@ -668,8 +668,8 @@ let CodeCompareBlockPart = class CodeCompareBlockPart extends Disposable {
668
668
  stickyScroll: {
669
669
  enabled: false
670
670
  },
671
- originalAriaLabel: ( localize(7295, "Original")),
672
- modifiedAriaLabel: ( localize(7296, "Modified")),
671
+ originalAriaLabel: ( localize(7370, "Original")),
672
+ modifiedAriaLabel: ( localize(7371, "Modified")),
673
673
  diffAlgorithm: "advanced",
674
674
  readOnly: false,
675
675
  isInEmbeddedEditor: true,
@@ -710,7 +710,7 @@ let CodeCompareBlockPart = class CodeCompareBlockPart extends Disposable {
710
710
  const toolbarElt = this.toolbar.getElement();
711
711
  toolbarElt.style.display = "block";
712
712
  if (this.accessibilityService.isScreenReaderOptimized()) {
713
- toolbarElt.ariaLabel = ( localize(7297, "Code block toolbar"));
713
+ toolbarElt.ariaLabel = ( localize(7372, "Code block toolbar"));
714
714
  }
715
715
  }
716
716
  getEditorOptionsFromConfig() {
@@ -751,7 +751,7 @@ let CodeCompareBlockPart = class CodeCompareBlockPart extends Disposable {
751
751
  await this.updateEditor(data, token);
752
752
  this.layout(width);
753
753
  this.diffEditor.updateOptions({
754
- ariaLabel: ( localize(7298, "Code Edits")),
754
+ ariaLabel: ( localize(7373, "Code Edits")),
755
755
  readOnly: !!data.isReadOnly
756
756
  });
757
757
  this.resourceLabel.element.setFile(data.edit.uri, {
@@ -786,12 +786,12 @@ let CodeCompareBlockPart = class CodeCompareBlockPart extends Disposable {
786
786
  });
787
787
  let template;
788
788
  if (data.edit.state.applied === 1) {
789
- template = ( localize(7299, "Applied 1 change in [[``{0}``]]", uriLabel));
789
+ template = ( localize(7374, "Applied 1 change in [[``{0}``]]", uriLabel));
790
790
  } else if (data.edit.state.applied < 0) {
791
- template = ( localize(7300, "Edits in [[``{0}``]] have been rejected", uriLabel));
791
+ template = ( localize(7375, "Edits in [[``{0}``]] have been rejected", uriLabel));
792
792
  } else {
793
793
  template = ( localize(
794
- 7301,
794
+ 7376,
795
795
  "Applied {0} changes in [[``{1}``]]",
796
796
  data.edit.state.applied,
797
797
  uriLabel
@@ -921,8 +921,8 @@ let DefaultChatTextEditor = class DefaultChatTextEditor {
921
921
  async _checkSha1(model, item) {
922
922
  if (item.state?.sha1 && this._sha1.computeSHA1(model) && this._sha1.computeSHA1(model) !== item.state.sha1) {
923
923
  const result = await this.dialogService.confirm({
924
- message: ( localize(7302, "The original file has been modified.")),
925
- detail: ( localize(7303, "Do you want to apply the changes anyway?"))
924
+ message: ( localize(7377, "The original file has been modified.")),
925
+ detail: ( localize(7378, "Do you want to apply the changes anyway?"))
926
926
  });
927
927
  if (!result.confirmed) {
928
928
  return false;
@@ -239,3 +239,19 @@ div.chat-terminal-content-part.progress-step > div.chat-terminal-output-containe
239
239
  color: var(--vscode-descriptionForeground);
240
240
  font-size: var(--vscode-chat-font-size-body-xs);
241
241
  }
242
+
243
+ .chat-used-context-label .chat-terminal-show-link {
244
+ color: var(--vscode-textLink-foreground);
245
+ cursor: pointer;
246
+ text-decoration: none;
247
+ }
248
+
249
+ .chat-used-context-label .chat-terminal-show-link:hover {
250
+ text-decoration: underline;
251
+ color: var(--vscode-textLink-activeForeground);
252
+ }
253
+
254
+ .chat-terminal-show-link-container {
255
+ display: inline;
256
+ white-space: nowrap;
257
+ }
@@ -70,7 +70,7 @@ let AbstractToolConfirmationSubPart = class AbstractToolConfirmationSubPart exte
70
70
  data: primaryAction.data,
71
71
  moreActions: moreActions.length > 0 ? moreActions : undefined
72
72
  }, {
73
- label: ( localize(7304, "Skip")),
73
+ label: ( localize(7379, "Skip")),
74
74
  tooltip: skipTooltip,
75
75
  data: () => {
76
76
  this.confirmWith(toolInvocation, {
@@ -46,9 +46,9 @@ let ExtensionsInstallConfirmationWidgetSubPart = class ExtensionsInstallConfirma
46
46
  append(this.domNode, chatExtensionsContentPart.domNode);
47
47
  const state = toolInvocation.state.get();
48
48
  if (state.type === IChatToolInvocation.StateKind.WaitingForConfirmation) {
49
- const allowLabel = ( localize(7305, "Allow"));
49
+ const allowLabel = ( localize(7380, "Allow"));
50
50
  const allowTooltip = keybindingService.appendKeybinding(allowLabel, AcceptToolConfirmationActionId);
51
- const cancelLabel = ( localize(7306, "Cancel"));
51
+ const cancelLabel = ( localize(7381, "Cancel"));
52
52
  const cancelTooltip = keybindingService.appendKeybinding(cancelLabel, CancelChatActionId);
53
53
  const enableAllowButtonEvent = this._register(( new Emitter()));
54
54
  const buttons = [{
@@ -68,9 +68,9 @@ let ExtensionsInstallConfirmationWidgetSubPart = class ExtensionsInstallConfirma
68
68
  tooltip: cancelTooltip
69
69
  }];
70
70
  const confirmWidget = this._register(instantiationService.createInstance(ChatConfirmationWidget, context, {
71
- title: state.confirmationMessages?.title ?? ( localize(7307, "Install Extensions")),
71
+ title: state.confirmationMessages?.title ?? ( localize(7382, "Install Extensions")),
72
72
  message: state.confirmationMessages?.message ?? ( localize(
73
- 7308,
73
+ 7383,
74
74
  "Click the Install button on the extension and then press Allow when finished."
75
75
  )),
76
76
  buttons
@@ -84,7 +84,7 @@ let ChatMcpAppModel = class ChatMcpAppModel extends Disposable {
84
84
  this._height = ChatMcpAppModel_1.heightCache.get(this.toolInvocation) ?? 300;
85
85
  this._webview = this._register(this._webviewService.createWebviewElement({
86
86
  origin: this._webviewOrigin,
87
- title: ( localize(7309, "MCP App")),
87
+ title: ( localize(7384, "MCP App")),
88
88
  options: {
89
89
  purpose: WebviewContentPurpose.ChatOutputItem,
90
90
  enableFindWidget: false,
@@ -100,7 +100,7 @@ let ChatMcpAppSubPart = class ChatMcpAppSubPart extends BaseChatToolInvocationSu
100
100
  {
101
101
  container.style.display = "none";
102
102
  const progressMessage = $("span");
103
- progressMessage.textContent = ( localize(7310, "Loading MCP App..."));
103
+ progressMessage.textContent = ( localize(7385, "Loading MCP App..."));
104
104
  const progressPart = this._instantiationService.createInstance(
105
105
  ChatProgressSubPart,
106
106
  progressMessage,
@@ -130,12 +130,12 @@ let ChatMcpAppSubPart = class ChatMcpAppSubPart extends BaseChatToolInvocationSu
130
130
  _showError(container, error) {
131
131
  const errorNode = $(".mcp-app-error");
132
132
  const errorMessage = ( new MarkdownString());
133
- errorMessage.appendText(( localize(7311, "Error loading MCP App: {0}", error.message || String(error))));
133
+ errorMessage.appendText(( localize(7386, "Error loading MCP App: {0}", error.message || String(error))));
134
134
  const errorWidget = this._register(( new ChatErrorWidget(ChatErrorLevel.Error, errorMessage, this._markdownRendererService)));
135
135
  errorNode.appendChild(errorWidget.domNode);
136
136
  const buttonContainer = append(errorNode, $(".chat-buttons-container"));
137
137
  const retryButton = this._register(( new Button(buttonContainer, defaultButtonStyles)));
138
- retryButton.label = ( localize(7312, "Retry"));
138
+ retryButton.label = ( localize(7387, "Retry"));
139
139
  this._register(retryButton.onDidClick(() => {
140
140
  this._model.retry();
141
141
  }));
@@ -38,8 +38,8 @@ let ChatMissingSandboxDepsConfirmationSubPart = class ChatMissingSandboxDepsConf
38
38
  this.render({
39
39
  allowActionId: AcceptToolConfirmationActionId,
40
40
  skipActionId: SkipToolConfirmationActionId,
41
- allowLabel: ( localize(7313, "Install")),
42
- skipLabel: ( localize(7314, "Cancel")),
41
+ allowLabel: ( localize(7388, "Install")),
42
+ skipLabel: ( localize(7389, "Cancel")),
43
43
  partType: "chatMissingSandboxDepsConfirmation"
44
44
  });
45
45
  }
@@ -137,7 +137,7 @@ let ChatModifiedFilesConfirmationSubPart = class ChatModifiedFilesConfirmationSu
137
137
  const addedSpan = append(countsContainer, $(".working-set-lines-added"));
138
138
  const removedSpan = append(countsContainer, $(".working-set-lines-removed"));
139
139
  titleButton.element.appendChild(countsContainer);
140
- const filesLabel = data.modifiedFiles.length === 1 ? ( localize(7315, "1 file changed")) : ( localize(7316, "{0} files changed", data.modifiedFiles.length));
140
+ const filesLabel = data.modifiedFiles.length === 1 ? ( localize(7390, "1 file changed")) : ( localize(7391, "{0} files changed", data.modifiedFiles.length));
141
141
  titleButton.label = filesLabel;
142
142
  let added = 0;
143
143
  let removed = 0;
@@ -153,13 +153,13 @@ let ChatModifiedFilesConfirmationSubPart = class ChatModifiedFilesConfirmationSu
153
153
  addedSpan.textContent = `+${added}`;
154
154
  removedSpan.textContent = `-${removed}`;
155
155
  titleButton.element.setAttribute("aria-label", ( localize(
156
- 7317,
156
+ 7392,
157
157
  "{0}, {1} lines added, {2} lines removed",
158
158
  filesLabel,
159
159
  added,
160
160
  removed
161
161
  )));
162
- countsContainer.setAttribute("aria-label", ( localize(7318, "{0} lines added, {1} lines removed", added, removed)));
162
+ countsContainer.setAttribute("aria-label", ( localize(7393, "{0} lines added, {1} lines removed", added, removed)));
163
163
  } else {
164
164
  countsContainer.remove();
165
165
  titleButton.element.setAttribute("aria-label", filesLabel);
@@ -169,8 +169,8 @@ let ChatModifiedFilesConfirmationSubPart = class ChatModifiedFilesConfirmationSu
169
169
  secondary: true,
170
170
  small: true,
171
171
  supportIcons: true,
172
- ariaLabel: ( localize(7319, "View All Changes")),
173
- title: ( localize(7319, "View All Changes"))
172
+ ariaLabel: ( localize(7394, "View All Changes")),
173
+ title: ( localize(7394, "View All Changes"))
174
174
  })));
175
175
  viewAllChangesButton.element.classList.add("default-colors");
176
176
  viewAllChangesButton.icon = Codicon.diffMultiple;
@@ -260,7 +260,7 @@ let ChatModifiedFilesConfirmationSubPart = class ChatModifiedFilesConfirmationSu
260
260
  }
261
261
  async openAllChanges(data) {
262
262
  await this.commandService.executeCommand("_workbench.openMultiDiffEditor", {
263
- title: ( localize(7320, "All Changes")),
263
+ title: ( localize(7395, "All Changes")),
264
264
  resources: ( data.modifiedFiles.map(file => ({
265
265
  originalUri: file.originalContentUri ? URI.revive(file.originalContentUri) : file.originalUri ? URI.revive(file.originalUri) : undefined,
266
266
  modifiedUri: file.modifiedContentUri ? URI.revive(file.modifiedContentUri) : URI.revive(file.uri)
@@ -112,7 +112,7 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
112
112
  moreActions = [];
113
113
  if (!autoApproveWarningAccepted) {
114
114
  moreActions.push({
115
- label: ( localize(7321, "Enable Auto Approve...")),
115
+ label: ( localize(7396, "Enable Auto Approve...")),
116
116
  data: {
117
117
  type: "enable"
118
118
  }
@@ -200,7 +200,7 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
200
200
  const detailParts = [];
201
201
  if (terminalData.requestUnsandboxedExecution) {
202
202
  const reasonText = (terminalData.requestUnsandboxedExecutionReason && terminalData.requestUnsandboxedExecutionReason.trim()) || ( localize(
203
- 7322,
203
+ 7397,
204
204
  "The model did not provide a reason for requesting unsandboxed execution."
205
205
  ));
206
206
  const inline = ( new MarkdownString(undefined, {
@@ -210,7 +210,7 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
210
210
  inline.appendText(reasonText);
211
211
  detailParts.push({
212
212
  inline,
213
- hoverLabel: ( localize(7323, "Sandbox insufficient:")),
213
+ hoverLabel: ( localize(7398, "Sandbox insufficient:")),
214
214
  hoverBody: escapeMarkdownSyntaxTokens(reasonText),
215
215
  isTrusted: undefined
216
216
  });
@@ -220,7 +220,7 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
220
220
  const hoverBody = inline.value.replace(/^\s*\$\([^)]+\)\s*/, "");
221
221
  detailParts.push({
222
222
  inline,
223
- hoverLabel: ( localize(7324, "Approval needed:")),
223
+ hoverLabel: ( localize(7399, "Approval needed:")),
224
224
  hoverBody,
225
225
  isTrusted: inline.isTrusted
226
226
  });
@@ -379,7 +379,7 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
379
379
  }
380
380
  const target = scope === "workspace" ? ConfigurationTarget.WORKSPACE : ConfigurationTarget.USER;
381
381
  const settingsUri = createCommandUri(TerminalContribCommandId.OpenTerminalSettingsLink, target);
382
- return `[\`${e.key}\`](${( settingsUri.toString())} "${( localize(7325, "View rule in settings"))}")`;
382
+ return `[\`${e.key}\`](${( settingsUri.toString())} "${( localize(7400, "View rule in settings"))}")`;
383
383
  })).join(", ");
384
384
  }
385
385
  const mdTrustSettings = {
@@ -390,33 +390,33 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
390
390
  const parts = [];
391
391
  if (sessionRules.length > 0) {
392
392
  parts.push(sessionRules.length === 1 ? ( localize(
393
- 7326,
393
+ 7401,
394
394
  "Session auto approve rule {0} added",
395
395
  formatRuleLinks(sessionRules, "session")
396
396
  )) : ( localize(
397
- 7327,
397
+ 7402,
398
398
  "Session auto approve rules {0} added",
399
399
  formatRuleLinks(sessionRules, "session")
400
400
  )));
401
401
  }
402
402
  if (workspaceRules.length > 0) {
403
403
  parts.push(workspaceRules.length === 1 ? ( localize(
404
- 7328,
404
+ 7403,
405
405
  "Workspace auto approve rule {0} added",
406
406
  formatRuleLinks(workspaceRules, "workspace")
407
407
  )) : ( localize(
408
- 7329,
408
+ 7404,
409
409
  "Workspace auto approve rules {0} added",
410
410
  formatRuleLinks(workspaceRules, "workspace")
411
411
  )));
412
412
  }
413
413
  if (userRules.length > 0) {
414
414
  parts.push(userRules.length === 1 ? ( localize(
415
- 7330,
415
+ 7405,
416
416
  "User auto approve rule {0} added",
417
417
  formatRuleLinks(userRules, "user")
418
418
  )) : ( localize(
419
- 7331,
419
+ 7406,
420
420
  "User auto approve rules {0} added",
421
421
  formatRuleLinks(userRules, "user")
422
422
  )));
@@ -446,7 +446,7 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
446
446
  enabledCommands: [TerminalContribCommandId.DisableSessionAutoApproval]
447
447
  }
448
448
  };
449
- terminalData.autoApproveInfo = ( new MarkdownString(`${( localize(7332, "All commands will be auto approved for this session"))} ([${( localize(7333, "Disable"))}](${( disableUri.toString())}))`, mdTrustSettings));
449
+ terminalData.autoApproveInfo = ( new MarkdownString(`${( localize(7407, "All commands will be auto approved for this session"))} ([${( localize(7408, "Disable"))}](${( disableUri.toString())}))`, mdTrustSettings));
450
450
  toolConfirmKind = ToolConfirmKind.UserAction;
451
451
  break;
452
452
  }
@@ -472,11 +472,11 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
472
472
  };
473
473
  };
474
474
  return [{
475
- ...getLabelAndTooltip(( localize(7334, "Allow")), AcceptToolConfirmationActionId),
475
+ ...getLabelAndTooltip(( localize(7409, "Allow")), AcceptToolConfirmationActionId),
476
476
  data: true,
477
477
  moreActions
478
478
  }, {
479
- ...getLabelAndTooltip(( localize(7335, "Skip")), SkipToolConfirmationActionId, ( localize(7336, "Proceed without executing this command"))),
479
+ ...getLabelAndTooltip(( localize(7410, "Skip")), SkipToolConfirmationActionId, ( localize(7411, "Proceed without executing this command"))),
480
480
  data: {
481
481
  type: "skip"
482
482
  },
@@ -486,9 +486,9 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
486
486
  async _showAutoApproveWarning() {
487
487
  const promptResult = await this.dialogService.prompt({
488
488
  type: Severity.Info,
489
- message: ( localize(7337, "Enable terminal auto approve?")),
489
+ message: ( localize(7412, "Enable terminal auto approve?")),
490
490
  buttons: [{
491
- label: ( localize(7338, "Enable")),
491
+ label: ( localize(7413, "Enable")),
492
492
  run: () => true
493
493
  }],
494
494
  cancelButton: true,
@@ -496,11 +496,11 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
496
496
  icon: Codicon.shield,
497
497
  markdownDetails: [{
498
498
  markdown: ( new MarkdownString(( localize(
499
- 7339,
499
+ 7414,
500
500
  "This will enable a configurable subset of commands to run in the terminal autonomously. It provides *best effort protections* and assumes the agent is not acting maliciously."
501
501
  ))))
502
502
  }, {
503
- markdown: ( new MarkdownString(`[${( localize(7340, "Learn more about the potential risks and how to avoid them."))}](https://code.visualstudio.com/docs/copilot/security#_security-considerations)`))
503
+ markdown: ( new MarkdownString(`[${( localize(7415, "Learn more about the potential risks and how to avoid them."))}](https://code.visualstudio.com/docs/copilot/security#_security-considerations)`))
504
504
  }]
505
505
  }
506
506
  });
@@ -520,11 +520,12 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
520
520
  widget.setAssessment(cached);
521
521
  } else {
522
522
  widget.setLoading();
523
- const cts = this._register(( new CancellationTokenSource()));
523
+ const cts = ( new CancellationTokenSource());
524
+ this._register(toDisposable(() => cts.dispose(true)));
524
525
  (async () => {
525
526
  try {
526
527
  const result = await this.riskAssessmentService.assess(tool, parameters, cts.token);
527
- if (cts.token.isCancellationRequested) {
528
+ if (cts.token.isCancellationRequested || widget.isDisposed) {
528
529
  return;
529
530
  }
530
531
  if (!result) {
@@ -533,7 +534,9 @@ let ChatTerminalToolConfirmationSubPart = class ChatTerminalToolConfirmationSubP
533
534
  }
534
535
  widget.setAssessment(result);
535
536
  } catch {
536
- widget.setHidden();
537
+ if (!widget.isDisposed) {
538
+ widget.setHidden();
539
+ }
537
540
  }
538
541
  })();
539
542
  }