@codingame/monaco-vscode-chat-service-override 24.3.0 → 25.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 (271) hide show
  1. package/index.js +35 -35
  2. package/package.json +5 -5
  3. package/vscode/src/vs/workbench/contrib/chat/browser/{chatAccessibilityService.d.ts → accessibility/chatAccessibilityService.d.ts} +10 -8
  4. package/vscode/src/vs/workbench/contrib/chat/browser/{chatAccessibilityService.js → accessibility/chatAccessibilityService.js} +23 -11
  5. package/vscode/src/vs/workbench/contrib/chat/browser/{chatResponseAccessibleView.d.ts → accessibility/chatResponseAccessibleView.d.ts} +6 -0
  6. package/vscode/src/vs/workbench/contrib/chat/browser/{chatResponseAccessibleView.js → accessibility/chatResponseAccessibleView.js} +38 -10
  7. package/vscode/src/vs/workbench/contrib/chat/browser/{chatTerminalOutputAccessibleView.js → accessibility/chatTerminalOutputAccessibleView.js} +1 -1
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +7 -7
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +69 -60
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +2 -12
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.d.ts +3 -0
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +25 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +24 -22
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +13 -13
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +5 -5
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +48 -4
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +7 -7
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +12 -12
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +10 -10
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +16 -19
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +35 -19
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +4 -3
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +22 -17
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.d.ts +1 -1
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +3 -3
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +21 -21
  32. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +31 -53
  33. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +61 -25
  34. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +482 -125
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +16 -13
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +84 -93
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +2 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +10 -8
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.d.ts +7 -0
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +41 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +23 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +137 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.d.ts +15 -0
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +92 -0
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +81 -32
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +335 -102
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +3 -2
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +47 -51
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +80 -8
  50. package/vscode/src/vs/workbench/contrib/chat/browser/{chatAttachmentResolveService.d.ts → attachments/chatAttachmentResolveService.d.ts} +2 -2
  51. package/vscode/src/vs/workbench/contrib/chat/browser/{chatAttachmentResolveService.js → attachments/chatAttachmentResolveService.js} +4 -4
  52. package/vscode/src/vs/workbench/contrib/chat/browser/{chatVariables.d.ts → attachments/chatVariables.d.ts} +3 -3
  53. package/vscode/src/vs/workbench/contrib/chat/browser/{chatVariables.js → attachments/chatVariables.js} +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditing → attachments}/simpleBrowserEditorOverlay.js +21 -21
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +171 -206
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditing.d.ts +1 -1
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +2 -2
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +2 -2
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +2 -2
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +3 -3
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.d.ts +1 -1
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +1 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +20 -20
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +14 -14
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +3 -3
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +4 -4
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +4 -4
  70. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +3 -3
  71. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +3 -3
  72. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +3 -3
  73. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +1 -1
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +4 -4
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +10 -8
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +5 -5
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +6 -2
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +1 -1
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +2 -2
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +1 -1
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +2 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +1 -1
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.d.ts +1 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +2 -2
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +5 -5
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +18 -18
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +1 -1
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +41 -41
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +10 -10
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.d.ts +1 -1
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +35 -35
  98. package/vscode/src/vs/workbench/contrib/chat/browser/{chatSessions.contribution.d.ts → chatSessions/chatSessions.contribution.d.ts} +7 -11
  99. package/vscode/src/vs/workbench/contrib/chat/browser/{chatSessions.contribution.js → chatSessions/chatSessions.contribution.js} +53 -106
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +18 -22
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +3 -3
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -29
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +13 -13
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +3 -3
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +64 -64
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +22 -0
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +90 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/{chatContextService.d.ts → contextContrib/chatContextService.d.ts} +3 -3
  111. package/vscode/src/vs/workbench/contrib/chat/browser/{chatContextService.js → contextContrib/chatContextService.js} +1 -1
  112. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +7 -7
  113. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +3 -3
  115. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  116. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +8 -8
  117. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +4 -4
  118. package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsConfirmationService.d.ts → tools/languageModelToolsConfirmationService.d.ts} +4 -4
  119. package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsConfirmationService.js → tools/languageModelToolsConfirmationService.js} +47 -58
  120. package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsService.d.ts → tools/languageModelToolsService.d.ts} +5 -5
  121. package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsService.js → tools/languageModelToolsService.js} +21 -21
  122. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +1 -1
  123. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
  124. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  125. package/vscode/src/vs/workbench/contrib/chat/browser/{chatContentParts → widget/chatContentParts}/chatMarkdownAnchorService.d.ts +2 -2
  126. package/vscode/src/vs/workbench/contrib/chat/browser/{chatLayoutService.d.ts → widget/chatLayoutService.d.ts} +1 -1
  127. package/vscode/src/vs/workbench/contrib/chat/browser/{chatWidgetService.d.ts → widget/chatWidgetService.d.ts} +6 -2
  128. package/vscode/src/vs/workbench/contrib/chat/browser/{chatWidgetService.js → widget/chatWidgetService.js} +27 -5
  129. package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusWidget.d.ts → widget/input/chatStatusWidget.d.ts} +4 -2
  130. package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusWidget.js → widget/input/chatStatusWidget.js} +17 -10
  131. package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorContrib.js +12 -6
  132. package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorHover.d.ts +1 -1
  133. package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorHover.js +3 -3
  134. package/vscode/src/vs/workbench/contrib/chat/browser/{chatQuick.d.ts → widgetHosts/chatQuick.d.ts} +1 -1
  135. package/vscode/src/vs/workbench/contrib/chat/browser/{chatQuick.js → widgetHosts/chatQuick.js} +4 -4
  136. package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditor.d.ts → widgetHosts/editor/chatEditor.d.ts} +4 -5
  137. package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditor.js → widgetHosts/editor/chatEditor.js} +6 -6
  138. package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewPane.d.ts → widgetHosts/viewPane/chatViewPane.d.ts} +46 -31
  139. package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewPane.js → widgetHosts/viewPane/chatViewPane.js} +258 -154
  140. package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewTitleControl.d.ts → widgetHosts/viewPane/chatViewTitleControl.d.ts} +5 -12
  141. package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewTitleControl.js → widgetHosts/viewPane/chatViewTitleControl.js} +97 -85
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +176 -0
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +89 -0
  144. package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceImpl.d.ts → chatService/chatServiceImpl.d.ts} +16 -20
  145. package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceImpl.js → chatService/chatServiceImpl.js} +97 -151
  146. package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceTelemetry.d.ts → chatService/chatServiceTelemetry.d.ts} +4 -4
  147. package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceTelemetry.js → chatService/chatServiceTelemetry.js} +2 -2
  148. package/vscode/src/vs/workbench/contrib/chat/common/{chatCodeMapperService.d.ts → editing/chatCodeMapperService.d.ts} +1 -1
  149. package/vscode/src/vs/workbench/contrib/chat/common/{chatModelStore.d.ts → model/chatModelStore.d.ts} +2 -2
  150. package/vscode/src/vs/workbench/contrib/chat/common/{chatProgressTypes → model/chatProgressTypes}/chatToolInvocation.d.ts +2 -2
  151. package/vscode/src/vs/workbench/contrib/chat/common/{chatProgressTypes → model/chatProgressTypes}/chatToolInvocation.js +4 -4
  152. package/vscode/src/vs/workbench/contrib/chat/common/{chatSessionStore.d.ts → model/chatSessionStore.d.ts} +14 -7
  153. package/vscode/src/vs/workbench/contrib/chat/common/{chatSessionStore.js → model/chatSessionStore.js} +164 -39
  154. package/vscode/src/vs/workbench/contrib/chat/common/{chatTransferService.d.ts → model/chatTransferService.d.ts} +3 -3
  155. package/vscode/src/vs/workbench/contrib/chat/common/{chatTransferService.js → model/chatTransferService.js} +1 -1
  156. package/vscode/src/vs/workbench/contrib/chat/common/{chatSlashCommands.d.ts → participants/chatSlashCommands.d.ts} +2 -2
  157. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +25 -49
  158. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +1 -1
  159. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +2 -2
  160. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +1 -1
  161. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +6 -6
  162. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -1
  163. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +3 -3
  164. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +1 -1
  165. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +29 -29
  166. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +1 -1
  167. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +54 -54
  168. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +11 -4
  169. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +83 -18
  170. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +11 -5
  171. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +27 -10
  172. package/vscode/src/vs/workbench/contrib/chat/common/{chatTodoListService.d.ts → tools/chatTodoListService.d.ts} +1 -1
  173. package/vscode/src/vs/workbench/contrib/chat/common/{chatTodoListService.js → tools/chatTodoListService.js} +1 -1
  174. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +1 -1
  175. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +29 -29
  176. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +2 -2
  177. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +3 -3
  178. package/vscode/src/vs/workbench/contrib/chat/common/{chatResponseResourceFileSystemProvider.d.ts → widget/chatResponseResourceFileSystemProvider.d.ts} +1 -1
  179. package/vscode/src/vs/workbench/contrib/chat/common/{chatResponseResourceFileSystemProvider.js → widget/chatResponseResourceFileSystemProvider.js} +4 -4
  180. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +5 -5
  181. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
  182. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +23 -23
  183. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  184. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/common/remoteCodingAgentsService.js +1 -1
  185. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/media/terminalChatWidget.css +1 -0
  186. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  187. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +47 -30
  188. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +1 -1
  189. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.d.ts +1 -1
  190. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
  191. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +15 -1
  192. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +33 -11
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +4 -3
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +6 -5
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +1 -1
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +12 -2
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +1 -0
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +17 -2
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +12 -2
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +10 -1
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +22 -1
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +3 -2
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +100 -23
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +1 -1
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +6 -6
  206. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +2 -1
  207. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +19 -6
  208. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{commandLineAutoApprover.d.ts → tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts} +11 -12
  209. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{commandLineAutoApprover.js → tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js} +83 -6
  210. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +45 -0
  211. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +156 -0
  212. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +17 -2
  213. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +10 -0
  214. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +1 -1
  215. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +64 -26
  216. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +1 -0
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +16 -8
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +14 -0
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +31 -0
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.d.ts +1 -1
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +4 -4
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.d.ts +1 -1
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +4 -4
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.d.ts +1 -1
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +4 -4
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +3 -2
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +55 -23
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +1 -1
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +3 -3
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +85 -46
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.d.ts +1 -1
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +16 -16
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.d.ts +1 -1
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +9 -9
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.d.ts +1 -1
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +16 -16
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +1 -1
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +9 -5
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +1 -1
  241. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +0 -46
  242. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +0 -248
  243. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +0 -36
  244. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +0 -184
  245. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +0 -19
  246. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +0 -22
  247. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +0 -229
  248. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +0 -102
  249. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +0 -495
  250. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +0 -64
  251. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +0 -386
  252. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +0 -299
  253. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewPane.css +0 -142
  254. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewTitleControl.css +0 -39
  255. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatTerminalOutputAccessibleView.d.ts → accessibility/chatTerminalOutputAccessibleView.d.ts} +0 -0
  256. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → attachments/media}/simpleBrowserOverlay.css +0 -0
  257. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditing → attachments}/simpleBrowserEditorOverlay.d.ts +0 -0
  258. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatEditing/media}/chatEditingEditorOverlay.css +0 -0
  259. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatEditing/media}/chatEditorController.css +0 -0
  260. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatContentParts → widget/chatContentParts}/chatMarkdownAnchorService.js +0 -0
  261. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatLayoutService.js → widget/chatLayoutService.js} +0 -0
  262. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatEdinputInputContentProvider.d.ts → widget/input/editor/chatEditorInputContentProvider.d.ts} +0 -0
  263. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatEdinputInputContentProvider.js → widget/input/editor/chatEditorInputContentProvider.js} +0 -0
  264. /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorContrib.d.ts +0 -0
  265. /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/editorHoverWrapper.d.ts +0 -0
  266. /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/editorHoverWrapper.js +0 -0
  267. /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/media/editorHoverWrapper.css +0 -0
  268. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → widget/input/media}/chatStatusWidget.css +0 -0
  269. /package/vscode/src/vs/workbench/contrib/chat/common/{chatCodeMapperService.js → editing/chatCodeMapperService.js} +0 -0
  270. /package/vscode/src/vs/workbench/contrib/chat/common/{chatModelStore.js → model/chatModelStore.js} +0 -0
  271. /package/vscode/src/vs/workbench/contrib/chat/common/{chatSlashCommands.js → participants/chatSlashCommands.js} +0 -0
@@ -1,24 +1,29 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { structuralEquals } from '@codingame/monaco-vscode-api/vscode/vs/base/common/equals';
3
4
  import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
4
5
  import { regExpLeadsToEndlessLoop, escapeRegExpCharacters } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
5
6
  import { isObject } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
6
- import { structuralEquals } from '@codingame/monaco-vscode-api/vscode/vs/base/common/equals';
7
7
  import { ConfigurationTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration';
8
8
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
9
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
10
+ import { ITerminalChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
9
11
  import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
10
- import { isPowerShell } from './runInTerminalHelpers.js';
12
+ import { isPowerShell } from '../../../runInTerminalHelpers.js';
13
+ import { NpmScriptAutoApprover } from './npmScriptAutoApprover.js';
11
14
 
12
15
  const neverMatchRegex = /(?!.*)/;
13
16
  const transientEnvVarRegex = /^[A-Z_][A-Z0-9_]*=/i;
14
17
  let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
15
- constructor(_configurationService) {
18
+ constructor(_configurationService, instantiationService, _terminalChatService) {
16
19
  super();
17
20
  this._configurationService = _configurationService;
21
+ this._terminalChatService = _terminalChatService;
18
22
  this._denyListRules = [];
19
23
  this._allowListRules = [];
20
24
  this._allowListCommandLineRules = [];
21
25
  this._denyListCommandLineRules = [];
26
+ this._npmScriptAutoApprover = this._register(instantiationService.createInstance(NpmScriptAutoApprover));
22
27
  this.updateConfiguration();
23
28
  this._register(this._configurationService.onDidChangeConfiguration(e => {
24
29
  if (e.affectsConfiguration(TerminalChatAgentToolsSettingId.AutoApprove) ||
@@ -44,7 +49,7 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
44
49
  this._allowListCommandLineRules = allowListCommandLineRules;
45
50
  this._denyListCommandLineRules = denyListCommandLineRules;
46
51
  }
47
- isCommandAutoApproved(command, shell, os) {
52
+ async isCommandAutoApproved(command, shell, os, cwd, chatSessionId) {
48
53
  if (transientEnvVarRegex.test(command)) {
49
54
  return {
50
55
  result: 'denied',
@@ -60,6 +65,15 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
60
65
  };
61
66
  }
62
67
  }
68
+ for (const rule of this._getSessionRules(chatSessionId).allowListRules) {
69
+ if (this._commandMatchesRule(rule, command, shell, os)) {
70
+ return {
71
+ result: 'approved',
72
+ rule,
73
+ reason: `Command '${command}' is approved by session allow list rule: ${rule.sourceText}`
74
+ };
75
+ }
76
+ }
63
77
  for (const rule of this._allowListRules) {
64
78
  if (this._commandMatchesRule(rule, command, shell, os)) {
65
79
  return {
@@ -69,12 +83,20 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
69
83
  };
70
84
  }
71
85
  }
86
+ const npmScriptResult = await this._npmScriptAutoApprover.isCommandAutoApproved(command, cwd);
87
+ if (npmScriptResult.isAutoApproved) {
88
+ return {
89
+ result: 'approved',
90
+ rule: { type: 'npmScript', npmScriptResult },
91
+ reason: `Command '${command}' is approved as npm script '${npmScriptResult.scriptName}' is defined in package.json`
92
+ };
93
+ }
72
94
  return {
73
95
  result: 'noMatch',
74
96
  reason: `Command '${command}' has no matching auto approve entries`
75
97
  };
76
98
  }
77
- isCommandLineAutoApproved(commandLine) {
99
+ isCommandLineAutoApproved(commandLine, chatSessionId) {
78
100
  for (const rule of this._denyListCommandLineRules) {
79
101
  if (rule.regex.test(commandLine)) {
80
102
  return {
@@ -84,6 +106,15 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
84
106
  };
85
107
  }
86
108
  }
109
+ for (const rule of this._getSessionRules(chatSessionId).allowListCommandLineRules) {
110
+ if (rule.regex.test(commandLine)) {
111
+ return {
112
+ result: 'approved',
113
+ rule,
114
+ reason: `Command line '${commandLine}' is approved by session allow list rule: ${rule.sourceText}`
115
+ };
116
+ }
117
+ }
87
118
  for (const rule of this._allowListCommandLineRules) {
88
119
  if (rule.regex.test(commandLine)) {
89
120
  return {
@@ -98,6 +129,50 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
98
129
  reason: `Command line '${commandLine}' has no matching auto approve entries`
99
130
  };
100
131
  }
132
+ _getSessionRules(chatSessionId) {
133
+ const denyListRules = [];
134
+ const allowListRules = [];
135
+ const allowListCommandLineRules = [];
136
+ const denyListCommandLineRules = [];
137
+ if (!chatSessionId) {
138
+ return { denyListRules, allowListRules, allowListCommandLineRules, denyListCommandLineRules };
139
+ }
140
+ const sessionRulesConfig = this._terminalChatService.getSessionAutoApproveRules(chatSessionId);
141
+ for (const [key, value] of Object.entries(sessionRulesConfig)) {
142
+ if (typeof value === 'boolean') {
143
+ const { regex, regexCaseInsensitive } = this._convertAutoApproveEntryToRegex(key);
144
+ if (value === true) {
145
+ allowListRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget: 'session', isDefaultRule: false });
146
+ }
147
+ else if (value === false) {
148
+ denyListRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget: 'session', isDefaultRule: false });
149
+ }
150
+ }
151
+ else if (typeof value === 'object' && value !== null) {
152
+ const objectValue = value;
153
+ if (typeof objectValue.approve === 'boolean') {
154
+ const { regex, regexCaseInsensitive } = this._convertAutoApproveEntryToRegex(key);
155
+ if (objectValue.approve === true) {
156
+ if (objectValue.matchCommandLine === true) {
157
+ allowListCommandLineRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget: 'session', isDefaultRule: false });
158
+ }
159
+ else {
160
+ allowListRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget: 'session', isDefaultRule: false });
161
+ }
162
+ }
163
+ else if (objectValue.approve === false) {
164
+ if (objectValue.matchCommandLine === true) {
165
+ denyListCommandLineRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget: 'session', isDefaultRule: false });
166
+ }
167
+ else {
168
+ denyListRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget: 'session', isDefaultRule: false });
169
+ }
170
+ }
171
+ }
172
+ }
173
+ }
174
+ return { denyListRules, allowListRules, allowListCommandLineRules, denyListCommandLineRules };
175
+ }
101
176
  _commandMatchesRule(rule, command, shell, os) {
102
177
  const isPwsh = isPowerShell(shell, os);
103
178
  if ((isPwsh ? rule.regexCaseInsensitive : rule.regex).test(command)) {
@@ -229,7 +304,9 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
229
304
  }
230
305
  };
231
306
  CommandLineAutoApprover = ( __decorate([
232
- ( __param(0, IConfigurationService))
307
+ ( __param(0, IConfigurationService)),
308
+ ( __param(1, IInstantiationService)),
309
+ ( __param(2, ITerminalChatService))
233
310
  ], CommandLineAutoApprover));
234
311
 
235
312
  export { CommandLineAutoApprover };
@@ -0,0 +1,45 @@
1
+ import { type IMarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
2
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
4
+ import { IUriIdentityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service";
5
+ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
6
+ import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
7
+ import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
8
+ export interface INpmScriptAutoApproveResult {
9
+ isAutoApproved: boolean;
10
+ scriptName?: string;
11
+ autoApproveInfo?: IMarkdownString;
12
+ }
13
+ export declare class NpmScriptAutoApprover extends Disposable {
14
+ private readonly _configurationService;
15
+ private readonly _fileService;
16
+ private readonly _uriIdentityService;
17
+ private readonly _workspaceContextService;
18
+ constructor(_configurationService: IConfigurationService, _fileService: IFileService, _uriIdentityService: IUriIdentityService, _workspaceContextService: IWorkspaceContextService);
19
+ /**
20
+ * Checks if a single command is an npm/yarn/pnpm script that exists in package.json.
21
+ * Returns auto-approve result if the command is a valid script.
22
+ */
23
+ isCommandAutoApproved(command: string, cwd: URI | undefined): Promise<INpmScriptAutoApproveResult>;
24
+ /**
25
+ * Extracts script name from an npm/yarn/pnpm run command.
26
+ */
27
+ private _extractScriptName;
28
+ /**
29
+ * Checks if a URI is within any workspace folder.
30
+ */
31
+ private _isWithinWorkspace;
32
+ /**
33
+ * Finds and parses package.json to get the scripts section.
34
+ * Only looks within the workspace for security.
35
+ */
36
+ private _getPackageJsonScripts;
37
+ /**
38
+ * Reads and parses the scripts section from a package.json file.
39
+ */
40
+ private _readPackageJsonScripts;
41
+ /**
42
+ * Parses the scripts section from package.json content using jsonc-parser.
43
+ */
44
+ private _parsePackageJsonScripts;
45
+ }
@@ -0,0 +1,156 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
4
+ import { visit } from '@codingame/monaco-vscode-api/vscode/vs/base/common/json';
5
+ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
7
+ import { IUriIdentityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service';
8
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
9
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
10
+ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
11
+ import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
12
+ import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
13
+
14
+ const npmRunPatterns = [
15
+ /^(?<command>npm)\s+(?:run(?:-script)?)\s+(?<scriptName>[^\s&|;]+)/i,
16
+ /^(?<command>npm)\s+(?<scriptName>test|start|stop|restart)\b/i,
17
+ /^(?<command>yarn)\s+(?:run\s+)?(?<scriptName>[^\s&|;]+)/i,
18
+ /^(?<command>pnpm)\s+(?:run\s+)?(?<scriptName>[^\s&|;]+)/i,
19
+ ];
20
+ const yarnBuiltinCommands = ( new Set([
21
+ 'add', 'audit', 'autoclean', 'bin', 'cache', 'check', 'config',
22
+ 'create', 'dedupe', 'dlx', 'exec', 'explain', 'generate-lock-entry',
23
+ 'global', 'help', 'import', 'info', 'init', 'install', 'licenses',
24
+ 'link', 'list', 'login', 'logout', 'node', 'outdated', 'owner',
25
+ 'pack', 'patch', 'patch-commit', 'plugin', 'policies', 'publish',
26
+ 'rebuild', 'remove', 'run', 'search', 'set', 'stage', 'tag', 'team',
27
+ 'unlink', 'unplug', 'up', 'upgrade', 'upgrade-interactive',
28
+ 'version', 'versions', 'why', 'workspace', 'workspaces',
29
+ ]));
30
+ const pnpmBuiltinCommands = ( new Set([
31
+ 'add', 'audit', 'bin', 'config', 'dedupe', 'deploy', 'dlx', 'doctor',
32
+ 'env', 'exec', 'fetch', 'import', 'init', 'install', 'install-test',
33
+ 'licenses', 'link', 'list', 'ln', 'ls', 'outdated', 'pack', 'patch',
34
+ 'patch-commit', 'patch-remove', 'prune', 'publish', 'rb', 'rebuild',
35
+ 'remove', 'rm', 'root', 'run', 'server', 'setup', 'store',
36
+ 'un', 'uninstall', 'unlink', 'up', 'update', 'why',
37
+ ]));
38
+ let NpmScriptAutoApprover = class NpmScriptAutoApprover extends Disposable {
39
+ constructor(_configurationService, _fileService, _uriIdentityService, _workspaceContextService) {
40
+ super();
41
+ this._configurationService = _configurationService;
42
+ this._fileService = _fileService;
43
+ this._uriIdentityService = _uriIdentityService;
44
+ this._workspaceContextService = _workspaceContextService;
45
+ }
46
+ async isCommandAutoApproved(command, cwd) {
47
+ const isNpmScriptAutoApproveEnabled = this._configurationService.getValue(TerminalChatAgentToolsSettingId.AutoApproveWorkspaceNpmScripts) === true;
48
+ if (!isNpmScriptAutoApproveEnabled) {
49
+ return { isAutoApproved: false };
50
+ }
51
+ const scriptName = this._extractScriptName(command);
52
+ if (!scriptName) {
53
+ return { isAutoApproved: false };
54
+ }
55
+ const packageJsonScripts = await this._getPackageJsonScripts(cwd);
56
+ if (!packageJsonScripts) {
57
+ return { isAutoApproved: false };
58
+ }
59
+ if (!( packageJsonScripts.scripts.has(scriptName))) {
60
+ return { isAutoApproved: false };
61
+ }
62
+ return {
63
+ isAutoApproved: true,
64
+ scriptName,
65
+ autoApproveInfo: ( new MarkdownString(( localize(
66
+ 12021,
67
+ 'Auto approved as {0} is defined in package.json',
68
+ `\`${scriptName}\``
69
+ )))),
70
+ };
71
+ }
72
+ _extractScriptName(command) {
73
+ const trimmedCommand = command.trim();
74
+ for (const pattern of npmRunPatterns) {
75
+ const match = trimmedCommand.match(pattern);
76
+ if (match?.groups?.scriptName) {
77
+ const { command: pkgManager, scriptName } = match.groups;
78
+ if (pkgManager.toLowerCase() === 'yarn' && ( yarnBuiltinCommands.has(scriptName.toLowerCase()))) {
79
+ continue;
80
+ }
81
+ if (pkgManager.toLowerCase() === 'pnpm' && ( pnpmBuiltinCommands.has(scriptName.toLowerCase()))) {
82
+ continue;
83
+ }
84
+ return scriptName;
85
+ }
86
+ }
87
+ return undefined;
88
+ }
89
+ _isWithinWorkspace(uri) {
90
+ const workspaceFolders = this._workspaceContextService.getWorkspace().folders;
91
+ return ( workspaceFolders.some(
92
+ (folder) => this._uriIdentityService.extUri.isEqualOrParent(uri, folder.uri)
93
+ ));
94
+ }
95
+ async _getPackageJsonScripts(cwd) {
96
+ if (!cwd || !this._isWithinWorkspace(cwd)) {
97
+ return undefined;
98
+ }
99
+ const packageJsonUri = URI.joinPath(cwd, 'package.json');
100
+ const scripts = await this._readPackageJsonScripts(packageJsonUri);
101
+ if (scripts) {
102
+ return { uri: packageJsonUri, scripts };
103
+ }
104
+ return undefined;
105
+ }
106
+ async _readPackageJsonScripts(packageJsonUri) {
107
+ try {
108
+ const exists = await this._fileService.exists(packageJsonUri);
109
+ if (!exists) {
110
+ return undefined;
111
+ }
112
+ const content = await this._fileService.readFile(packageJsonUri);
113
+ const text = ( content.value.toString());
114
+ return this._parsePackageJsonScripts(text);
115
+ }
116
+ catch {
117
+ return undefined;
118
+ }
119
+ }
120
+ _parsePackageJsonScripts(content) {
121
+ const scripts = ( new Set());
122
+ let inScripts = false;
123
+ let level = 0;
124
+ const visitor = {
125
+ onError() {
126
+ },
127
+ onObjectBegin() {
128
+ level++;
129
+ },
130
+ onObjectEnd() {
131
+ if (inScripts && level === 2) {
132
+ inScripts = false;
133
+ }
134
+ level--;
135
+ },
136
+ onObjectProperty(property) {
137
+ if (level === 1 && property === 'scripts') {
138
+ inScripts = true;
139
+ }
140
+ else if (inScripts && level === 2) {
141
+ scripts.add(property);
142
+ }
143
+ },
144
+ };
145
+ visit(content, visitor);
146
+ return scripts.size > 0 ? scripts : undefined;
147
+ }
148
+ };
149
+ NpmScriptAutoApprover = ( __decorate([
150
+ ( __param(0, IConfigurationService)),
151
+ ( __param(1, IFileService)),
152
+ ( __param(2, IUriIdentityService)),
153
+ ( __param(3, IWorkspaceContextService))
154
+ ], NpmScriptAutoApprover));
155
+
156
+ export { NpmScriptAutoApprover };
@@ -2,8 +2,23 @@ import type { IMarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/bas
2
2
  import type { IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
3
  import type { OperatingSystem } from "@codingame/monaco-vscode-api/vscode/vs/base/common/platform";
4
4
  import type { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
5
- import type { ToolConfirmationAction } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
5
+ import type { ConfigurationTarget } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration";
6
+ import type { ToolConfirmationAction } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService";
7
+ import type { INpmScriptAutoApproveResult } from "./autoApprove/npmScriptAutoApprover.js";
6
8
  import type { TreeSitterCommandParserLanguage } from "../../treeSitterCommandParser.js";
9
+ export interface IAutoApproveRule {
10
+ regex: RegExp;
11
+ regexCaseInsensitive: RegExp;
12
+ sourceText: string;
13
+ sourceTarget: ConfigurationTarget | "session";
14
+ isDefaultRule: boolean;
15
+ }
16
+ export interface INpmScriptAutoApproveRule {
17
+ type: "npmScript";
18
+ npmScriptResult: INpmScriptAutoApproveResult;
19
+ }
20
+ export declare function isAutoApproveRule(rule: IAutoApproveRule | INpmScriptAutoApproveRule | undefined): rule is IAutoApproveRule;
21
+ export declare function isNpmScriptAutoApproveRule(rule: IAutoApproveRule | INpmScriptAutoApproveRule | undefined): rule is INpmScriptAutoApproveRule;
7
22
  export interface ICommandLineAnalyzer extends IDisposable {
8
23
  analyze(options: ICommandLineAnalyzerOptions): Promise<ICommandLineAnalyzerResult>;
9
24
  }
@@ -29,7 +44,7 @@ export interface ICommandLineAnalyzerResult {
29
44
  * - `undefined`: This analyzer does not make an approval/denial decision
30
45
  */
31
46
  readonly isAutoApproved?: boolean;
32
- readonly disclaimers?: readonly string[];
47
+ readonly disclaimers?: readonly (string | IMarkdownString)[];
33
48
  readonly autoApproveInfo?: IMarkdownString;
34
49
  readonly customActions?: ToolConfirmationAction[];
35
50
  }
@@ -0,0 +1,10 @@
1
+
2
+
3
+ function isAutoApproveRule(rule) {
4
+ return !!rule && 'sourceText' in rule;
5
+ }
6
+ function isNpmScriptAutoApproveRule(rule) {
7
+ return !!rule && 'type' in rule && rule.type === 'npmScript';
8
+ }
9
+
10
+ export { isAutoApproveRule, isNpmScriptAutoApproveRule };
@@ -5,7 +5,7 @@ import { ITerminalChatService } from "@codingame/monaco-vscode-api/vscode/vs/wor
5
5
  import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
6
6
  import type { RunInTerminalToolTelemetry } from "../../runInTerminalToolTelemetry.js";
7
7
  import { type TreeSitterCommandParser } from "../../treeSitterCommandParser.js";
8
- import type { ICommandLineAnalyzer, ICommandLineAnalyzerOptions, ICommandLineAnalyzerResult } from "./commandLineAnalyzer.js";
8
+ import { type ICommandLineAnalyzer, type ICommandLineAnalyzerOptions, type ICommandLineAnalyzerResult } from "./commandLineAnalyzer.js";
9
9
  export declare class CommandLineAutoApproveAnalyzer extends Disposable implements ICommandLineAnalyzer {
10
10
  private readonly _treeSitterCommandParser;
11
11
  private readonly _telemetry;
@@ -4,17 +4,19 @@ import { asArray } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arra
4
4
  import { createCommandUri, MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
5
5
  import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
6
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
7
+ import { ConfigurationTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration';
7
8
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
8
9
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
9
10
  import { ITerminalChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
10
11
  import { StorageScope } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
11
12
  import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
12
- import { TerminalToolConfirmationStorageKeys } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/chat/browser/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart';
13
+ import { TerminalToolConfirmationStorageKeys } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart';
13
14
  import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
14
15
  import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
15
- import { CommandLineAutoApprover } from '../../commandLineAutoApprover.js';
16
16
  import { isPowerShell, generateAutoApproveActions, dedupeRules } from '../../runInTerminalHelpers.js';
17
+ import { isAutoApproveRule, isNpmScriptAutoApproveRule } from './commandLineAnalyzer.js';
17
18
  import { TerminalChatCommandId } from '@codingame/monaco-vscode-xterm-common/vscode/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat';
19
+ import { CommandLineAutoApprover } from './autoApprove/commandLineAutoApprover.js';
18
20
 
19
21
  const promptInjectionWarningCommandsLower = [
20
22
  'curl',
@@ -50,12 +52,13 @@ let CommandLineAutoApproveAnalyzer = class CommandLineAutoApproveAnalyzer extend
50
52
  isAutoApproved: true,
51
53
  isAutoApproveAllowed: true,
52
54
  disclaimers: [],
53
- autoApproveInfo: ( new MarkdownString(`${( localize(11997, 'Auto approved for this session'))} ([${( localize(11998, 'Disable'))}](${( disableUri.toString())}))`, mdTrustSettings)),
55
+ autoApproveInfo: ( new MarkdownString(`${( localize(12022, 'Auto approved for this session'))} ([${( localize(12023, 'Disable'))}](${( disableUri.toString())}))`, mdTrustSettings)),
54
56
  };
55
57
  }
58
+ const trimmedCommandLine = options.commandLine.trimStart();
56
59
  let subCommands;
57
60
  try {
58
- subCommands = await this._treeSitterCommandParser.extractSubCommands(options.treeSitterLanguage, options.commandLine);
61
+ subCommands = await this._treeSitterCommandParser.extractSubCommands(options.treeSitterLanguage, trimmedCommandLine);
59
62
  this._log(`Parsed sub-commands via ${options.treeSitterLanguage} grammar`, subCommands);
60
63
  }
61
64
  catch (e) {
@@ -71,10 +74,10 @@ let CommandLineAutoApproveAnalyzer = class CommandLineAutoApproveAnalyzer extend
71
74
  disclaimers: [],
72
75
  };
73
76
  }
74
- const subCommandResults = ( subCommands.map(
75
- e => this._commandLineAutoApprover.isCommandAutoApproved(e, options.shell, options.os)
76
- ));
77
- const commandLineResult = this._commandLineAutoApprover.isCommandLineAutoApproved(options.commandLine);
77
+ const subCommandResults = await Promise.all(( subCommands.map(
78
+ e => this._commandLineAutoApprover.isCommandAutoApproved(e, options.shell, options.os, options.cwd, options.chatSessionId)
79
+ )));
80
+ const commandLineResult = this._commandLineAutoApprover.isCommandLineAutoApproved(trimmedCommandLine, options.chatSessionId);
78
81
  const autoApproveReasons = [
79
82
  ...( subCommandResults.map(e => e.reason)),
80
83
  commandLineResult.reason,
@@ -86,21 +89,21 @@ let CommandLineAutoApproveAnalyzer = class CommandLineAutoApproveAnalyzer extend
86
89
  if (deniedSubCommandResult) {
87
90
  this._log('Sub-command DENIED auto approval');
88
91
  isDenied = true;
89
- autoApproveDefault = deniedSubCommandResult.rule?.isDefaultRule;
92
+ autoApproveDefault = isAutoApproveRule(deniedSubCommandResult.rule) ? deniedSubCommandResult.rule.isDefaultRule : undefined;
90
93
  autoApproveReason = 'subCommand';
91
94
  }
92
95
  else if (commandLineResult.result === 'denied') {
93
96
  this._log('Command line DENIED auto approval');
94
97
  isDenied = true;
95
- autoApproveDefault = commandLineResult.rule?.isDefaultRule;
98
+ autoApproveDefault = isAutoApproveRule(commandLineResult.rule) ? commandLineResult.rule.isDefaultRule : undefined;
96
99
  autoApproveReason = 'commandLine';
97
100
  }
98
101
  else {
99
102
  if (subCommandResults.every(e => e.result === 'approved')) {
100
103
  this._log('All sub-commands auto-approved');
101
- autoApproveReason = 'subCommand';
102
104
  isAutoApproved = true;
103
- autoApproveDefault = subCommandResults.every(e => e.rule?.isDefaultRule);
105
+ autoApproveReason = 'subCommand';
106
+ autoApproveDefault = subCommandResults.every(e => isAutoApproveRule(e.rule) && e.rule.isDefaultRule);
104
107
  }
105
108
  else {
106
109
  this._log('All sub-commands NOT auto-approved');
@@ -108,7 +111,7 @@ let CommandLineAutoApproveAnalyzer = class CommandLineAutoApproveAnalyzer extend
108
111
  this._log('Command line auto-approved');
109
112
  autoApproveReason = 'commandLine';
110
113
  isAutoApproved = true;
111
- autoApproveDefault = commandLineResult.rule?.isDefaultRule;
114
+ autoApproveDefault = isAutoApproveRule(commandLineResult.rule) ? commandLineResult.rule.isDefaultRule : undefined;
112
115
  }
113
116
  else {
114
117
  this._log('Command line NOT auto-approved');
@@ -139,12 +142,18 @@ let CommandLineAutoApproveAnalyzer = class CommandLineAutoApproveAnalyzer extend
139
142
  if (!isAutoApproved && (( subCommandsLowerFirstWordOnly.some(command => promptInjectionWarningCommandsLower.includes(command))) ||
140
143
  (isPowerShell(options.shell, options.os) && ( subCommandsLowerFirstWordOnly.some(command => promptInjectionWarningCommandsLowerPwshOnly.includes(command)))))) {
141
144
  disclaimers.push(( localize(
142
- 11999,
145
+ 12024,
143
146
  'Web content may contain malicious code or attempt prompt injection attacks.'
144
147
  )));
145
148
  }
149
+ if (isAutoApproveEnabled && isDenied) {
150
+ const denialInfo = this._createAutoApproveInfo(isAutoApproved, isDenied, autoApproveReason, subCommandResults, commandLineResult);
151
+ if (denialInfo) {
152
+ disclaimers.push(denialInfo);
153
+ }
154
+ }
146
155
  if (!isAutoApproved && isAutoApproveEnabled) {
147
- customActions = generateAutoApproveActions(options.commandLine, subCommands, { subCommandResults, commandLineResult });
156
+ customActions = generateAutoApproveActions(trimmedCommandLine, subCommands, { subCommandResults, commandLineResult });
148
157
  }
149
158
  return {
150
159
  isAutoApproved,
@@ -156,9 +165,32 @@ let CommandLineAutoApproveAnalyzer = class CommandLineAutoApproveAnalyzer extend
156
165
  }
157
166
  _createAutoApproveInfo(isAutoApproved, isDenied, autoApproveReason, subCommandResults, commandLineResult) {
158
167
  const formatRuleLinks = (result) => {
159
- return ( asArray(result).map(e => {
168
+ return ( asArray(result)
169
+ .filter((e) => isAutoApproveRule(e.rule))
170
+ .map(e => {
171
+ if (e.rule.sourceTarget === 'session') {
172
+ return localize(12025, '{0} (session)', `\`${e.rule.sourceText}\``);
173
+ }
160
174
  const settingsUri = createCommandUri(TerminalChatCommandId.OpenTerminalSettingsLink, e.rule.sourceTarget);
161
- return `[\`${e.rule.sourceText}\`](${( settingsUri.toString())} "${( localize(12000, 'View rule in settings'))}")`;
175
+ const tooltip = ( localize(12026, 'View rule in settings'));
176
+ let label = e.rule.sourceText;
177
+ switch (e.rule?.sourceTarget) {
178
+ case ConfigurationTarget.DEFAULT:
179
+ label = `${label} (default)`;
180
+ break;
181
+ case ConfigurationTarget.USER:
182
+ case ConfigurationTarget.USER_LOCAL:
183
+ label = `${label} (user)`;
184
+ break;
185
+ case ConfigurationTarget.USER_REMOTE:
186
+ label = `${label} (remote)`;
187
+ break;
188
+ case ConfigurationTarget.WORKSPACE:
189
+ case ConfigurationTarget.WORKSPACE_FOLDER:
190
+ label = `${label} (workspace)`;
191
+ break;
192
+ }
193
+ return `[\`${label}\`](${( settingsUri.toString())} "${tooltip}")`;
162
194
  })).join(', ');
163
195
  };
164
196
  const mdTrustSettings = {
@@ -171,33 +203,37 @@ let CommandLineAutoApproveAnalyzer = class CommandLineAutoApproveAnalyzer extend
171
203
  if (isGlobalAutoApproved) {
172
204
  const settingsUri = createCommandUri(TerminalChatCommandId.OpenTerminalSettingsLink, 'global');
173
205
  return (new MarkdownString(`${( localize(
174
- 12001,
206
+ 12027,
175
207
  'Auto approved by setting {0}',
176
- `[\`${ChatConfiguration.GlobalAutoApprove}\`](${( settingsUri.toString())} "${( localize(12002, 'View settings'))}")`
208
+ `[\`${ChatConfiguration.GlobalAutoApprove}\`](${( settingsUri.toString())} "${( localize(12028, 'View settings'))}")`
177
209
  ))}`, mdTrustSettings));
178
210
  }
179
211
  if (isAutoApproved) {
180
212
  switch (autoApproveReason) {
181
213
  case 'commandLine': {
182
- if (commandLineResult.rule) {
214
+ if (isAutoApproveRule(commandLineResult.rule)) {
183
215
  return (new MarkdownString(
184
- localize(12003, 'Auto approved by rule {0}', formatRuleLinks(commandLineResult)),
216
+ localize(12029, 'Auto approved by rule {0}', formatRuleLinks(commandLineResult)),
185
217
  mdTrustSettings
186
218
  ));
187
219
  }
188
220
  break;
189
221
  }
190
222
  case 'subCommand': {
223
+ const npmScriptApproval = subCommandResults.find(e => isNpmScriptAutoApproveRule(e.rule));
224
+ if (npmScriptApproval && isNpmScriptAutoApproveRule(npmScriptApproval.rule) && npmScriptApproval.rule.npmScriptResult.autoApproveInfo) {
225
+ return npmScriptApproval.rule.npmScriptResult.autoApproveInfo;
226
+ }
191
227
  const uniqueRules = dedupeRules(subCommandResults);
192
228
  if (uniqueRules.length === 1) {
193
229
  return (new MarkdownString(
194
- localize(12003, 'Auto approved by rule {0}', formatRuleLinks(uniqueRules)),
230
+ localize(12029, 'Auto approved by rule {0}', formatRuleLinks(uniqueRules)),
195
231
  mdTrustSettings
196
232
  ));
197
233
  }
198
234
  else if (uniqueRules.length > 1) {
199
235
  return (new MarkdownString(
200
- localize(12004, 'Auto approved by rules {0}', formatRuleLinks(uniqueRules)),
236
+ localize(12030, 'Auto approved by rules {0}', formatRuleLinks(uniqueRules)),
201
237
  mdTrustSettings
202
238
  ));
203
239
  }
@@ -210,7 +246,7 @@ let CommandLineAutoApproveAnalyzer = class CommandLineAutoApproveAnalyzer extend
210
246
  case 'commandLine': {
211
247
  if (commandLineResult.rule) {
212
248
  return (new MarkdownString(localize(
213
- 12005,
249
+ 12031,
214
250
  'Auto approval denied by rule {0}',
215
251
  formatRuleLinks(commandLineResult)
216
252
  ), mdTrustSettings));
@@ -221,12 +257,14 @@ let CommandLineAutoApproveAnalyzer = class CommandLineAutoApproveAnalyzer extend
221
257
  const uniqueRules = dedupeRules(subCommandResults.filter(e => e.result === 'denied'));
222
258
  if (uniqueRules.length === 1) {
223
259
  return (new MarkdownString(
224
- localize(12005, 'Auto approval denied by rule {0}', formatRuleLinks(uniqueRules))
260
+ localize(12031, 'Auto approval denied by rule {0}', formatRuleLinks(uniqueRules)),
261
+ mdTrustSettings
225
262
  ));
226
263
  }
227
264
  else if (uniqueRules.length > 1) {
228
265
  return (new MarkdownString(
229
- localize(12006, 'Auto approval denied by rules {0}', formatRuleLinks(uniqueRules))
266
+ localize(12032, 'Auto approval denied by rules {0}', formatRuleLinks(uniqueRules)),
267
+ mdTrustSettings
230
268
  ));
231
269
  }
232
270
  break;
@@ -13,6 +13,7 @@ export declare class CommandLineFileWriteAnalyzer extends Disposable implements
13
13
  constructor(_treeSitterCommandParser: TreeSitterCommandParser, _log: (message: string, ...args: unknown[]) => void, _configurationService: IConfigurationService, _labelService: ILabelService, _workspaceContextService: IWorkspaceContextService);
14
14
  analyze(options: ICommandLineAnalyzerOptions): Promise<ICommandLineAnalyzerResult>;
15
15
  private _getFileWrites;
16
+ private _stripSurroundingQuotes;
16
17
  private _mapNullDevice;
17
18
  private _getResult;
18
19
  }