@codingame/monaco-vscode-chat-service-override 27.0.0 → 28.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 (251) hide show
  1. package/index.js +5 -2
  2. package/package.json +5 -5
  3. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +54 -4
  4. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +179 -11
  5. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.js +5 -1
  6. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.d.ts +6 -1
  7. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.js +25 -10
  8. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +67 -0
  9. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +263 -0
  10. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.d.ts +6 -0
  11. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.js +25 -6
  12. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  13. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +15 -15
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +13 -5
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +5 -5
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +11 -11
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +5 -4
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.d.ts +7 -0
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +2 -2
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +13 -13
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +12 -12
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +49 -13
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.d.ts +58 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +537 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.d.ts +17 -0
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +55 -0
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +26 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.js +9 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/media/agentPluginEditor.css +32 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +17 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +89 -11
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +4 -26
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +146 -53
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +56 -54
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +5 -5
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +25 -25
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  58. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +4 -0
  59. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +13 -12
  60. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +7 -9
  61. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +189 -145
  62. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +42 -44
  63. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.d.ts +0 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +3 -4
  65. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +20 -8
  66. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +210 -59
  67. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +1 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +14 -3
  69. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +3 -3
  70. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +122 -53
  71. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +87 -9
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +62 -0
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +702 -0
  74. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +279 -214
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +21 -21
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +12 -3
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +19 -19
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.d.ts +12 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +63 -4
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +18 -18
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +6 -6
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +4 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +62 -24
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +28 -28
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +9 -9
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +2 -0
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +7 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +2 -5
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +32 -36
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +4 -5
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +1 -1
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +2 -2
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -8
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +13 -13
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +49 -49
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +9 -0
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +14 -14
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +26 -26
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +13 -13
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +3 -1
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +103 -60
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +61 -61
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +66 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +245 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.d.ts +78 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.js +234 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +31 -126
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +229 -524
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.d.ts +41 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.js +22 -0
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +4 -3
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +54 -20
  137. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  138. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +11 -12
  139. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +112 -39
  140. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +99 -0
  141. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +489 -0
  142. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  143. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +6 -3
  144. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +348 -285
  145. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +18 -1
  146. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +107 -5
  147. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  148. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +4 -4
  149. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  150. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  151. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  152. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  153. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +2 -0
  154. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +55 -38
  155. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +20 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +148 -60
  157. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +5 -5
  158. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  159. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +6 -6
  160. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +2 -0
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +29 -14
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +72 -14
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +5 -3
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +5 -2
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +11 -10
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +8 -0
  172. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.d.ts +1 -0
  173. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.js +1 -0
  174. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +8 -0
  175. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +20 -0
  176. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +72 -23
  178. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +19 -1
  179. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +5 -1
  180. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -1
  181. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +37 -8
  182. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +36 -3
  183. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +4 -4
  184. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +2 -2
  185. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +6 -1
  186. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +71 -25
  187. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +217 -91
  188. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +85 -3
  189. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +257 -63
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +17 -17
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.d.ts +3 -16
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.js +7 -50
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.d.ts +2 -1
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +32 -3
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +1 -1
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +3 -1
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +1 -1
  198. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +7 -6
  199. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +1 -1
  200. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +26 -1
  201. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +287 -88
  202. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +10 -1
  203. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +75 -20
  204. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +121 -0
  205. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +1422 -0
  206. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
  207. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +5 -1
  208. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +81 -41
  209. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +3 -1
  210. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +8 -6
  211. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  212. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.d.ts +14 -2
  213. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +54 -5
  214. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +6 -5
  215. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +4 -4
  216. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +38 -22
  217. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  218. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +8 -8
  219. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  220. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  221. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  222. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  223. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  224. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +8 -0
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +36 -18
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +6 -0
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +27 -13
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +1 -1
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +1 -0
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +8 -1
  250. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.d.ts +0 -12
  251. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +0 -67
@@ -3,7 +3,8 @@ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
3
3
  import { IPromptsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service";
4
4
  import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
5
5
  import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
6
- import { HookType, IHookCommand } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema";
6
+ import { IHookCommand } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema";
7
+ import { HookType } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookTypes";
7
8
  import { ILabelService } from "@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service";
8
9
  import { OperatingSystem } from "@codingame/monaco-vscode-api/vscode/vs/base/common/platform";
9
10
  /**
@@ -21,6 +22,18 @@ import { OperatingSystem } from "@codingame/monaco-vscode-api/vscode/vs/base/com
21
22
  * @returns The selection range for the field value, or undefined if not found
22
23
  */
23
24
  export declare function findHookCommandSelection(content: string, hookType: string, index: number, fieldName: string): ITextEditorSelection | undefined;
25
+ /**
26
+ * Finds the selection range for a hook command string in a YAML/Markdown file
27
+ * (e.g., an agent `.md` file with YAML frontmatter).
28
+ *
29
+ * Searches for the command text within command field lines and selects the value.
30
+ * Supports all hook command field keys: command, windows, linux, osx, bash, powershell.
31
+ *
32
+ * @param content The full file content
33
+ * @param commandText The command string to locate
34
+ * @returns The selection range, or undefined if not found
35
+ */
36
+ export declare function findHookCommandInYaml(content: string, commandText: string): ITextEditorSelection | undefined;
24
37
  /**
25
38
  * Parsed hook information.
26
39
  */
@@ -36,10 +49,14 @@ export interface IParsedHook {
36
49
  originalHookTypeId: string;
37
50
  /** If true, this hook is disabled via `disableAllHooks: true` in its file */
38
51
  disabled?: boolean;
52
+ /** If set, this hook came from a custom agent's frontmatter */
53
+ agentName?: string;
39
54
  }
40
55
  export interface IParseAllHookFilesOptions {
41
56
  /** Additional file URIs to parse (e.g., files skipped due to disableAllHooks) */
42
57
  additionalDisabledFileUris?: readonly URI[];
58
+ /** If true, also collect hooks from custom agent frontmatter */
59
+ includeAgentHooks?: boolean;
43
60
  }
44
61
  /**
45
62
  * Parses all hook files and extracts individual hooks.
@@ -1,8 +1,9 @@
1
1
 
2
2
  import { findNodeAtLocation, parseTree, parse } from '@codingame/monaco-vscode-api/vscode/vs/base/common/json';
3
3
  import { PromptsType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
4
- import { HOOK_TYPES, formatHookCommandLabel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
5
- import { parseHooksFromFile } from '../../common/promptSyntax/hookCompatibility.js';
4
+ import { formatHookCommandLabel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
5
+ import { HOOK_METADATA, HookType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookTypes';
6
+ import { parseHooksFromFile, parseHooksIgnoringDisableAll } from '../../common/promptSyntax/hookCompatibility.js';
6
7
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
7
8
 
8
9
  function offsetToPosition(content, offset) {
@@ -69,6 +70,33 @@ function findHookCommandSelection(content, hookType, index, fieldName) {
69
70
  endColumn: end.column
70
71
  };
71
72
  }
73
+ function findHookCommandInYaml(content, commandText) {
74
+ const commandFieldKeys = ["command", "windows", "linux", "osx", "bash", "powershell"];
75
+ const lines = content.split("\n");
76
+ for (let i = 0; i < lines.length; i++) {
77
+ const line = lines[i];
78
+ const trimmed = line.trimStart();
79
+ const matchedKey = commandFieldKeys.find(key => trimmed.startsWith(`${key}:`) || trimmed.startsWith(`- ${key}:`));
80
+ if (!matchedKey) {
81
+ continue;
82
+ }
83
+ const colonIdx = line.indexOf(":");
84
+ const idx = line.indexOf(commandText, colonIdx + 1);
85
+ if (idx !== -1) {
86
+ const afterIdx = idx + commandText.length;
87
+ const charAfter = afterIdx < line.length ? line.charCodeAt(afterIdx) : -1;
88
+ if (charAfter === -1 || charAfter === 34 || charAfter === 39 || charAfter === 32 || charAfter === 9 ) {
89
+ return {
90
+ startLineNumber: i + 1,
91
+ startColumn: idx + 1,
92
+ endLineNumber: i + 1,
93
+ endColumn: idx + 1 + commandText.length
94
+ };
95
+ }
96
+ }
97
+ }
98
+ return undefined;
99
+ }
72
100
  async function parseAllHookFiles(
73
101
  promptsService,
74
102
  fileService,
@@ -92,13 +120,13 @@ async function parseAllHookFiles(
92
120
  hooks: commands,
93
121
  originalId
94
122
  }] of hooks) {
95
- const hookTypeMeta = HOOK_TYPES.find(h => h.id === hookType);
123
+ const hookTypeMeta = HOOK_METADATA[hookType];
96
124
  if (!hookTypeMeta) {
97
125
  continue;
98
126
  }
99
127
  for (let i = 0; i < commands.length; i++) {
100
128
  const command = commands[i];
101
- const commandLabel = formatHookCommandLabel(command, os) || ( localize(6205, "(empty command)"));
129
+ const commandLabel = formatHookCommandLabel(command, os) || ( localize(6298, "(empty command)"));
102
130
  parsedHooks.push({
103
131
  hookType,
104
132
  hookTypeLabel: hookTypeMeta.label,
@@ -117,7 +145,81 @@ async function parseAllHookFiles(
117
145
  console.error("Failed to read or parse hook file", ( hookFile.uri.toString()), error);
118
146
  }
119
147
  }
148
+ if (options?.additionalDisabledFileUris) {
149
+ for (const uri of options.additionalDisabledFileUris) {
150
+ try {
151
+ const content = await fileService.readFile(uri);
152
+ const json = parse(( content.value.toString()));
153
+ const {
154
+ hooks
155
+ } = parseHooksIgnoringDisableAll(uri, json, workspaceRootUri, userHome);
156
+ for (const [hookType, {
157
+ hooks: commands,
158
+ originalId
159
+ }] of hooks) {
160
+ const hookTypeMeta = HOOK_METADATA[hookType];
161
+ if (!hookTypeMeta) {
162
+ continue;
163
+ }
164
+ for (let i = 0; i < commands.length; i++) {
165
+ const command = commands[i];
166
+ const commandLabel = formatHookCommandLabel(command, os) || ( localize(6298, "(empty command)"));
167
+ parsedHooks.push({
168
+ hookType,
169
+ hookTypeLabel: hookTypeMeta.label,
170
+ command,
171
+ commandLabel,
172
+ fileUri: uri,
173
+ filePath: labelService.getUriLabel(uri, {
174
+ relative: true
175
+ }),
176
+ index: i,
177
+ originalHookTypeId: originalId,
178
+ disabled: true
179
+ });
180
+ }
181
+ }
182
+ } catch (error) {
183
+ console.error("Failed to read or parse disabled hook file", ( uri.toString()), error);
184
+ }
185
+ }
186
+ }
187
+ {
188
+ const agents = await promptsService.getCustomAgents(token);
189
+ for (const agent of agents) {
190
+ if (!agent.hooks) {
191
+ continue;
192
+ }
193
+ for (const hookTypeValue of ( Object.values(HookType))) {
194
+ const commands = agent.hooks[hookTypeValue];
195
+ if (!commands || commands.length === 0) {
196
+ continue;
197
+ }
198
+ const hookTypeMeta = HOOK_METADATA[hookTypeValue];
199
+ if (!hookTypeMeta) {
200
+ continue;
201
+ }
202
+ for (let i = 0; i < commands.length; i++) {
203
+ const command = commands[i];
204
+ const commandLabel = formatHookCommandLabel(command, os) || ( localize(6298, "(empty command)"));
205
+ parsedHooks.push({
206
+ hookType: hookTypeValue,
207
+ hookTypeLabel: hookTypeMeta.label,
208
+ command,
209
+ commandLabel,
210
+ fileUri: agent.uri,
211
+ filePath: labelService.getUriLabel(agent.uri, {
212
+ relative: true
213
+ }),
214
+ index: i,
215
+ originalHookTypeId: hookTypeValue,
216
+ agentName: agent.name
217
+ });
218
+ }
219
+ }
220
+ }
221
+ }
120
222
  return parsedHooks;
121
223
  }
122
224
 
123
- export { findHookCommandSelection, parseAllHookFiles };
225
+ export { findHookCommandInYaml, findHookCommandSelection, parseAllHookFiles };
@@ -38,11 +38,11 @@ let PromptCodingAgentActionOverlayWidget = class PromptCodingAgentActionOverlayW
38
38
  this._domNode = $(".prompt-coding-agent-action-overlay");
39
39
  this._button = this._register(( new Button(this._domNode, {
40
40
  supportIcons: true,
41
- title: ( localize(6285, "Run prompt file in a remote coding agent"))
41
+ title: ( localize(6380, "Run prompt file in a remote coding agent"))
42
42
  })));
43
43
  this._button.element.style.background = "var(--vscode-button-background)";
44
44
  this._button.element.style.color = "var(--vscode-button-foreground)";
45
- this._button.label = ( localize(6286, "{0} Delegate to Copilot coding agent", "$(cloud-upload)"));
45
+ this._button.label = ( localize(6381, "{0} Delegate to Copilot coding agent", "$(cloud-upload)"));
46
46
  this._register(this._button.onDidClick(async () => {
47
47
  await this._execute();
48
48
  }));
@@ -14,9 +14,9 @@ import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbenc
14
14
  import { registerEditorFeature } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/editorFeatures';
15
15
  import { PromptFileRewriter } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/promptSyntax/promptFileRewriter';
16
16
  import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
17
- import { isTarget, PromptHeaderAttributes, parseCommaSeparatedList } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptFileParser';
18
- import { getTarget, isVSCodeOrDefaultTarget } from '@codingame/monaco-vscode-xterm-addons-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator';
17
+ import { PromptHeaderAttributes, parseCommaSeparatedList } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptFileParser';
19
18
  import { isBoolean } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
19
+ import { isTarget, getTarget, isVSCodeOrDefaultTarget } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptFileAttributes';
20
20
 
21
21
  let PromptToolsCodeLensProvider = class PromptToolsCodeLensProvider extends Disposable {
22
22
  constructor(
@@ -72,7 +72,7 @@ let PromptToolsCodeLensProvider = class PromptToolsCodeLensProvider extends Disp
72
72
  const codeLens = {
73
73
  range: toolsAttr.range.collapseToStart(),
74
74
  command: {
75
- title: ( localize(6287, "Configure Tools...")),
75
+ title: ( localize(6382, "Configure Tools...")),
76
76
  id: this.cmdId,
77
77
  arguments: [
78
78
  model,
@@ -89,7 +89,7 @@ let PromptToolsCodeLensProvider = class PromptToolsCodeLensProvider extends Disp
89
89
  }
90
90
  async updateTools(model, range, isString, selectedTools, target) {
91
91
  const selectedToolsNow = () => this.languageModelToolsService.toToolAndToolSetEnablementMap(selectedTools, undefined);
92
- const newSelectedAfter = await this.instantiationService.invokeFunction(showToolsPicker, ( localize(6288, "Select tools")), "codeLens", undefined, selectedToolsNow);
92
+ const newSelectedAfter = await this.instantiationService.invokeFunction(showToolsPicker, ( localize(6383, "Select tools")), "codeLens", undefined, selectedToolsNow);
93
93
  if (!newSelectedAfter) {
94
94
  return;
95
95
  }
@@ -85,7 +85,7 @@ let PromptUrlHandler = class PromptUrlHandler extends Disposable {
85
85
  }, CancellationToken.None);
86
86
  if (result.res.statusCode !== 200) {
87
87
  this.logService.error(`[PromptUrlHandler] Failed to fetch URL: ${urlString}`);
88
- this.notificationService.error(( localize(6289, "Failed to fetch URL: {0}", urlString)));
88
+ this.notificationService.error(( localize(6384, "Failed to fetch URL: {0}", urlString)));
89
89
  return true;
90
90
  }
91
91
  const responseData = ( (await streamToBuffer(result.stream)).toString());
@@ -115,28 +115,28 @@ let PromptUrlHandler = class PromptUrlHandler extends Disposable {
115
115
  const detail = ( new MarkdownString("", {
116
116
  supportHtml: true
117
117
  }));
118
- detail.appendMarkdown(( localize(6290, "This will access {0}.\n\n", `[${uriLabel}](${( url.toString())})`)));
118
+ detail.appendMarkdown(( localize(6385, "This will access {0}.\n\n", `[${uriLabel}](${( url.toString())})`)));
119
119
  detail.appendMarkdown(( localize(
120
- 6291,
120
+ 6386,
121
121
  "If you did not initiate this request, it may represent an attempted attack on your system. Unless you took an explicit action to initiate this request, you should press 'No'"
122
122
  )));
123
123
  let message;
124
124
  switch (promptType) {
125
125
  case PromptsType.prompt:
126
126
  message = ( localize(
127
- 6292,
127
+ 6387,
128
128
  "An external application wants to create a prompt file with content from a URL. Do you want to continue by selecting a destination folder and name?"
129
129
  ));
130
130
  break;
131
131
  case PromptsType.instructions:
132
132
  message = ( localize(
133
- 6293,
133
+ 6388,
134
134
  "An external application wants to create an instructions file with content from a URL. Do you want to continue by selecting a destination folder and name?"
135
135
  ));
136
136
  break;
137
137
  default:
138
138
  message = ( localize(
139
- 6294,
139
+ 6389,
140
140
  "An external application wants to create a custom agent with content from a URL. Do you want to continue by selecting a destination folder and name?"
141
141
  ));
142
142
  break;
@@ -145,8 +145,8 @@ let PromptUrlHandler = class PromptUrlHandler extends Disposable {
145
145
  confirmed
146
146
  } = await this.dialogService.confirm({
147
147
  type: "warning",
148
- primaryButton: ( localize(6295, "&&Yes")),
149
- cancelButton: ( localize(6296, "No")),
148
+ primaryButton: ( localize(6390, "&&Yes")),
149
+ cancelButton: ( localize(6391, "No")),
150
150
  message,
151
151
  custom: {
152
152
  markdownDetails: [{
@@ -70,7 +70,7 @@ class RunPromptBaseAction extends Action2 {
70
70
  return widget;
71
71
  }
72
72
  }
73
- const RUN_CURRENT_PROMPT_ACTION_TITLE = ( localize2(6297, "Run Prompt in Current Chat"));
73
+ const RUN_CURRENT_PROMPT_ACTION_TITLE = ( localize2(6392, "Run Prompt in Current Chat"));
74
74
  const RUN_CURRENT_PROMPT_ACTION_ICON = Codicon.playCircle;
75
75
  class RunCurrentPromptAction extends RunPromptBaseAction {
76
76
  constructor() {
@@ -89,7 +89,7 @@ class RunSelectedPromptAction extends Action2 {
89
89
  constructor() {
90
90
  super({
91
91
  id: RUN_SELECTED_PROMPT_ACTION_ID,
92
- title: ( localize2(6298, "Run Prompt...")),
92
+ title: ( localize2(6393, "Run Prompt...")),
93
93
  icon: Codicon.bookmark,
94
94
  f1: true,
95
95
  precondition: ChatContextKeys.enabled,
@@ -108,7 +108,7 @@ class RunSelectedPromptAction extends Action2 {
108
108
  const widgetService = accessor.get(IChatWidgetService);
109
109
  const pickers = instaService.createInstance(PromptFilePickers);
110
110
  const placeholder = ( localize(
111
- 6299,
111
+ 6394,
112
112
  "Select the prompt file to run (hold {0}-key to use in new chat)",
113
113
  UILabelProvider.modifierLabels[OS].ctrlKey
114
114
  ));
@@ -140,8 +140,8 @@ class ManagePromptFilesAction extends Action2 {
140
140
  constructor() {
141
141
  super({
142
142
  id: CONFIGURE_PROMPTS_ACTION_ID,
143
- title: ( localize2(6300, "Configure Prompt Files...")),
144
- shortTitle: ( localize2(6301, "Prompt Files")),
143
+ title: ( localize2(6395, "Configure Prompt Files...")),
144
+ shortTitle: ( localize2(6396, "Prompt Files")),
145
145
  icon: Codicon.bookmark,
146
146
  f1: true,
147
147
  precondition: ChatContextKeys.enabled,
@@ -158,7 +158,7 @@ class ManagePromptFilesAction extends Action2 {
158
158
  const openerService = accessor.get(IOpenerService);
159
159
  const instaService = accessor.get(IInstantiationService);
160
160
  const pickers = instaService.createInstance(PromptFilePickers);
161
- const placeholder = ( localize(6302, "Select the prompt file to open"));
161
+ const placeholder = ( localize(6397, "Select the prompt file to open"));
162
162
  const result = await pickers.selectPromptFile({
163
163
  placeholder,
164
164
  type: PromptsType.prompt,
@@ -178,7 +178,7 @@ function getActivePromptFileUri(accessor) {
178
178
  return undefined;
179
179
  }
180
180
  const RUN_CURRENT_PROMPT_IN_NEW_CHAT_ACTION_ID = "workbench.action.chat.run-in-new-chat.prompt.current";
181
- const RUN_IN_NEW_CHAT_ACTION_TITLE = ( localize2(6303, "Run Prompt In New Chat"));
181
+ const RUN_IN_NEW_CHAT_ACTION_TITLE = ( localize2(6398, "Run Prompt In New Chat"));
182
182
  const RUN_IN_NEW_CHAT_ACTION_ICON = Codicon.play;
183
183
  class RunCurrentPromptInNewChatAction extends RunPromptBaseAction {
184
184
  constructor() {
@@ -78,19 +78,19 @@ function createOptions(id, title, description, languageId) {
78
78
  const SAVE_AS_PROMPT_FILE_ACTION_ID = "workbench.action.chat.save-as-prompt";
79
79
  class SaveAsPromptFileAction extends BaseSaveAsPromptFileAction {
80
80
  constructor() {
81
- super(createOptions(SAVE_AS_PROMPT_FILE_ACTION_ID, ( localize2(6304, "Save As Prompt File")), ( localize2(6305, "Save as prompt file")), PROMPT_LANGUAGE_ID), PromptsType.prompt);
81
+ super(createOptions(SAVE_AS_PROMPT_FILE_ACTION_ID, ( localize2(6399, "Save As Prompt File")), ( localize2(6400, "Save as prompt file")), PROMPT_LANGUAGE_ID), PromptsType.prompt);
82
82
  }
83
83
  }
84
84
  const SAVE_AS_AGENT_FILE_ACTION_ID = "workbench.action.chat.save-as-agent";
85
85
  class SaveAsAgentFileAction extends BaseSaveAsPromptFileAction {
86
86
  constructor() {
87
- super(createOptions(SAVE_AS_AGENT_FILE_ACTION_ID, ( localize2(6306, "Save As Agent File")), ( localize2(6307, "Save as agent file")), AGENT_LANGUAGE_ID), PromptsType.agent);
87
+ super(createOptions(SAVE_AS_AGENT_FILE_ACTION_ID, ( localize2(6401, "Save As Agent File")), ( localize2(6402, "Save as agent file")), AGENT_LANGUAGE_ID), PromptsType.agent);
88
88
  }
89
89
  }
90
90
  const SAVE_AS_INSTRUCTIONS_FILE_ACTION_ID = "workbench.action.chat.save-as-instructions";
91
91
  class SaveAsInstructionsFileAction extends BaseSaveAsPromptFileAction {
92
92
  constructor() {
93
- super(createOptions(SAVE_AS_INSTRUCTIONS_FILE_ACTION_ID, ( localize2(6308, "Save As Instructions File")), ( localize2(6309, "Save as instructions file")), INSTRUCTIONS_LANGUAGE_ID), PromptsType.instructions);
93
+ super(createOptions(SAVE_AS_INSTRUCTIONS_FILE_ACTION_ID, ( localize2(6403, "Save As Instructions File")), ( localize2(6404, "Save as instructions file")), INSTRUCTIONS_LANGUAGE_ID), PromptsType.instructions);
94
94
  }
95
95
  }
96
96
 
@@ -16,8 +16,8 @@ class ManageSkillsAction extends Action2 {
16
16
  constructor() {
17
17
  super({
18
18
  id: CONFIGURE_SKILLS_ACTION_ID,
19
- title: ( localize2(6310, "Configure Skills...")),
20
- shortTitle: ( localize2(6311, "Skills")),
19
+ title: ( localize2(6405, "Configure Skills...")),
20
+ shortTitle: ( localize2(6406, "Skills")),
21
21
  icon: Codicon.lightbulb,
22
22
  f1: true,
23
23
  precondition: ChatContextKeys.enabled,
@@ -34,7 +34,7 @@ class ManageSkillsAction extends Action2 {
34
34
  const openerService = accessor.get(IOpenerService);
35
35
  const instaService = accessor.get(IInstantiationService);
36
36
  const pickers = instaService.createInstance(PromptFilePickers);
37
- const placeholder = ( localize(6312, "Select the skill to open"));
37
+ const placeholder = ( localize(6407, "Select the skill to open"));
38
38
  const result = await pickers.selectPromptFile({
39
39
  placeholder,
40
40
  type: PromptsType.skill,
@@ -20,8 +20,10 @@ export declare class LanguageModelToolsConfirmationService extends Disposable im
20
20
  getPreConfirmActions(ref: ILanguageModelToolConfirmationRef): ILanguageModelToolConfirmationActions[];
21
21
  getPostConfirmActions(ref: ILanguageModelToolConfirmationRef): ILanguageModelToolConfirmationActions[];
22
22
  registerConfirmationContribution(toolName: string, contribution: ILanguageModelToolConfirmationContribution): IDisposable;
23
+ toolCanManageConfirmation(tool: IToolData): boolean;
23
24
  manageConfirmationPreferences(tools: readonly IToolData[], options?: {
24
25
  defaultScope?: "workspace" | "profile" | "session";
26
+ focusToolId?: string;
25
27
  }): void;
26
28
  resetToolAutoConfirmation(): void;
27
29
  }
@@ -13,8 +13,8 @@ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode
13
13
  import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
14
14
  import { ToolConfirmKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
15
15
 
16
- const RUN_WITHOUT_APPROVAL = ( localize(6313, "without approval"));
17
- const CONTINUE_WITHOUT_REVIEWING_RESULTS = ( localize(6314, "without reviewing result"));
16
+ const RUN_WITHOUT_APPROVAL = ( localize(6408, "without approval"));
17
+ const CONTINUE_WITHOUT_REVIEWING_RESULTS = ( localize(6409, "without reviewing result"));
18
18
  class GenericConfirmStore extends Disposable {
19
19
  constructor(_storageKey, _instantiationService) {
20
20
  super();
@@ -213,8 +213,8 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
213
213
  return actions;
214
214
  }
215
215
  actions.push({
216
- label: ( localize(6315, "Allow in this Session")),
217
- detail: ( localize(6316, "Allow this tool to run in this session without confirmation.")),
216
+ label: ( localize(6410, "Allow in this Session")),
217
+ detail: ( localize(6411, "Allow this tool to run in this session without confirmation.")),
218
218
  divider: !!actions.length,
219
219
  scope: "session",
220
220
  select: async () => {
@@ -222,16 +222,16 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
222
222
  return true;
223
223
  }
224
224
  }, {
225
- label: ( localize(6317, "Allow in this Workspace")),
226
- detail: ( localize(6318, "Allow this tool to run in this workspace without confirmation.")),
225
+ label: ( localize(6412, "Allow in this Workspace")),
226
+ detail: ( localize(6413, "Allow this tool to run in this workspace without confirmation.")),
227
227
  scope: "workspace",
228
228
  select: async () => {
229
229
  this._preExecutionToolConfirmStore.setAutoConfirmation(ref.toolId, "workspace");
230
230
  return true;
231
231
  }
232
232
  }, {
233
- label: ( localize(6319, "Always Allow")),
234
- detail: ( localize(6320, "Always allow this tool to run without confirmation.")),
233
+ label: ( localize(6414, "Always Allow")),
234
+ detail: ( localize(6415, "Always allow this tool to run without confirmation.")),
235
235
  scope: "profile",
236
236
  select: async () => {
237
237
  this._preExecutionToolConfirmStore.setAutoConfirmation(ref.toolId, "profile");
@@ -244,9 +244,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
244
244
  definitionId
245
245
  } = ref.source;
246
246
  actions.push({
247
- label: ( localize(6321, "Allow Tools from {0} in this Session", serverLabel)),
247
+ label: ( localize(6416, "Allow Tools from {0} in this Session", serverLabel)),
248
248
  detail: ( localize(
249
- 6322,
249
+ 6417,
250
250
  "Allow all tools from this server to run in this session without confirmation."
251
251
  )),
252
252
  divider: true,
@@ -256,9 +256,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
256
256
  return true;
257
257
  }
258
258
  }, {
259
- label: ( localize(6323, "Allow Tools from {0} in this Workspace", serverLabel)),
259
+ label: ( localize(6418, "Allow Tools from {0} in this Workspace", serverLabel)),
260
260
  detail: ( localize(
261
- 6324,
261
+ 6419,
262
262
  "Allow all tools from this server to run in this workspace without confirmation."
263
263
  )),
264
264
  scope: "workspace",
@@ -267,9 +267,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
267
267
  return true;
268
268
  }
269
269
  }, {
270
- label: ( localize(6325, "Always Allow Tools from {0}", serverLabel)),
270
+ label: ( localize(6420, "Always Allow Tools from {0}", serverLabel)),
271
271
  detail: ( localize(
272
- 6326,
272
+ 6421,
273
273
  "Always allow all tools from this server to run without confirmation."
274
274
  )),
275
275
  scope: "profile",
@@ -291,9 +291,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
291
291
  return actions;
292
292
  }
293
293
  actions.push({
294
- label: ( localize(6327, "Allow Without Review in this Session")),
294
+ label: ( localize(6422, "Allow Without Review in this Session")),
295
295
  detail: ( localize(
296
- 6328,
296
+ 6423,
297
297
  "Allow results from this tool to be sent without confirmation in this session."
298
298
  )),
299
299
  divider: !!actions.length,
@@ -303,9 +303,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
303
303
  return true;
304
304
  }
305
305
  }, {
306
- label: ( localize(6329, "Allow Without Review in this Workspace")),
306
+ label: ( localize(6424, "Allow Without Review in this Workspace")),
307
307
  detail: ( localize(
308
- 6330,
308
+ 6425,
309
309
  "Allow results from this tool to be sent without confirmation in this workspace."
310
310
  )),
311
311
  scope: "workspace",
@@ -314,9 +314,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
314
314
  return true;
315
315
  }
316
316
  }, {
317
- label: ( localize(6331, "Always Allow Without Review")),
317
+ label: ( localize(6426, "Always Allow Without Review")),
318
318
  detail: ( localize(
319
- 6332,
319
+ 6427,
320
320
  "Always allow results from this tool to be sent without confirmation."
321
321
  )),
322
322
  scope: "profile",
@@ -331,9 +331,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
331
331
  definitionId
332
332
  } = ref.source;
333
333
  actions.push({
334
- label: ( localize(6333, "Allow Tools from {0} Without Review in this Session", serverLabel)),
334
+ label: ( localize(6428, "Allow Tools from {0} Without Review in this Session", serverLabel)),
335
335
  detail: ( localize(
336
- 6334,
336
+ 6429,
337
337
  "Allow results from all tools from this server to be sent without confirmation in this session."
338
338
  )),
339
339
  divider: true,
@@ -343,9 +343,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
343
343
  return true;
344
344
  }
345
345
  }, {
346
- label: ( localize(6335, "Allow Tools from {0} Without Review in this Workspace", serverLabel)),
346
+ label: ( localize(6430, "Allow Tools from {0} Without Review in this Workspace", serverLabel)),
347
347
  detail: ( localize(
348
- 6336,
348
+ 6431,
349
349
  "Allow results from all tools from this server to be sent without confirmation in this workspace."
350
350
  )),
351
351
  scope: "workspace",
@@ -354,9 +354,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
354
354
  return true;
355
355
  }
356
356
  }, {
357
- label: ( localize(6337, "Always Allow Tools from {0} Without Review", serverLabel)),
357
+ label: ( localize(6432, "Always Allow Tools from {0} Without Review", serverLabel)),
358
358
  detail: ( localize(
359
- 6338,
359
+ 6433,
360
360
  "Always allow results from all tools from this server to be sent without confirmation."
361
361
  )),
362
362
  scope: "profile",
@@ -376,6 +376,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
376
376
  }
377
377
  };
378
378
  }
379
+ toolCanManageConfirmation(tool) {
380
+ return !!tool.canRequestPreApproval || !!tool.canRequestPostApproval || ( this._contributions.has(tool.id)) || !!this._preExecutionToolConfirmStore.checkAutoConfirmation(tool.id) || !!this._postExecutionToolConfirmStore.checkAutoConfirmation(tool.id);
381
+ }
379
382
  manageConfirmationPreferences(tools, options) {
380
383
  const trackServerTool = (serverId, label, toolId, serversWithTools) => {
381
384
  if (!( serversWithTools.has(serverId))) {
@@ -495,7 +498,7 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
495
498
  type: "server-post",
496
499
  serverId,
497
500
  iconClass: ThemeIcon.asClassName(Codicon.play),
498
- label: ( localize(6339, "Continue without reviewing any tool results")),
501
+ label: ( localize(6434, "Continue without reviewing any tool results")),
499
502
  checked: serverPostConfirmed
500
503
  });
501
504
  }
@@ -504,7 +507,7 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
504
507
  type: "server-pre",
505
508
  serverId,
506
509
  iconClass: ThemeIcon.asClassName(Codicon.play),
507
- label: ( localize(6340, "Run any tool without approval")),
510
+ label: ( localize(6435, "Run any tool without approval")),
508
511
  checked: serverPreConfirmed
509
512
  });
510
513
  }
@@ -590,7 +593,7 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
590
593
  description,
591
594
  checked,
592
595
  pickable,
593
- collapsed: true,
596
+ collapsed: tools.length > 1,
594
597
  children: toolChildren.length > 0 ? toolChildren : undefined
595
598
  });
596
599
  }
@@ -603,7 +606,7 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
603
606
  if (currentScope !== "session") {
604
607
  const scopeButton = {
605
608
  iconClass: ThemeIcon.asClassName(Codicon.folder),
606
- tooltip: ( localize(6341, "Configure for this workspace only")),
609
+ tooltip: ( localize(6436, "Configure for this workspace only")),
607
610
  toggle: {
608
611
  checked: currentScope === "workspace"
609
612
  },
@@ -620,9 +623,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
620
623
  }
621
624
  const updatePlaceholder = () => {
622
625
  if (currentScope === "session") {
623
- quickTree.placeholder = ( localize(6342, "Configure session tool approvals"));
626
+ quickTree.placeholder = ( localize(6437, "Configure session tool approvals"));
624
627
  } else {
625
- quickTree.placeholder = currentScope === "workspace" ? ( localize(6343, "Configure workspace tool approvals")) : ( localize(6344, "Configure global tool approvals"));
628
+ quickTree.placeholder = currentScope === "workspace" ? ( localize(6438, "Configure workspace tool approvals")) : ( localize(6439, "Configure global tool approvals"));
626
629
  }
627
630
  };
628
631
  updatePlaceholder();
@@ -662,18 +665,32 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
662
665
  i.item.onDidTriggerItemButton?.(i.button);
663
666
  }
664
667
  }));
665
- disposables.add(quickTree.onDidAccept(() => {
666
- for (const item of quickTree.activeItems) {
667
- if (item.type === "manage") {
668
- item.onDidOpen?.();
669
- quickTree.hide();
670
- }
668
+ disposables.add(quickTree.onDidAccept(async () => {
669
+ const manageItem = quickTree.activeItems.find(i => i.type === "manage");
670
+ if (manageItem) {
671
+ quickTree.hide();
672
+ await manageItem.onDidOpen?.();
673
+ this.manageConfirmationPreferences(tools, options);
671
674
  }
672
675
  }));
673
676
  disposables.add(quickTree.onDidHide(() => {
674
677
  disposables.dispose();
675
678
  }));
676
679
  quickTree.show();
680
+ if (options?.focusToolId) {
681
+ const focusToolId = options.focusToolId;
682
+ for (const serverItem of quickTree.itemTree) {
683
+ const serverItemTyped = serverItem;
684
+ if (serverItemTyped.children) {
685
+ const toolItem = serverItemTyped.children.find(c => c.type === "tool" && c.toolId === focusToolId);
686
+ if (toolItem) {
687
+ quickTree.expand(serverItem);
688
+ quickTree.reveal(toolItem);
689
+ break;
690
+ }
691
+ }
692
+ }
693
+ }
677
694
  }
678
695
  resetToolAutoConfirmation() {
679
696
  this._preExecutionToolConfirmStore.reset();