@codingame/monaco-vscode-chat-service-override 29.1.1 → 30.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 (258) hide show
  1. package/index.js +5 -2
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +37 -39
  4. package/vscode/src/vs/platform/agentHost/common/agentService.js +3 -1
  5. package/vscode/src/vs/platform/agentHost/common/agentService.service.d.ts +11 -1
  6. package/vscode/src/vs/platform/agentHost/common/state/protocol/action-origin.generated.d.ts +4 -4
  7. package/vscode/src/vs/platform/agentHost/common/state/protocol/actions.d.ts +132 -42
  8. package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.d.ts +54 -0
  9. package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.d.ts +15 -0
  10. package/vscode/src/vs/platform/agentHost/common/state/protocol/messages.d.ts +5 -1
  11. package/vscode/src/vs/platform/agentHost/common/state/protocol/state.d.ts +188 -51
  12. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +7 -6
  13. package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.d.ts +1 -1
  14. package/vscode/src/vs/platform/agentHost/common/state/sessionState.d.ts +7 -2
  15. package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.d.ts +6 -0
  16. package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.js +14 -0
  17. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +18 -0
  18. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +13 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  20. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +37 -16
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +10 -8
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +37 -3
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +6 -6
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +20 -11
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +14 -14
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +18 -13
  36. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  37. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +10 -10
  38. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  39. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +19 -19
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.d.ts +36 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +482 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +8 -8
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +2 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +10 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +43 -10
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +74 -76
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +27 -35
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.d.ts +5 -8
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +86 -80
  61. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +3 -2
  62. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +38 -4
  63. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +14 -14
  64. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +38 -18
  65. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +427 -167
  66. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +37 -37
  67. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +15 -0
  68. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +108 -37
  69. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +8 -1
  70. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +28 -2
  71. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +2 -0
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +11 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +1 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +3 -20
  75. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +4 -0
  76. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +65 -68
  77. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +2 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +1 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +64 -51
  80. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +288 -195
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +21 -21
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +19 -19
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +21 -21
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +12 -12
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +21 -21
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +28 -28
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +1 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +3 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +1 -0
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +5 -2
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +1 -0
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +10 -3
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +4 -2
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +19 -7
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +3 -2
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +54 -12
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +9 -8
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +14 -14
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +50 -50
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +3 -1
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +86 -17
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -26
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +12 -12
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +19 -19
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +65 -65
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +24 -16
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +17 -17
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -6
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
  137. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  138. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  139. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
  140. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  141. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
  142. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +3 -6
  143. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +54 -39
  144. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +16 -16
  145. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +24 -3
  146. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +72 -14
  147. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  148. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +26 -26
  149. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
  150. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  151. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileContributions.js +181 -0
  152. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +3 -3
  153. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  154. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  155. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  156. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  157. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +8 -6
  158. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +37 -37
  159. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +28 -23
  160. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +6 -6
  161. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +7 -7
  162. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.d.ts +12 -0
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +62 -0
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +1 -10
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +148 -88
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +1 -1
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  172. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +1 -1
  173. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +1 -0
  174. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +16 -9
  175. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  176. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.d.ts +8 -0
  177. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.js +158 -0
  178. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +8 -3
  179. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +155 -76
  180. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +1 -2
  181. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +5 -4
  182. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +5 -1
  183. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +7 -6
  184. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +31 -1
  185. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +228 -1
  186. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +66 -0
  187. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +190 -0
  188. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +25 -3
  189. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +130 -107
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +1 -0
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +19 -18
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +2 -18
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +169 -266
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +12 -10
  198. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +149 -206
  199. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +3 -3
  200. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +27 -22
  201. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.d.ts +20 -8
  202. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.js +183 -43
  203. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  204. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +1 -1
  205. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +2 -3
  206. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
  207. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +21 -21
  208. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  209. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +11 -11
  210. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  211. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  212. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +11 -11
  213. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +6 -6
  214. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  215. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  216. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +2 -2
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +3 -1
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -2
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +3 -2
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +1 -0
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +1 -0
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +1 -3
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +26 -23
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +4 -9
  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 +16 -6
  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.js +9 -9
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +150 -50
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +2 -2
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +66 -5
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +239 -48
  248. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +0 -14
  249. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +0 -208
  250. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +0 -22
  251. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +0 -637
  252. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +0 -24
  253. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +0 -384
  254. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.d.ts +0 -33
  255. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.js +0 -47
  256. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalSkill.d.ts +0 -30
  257. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +0 -55
  258. /package/vscode/src/vs/workbench/contrib/chat/{common → browser}/promptSyntax/promptFileContributions.d.ts +0 -0
@@ -38,10 +38,11 @@ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/misc
38
38
  import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/quickpickColors';
39
39
  import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/searchColors';
40
40
  import { PANEL_BORDER } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/theme';
41
+ import { AICustomizationManagementEditorInput } from './aiCustomizationManagementEditorInput.js';
41
42
  import { AICustomizationListWidget } from './aiCustomizationListWidget.js';
42
43
  import { McpListWidget } from './mcpListWidget.js';
43
44
  import { PluginListWidget } from './pluginListWidget.js';
44
- import { AI_CUSTOMIZATION_MANAGEMENT_EDITOR_ID, CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_EDITOR, CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_SECTION, AI_CUSTOMIZATION_MANAGEMENT_SELECTED_SECTION_KEY, AI_CUSTOMIZATION_MANAGEMENT_SIDEBAR_WIDTH_KEY, SIDEBAR_DEFAULT_WIDTH, SIDEBAR_MAX_WIDTH, SIDEBAR_MIN_WIDTH, CONTENT_MIN_WIDTH } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement';
45
+ import { AI_CUSTOMIZATION_MANAGEMENT_EDITOR_ID, CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_EDITOR, CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_SECTION, CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_HARNESS, AI_CUSTOMIZATION_MANAGEMENT_SELECTED_SECTION_KEY, AI_CUSTOMIZATION_MANAGEMENT_SIDEBAR_WIDTH_KEY, SIDEBAR_DEFAULT_WIDTH, SIDEBAR_MAX_WIDTH, SIDEBAR_MIN_WIDTH, CONTENT_MIN_WIDTH } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement';
45
46
  import { pluginIcon, hookIcon, promptIcon, instructionsIcon, skillIcon, agentIcon } from './aiCustomizationIcons.js';
46
47
  import { ChatModelsWidget } from '../chatManagement/chatModelsWidget.js';
47
48
  import { PromptsType, Target } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
@@ -83,7 +84,7 @@ var AICustomizationManagementEditor_1;
83
84
  registerCss(aiCustomizationManagement);
84
85
  const $ = $$1;
85
86
  const aiCustomizationManagementSashBorder = registerColor("aiCustomizationManagement.sashBorder", PANEL_BORDER, ( localize(
86
- 5361,
87
+ 5393,
87
88
  "The color of the Chat Customization Management editor splitview sash border."
88
89
  )));
89
90
  class SectionItemDelegate {
@@ -192,6 +193,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
192
193
  this._editorContentChanged = false;
193
194
  this.inEditorContextKey = CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_EDITOR.bindTo(contextKeyService);
194
195
  this.sectionContextKey = CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_SECTION.bindTo(contextKeyService);
196
+ this.harnessContextKey = CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_HARNESS.bindTo(contextKeyService);
195
197
  this._register(autorun(reader => {
196
198
  this.workspaceService.activeProjectRoot.read(reader);
197
199
  if (this.viewMode === "editor") {
@@ -205,35 +207,35 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
205
207
  this._register(toDisposable(() => this.disposeBuiltinEditingSessions()));
206
208
  const sectionInfo = {
207
209
  [AICustomizationManagementSection.Agents]: {
208
- label: ( localize(5362, "Agents")),
210
+ label: ( localize(5394, "Agents")),
209
211
  icon: agentIcon
210
212
  },
211
213
  [AICustomizationManagementSection.Skills]: {
212
- label: ( localize(5363, "Skills")),
214
+ label: ( localize(5395, "Skills")),
213
215
  icon: skillIcon
214
216
  },
215
217
  [AICustomizationManagementSection.Instructions]: {
216
- label: ( localize(5364, "Instructions")),
218
+ label: ( localize(5396, "Instructions")),
217
219
  icon: instructionsIcon
218
220
  },
219
221
  [AICustomizationManagementSection.Prompts]: {
220
- label: ( localize(5365, "Prompts")),
222
+ label: ( localize(5397, "Prompts")),
221
223
  icon: promptIcon
222
224
  },
223
225
  [AICustomizationManagementSection.Hooks]: {
224
- label: ( localize(5366, "Hooks")),
226
+ label: ( localize(5398, "Hooks")),
225
227
  icon: hookIcon
226
228
  },
227
229
  [AICustomizationManagementSection.McpServers]: {
228
- label: ( localize(5367, "MCP Servers")),
230
+ label: ( localize(5399, "MCP Servers")),
229
231
  icon: Codicon.server
230
232
  },
231
233
  [AICustomizationManagementSection.Plugins]: {
232
- label: ( localize(5368, "Plugins")),
234
+ label: ( localize(5400, "Plugins")),
233
235
  icon: pluginIcon
234
236
  },
235
237
  [AICustomizationManagementSection.Models]: {
236
- label: ( localize(5369, "Models")),
238
+ label: ( localize(5401, "Models")),
237
239
  icon: Codicon.vm
238
240
  }
239
241
  };
@@ -365,7 +367,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
365
367
  }
366
368
  }
367
369
  createSidebar() {
368
- const sidebarContent = append(this.sidebarContainer, $(".sidebar-content"));
370
+ const sidebarContent = this.sidebarContent = append(this.sidebarContainer, $(".sidebar-content"));
369
371
  this.createHarnessDropdown(sidebarContent);
370
372
  const sectionsListContainer = append(sidebarContent, $(".sidebar-sections-list"));
371
373
  this.sectionsList = this.editorDisposables.add(this.instantiationService.createInstance(
@@ -380,7 +382,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
380
382
  horizontalScrolling: false,
381
383
  accessibilityProvider: {
382
384
  getAriaLabel: item => item.label,
383
- getWidgetAriaLabel: () => ( localize(5370, "Chat Customization Sections"))
385
+ getWidgetAriaLabel: () => ( localize(5402, "Chat Customization Sections"))
384
386
  },
385
387
  openOnSingleClick: true,
386
388
  identityProvider: {
@@ -404,7 +406,9 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
404
406
  this.harnessService.setActiveHarness(available[0].id);
405
407
  return;
406
408
  }
409
+ this.harnessContextKey.set(activeId);
407
410
  this.rebuildVisibleSections();
411
+ this.ensureHarnessDropdown();
408
412
  this.updateHarnessDropdown();
409
413
  this.refreshAllPromptsSectionCounts();
410
414
  }));
@@ -428,7 +432,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
428
432
  }
429
433
  const container = this.harnessDropdownContainer = append(sidebarContent, $(".sidebar-harness-dropdown"));
430
434
  this.harnessDropdownButton = append(container, $("button.harness-dropdown-button"));
431
- this.harnessDropdownButton.setAttribute("aria-label", ( localize(5371, "Select customization target")));
435
+ this.harnessDropdownButton.setAttribute("aria-label", ( localize(5403, "Select customization target")));
432
436
  this.harnessDropdownButton.setAttribute("aria-haspopup", "listbox");
433
437
  this.harnessDropdownIcon = append(this.harnessDropdownButton, $("span.harness-dropdown-icon"));
434
438
  this.harnessDropdownLabel = append(this.harnessDropdownButton, $("span.harness-dropdown-label"));
@@ -441,6 +445,19 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
441
445
  this.showHarnessMenu();
442
446
  }));
443
447
  }
448
+ ensureHarnessDropdown() {
449
+ const harnesses = this.harnessService.availableHarnesses.get();
450
+ const shouldShow = this.isHarnessSelectorEnabled && harnesses.length > 1;
451
+ if (shouldShow && !this.harnessDropdownContainer && this.sidebarContent) {
452
+ this.createHarnessDropdown(this.sidebarContent);
453
+ } else if (!shouldShow && this.harnessDropdownContainer) {
454
+ this.harnessDropdownContainer.remove();
455
+ this.harnessDropdownContainer = undefined;
456
+ this.harnessDropdownButton = undefined;
457
+ this.harnessDropdownIcon = undefined;
458
+ this.harnessDropdownLabel = undefined;
459
+ }
460
+ }
444
461
  updateHarnessDropdown() {
445
462
  if (!this.harnessDropdownContainer || !this.harnessDropdownIcon || !this.harnessDropdownLabel) {
446
463
  return;
@@ -477,12 +494,12 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
477
494
  createFolderPicker(sidebarContent) {
478
495
  const footer = this.folderPickerContainer = append(sidebarContent, $(".sidebar-folder-picker"));
479
496
  const button = append(footer, $("button.folder-picker-button"));
480
- button.setAttribute("aria-label", ( localize(5372, "Browse folder")));
497
+ button.setAttribute("aria-label", ( localize(5404, "Browse folder")));
481
498
  const folderIcon = append(button, $(`.codicon.codicon-${Codicon.folder.id}`));
482
499
  folderIcon.classList.add("folder-picker-icon");
483
500
  this.folderPickerLabel = append(button, $("span.folder-picker-label"));
484
501
  this.folderPickerClearButton = append(footer, $("button.folder-picker-clear"));
485
- this.folderPickerClearButton.setAttribute("aria-label", ( localize(5373, "Reset to session folder")));
502
+ this.folderPickerClearButton.setAttribute("aria-label", ( localize(5405, "Reset to session folder")));
486
503
  append(this.folderPickerClearButton, $(`.codicon.codicon-${Codicon.close.id}`));
487
504
  this.editorDisposables.add(addDisposableListener(button, "click", () => {
488
505
  this.browseForFolder();
@@ -504,7 +521,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
504
521
  }
505
522
  updateFolderPickerLabel(root, hasOverride) {
506
523
  if (this.folderPickerLabel) {
507
- this.folderPickerLabel.textContent = root ? basename(root) : ( localize(5374, "No folder"));
524
+ this.folderPickerLabel.textContent = root ? basename(root) : ( localize(5406, "No folder"));
508
525
  }
509
526
  if (this.folderPickerClearButton) {
510
527
  this.folderPickerClearButton.style.display = hasOverride ? "" : "none";
@@ -515,7 +532,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
515
532
  canSelectFolders: true,
516
533
  canSelectFiles: false,
517
534
  canSelectMany: false,
518
- title: ( localize(5375, "Select Folder to Explore")),
535
+ title: ( localize(5407, "Select Folder to Explore")),
519
536
  defaultUri: this.workspaceService.getActiveProjectRoot()
520
537
  });
521
538
  if (result?.[0]) {
@@ -531,15 +548,16 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
531
548
  this.telemetryService.publicLog2("chatCustomizationEditor.itemSelected", {
532
549
  section: this.selectedSection,
533
550
  promptType: item.promptType,
534
- storage: item.storage
551
+ storage: item.storage ?? "external"
535
552
  });
536
- const isWorkspaceFile = item.storage === PromptsStorage.local;
537
- const isReadOnly = item.storage === PromptsStorage.extension || item.storage === PromptsStorage.plugin || item.storage === BUILTIN_STORAGE;
553
+ const storage = item.storage;
554
+ const isWorkspaceFile = storage === PromptsStorage.local;
555
+ const isReadOnly = !storage || storage === PromptsStorage.extension || storage === PromptsStorage.plugin || storage === BUILTIN_STORAGE;
538
556
  this.showEmbeddedEditor(
539
557
  item.uri,
540
558
  item.name,
541
559
  item.promptType,
542
- item.storage,
560
+ storage ?? BUILTIN_STORAGE,
543
561
  isWorkspaceFile,
544
562
  isReadOnly
545
563
  );
@@ -564,11 +582,11 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
564
582
  this.modelsFooterElement = append(this.modelsContentContainer, $(".section-footer"));
565
583
  const modelsDescription = append(this.modelsFooterElement, $("p.section-footer-description"));
566
584
  modelsDescription.textContent = ( localize(
567
- 5376,
585
+ 5408,
568
586
  "Browse and manage language models from different providers. Select models for use in chat, code completion, and other AI features."
569
587
  ));
570
588
  const modelsLink = append(this.modelsFooterElement, $("a.section-footer-link"));
571
- modelsLink.textContent = ( localize(5377, "Learn more about language models"));
589
+ modelsLink.textContent = ( localize(5409, "Learn more about language models"));
572
590
  modelsLink.href = "https://code.visualstudio.com/docs/copilot/customization/language-models";
573
591
  this.editorDisposables.add(addDisposableListener(modelsLink, "click", e => {
574
592
  e.preventDefault();
@@ -892,7 +910,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
892
910
  uri: folder.uri
893
911
  })));
894
912
  const picked = await this.quickInputService.pick(items, {
895
- placeHolder: ( localize(5378, "Select a directory for the new customization file"))
913
+ placeHolder: ( localize(5410, "Select a directory for the new customization file"))
896
914
  });
897
915
  return picked?.uri ?? null;
898
916
  }
@@ -908,6 +926,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
908
926
  this.workspaceService.clearOverrideProjectRoot();
909
927
  this.inEditorContextKey.set(true);
910
928
  this.sectionContextKey.set(this.selectedSection);
929
+ input.setSaveHandler(() => this.handleBuiltinSave());
911
930
  this.telemetryService.publicLog2("chatCustomizationEditor.opened", {
912
931
  section: this.selectedSection
913
932
  });
@@ -917,6 +936,11 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
917
936
  }
918
937
  }
919
938
  clearInput() {
939
+ const input = this.input;
940
+ if (input instanceof AICustomizationManagementEditorInput) {
941
+ input.setSaveHandler(undefined);
942
+ input.setDirty(false);
943
+ }
920
944
  this.inEditorContextKey.set(false);
921
945
  if (this.viewMode === "editor") {
922
946
  this.goBackToList();
@@ -978,12 +1002,24 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
978
1002
  if (this.isPromptsSection(sectionId)) {
979
1003
  void this.listWidget.setSection(sectionId);
980
1004
  }
1005
+ if (this.dimension) {
1006
+ this.layout(this.dimension);
1007
+ }
981
1008
  this.ensureSectionsListReflectsActiveSection(sectionId);
982
1009
  }
983
1010
  }
984
1011
  refreshList() {
985
1012
  void this.listWidget.refresh();
986
1013
  }
1014
+ revealLastItem() {
1015
+ if (this.selectedSection === AICustomizationManagementSection.McpServers) {
1016
+ this.mcpListWidget?.revealLastItem();
1017
+ } else if (this.selectedSection === AICustomizationManagementSection.Plugins) {
1018
+ this.pluginListWidget?.revealLastItem();
1019
+ } else {
1020
+ this.listWidget.revealLastItem();
1021
+ }
1022
+ }
987
1023
  async generateDebugReport() {
988
1024
  return this.listWidget.generateDebugReport();
989
1025
  }
@@ -993,7 +1029,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
993
1029
  }
994
1030
  const editorHeader = append(this.editorContentContainer, $(".editor-header"));
995
1031
  this.editorActionButton = append(editorHeader, $("button.editor-back-button"));
996
- this.editorActionButton.setAttribute("aria-label", ( localize(5379, "Back to list")));
1032
+ this.editorActionButton.setAttribute("aria-label", ( localize(5411, "Back to list")));
997
1033
  this.editorActionButtonIcon = append(
998
1034
  this.editorActionButton,
999
1035
  $(`.codicon.codicon-${Codicon.arrowLeft.id}.editor-action-button-icon`)
@@ -1002,7 +1038,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
1002
1038
  this.editorDisposables.add(addDisposableListener(this.editorActionButton, "click", () => {
1003
1039
  void this.handleEditorActionButton().catch(error => {
1004
1040
  console.error("Failed to handle editor back action:", error);
1005
- this.notificationService.error(( localize(5380, "Failed to finish the prompt action.")));
1041
+ this.notificationService.error(( localize(5412, "Failed to finish the prompt action.")));
1006
1042
  });
1007
1043
  }));
1008
1044
  const itemInfo = append(editorHeader, $(".editor-item-info"));
@@ -1106,7 +1142,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
1106
1142
  this._editorContentChanged = this.workingCopyService.isDirty(uri);
1107
1143
  this.editorSaveIndicator.className = "editor-save-indicator visible saved";
1108
1144
  this.editorSaveIndicator.classList.add(...ThemeIcon.asClassNameArray(Codicon.check));
1109
- this.editorSaveIndicator.title = ( localize(5381, "Saved"));
1145
+ this.editorSaveIndicator.title = ( localize(5413, "Saved"));
1110
1146
  }
1111
1147
  }));
1112
1148
  } catch (error) {
@@ -1151,7 +1187,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
1151
1187
  const saveRequest = backgroundSaveRequest;
1152
1188
  void this.saveExistingCustomization(saveRequest).catch(error => {
1153
1189
  console.error("Failed to save customization changes on exit:", error);
1154
- this.notificationService.warn(( localize(5382, "Could not save changes to {0}.", basename(saveRequest.fileUri))));
1190
+ this.notificationService.warn(( localize(5414, "Could not save changes to {0}.", basename(saveRequest.fileUri))));
1155
1191
  });
1156
1192
  }
1157
1193
  }
@@ -1244,7 +1280,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
1244
1280
  const workspaceFolder = resolveWorkspaceTargetDirectory(this.workspaceService, promptType);
1245
1281
  if (workspaceFolder) {
1246
1282
  items.push({
1247
- label: ( localize(5383, "Workspace")),
1283
+ label: ( localize(5415, "Workspace")),
1248
1284
  description: workspaceFolder.fsPath,
1249
1285
  target: "workspace",
1250
1286
  folder: workspaceFolder
@@ -1253,19 +1289,19 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
1253
1289
  const userFolder = await resolveUserTargetDirectory(this.promptsService, promptType);
1254
1290
  if (userFolder) {
1255
1291
  items.push({
1256
- label: ( localize(5384, "User")),
1292
+ label: ( localize(5416, "User")),
1257
1293
  description: userFolder.fsPath,
1258
1294
  target: "user",
1259
1295
  folder: userFolder
1260
1296
  });
1261
1297
  }
1262
1298
  items.push({
1263
- label: ( localize(5385, "Cancel")),
1299
+ label: ( localize(5417, "Cancel")),
1264
1300
  target: "cancel"
1265
1301
  });
1266
1302
  return this.quickInputService.pick(items, {
1267
1303
  canPickMany: false,
1268
- placeHolder: ( localize(5386, "Select Workspace, User, or Cancel")),
1304
+ placeHolder: ( localize(5418, "Select Workspace, User, or Cancel")),
1269
1305
  matchOnDescription: true
1270
1306
  });
1271
1307
  }
@@ -1298,7 +1334,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
1298
1334
  void this.listWidget?.refresh();
1299
1335
  }, error => {
1300
1336
  console.error("Failed to save built-in override:", error);
1301
- this.notificationService.warn(saveRequest.target === "workspace" ? ( localize(5387, "Could not save the override to the workspace.")) : ( localize(5388, "Could not save the override to your user folder.")));
1337
+ this.notificationService.warn(saveRequest.target === "workspace" ? ( localize(5419, "Could not save the override to the workspace.")) : ( localize(5420, "Could not save the override to your user folder.")));
1302
1338
  });
1303
1339
  }
1304
1340
  } finally {
@@ -1307,18 +1343,53 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
1307
1343
  }
1308
1344
  }
1309
1345
  updateEditorActionButton() {
1346
+ this.updateInputDirtyState();
1310
1347
  if (!this.editorActionButton || !this.editorActionButtonIcon) {
1311
1348
  return;
1312
1349
  }
1313
1350
  const shouldShowBuiltinSaveAction = this.shouldShowBuiltinSaveAction();
1314
1351
  this.editorActionButtonIcon.className = `codicon codicon-${shouldShowBuiltinSaveAction ? Codicon.save.id : Codicon.arrowLeft.id} editor-action-button-icon`;
1315
1352
  this.editorActionButton.disabled = this.editorActionButtonInProgress;
1316
- this.editorActionButton.setAttribute("aria-label", shouldShowBuiltinSaveAction ? ( localize(5389, "Save override")) : ( localize(5379, "Back to list")));
1317
- this.editorActionButton.title = shouldShowBuiltinSaveAction ? ( localize(5390, "Save override (choose Workspace, User, or Cancel)")) : ( localize(5379, "Back to list"));
1353
+ this.editorActionButton.setAttribute("aria-label", shouldShowBuiltinSaveAction ? ( localize(5421, "Save override")) : ( localize(5411, "Back to list")));
1354
+ this.editorActionButton.title = shouldShowBuiltinSaveAction ? ( localize(5422, "Save override (choose Workspace, User, or Cancel)")) : ( localize(5411, "Back to list"));
1318
1355
  }
1319
1356
  shouldShowBuiltinSaveAction() {
1320
1357
  return this._editorContentChanged && this.currentEditingStorage === BUILTIN_STORAGE && (this.currentEditingPromptType === PromptsType.prompt || this.currentEditingPromptType === PromptsType.skill);
1321
1358
  }
1359
+ updateInputDirtyState() {
1360
+ const input = this.input;
1361
+ if (input instanceof AICustomizationManagementEditorInput) {
1362
+ input.setDirty(this.shouldShowBuiltinSaveAction());
1363
+ }
1364
+ }
1365
+ async handleBuiltinSave() {
1366
+ if (!this.shouldShowBuiltinSaveAction()) {
1367
+ return false;
1368
+ }
1369
+ const target = await this.pickBuiltinPromptSaveTarget();
1370
+ if (!target || target.target === "cancel") {
1371
+ return false;
1372
+ }
1373
+ const saveRequest = this.createBuiltinPromptSaveRequest(target);
1374
+ if (!saveRequest) {
1375
+ return false;
1376
+ }
1377
+ try {
1378
+ await this.saveBuiltinPromptCopy(saveRequest);
1379
+ this.telemetryService.publicLog2("chatCustomizationEditor.saveItem", {
1380
+ promptType: this.currentEditingPromptType ?? "",
1381
+ storage: String(this.currentEditingStorage ?? ""),
1382
+ saveTarget: target.target
1383
+ });
1384
+ this._editorContentChanged = false;
1385
+ this.updateEditorActionButton();
1386
+ return true;
1387
+ } catch (error) {
1388
+ console.error("Failed to save built-in override:", error);
1389
+ this.notificationService.warn(target.target === "workspace" ? ( localize(5419, "Could not save the override to the workspace.")) : ( localize(5420, "Could not save the override to your user folder.")));
1390
+ return false;
1391
+ }
1392
+ }
1322
1393
  resetEditorSaveIndicator() {
1323
1394
  this.editorSaveIndicator.className = "editor-save-indicator";
1324
1395
  this.editorSaveIndicator.title = "";
@@ -1344,7 +1415,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
1344
1415
  }
1345
1416
  const detailHeader = append(this.mcpDetailContainer, $(".editor-header"));
1346
1417
  const backButton = append(detailHeader, $("button.editor-back-button"));
1347
- backButton.setAttribute("aria-label", ( localize(5391, "Back to MCP servers")));
1418
+ backButton.setAttribute("aria-label", ( localize(5423, "Back to MCP servers")));
1348
1419
  const backIconEl = append(backButton, $(`.codicon.codicon-${Codicon.arrowLeft.id}`));
1349
1420
  backIconEl.setAttribute("aria-hidden", "true");
1350
1421
  this.editorDisposables.add(addDisposableListener(backButton, "click", () => {
@@ -1389,7 +1460,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
1389
1460
  }
1390
1461
  const detailHeader = append(this.pluginDetailContainer, $(".editor-header"));
1391
1462
  const backButton = append(detailHeader, $("button.editor-back-button"));
1392
- backButton.setAttribute("aria-label", ( localize(5392, "Back to plugins")));
1463
+ backButton.setAttribute("aria-label", ( localize(5424, "Back to plugins")));
1393
1464
  const backIconEl = append(backButton, $(`.codicon.codicon-${Codicon.arrowLeft.id}`));
1394
1465
  backIconEl.setAttribute("aria-hidden", "true");
1395
1466
  this.editorDisposables.add(addDisposableListener(backButton, "click", () => {
@@ -1,5 +1,5 @@
1
1
  import { ThemeIcon } from "@codingame/monaco-vscode-api/vscode/vs/base/common/themables";
2
- import { IUntypedEditorInput, EditorInputCapabilities } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor";
2
+ import { IUntypedEditorInput, EditorInputCapabilities, GroupIdentifier, ISaveOptions } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor";
3
3
  import { EditorInput } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor/editorInput";
4
4
  /**
5
5
  * Editor input for the AI Customizations Management Editor.
@@ -8,6 +8,8 @@ import { EditorInput } from "@codingame/monaco-vscode-api/vscode/vs/workbench/co
8
8
  export declare class AICustomizationManagementEditorInput extends EditorInput {
9
9
  static readonly ID: string;
10
10
  readonly resource: undefined;
11
+ private _isDirty;
12
+ private _saveHandler?;
11
13
  get capabilities(): EditorInputCapabilities;
12
14
  private static _instance;
13
15
  /**
@@ -20,4 +22,9 @@ export declare class AICustomizationManagementEditorInput extends EditorInput {
20
22
  getName(): string;
21
23
  getIcon(): ThemeIcon;
22
24
  resolve(): Promise<null>;
25
+ isDirty(): boolean;
26
+ save(group: GroupIdentifier, options?: ISaveOptions): Promise<EditorInput | undefined>;
27
+ revert(): Promise<void>;
28
+ setDirty(dirty: boolean): void;
29
+ setSaveHandler(handler: (() => Promise<boolean>) | undefined): void;
23
30
  }
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
3
3
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
- import { EditorInputCapabilities } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
4
+ import { EditorInputCapabilities, SaveReason } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
5
5
  import { EditorInput } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor/editorInput';
6
6
  import { AI_CUSTOMIZATION_MANAGEMENT_EDITOR_INPUT_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement';
7
7
 
@@ -21,6 +21,7 @@ class AICustomizationManagementEditorInput extends EditorInput {
21
21
  constructor() {
22
22
  super();
23
23
  this.resource = undefined;
24
+ this._isDirty = false;
24
25
  }
25
26
  matches(otherInput) {
26
27
  return super.matches(otherInput) || otherInput instanceof AICustomizationManagementEditorInput;
@@ -29,7 +30,7 @@ class AICustomizationManagementEditorInput extends EditorInput {
29
30
  return AICustomizationManagementEditorInput.ID;
30
31
  }
31
32
  getName() {
32
- return localize(5393, "Chat Customizations");
33
+ return localize(5425, "Chat Customizations");
33
34
  }
34
35
  getIcon() {
35
36
  return Codicon.settingsGear;
@@ -37,6 +38,31 @@ class AICustomizationManagementEditorInput extends EditorInput {
37
38
  async resolve() {
38
39
  return null;
39
40
  }
41
+ isDirty() {
42
+ return this._isDirty;
43
+ }
44
+ async save(group, options) {
45
+ if (options?.reason !== undefined && options.reason !== SaveReason.EXPLICIT) {
46
+ return undefined;
47
+ }
48
+ if (this._saveHandler) {
49
+ const saved = await this._saveHandler();
50
+ return saved ? this : undefined;
51
+ }
52
+ return undefined;
53
+ }
54
+ async revert() {
55
+ this.setDirty(false);
56
+ }
57
+ setDirty(dirty) {
58
+ if (this._isDirty !== dirty) {
59
+ this._isDirty = dirty;
60
+ this._onDidChangeDirty.fire();
61
+ }
62
+ }
63
+ setSaveHandler(handler) {
64
+ this._saveHandler = handler;
65
+ }
40
66
  }
41
67
 
42
68
  export { AICustomizationManagementEditorInput };
@@ -28,4 +28,6 @@ export declare class AICustomizationWorkspaceService implements IAICustomization
28
28
  deleteFiles(_projectRoot: URI, _fileUris: URI[]): Promise<void>;
29
29
  generateCustomization(type: PromptsType): Promise<void>;
30
30
  getFilteredPromptSlashCommands(token: CancellationToken): Promise<readonly IChatPromptSlashCommand[]>;
31
+ private static readonly _emptyIntegrations;
32
+ getSkillUIIntegrations(): ReadonlyMap<string, string>;
31
33
  }
@@ -14,7 +14,11 @@ import { constObservable } from '@codingame/monaco-vscode-api/vscode/vs/base/com
14
14
  import { observableFromEventOpts } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
15
15
  import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
16
16
 
17
+ var AICustomizationWorkspaceService_1;
17
18
  let AICustomizationWorkspaceService = class AICustomizationWorkspaceService {
19
+ static {
20
+ AICustomizationWorkspaceService_1 = this;
21
+ }
18
22
  constructor(workspaceContextService, commandService, promptsService, harnessService) {
19
23
  this.workspaceContextService = workspaceContextService;
20
24
  this.commandService = commandService;
@@ -66,7 +70,13 @@ let AICustomizationWorkspaceService = class AICustomizationWorkspaceService {
66
70
  async getFilteredPromptSlashCommands(token) {
67
71
  return this.promptsService.getPromptSlashCommands(token);
68
72
  }
73
+ static {
74
+ this._emptyIntegrations = ( new Map());
75
+ }
76
+ getSkillUIIntegrations() {
77
+ return AICustomizationWorkspaceService_1._emptyIntegrations;
78
+ }
69
79
  };
70
- AICustomizationWorkspaceService = ( __decorate([( __param(0, IWorkspaceContextService)), ( __param(1, ICommandService)), ( __param(2, IPromptsService)), ( __param(3, ICustomizationHarnessService))], AICustomizationWorkspaceService));
80
+ AICustomizationWorkspaceService = AICustomizationWorkspaceService_1 = ( __decorate([( __param(0, IWorkspaceContextService)), ( __param(1, ICommandService)), ( __param(2, IPromptsService)), ( __param(3, ICustomizationHarnessService))], AICustomizationWorkspaceService));
71
81
 
72
82
  export { AICustomizationWorkspaceService };
@@ -1,11 +1,9 @@
1
1
  import { CustomizationHarnessServiceBase } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/customizationHarnessService";
2
2
  import { IPathService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/path/common/pathService.service";
3
- import { IChatAgentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatAgents.service";
4
3
  /**
5
4
  * Core implementation of the customization harness service.
6
5
  * Exposes VS Code, CLI, and Claude harnesses for filtering customizations.
7
- * CLI and Claude harnesses are only shown when their respective agents are registered.
8
6
  */
9
7
  export declare class CustomizationHarnessService extends CustomizationHarnessServiceBase {
10
- constructor(pathService: IPathService, chatAgentService: IChatAgentService);
8
+ constructor(pathService: IPathService);
11
9
  }
@@ -1,18 +1,14 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
4
3
  import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/extensions';
5
4
  import { CustomizationHarnessServiceBase, createVSCodeHarnessDescriptor, createCliHarnessDescriptor, getCliUserRoots, createClaudeHarnessDescriptor, getClaudeUserRoots, CustomizationHarness } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/customizationHarnessService';
6
5
  import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
7
6
  import { PromptsStorage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
8
7
  import { BUILTIN_STORAGE } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService';
9
8
  import { IPathService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/path/common/pathService.service';
10
- import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatAgents.service';
11
- import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
12
- import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
13
9
 
14
10
  let CustomizationHarnessService = class CustomizationHarnessService extends CustomizationHarnessServiceBase {
15
- constructor(pathService, chatAgentService) {
11
+ constructor(pathService) {
16
12
  const userHome = pathService.userHome({
17
13
  preferLocal: true
18
14
  });
@@ -23,22 +19,9 @@ let CustomizationHarnessService = class CustomizationHarnessService extends Cust
23
19
  createCliHarnessDescriptor(getCliUserRoots(userHome), restrictedExtras),
24
20
  createClaudeHarnessDescriptor(getClaudeUserRoots(userHome), restrictedExtras)
25
21
  ];
26
- const agentCount = observableFromEvent(
27
- chatAgentService.onDidChangeAgents,
28
- () => chatAgentService.getAgents().length
29
- );
30
- const available = derived(reader => {
31
- agentCount.read(reader);
32
- return allHarnesses.filter(h => {
33
- if (!h.requiredAgentId) {
34
- return true;
35
- }
36
- return !!chatAgentService.getAgent(h.requiredAgentId);
37
- });
38
- });
39
- super(allHarnesses, CustomizationHarness.VSCode, available);
22
+ super(allHarnesses, CustomizationHarness.VSCode);
40
23
  }
41
24
  };
42
- CustomizationHarnessService = ( __decorate([( __param(0, IPathService)), ( __param(1, IChatAgentService))], CustomizationHarnessService));
25
+ CustomizationHarnessService = ( __decorate([( __param(0, IPathService))], CustomizationHarnessService));
43
26
 
44
27
  export { CustomizationHarnessService };
@@ -88,6 +88,10 @@ export declare class McpListWidget extends Disposable {
88
88
  * Focuses the search input.
89
89
  */
90
90
  focusSearch(): void;
91
+ /**
92
+ * Scrolls the list so the last item is visible.
93
+ */
94
+ revealLastItem(): void;
91
95
  /**
92
96
  * Focuses the list.
93
97
  */