@codingame/monaco-vscode-katex-common 34.1.3 → 35.0.0

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 (244) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/base/browser/animationSync.d.ts +36 -0
  3. package/vscode/src/vs/base/browser/animationSync.js +23 -0
  4. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.js +23 -2
  5. package/vscode/src/vs/platform/actions/browser/buttonbar.js +3 -2
  6. package/vscode/src/vs/platform/agentHost/common/claudeSessionConfigKeys.d.ts +5 -5
  7. package/vscode/src/vs/platform/agentHost/common/fileEditDiff.d.ts +32 -0
  8. package/vscode/src/vs/platform/agentHost/common/fileEditDiff.js +33 -0
  9. package/vscode/src/vs/platform/agentHost/common/meta/agentFeedbackAnnotations.d.ts +90 -0
  10. package/vscode/src/vs/platform/agentHost/common/meta/agentFeedbackAttachments.d.ts +30 -0
  11. package/vscode/src/vs/platform/agentHost/common/meta/agentToolCallMeta.d.ts +65 -0
  12. package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.d.ts +16 -5
  13. package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.js +3 -2
  14. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-resource-watch/reducer.d.ts +21 -0
  15. package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.d.ts +8 -0
  16. package/vscode/src/vs/platform/agentHost/common/state/sessionReducers.d.ts +9 -0
  17. package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.d.ts +2 -2
  18. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +29 -0
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +105 -28
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +15 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +74 -44
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +2 -2
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +98 -24
  28. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.d.ts +8 -0
  29. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.js +31 -4
  30. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.d.ts +45 -4
  31. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.js +163 -37
  32. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostFolderPickerActionItem.d.ts +47 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostFolderPickerActionItem.js +172 -0
  34. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.d.ts +3 -1
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.js +7 -4
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionReferenceAttachment.d.ts +12 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSnapshotController.d.ts +116 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSnapshotController.js +348 -0
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/media/agentHostChatInputPicker.css +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/stateToProgressAdapter.d.ts +211 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/stateToProgressAdapter.js +64 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +18 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +13 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.d.ts +1 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +30 -18
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +4 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +29 -4
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +24 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +119 -41
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +27 -0
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionTypeAvailability.d.ts +63 -0
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionTypeAvailability.js +97 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +5 -6
  56. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +105 -88
  57. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +13 -13
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.d.ts +1 -0
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +46 -48
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +28 -0
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +98 -0
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.d.ts +3 -3
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +9 -7
  64. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatTurnPills.css +162 -0
  65. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.d.ts +9 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +95 -24
  67. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +22 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +151 -20
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +20 -2
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +5 -0
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +61 -17
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAutoModeResolutionContentPart.d.ts +20 -0
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAutoModeResolutionContentPart.js +55 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.d.ts +6 -2
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +81 -30
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +2 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.d.ts +11 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.js +13 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.js +9 -33
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.d.ts +6 -2
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.js +21 -11
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +6 -2
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +40 -19
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpAuthenticationContentPart.d.ts +35 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpAuthenticationContentPart.js +140 -0
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersStartingContentPart.d.ts +24 -0
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersStartingContentPart.js +58 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.d.ts +3 -1
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +29 -8
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +30 -30
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +1 -1
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +44 -44
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.d.ts +1 -2
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +12 -66
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +39 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +167 -43
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.d.ts +1 -15
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +9 -86
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSystemNotificationContentPart.d.ts +12 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSystemNotificationContentPart.js +23 -0
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +9 -1
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +141 -72
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +2 -0
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +17 -3
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTurnPillsPart.d.ts +29 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTurnPillsPart.js +110 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatAgentFeedbackReviewConfirmation.css +133 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatAutoModeResolution.css +30 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +4 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +18 -8
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatPlanReview.css +23 -7
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +33 -18
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatSubagentContent.css +23 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +44 -0
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +2 -0
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatToolConfirmationCarousel.css +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +9 -1
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +21 -4
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatAgentFeedbackReviewConfirmationSubPart.d.ts +48 -0
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatAgentFeedbackReviewConfirmationSubPart.js +279 -0
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.d.ts +43 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +53 -15
  144. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.d.ts +7 -9
  145. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  146. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.d.ts +4 -1
  147. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +24 -10
  148. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/{chatMissingSandboxDepsConfirmationSubPart.d.ts → chatSandboxPrerequisiteConfirmationSubPart.d.ts} +3 -2
  149. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/{chatMissingSandboxDepsConfirmationSubPart.js → chatSandboxPrerequisiteConfirmationSubPart.js} +14 -10
  150. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +0 -1
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +30 -59
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +2 -1
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +41 -29
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +8 -8
  155. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +2 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +12 -9
  157. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +1 -1
  158. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +43 -35
  159. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  160. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.d.ts +2 -1
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +11 -8
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeHelper.d.ts +18 -0
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeHelper.js +51 -0
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +4 -4
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +18 -3
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +266 -98
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +1 -0
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +8 -3
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatRestoreCheckpointActionViewItem.d.ts +32 -0
  172. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatRestoreCheckpointActionViewItem.js +135 -0
  173. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatTurnPills.d.ts +85 -0
  174. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatTurnPills.js +275 -0
  175. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +18 -1
  176. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +84 -37
  177. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  178. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatGoalBannerWidget.js +4 -4
  179. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.d.ts +14 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.d.ts +6 -1
  181. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +52 -4
  182. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +187 -13
  183. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +435 -139
  184. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatePersistence.d.ts +6 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatePersistence.js +21 -0
  186. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationLogic.d.ts +50 -0
  187. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationLogic.js +49 -0
  188. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationStore.d.ts +79 -0
  189. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelConfigurationStore.js +127 -0
  190. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +84 -8
  191. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +658 -430
  192. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +72 -8
  193. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +82 -7
  194. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +2 -2
  195. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatSelectedTools.d.ts +3 -3
  196. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatSelectedTools.js +6 -3
  197. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +2 -1
  198. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +23 -9
  199. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatGoalBannerWidget.css +2 -2
  200. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatInputNotificationWidget.css +28 -12
  201. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +3 -0
  202. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +15 -14
  203. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +60 -0
  204. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +18 -7
  205. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +49 -1
  206. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +141 -81
  207. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +7 -15
  208. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +30 -47
  209. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  210. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerInputActionItem.d.ts +20 -0
  211. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerInputActionItem.js +18 -0
  212. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +469 -148
  213. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +11 -2
  214. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +79 -28
  215. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +71 -2
  216. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +107 -45
  217. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +20 -0
  218. package/vscode/src/vs/workbench/contrib/chat/common/chatErrorMessages.d.ts +110 -0
  219. package/vscode/src/vs/workbench/contrib/chat/common/chatErrorMessages.js +37 -0
  220. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.d.ts +4 -1
  221. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +13 -11
  222. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.d.ts +8 -1
  223. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +57 -21
  224. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +18 -18
  225. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +4 -4
  226. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  227. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  228. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +30 -30
  229. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpToolCallUI.d.ts +39 -8
  231. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpToolCallUI.js +168 -72
  232. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  233. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  234. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
  235. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
  236. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
  237. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
  238. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
  239. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
  240. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
  241. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  242. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  243. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.d.ts +0 -30
  244. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.js +0 -147
@@ -0,0 +1,162 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+
6
+ /* Pills reflecting a single turn's status (changes + preview). Shared between
7
+ the floating widget above the chat input and the completed chat response. This
8
+ file styles the pills themselves; callers position the `.chat-turn-pills`
9
+ toolbar element. */
10
+
11
+ .chat-turn-pills,
12
+ .chat-turn-pills .monaco-toolbar,
13
+ .chat-turn-pills .monaco-action-bar,
14
+ .chat-turn-pills .monaco-action-bar .actions-container {
15
+ display: flex;
16
+ align-items: center;
17
+ min-width: 0;
18
+ }
19
+
20
+ .chat-turn-pills.hidden {
21
+ display: none;
22
+ }
23
+
24
+ /* Space the pills evenly next to each other. */
25
+ .chat-turn-pills .monaco-action-bar .actions-container {
26
+ gap: 6px;
27
+ }
28
+
29
+ /* Changes pill: <icon> N Files +x -y, rendered as a compact secondary button.
30
+ Its sizing/colors come from the standard `.monaco-text-button.small.secondary`
31
+ styles; only inline layout is set here. */
32
+ .chat-turn-pill-changes {
33
+ display: inline-flex;
34
+ align-items: center;
35
+ flex-shrink: 0;
36
+ }
37
+
38
+ .chat-turn-pill-changes .monaco-button.chat-turn-pill-changes-button {
39
+ display: inline-flex;
40
+ width: auto;
41
+ gap: 4px;
42
+ font-variant-numeric: tabular-nums;
43
+ white-space: nowrap;
44
+ touch-action: manipulation;
45
+ }
46
+
47
+ /* Hug the border with the focus ring instead of the base `outline-offset: 2px`,
48
+ which reads as a bloated ring on such a small pill. */
49
+ .chat-turn-pill-changes .monaco-button.chat-turn-pill-changes-button:focus {
50
+ outline-offset: 0 !important;
51
+ }
52
+
53
+ .monaco-workbench .chat-turn-pill-meta-icon.codicon[class*='codicon-'] {
54
+ display: inline-flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ width: var(--vscode-codiconFontSize-compact, 12px);
58
+ height: var(--vscode-codiconFontSize-compact, 12px);
59
+ margin: 0;
60
+ font-size: var(--vscode-codiconFontSize-compact, 12px);
61
+ flex-shrink: 0;
62
+ }
63
+
64
+ .chat-turn-pill-meta-added {
65
+ color: var(--vscode-chat-linesAddedForeground);
66
+ }
67
+
68
+ .chat-turn-pill-meta-removed {
69
+ color: var(--vscode-chat-linesRemovedForeground);
70
+ }
71
+
72
+ /* Preview pill: a single unified control — a resource label (file icon + name +
73
+ "preview" description), an in-pill separator, and a dropdown chevron. The pill
74
+ background/border live on the container so the inner (transparent) buttons read
75
+ as one pill; each inner button is an independent, tab-focusable click zone. The
76
+ 3-class selector beats `.monaco-action-bar .action-item { display: block }`. */
77
+ .chat-turn-pills .monaco-action-bar .chat-turn-pill-preview {
78
+ display: inline-flex;
79
+ align-items: stretch;
80
+ flex-shrink: 0;
81
+ /* Match the height of the changes pill (a small secondary button). */
82
+ height: 22px;
83
+ max-width: 280px;
84
+ border-radius: 4px;
85
+ color: var(--vscode-button-secondaryForeground);
86
+ background-color: var(--vscode-button-secondaryBackground);
87
+ border: 1px solid var(--vscode-button-secondaryBorder, transparent);
88
+ overflow: hidden;
89
+ }
90
+
91
+ .chat-turn-pill-preview .monaco-button {
92
+ touch-action: manipulation;
93
+ }
94
+
95
+ /* Left zone: the resource label (file icon + name + "preview"). The height is
96
+ set by the pill, so no vertical padding here. */
97
+ .chat-turn-pill-preview .monaco-button.chat-turn-pill-preview-primary {
98
+ display: inline-flex;
99
+ align-items: center;
100
+ width: auto;
101
+ min-width: 0;
102
+ padding: 0 8px;
103
+ overflow: hidden;
104
+ }
105
+
106
+ .chat-turn-pill-preview-primary .monaco-icon-label {
107
+ /* Center the icon and the name/description together — the label is a flex
108
+ row whose file icon `::before` is a fixed 22px tall, so without this the
109
+ shorter text sits at the top of the stretched row rather than on the icon's
110
+ vertical center. */
111
+ align-items: center;
112
+ min-width: 0;
113
+ overflow: hidden;
114
+ /* Match the changes pill, which uses the `.monaco-text-button.small` size. */
115
+ font-size: 11px;
116
+ }
117
+
118
+ .chat-turn-pill-preview .monaco-button.chat-turn-pill-preview-primary:hover {
119
+ background-color: var(--vscode-toolbar-hoverBackground);
120
+ }
121
+
122
+ /* In-pill separator between the label and the chevron. A 2px vertical margin
123
+ keeps it centered with a small gap at the top and bottom rather than spanning
124
+ the full pill height. */
125
+ .chat-turn-pill-preview-separator {
126
+ width: 1px;
127
+ flex-shrink: 0;
128
+ margin: 2px 0;
129
+ background-color: var(--vscode-button-secondaryBorder, var(--vscode-menu-separatorBackground));
130
+ opacity: 0.6;
131
+ }
132
+
133
+ .chat-turn-pill-preview-separator.hidden {
134
+ display: none;
135
+ }
136
+
137
+ /* Right zone: the dropdown chevron. The button stretches to the pill's full
138
+ height so its hover background spans top to bottom; the icon child stays
139
+ centered. */
140
+ .chat-turn-pill-preview .monaco-button.chat-turn-pill-preview-chevron {
141
+ display: inline-flex;
142
+ align-items: center;
143
+ justify-content: center;
144
+ width: auto;
145
+ padding: 0 5px;
146
+ }
147
+
148
+ .chat-turn-pill-preview .monaco-button.chat-turn-pill-preview-chevron:hover {
149
+ background-color: var(--vscode-toolbar-hoverBackground);
150
+ }
151
+
152
+ .chat-turn-pill-preview .monaco-button.chat-turn-pill-preview-chevron.hidden {
153
+ display: none;
154
+ }
155
+
156
+ /* Keyboard focus indicator: an inset ring so it stays visible inside the pill's
157
+ `overflow: hidden` rounded corners. */
158
+ .chat-turn-pill-preview .monaco-button:focus,
159
+ .chat-turn-pill-preview .monaco-button:focus-visible {
160
+ outline: none;
161
+ box-shadow: inset 0 0 0 1px var(--vscode-focusBorder);
162
+ }
@@ -13,6 +13,11 @@ export interface IToolRiskAssessment {
13
13
  /** One-sentence natural-language explanation, <= 140 chars. */
14
14
  readonly explanation: string;
15
15
  }
16
+ /**
17
+ * Which rubric the model uses to assess a tool call: `terminal` for a shell command, `generic`
18
+ * for file edits, reads, fetches, and everything else. When omitted, auto-detected from the tool id.
19
+ */
20
+ export type ToolRiskPromptKind = "terminal" | "generic";
16
21
  export declare class ChatToolRiskAssessmentService implements IChatToolRiskAssessmentService {
17
22
  private readonly _configurationService;
18
23
  private readonly _languageModelsService;
@@ -21,8 +26,10 @@ export declare class ChatToolRiskAssessmentService implements IChatToolRiskAsses
21
26
  private readonly _inFlight;
22
27
  constructor(_configurationService: IConfigurationService, _languageModelsService: ILanguageModelsService);
23
28
  isEnabled(): boolean;
24
- getCached(tool: IToolData, parameters: unknown): IToolRiskAssessment | undefined;
25
- assess(tool: IToolData, parameters: unknown, token: CancellationToken): Promise<IToolRiskAssessment | undefined>;
29
+ getCached(tool: IToolData, parameters: unknown, kind?: ToolRiskPromptKind): IToolRiskAssessment | undefined;
30
+ assess(tool: IToolData, parameters: unknown, token: CancellationToken, kind?: ToolRiskPromptKind, options?: {
31
+ ignoreEnablement?: boolean;
32
+ }): Promise<IToolRiskAssessment | undefined>;
26
33
  private _cacheKey;
27
34
  private _invokeModel;
28
35
  }
@@ -27,14 +27,15 @@ let ChatToolRiskAssessmentService = class ChatToolRiskAssessmentService {
27
27
  isEnabled() {
28
28
  return this._configurationService.getValue(ChatConfiguration.ToolRiskAssessmentEnabled) !== false;
29
29
  }
30
- getCached(tool, parameters) {
31
- return this._cache.get(this._cacheKey(tool, parameters))?.assessment;
30
+ getCached(tool, parameters, kind) {
31
+ return this._cache.get(this._cacheKey(tool, parameters, resolveRiskPromptKind(tool, kind)))?.assessment;
32
32
  }
33
- async assess(tool, parameters, token) {
34
- if (!this.isEnabled()) {
33
+ async assess(tool, parameters, token, kind, options) {
34
+ if (!options?.ignoreEnablement && !this.isEnabled()) {
35
35
  return undefined;
36
36
  }
37
- const key = this._cacheKey(tool, parameters);
37
+ const resolvedKind = resolveRiskPromptKind(tool, kind);
38
+ const key = this._cacheKey(tool, parameters, resolvedKind);
38
39
  const cached = this._cache.get(key);
39
40
  if (cached) {
40
41
  return cached.assessment;
@@ -45,7 +46,7 @@ let ChatToolRiskAssessmentService = class ChatToolRiskAssessmentService {
45
46
  }
46
47
  const promise = (async () => {
47
48
  try {
48
- const assessment = await this._invokeModel(tool, parameters, token);
49
+ const assessment = await this._invokeModel(tool, parameters, resolvedKind, token);
49
50
  if (token.isCancellationRequested) {
50
51
  return undefined;
51
52
  }
@@ -62,10 +63,10 @@ let ChatToolRiskAssessmentService = class ChatToolRiskAssessmentService {
62
63
  this._inFlight.set(key, promise);
63
64
  return promise;
64
65
  }
65
- _cacheKey(tool, parameters) {
66
- return tool.id + "::" + stableStringify(normalizeRiskCacheParameters(tool, parameters));
66
+ _cacheKey(tool, parameters, kind) {
67
+ return kind + "::" + tool.id + "::" + stableStringify(normalizeRiskCacheParameters(parameters, kind));
67
68
  }
68
- async _invokeModel(tool, parameters, token) {
69
+ async _invokeModel(tool, parameters, kind, token) {
69
70
  const modelId = this._configurationService.getValue(ChatConfiguration.ToolRiskAssessmentModel) || "copilot-utility-small";
70
71
  const models = await this._languageModelsService.selectLanguageModels({
71
72
  vendor: "copilot",
@@ -74,7 +75,7 @@ let ChatToolRiskAssessmentService = class ChatToolRiskAssessmentService {
74
75
  if (!models.length || token.isCancellationRequested) {
75
76
  return undefined;
76
77
  }
77
- const prompt = buildPrompt(tool, parameters);
78
+ const prompt = buildPrompt(tool, parameters, kind);
78
79
  const response = await this._languageModelsService.sendChatRequest(models[0], undefined, [{
79
80
  role: ChatMessageRole.User,
80
81
  content: [{
@@ -105,8 +106,11 @@ let ChatToolRiskAssessmentService = class ChatToolRiskAssessmentService {
105
106
  }
106
107
  };
107
108
  ChatToolRiskAssessmentService = ( __decorate([( __param(0, IConfigurationService)), ( __param(1, ILanguageModelsService))], ChatToolRiskAssessmentService));
108
- function normalizeRiskCacheParameters(tool, parameters) {
109
- if (tool.id === TerminalToolId.RunInTerminal && parameters && typeof parameters === "object") {
109
+ function resolveRiskPromptKind(tool, kind) {
110
+ return kind ?? (tool.id === TerminalToolId.RunInTerminal ? "terminal" : "generic");
111
+ }
112
+ function normalizeRiskCacheParameters(parameters, kind) {
113
+ if (kind === "terminal" && parameters && typeof parameters === "object") {
110
114
  const p = parameters;
111
115
  return {
112
116
  command: p.command
@@ -114,7 +118,11 @@ function normalizeRiskCacheParameters(tool, parameters) {
114
118
  }
115
119
  return parameters;
116
120
  }
117
- function buildPrompt(tool, parameters) {
121
+ function buildPrompt(tool, parameters, kind) {
122
+ const argsJson = serializeParameters(parameters);
123
+ return kind === "terminal" ? buildTerminalPrompt(tool, argsJson) : buildGenericToolPrompt(tool, argsJson);
124
+ }
125
+ function serializeParameters(parameters) {
118
126
  let argsJson;
119
127
  try {
120
128
  argsJson = JSON.stringify(parameters ?? {});
@@ -124,6 +132,9 @@ function buildPrompt(tool, parameters) {
124
132
  if (argsJson.length > MAX_PARAM_BYTES) {
125
133
  argsJson = argsJson.slice(0, MAX_PARAM_BYTES) + "...[truncated]";
126
134
  }
135
+ return argsJson;
136
+ }
137
+ function buildTerminalPrompt(tool, argsJson) {
127
138
  return [
128
139
  `You assess what one terminal command does for a code-editing AI agent, and how risky it is.`,
129
140
  `Reply with STRICT JSON only (no prose, no markdown fences):`,
@@ -136,14 +147,19 @@ function buildPrompt(tool, parameters) {
136
147
  ` 1. irreversible deletion of source code or user data (rm -rf on $HOME / source paths,`,
137
148
  ` find ... -delete on source globs), force-push, drop, format, npm publish -> red`,
138
149
  ` 2. arbitrary code execution from a remote source (curl ... | bash) -> red`,
139
- ` 3. modifies remote state (git push, deploy, post) -> orange`,
140
- ` 4. modifies local files or installs packages, including recoverable deletions`,
141
- ` such as rm -rf of build output, caches, or node_modules -> orange`,
142
- ` 5. otherwise (read-only, listing, status, diagnostics, GET requests) -> green`,
150
+ ` 3. installs a package or dependency from a registry (npm/yarn/pnpm install, pip`,
151
+ ` install, cargo add, gem install, go get, brew install, etc.) — pulls untrusted`,
152
+ ` third-party code that may run install scripts, a common supply-chain vector -> red`,
153
+ ` 4. modifies remote state (git push, deploy, post) -> orange`,
154
+ ` 5. modifies local files, including recoverable deletions such as rm -rf of build`,
155
+ ` output, caches, or node_modules -> orange`,
156
+ ` 6. otherwise (read-only, listing, status, diagnostics, GET requests) -> green`,
143
157
  ``,
144
158
  `Read-only commands are always GREEN. "rm -rf" is RED only when the target is`,
145
159
  `source code or user data; deleting recoverable build artifacts (node_modules,`,
146
- `dist, .cache) is ORANGE.`,
160
+ `dist, .cache) is ORANGE. Installing a package is RED even from a major registry,`,
161
+ `because it pulls untrusted third-party code onto this machine — a supply-chain`,
162
+ `risk regardless of whether the package manager runs install scripts.`,
147
163
  ``,
148
164
  `Examples:`,
149
165
  ` ls -lh -> green`,
@@ -153,10 +169,11 @@ function buildPrompt(tool, parameters) {
153
169
  ` npm ls -> green`,
154
170
  ` az vm list -> green`,
155
171
  ` kubectl get pods --all-namespaces -> green`,
156
- ` npm install lodash -> orange`,
157
172
  ` rm -rf node_modules -> orange (recoverable: reinstall)`,
158
173
  ` rm -rf dist -> orange (recoverable: rebuild)`,
159
174
  ` git push origin feature -> orange`,
175
+ ` npm install lodash -> red (pulls untrusted third-party code)`,
176
+ ` pip install requests -> red (pulls untrusted third-party code)`,
160
177
  ` rm -rf $HOME -> red`,
161
178
  ` rm -rf src -> red (irreplaceable source code)`,
162
179
  ` find . -name '*.test.ts' -delete -> red`,
@@ -166,8 +183,8 @@ function buildPrompt(tool, parameters) {
166
183
  ``,
167
184
  `Write "explanation" in this exact shape:`,
168
185
  ` - green : "<verb> <target>." e.g. "Lists running VMs in the current Azure subscription."`,
169
- ` - orange: "<verb> <target> — <consequence>." e.g. "Installs lodash into node_modules."`,
170
- ` - red : "<verb> <target> — <irreversible consequence>." e.g. "Force-pushes main — overwrites public history."`,
186
+ ` - orange: "<verb> <target> — <consequence>." e.g. "Pushes the feature branch to origin."`,
187
+ ` - red : "<verb> <target> — <irreversible or untrusted-code consequence>." e.g. "Force-pushes main — overwrites public history." or "Installs lodash — pulls untrusted third-party code."`,
171
188
  ``,
172
189
  `Strict explanation rules:`,
173
190
  ` - Cite the ACTUAL paths, commands, URLs, branches, globs from the arguments below.`,
@@ -180,6 +197,60 @@ function buildPrompt(tool, parameters) {
180
197
  `Arguments (JSON): ${argsJson}`
181
198
  ].join("\n");
182
199
  }
200
+ function buildGenericToolPrompt(tool, argsJson) {
201
+ return [
202
+ `You assess what one tool call does for a code-editing AI agent, and how risky it is.`,
203
+ `The tool may edit files, read files, fetch data, or perform some other action.`,
204
+ `Reply with STRICT JSON only (no prose, no markdown fences):`,
205
+ `{`,
206
+ ` "risk": "green" | "orange" | "red",`,
207
+ ` "explanation": "<one short sentence, <=18 words>"`,
208
+ `}`,
209
+ ``,
210
+ `Rules for "risk" — apply in order; take the FIRST match:`,
211
+ ` 1. permanently destroys source code or user data with no recovery`,
212
+ ` (irrecoverable deletion, wiping a database, unrecoverable overwrite) -> red`,
213
+ ` 2. executes code downloaded on the fly from an arbitrary or untrusted URL -> red`,
214
+ ` 3. installs a package or dependency from a registry (npm/pip/cargo/gem/etc.) —`,
215
+ ` pulls untrusted third-party code, a common supply-chain attack vector -> red`,
216
+ ` 4. sends data to a remote server or changes remote state (POST/PUT, upload, deploy) -> orange`,
217
+ ` 5. modifies local files or workspace state (edits, creates, reversible deletes) -> orange`,
218
+ ` 6. otherwise (reads files, lists, searches, fetches public read-only data) -> green`,
219
+ ``,
220
+ `Read-only operations are always GREEN. Editing or creating a workspace file is`,
221
+ `ORANGE (reversible via undo or version control), never red. RED is reserved for`,
222
+ `actions whose effects cannot be undone OR that execute untrusted third-party code.`,
223
+ `Installing a package is RED even from a normal registry, because it pulls`,
224
+ `untrusted third-party code onto this machine — a supply-chain risk regardless of`,
225
+ `whether the package manager runs install scripts.`,
226
+ ``,
227
+ `Examples:`,
228
+ ` read a file's contents -> green`,
229
+ ` list files in a directory -> green`,
230
+ ` search the workspace for a symbol -> green`,
231
+ ` fetch a public web page (GET) -> green`,
232
+ ` edit an existing source file -> orange`,
233
+ ` create a new file in the workspace -> orange`,
234
+ ` POST data to an external API -> orange`,
235
+ ` install a package -> red (pulls untrusted third-party code)`,
236
+ ` wipe a database table -> red`,
237
+ ` run code from an untrusted URL -> red`,
238
+ ``,
239
+ `Write "explanation" in this exact shape:`,
240
+ ` - green : "<verb> <target>." e.g. "Reads the contents of package.json."`,
241
+ ` - orange: "<verb> <target> — <consequence>." e.g. "Edits src/app.ts — changes workspace source."`,
242
+ ` - red : "<verb> <target> — <irreversible or untrusted-code consequence>." e.g. "Deletes src/app.ts — permanently removes source." or "Installs lodash — pulls untrusted third-party code."`,
243
+ ``,
244
+ `Strict explanation rules:`,
245
+ ` - Cite the ACTUAL files, paths, URLs, or values from the arguments below.`,
246
+ ` - Never use generic phrases like "may have side effects". Always name WHAT is read or changed.`,
247
+ ` - Plain prose. No quotes around the sentence. No markdown fences.`,
248
+ ``,
249
+ `Tool: ${tool.displayName} (id: ${tool.id})`,
250
+ `Description: ${tool.modelDescription || tool.userDescription || ""}`,
251
+ `Arguments (JSON): ${argsJson}`
252
+ ].join("\n");
253
+ }
183
254
  function parseAssessment(rawText, tool) {
184
255
  let text = rawText.trim();
185
256
  if (text.startsWith("```")) {
@@ -235,15 +306,15 @@ function truncate(s, max) {
235
306
  function defaultExplanationFor(risk, tool) {
236
307
  switch (risk) {
237
308
  case ToolRiskLevel.Green:
238
- return localize(7145, "{0} appears to have no observable side effects.", tool.displayName);
309
+ return localize(7653, "{0} appears to have no observable side effects.", tool.displayName);
239
310
  case ToolRiskLevel.Orange:
240
311
  return localize(
241
- 7146,
312
+ 7654,
242
313
  "{0} may modify your workspace or send data over the network.",
243
314
  tool.displayName
244
315
  );
245
316
  case ToolRiskLevel.Red:
246
- return localize(7147, "{0} performs an action that is hard to undo.", tool.displayName);
317
+ return localize(7655, "{0} performs an action that is hard to undo.", tool.displayName);
247
318
  }
248
319
  }
249
320
 
@@ -1,4 +1,5 @@
1
1
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
2
3
  import { Action2 } from "@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions";
3
4
  import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
4
5
  import { ServicesAccessor } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
@@ -7,7 +8,18 @@ import { IWorkbenchContribution } from "@codingame/monaco-vscode-api/vscode/vs/w
7
8
  import { IExtensionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service";
8
9
  import { ILifecycleService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service";
9
10
  import { IUserDataProfileService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.service";
11
+ import { ToolAndToolSetEnablementMap } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService";
10
12
  import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service";
13
+ import { IRawToolSetContribution } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution";
14
+ export declare abstract class RawToolSetsShape {
15
+ static readonly suffix = ".toolsets.jsonc";
16
+ static isToolSetFileName(uri: URI): boolean;
17
+ static from(data: unknown, logService: ILogService): {
18
+ entries: ReadonlyMap<string, Exclude<IRawToolSetContribution, "name">>;
19
+ };
20
+ entries: ReadonlyMap<string, Exclude<IRawToolSetContribution, "name">>;
21
+ private constructor();
22
+ }
11
23
  export declare class UserToolSetsContributions extends Disposable implements IWorkbenchContribution {
12
24
  private readonly _languageModelToolsService;
13
25
  private readonly _userDataProfileService;
@@ -17,8 +29,17 @@ export declare class UserToolSetsContributions extends Disposable implements IWo
17
29
  constructor(extensionService: IExtensionService, lifecycleService: ILifecycleService, _languageModelToolsService: ILanguageModelToolsService, _userDataProfileService: IUserDataProfileService, _fileService: IFileService, _logService: ILogService);
18
30
  private _initToolSets;
19
31
  }
32
+ export interface IConfigureToolSetsOptions {
33
+ readonly selection?: ToolAndToolSetEnablementMap;
34
+ }
35
+ export declare function getEnabledSelectionReferences(selection: ToolAndToolSetEnablementMap, toolsService: ILanguageModelToolsService): string[];
36
+ export declare function createToolSetFileContents(toolSetName: string, toolReferences: readonly string[]): string;
37
+ export declare function deleteToolSetFromFileContents(rawContents: string, toolSetName: string): {
38
+ contents: string;
39
+ isEmpty: boolean;
40
+ } | undefined;
20
41
  export declare class ConfigureToolSets extends Action2 {
21
42
  static readonly ID = "chat.configureToolSets";
22
43
  constructor();
23
- run(accessor: ServicesAccessor): Promise<void>;
44
+ run(accessor: ServicesAccessor, options?: IConfigureToolSetsOptions): Promise<void>;
24
45
  }