@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
@@ -21,7 +21,7 @@ import { WorkbenchList } from '@codingame/monaco-vscode-api/vscode/vs/platform/l
21
21
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
22
22
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
23
23
  import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
24
- import { basename, joinPath, isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
24
+ import { basename, isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
25
25
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
26
26
  import { registerColor } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colorUtils';
27
27
  import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/baseColors';
@@ -37,10 +37,11 @@ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/sear
37
37
  import { PANEL_BORDER } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/theme';
38
38
  import { AICustomizationListWidget } from './aiCustomizationListWidget.js';
39
39
  import { McpListWidget } from './mcpListWidget.js';
40
+ import { PluginListWidget } from './pluginListWidget.js';
40
41
  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 './aiCustomizationManagement.js';
41
- import { hookIcon, promptIcon, instructionsIcon, skillIcon, agentIcon } from './aiCustomizationIcons.js';
42
+ import { pluginIcon, hookIcon, promptIcon, instructionsIcon, skillIcon, agentIcon } from './aiCustomizationIcons.js';
42
43
  import { ChatModelsWidget } from '../chatManagement/chatModelsWidget.js';
43
- import { PromptsType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
44
+ import { PromptsType, Target } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
44
45
  import { PromptsStorage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
45
46
  import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
46
47
  import { NEW_SKILL_COMMAND_ID, NEW_AGENT_COMMAND_ID, NEW_INSTRUCTIONS_COMMAND_ID, NEW_PROMPT_COMMAND_ID } from '@codingame/monaco-vscode-xterm-addons-common/vscode/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions';
@@ -54,12 +55,13 @@ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/pl
54
55
  import { getSimpleEditorOptions } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions';
55
56
  import { IWorkingCopyService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/workingCopy/common/workingCopyService.service';
56
57
  import { ITextFileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/textfile/common/textfiles.service';
57
- import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
58
- import { VSBuffer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
59
- import { HOOKS_SOURCE_FOLDER } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
60
- import { COPILOT_CLI_HOOK_TYPE_MAP } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
58
+ import { IFileDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
59
+ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
61
60
  import { McpServerEditorInput } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/browser/mcpServerEditorInput';
62
61
  import { McpServerEditor } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/browser/mcpServerEditor';
62
+ import { getDefaultHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
63
+ import { AgentPluginEditor } from '../agentPluginEditor/agentPluginEditor.js';
64
+ import { AgentPluginEditorInput } from '../agentPluginEditor/agentPluginEditorInput.js';
63
65
  import { AICustomizationManagementSection } from '../../common/aiCustomizationWorkspaceService.js';
64
66
  import { Orientation } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/sash/sash';
65
67
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
@@ -68,7 +70,7 @@ var AICustomizationManagementEditor_1;
68
70
  registerCss(aiCustomizationManagement);
69
71
  const $ = $$1;
70
72
  const aiCustomizationManagementSashBorder = registerColor("aiCustomizationManagement.sashBorder", PANEL_BORDER, ( localize(
71
- 5271,
73
+ 5294,
72
74
  "The color of the Chat Customization Management editor splitview sash border."
73
75
  )));
74
76
  class SectionItemDelegate {
@@ -122,7 +124,8 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
122
124
  configurationService,
123
125
  workingCopyService,
124
126
  textFileService,
125
- fileService
127
+ fileDialogService,
128
+ hoverService
126
129
  ) {
127
130
  super(
128
131
  AICustomizationManagementEditor_1.ID,
@@ -141,13 +144,16 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
141
144
  this.configurationService = configurationService;
142
145
  this.workingCopyService = workingCopyService;
143
146
  this.textFileService = textFileService;
144
- this.fileService = fileService;
147
+ this.fileDialogService = fileDialogService;
148
+ this.hoverService = hoverService;
145
149
  this.editorModelChangeDisposables = this._register(( new DisposableStore()));
146
150
  this.viewMode = "list";
147
151
  this.mcpDetailDisposables = this._register(( new DisposableStore()));
152
+ this.pluginDetailDisposables = this._register(( new DisposableStore()));
148
153
  this.sections = [];
149
154
  this.selectedSection = AICustomizationManagementSection.Agents;
150
155
  this.editorDisposables = this._register(( new DisposableStore()));
156
+ this._editorContentChanged = false;
151
157
  this.inEditorContextKey = CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_EDITOR.bindTo(contextKeyService);
152
158
  this.sectionContextKey = CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_SECTION.bindTo(contextKeyService);
153
159
  this._register(autorun(reader => {
@@ -162,31 +168,35 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
162
168
  }));
163
169
  const sectionInfo = {
164
170
  [AICustomizationManagementSection.Agents]: {
165
- label: ( localize(5272, "Agents")),
171
+ label: ( localize(5295, "Agents")),
166
172
  icon: agentIcon
167
173
  },
168
174
  [AICustomizationManagementSection.Skills]: {
169
- label: ( localize(5273, "Skills")),
175
+ label: ( localize(5296, "Skills")),
170
176
  icon: skillIcon
171
177
  },
172
178
  [AICustomizationManagementSection.Instructions]: {
173
- label: ( localize(5274, "Instructions")),
179
+ label: ( localize(5297, "Instructions")),
174
180
  icon: instructionsIcon
175
181
  },
176
182
  [AICustomizationManagementSection.Prompts]: {
177
- label: ( localize(5275, "Prompts")),
183
+ label: ( localize(5298, "Prompts")),
178
184
  icon: promptIcon
179
185
  },
180
186
  [AICustomizationManagementSection.Hooks]: {
181
- label: ( localize(5276, "Hooks")),
187
+ label: ( localize(5299, "Hooks")),
182
188
  icon: hookIcon
183
189
  },
184
190
  [AICustomizationManagementSection.McpServers]: {
185
- label: ( localize(5277, "MCP Servers")),
191
+ label: ( localize(5300, "MCP Servers")),
186
192
  icon: Codicon.server
187
193
  },
194
+ [AICustomizationManagementSection.Plugins]: {
195
+ label: ( localize(5301, "Plugins")),
196
+ icon: pluginIcon
197
+ },
188
198
  [AICustomizationManagementSection.Models]: {
189
- label: ( localize(5278, "Models")),
199
+ label: ( localize(5302, "Models")),
190
200
  icon: Codicon.vm
191
201
  }
192
202
  };
@@ -235,7 +245,8 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
235
245
  layout: (width, _, height) => {
236
246
  this.sidebarContainer.style.width = `${width}px`;
237
247
  if (height !== undefined) {
238
- const listHeight = height - 8;
248
+ const footerHeight = this.folderPickerContainer?.offsetHeight ?? 0;
249
+ const listHeight = height - 8 - footerHeight;
239
250
  this.sectionsList.layout(listHeight, width);
240
251
  }
241
252
  }
@@ -250,6 +261,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
250
261
  if (height !== undefined) {
251
262
  this.listWidget.layout(height - 16, width - 24);
252
263
  this.mcpListWidget?.layout(height - 16, width - 24);
264
+ this.pluginListWidget?.layout(height - 16, width - 24);
253
265
  const modelsFooterHeight = this.modelsFooterElement?.offsetHeight || 80;
254
266
  this.modelsWidget?.layout(height - 16 - modelsFooterHeight, width);
255
267
  if (this.viewMode === "editor" && this.embeddedEditor) {
@@ -264,6 +276,10 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
264
276
  const backHeaderHeight = 40;
265
277
  this.embeddedMcpEditor.layout(new Dimension(width, Math.max(0, height - backHeaderHeight)));
266
278
  }
279
+ if (this.viewMode === "pluginDetail" && this.embeddedPluginEditor) {
280
+ const backHeaderHeight = 40;
281
+ this.embeddedPluginEditor.layout(new Dimension(width, Math.max(0, height - backHeaderHeight)));
282
+ }
267
283
  }
268
284
  }
269
285
  }, Sizing.Distribute, undefined, true);
@@ -297,7 +313,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
297
313
  horizontalScrolling: false,
298
314
  accessibilityProvider: {
299
315
  getAriaLabel: item => item.label,
300
- getWidgetAriaLabel: () => ( localize(5279, "Chat Customization Sections"))
316
+ getWidgetAriaLabel: () => ( localize(5303, "Chat Customization Sections"))
301
317
  },
302
318
  openOnSingleClick: true,
303
319
  identityProvider: {
@@ -315,6 +331,57 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
315
331
  this.selectSection(e.elements[0].id);
316
332
  }
317
333
  }));
334
+ if (this.workspaceService.isSessionsWindow) {
335
+ this.createFolderPicker(sidebarContent);
336
+ }
337
+ }
338
+ createFolderPicker(sidebarContent) {
339
+ const footer = this.folderPickerContainer = append(sidebarContent, $(".sidebar-folder-picker"));
340
+ const button = append(footer, $("button.folder-picker-button"));
341
+ button.setAttribute("aria-label", ( localize(5304, "Browse folder")));
342
+ const folderIcon = append(button, $(`.codicon.codicon-${Codicon.folder.id}`));
343
+ folderIcon.classList.add("folder-picker-icon");
344
+ this.folderPickerLabel = append(button, $("span.folder-picker-label"));
345
+ this.folderPickerClearButton = append(footer, $("button.folder-picker-clear"));
346
+ this.folderPickerClearButton.setAttribute("aria-label", ( localize(5305, "Reset to session folder")));
347
+ append(this.folderPickerClearButton, $(`.codicon.codicon-${Codicon.close.id}`));
348
+ this.editorDisposables.add(addDisposableListener(button, "click", () => {
349
+ this.browseForFolder();
350
+ }));
351
+ this.editorDisposables.add(addDisposableListener(this.folderPickerClearButton, "click", () => {
352
+ this.workspaceService.clearOverrideProjectRoot();
353
+ }));
354
+ this.editorDisposables.add(
355
+ this.hoverService.setupManagedHover(getDefaultHoverDelegate("element"), button, () => {
356
+ const root = this.workspaceService.getActiveProjectRoot();
357
+ return root?.fsPath ?? "";
358
+ })
359
+ );
360
+ this.editorDisposables.add(autorun(reader => {
361
+ const root = this.workspaceService.activeProjectRoot.read(reader);
362
+ const hasOverride = this.workspaceService.hasOverrideProjectRoot.read(reader);
363
+ this.updateFolderPickerLabel(root, hasOverride);
364
+ }));
365
+ }
366
+ updateFolderPickerLabel(root, hasOverride) {
367
+ if (this.folderPickerLabel) {
368
+ this.folderPickerLabel.textContent = root ? basename(root) : ( localize(5306, "No folder"));
369
+ }
370
+ if (this.folderPickerClearButton) {
371
+ this.folderPickerClearButton.style.display = hasOverride ? "" : "none";
372
+ }
373
+ }
374
+ async browseForFolder() {
375
+ const result = await this.fileDialogService.showOpenDialog({
376
+ canSelectFolders: true,
377
+ canSelectFiles: false,
378
+ canSelectMany: false,
379
+ title: ( localize(5307, "Select Folder to Explore")),
380
+ defaultUri: this.workspaceService.getActiveProjectRoot()
381
+ });
382
+ if (result?.[0]) {
383
+ this.workspaceService.setOverrideProjectRoot(result[0]);
384
+ }
318
385
  }
319
386
  createContent() {
320
387
  const contentInner = append(this.contentContainer, $(".content-inner"));
@@ -345,11 +412,11 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
345
412
  this.modelsFooterElement = append(this.modelsContentContainer, $(".section-footer"));
346
413
  const modelsDescription = append(this.modelsFooterElement, $("p.section-footer-description"));
347
414
  modelsDescription.textContent = ( localize(
348
- 5280,
415
+ 5308,
349
416
  "Browse and manage language models from different providers. Select models for use in chat, code completion, and other AI features."
350
417
  ));
351
418
  const modelsLink = append(this.modelsFooterElement, $("a.section-footer-link"));
352
- modelsLink.textContent = ( localize(5281, "Learn more about language models"));
419
+ modelsLink.textContent = ( localize(5309, "Learn more about language models"));
353
420
  modelsLink.href = "https://code.visualstudio.com/docs/copilot/customization/language-models";
354
421
  this.editorDisposables.add(addDisposableListener(modelsLink, "click", e => {
355
422
  e.preventDefault();
@@ -366,6 +433,16 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
366
433
  this.showEmbeddedMcpDetail(server);
367
434
  }));
368
435
  }
436
+ if (( hasSections.has(AICustomizationManagementSection.Plugins))) {
437
+ this.pluginContentContainer = append(contentInner, $(".plugin-content-container"));
438
+ this.pluginListWidget = this.editorDisposables.add(this.instantiationService.createInstance(PluginListWidget));
439
+ this.pluginContentContainer.appendChild(this.pluginListWidget.element);
440
+ this.pluginDetailContainer = append(contentInner, $(".plugin-detail-container"));
441
+ this.createEmbeddedPluginDetail();
442
+ this.editorDisposables.add(this.pluginListWidget.onDidSelectPlugin(item => {
443
+ this.showEmbeddedPluginDetail(item);
444
+ }));
445
+ }
369
446
  this.editorContentContainer = append(contentInner, $(".editor-content-container"));
370
447
  this.createEmbeddedEditor();
371
448
  this.updateContentVisibility();
@@ -386,6 +463,9 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
386
463
  if (this.viewMode === "mcpDetail") {
387
464
  this.goBackFromMcpDetail();
388
465
  }
466
+ if (this.viewMode === "pluginDetail") {
467
+ this.goBackFromPluginDetail();
468
+ }
389
469
  this.selectedSection = section;
390
470
  this.sectionContextKey.set(section);
391
471
  this.storageService.store(
@@ -402,19 +482,28 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
402
482
  updateContentVisibility() {
403
483
  const isEditorMode = this.viewMode === "editor";
404
484
  const isMcpDetailMode = this.viewMode === "mcpDetail";
485
+ const isPluginDetailMode = this.viewMode === "pluginDetail";
486
+ const isDetailMode = isMcpDetailMode || isPluginDetailMode;
405
487
  const isPromptsSection = this.isPromptsSection(this.selectedSection);
406
488
  const isModelsSection = this.selectedSection === AICustomizationManagementSection.Models;
407
489
  const isMcpSection = this.selectedSection === AICustomizationManagementSection.McpServers;
408
- this.promptsContentContainer.style.display = !isEditorMode && !isMcpDetailMode && isPromptsSection ? "" : "none";
490
+ const isPluginsSection = this.selectedSection === AICustomizationManagementSection.Plugins;
491
+ this.promptsContentContainer.style.display = !isEditorMode && !isDetailMode && isPromptsSection ? "" : "none";
409
492
  if (this.modelsContentContainer) {
410
- this.modelsContentContainer.style.display = !isEditorMode && !isMcpDetailMode && isModelsSection ? "" : "none";
493
+ this.modelsContentContainer.style.display = !isEditorMode && !isDetailMode && isModelsSection ? "" : "none";
411
494
  }
412
495
  if (this.mcpContentContainer) {
413
- this.mcpContentContainer.style.display = !isEditorMode && !isMcpDetailMode && isMcpSection ? "" : "none";
496
+ this.mcpContentContainer.style.display = !isEditorMode && !isDetailMode && isMcpSection ? "" : "none";
414
497
  }
415
498
  if (this.mcpDetailContainer) {
416
499
  this.mcpDetailContainer.style.display = isMcpDetailMode ? "" : "none";
417
500
  }
501
+ if (this.pluginContentContainer) {
502
+ this.pluginContentContainer.style.display = !isEditorMode && !isDetailMode && isPluginsSection ? "" : "none";
503
+ }
504
+ if (this.pluginDetailContainer) {
505
+ this.pluginDetailContainer.style.display = isPluginDetailMode ? "" : "none";
506
+ }
418
507
  if (this.editorContentContainer) {
419
508
  this.editorContentContainer.style.display = isEditorMode ? "" : "none";
420
509
  }
@@ -434,7 +523,13 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
434
523
  async createNewItemManual(type, target) {
435
524
  if (type === PromptsType.hook) {
436
525
  if (this.workspaceService.isSessionsWindow) {
437
- await this.createCopilotCliHookFile();
526
+ await this.instantiationService.invokeFunction(showConfigureHooksQuickPick, {
527
+ openEditor: async resource => {
528
+ await this.showEmbeddedEditor(resource, basename(resource), true);
529
+ return;
530
+ },
531
+ target: Target.GitHubCopilot
532
+ });
438
533
  } else {
439
534
  await this.instantiationService.invokeFunction(showConfigureHooksQuickPick, {
440
535
  openEditor: async resource => {
@@ -475,32 +570,6 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
475
570
  await this.commandService.executeCommand(commandId, options);
476
571
  void this.listWidget.refresh();
477
572
  }
478
- async createCopilotCliHookFile() {
479
- const projectRoot = this.workspaceService.getActiveProjectRoot();
480
- if (!projectRoot) {
481
- return;
482
- }
483
- const hookFileUri = joinPath(projectRoot, HOOKS_SOURCE_FOLDER, "hooks.json");
484
- try {
485
- await this.fileService.stat(hookFileUri);
486
- } catch {
487
- const hooks = {};
488
- for (const eventName of ( Object.keys(COPILOT_CLI_HOOK_TYPE_MAP))) {
489
- hooks[eventName] = [{
490
- type: "command",
491
- bash: ""
492
- }];
493
- }
494
- const hooksContent = {
495
- version: 1,
496
- hooks
497
- };
498
- const jsonContent = JSON.stringify(hooksContent, null, "\t");
499
- await this.fileService.writeFile(hookFileUri, VSBuffer.fromString(jsonContent));
500
- }
501
- await this.showEmbeddedEditor(hookFileUri, basename(hookFileUri), true);
502
- void this.listWidget.refresh();
503
- }
504
573
  updateStyles() {
505
574
  const borderColor = this.theme.getColor(aiCustomizationManagementSashBorder);
506
575
  if (borderColor) {
@@ -510,6 +579,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
510
579
  }
511
580
  }
512
581
  async setInput(input, options, context, token) {
582
+ this.workspaceService.clearOverrideProjectRoot();
513
583
  this.inEditorContextKey.set(true);
514
584
  this.sectionContextKey.set(this.selectedSection);
515
585
  await super.setInput(input, options, context, token);
@@ -525,6 +595,10 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
525
595
  if (this.viewMode === "mcpDetail") {
526
596
  this.goBackFromMcpDetail();
527
597
  }
598
+ if (this.viewMode === "pluginDetail") {
599
+ this.goBackFromPluginDetail();
600
+ }
601
+ this.workspaceService.clearOverrideProjectRoot();
528
602
  super.clearInput();
529
603
  }
530
604
  layout(dimension) {
@@ -542,6 +616,8 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
542
616
  }
543
617
  if (this.selectedSection === AICustomizationManagementSection.McpServers) {
544
618
  this.mcpListWidget?.focusSearch();
619
+ } else if (this.selectedSection === AICustomizationManagementSection.Plugins) {
620
+ this.pluginListWidget?.focusSearch();
545
621
  } else if (this.selectedSection === AICustomizationManagementSection.Models) {
546
622
  this.modelsWidget?.focusSearch();
547
623
  } else {
@@ -551,6 +627,27 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
551
627
  selectSectionById(sectionId) {
552
628
  const index = this.sections.findIndex(s => s.id === sectionId);
553
629
  if (index >= 0) {
630
+ if (this.viewMode === "editor") {
631
+ this.goBackToList();
632
+ }
633
+ if (this.viewMode === "mcpDetail") {
634
+ this.goBackFromMcpDetail();
635
+ }
636
+ if (this.viewMode === "pluginDetail") {
637
+ this.goBackFromPluginDetail();
638
+ }
639
+ this.selectedSection = sectionId;
640
+ this.sectionContextKey.set(sectionId);
641
+ this.storageService.store(
642
+ AI_CUSTOMIZATION_MANAGEMENT_SELECTED_SECTION_KEY,
643
+ sectionId,
644
+ StorageScope.PROFILE,
645
+ StorageTarget.USER
646
+ );
647
+ this.updateContentVisibility();
648
+ if (this.isPromptsSection(sectionId)) {
649
+ void this.listWidget.setSection(sectionId);
650
+ }
554
651
  this.sectionsList.setFocus([index]);
555
652
  this.sectionsList.setSelection([index]);
556
653
  }
@@ -567,7 +664,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
567
664
  }
568
665
  const editorHeader = append(this.editorContentContainer, $(".editor-header"));
569
666
  const backButton = append(editorHeader, $("button.editor-back-button"));
570
- backButton.setAttribute("aria-label", ( localize(5282, "Back to list")));
667
+ backButton.setAttribute("aria-label", ( localize(5310, "Back to list")));
571
668
  const backIcon = append(backButton, $(`.codicon.codicon-${Codicon.arrowLeft.id}`));
572
669
  backIcon.setAttribute("aria-hidden", "true");
573
670
  this.editorDisposables.add(addDisposableListener(backButton, "click", () => {
@@ -617,6 +714,10 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
617
714
  this.updateContentVisibility();
618
715
  try {
619
716
  const ref = await this.textModelService.createModelReference(uri);
717
+ if (!isEqual(this.currentEditingUri, uri)) {
718
+ ref.dispose();
719
+ return;
720
+ }
620
721
  this.currentModelRef = ref;
621
722
  this.embeddedEditor.setModel(ref.object.textEditorModel);
622
723
  this.embeddedEditor.updateOptions({
@@ -627,11 +728,13 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
627
728
  }
628
729
  this.embeddedEditor.focus();
629
730
  this.editorModelChangeDisposables.clear();
731
+ this._editorContentChanged = false;
630
732
  const saveDelayer = this.editorModelChangeDisposables.add(( new Delayer(500)));
631
733
  this.editorModelChangeDisposables.add(ref.object.textEditorModel.onDidChangeContent(() => {
734
+ this._editorContentChanged = true;
632
735
  this.editorSaveIndicator.className = "editor-save-indicator visible";
633
736
  this.editorSaveIndicator.classList.add(...ThemeIcon.asClassNameArray(Codicon.loading), "codicon-modifier-spin");
634
- this.editorSaveIndicator.title = ( localize(5283, "Saving..."));
737
+ this.editorSaveIndicator.title = ( localize(5311, "Saving..."));
635
738
  saveDelayer.trigger(async () => {
636
739
  try {
637
740
  await this.textFileService.save(uri);
@@ -639,7 +742,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
639
742
  console.error("Failed to save AI customization file:", error);
640
743
  this.editorSaveIndicator.className = "editor-save-indicator visible error";
641
744
  this.editorSaveIndicator.classList.add(...ThemeIcon.asClassNameArray(Codicon.error));
642
- this.editorSaveIndicator.title = ( localize(5284, "Save Failed"));
745
+ this.editorSaveIndicator.title = ( localize(5312, "Save Failed"));
643
746
  }
644
747
  });
645
748
  }));
@@ -647,18 +750,20 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
647
750
  if (isEqual(e.workingCopy.resource, uri)) {
648
751
  this.editorSaveIndicator.className = "editor-save-indicator visible saved";
649
752
  this.editorSaveIndicator.classList.add(...ThemeIcon.asClassNameArray(Codicon.check));
650
- this.editorSaveIndicator.title = ( localize(5285, "Saved"));
753
+ this.editorSaveIndicator.title = ( localize(5313, "Saved"));
651
754
  }
652
755
  }));
653
756
  } catch (error) {
654
757
  console.error("Failed to load model for embedded editor:", error);
655
- this.goBackToList();
758
+ if (isEqual(this.currentEditingUri, uri)) {
759
+ this.goBackToList();
760
+ }
656
761
  }
657
762
  }
658
763
  goBackToList() {
659
764
  const fileUri = this.currentEditingUri;
660
765
  const projectRoot = this.currentEditingProjectRoot;
661
- if (fileUri && projectRoot) {
766
+ if (fileUri && projectRoot && this._editorContentChanged) {
662
767
  this.workspaceService.commitFiles(projectRoot, [fileUri]);
663
768
  }
664
769
  this.currentModelRef?.dispose();
@@ -671,6 +776,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
671
776
  this.embeddedEditor?.setModel(null);
672
777
  this.viewMode = "list";
673
778
  this.updateContentVisibility();
779
+ void this.listWidget?.refresh();
674
780
  if (this.dimension) {
675
781
  this.layout(this.dimension);
676
782
  }
@@ -682,7 +788,7 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
682
788
  }
683
789
  const detailHeader = append(this.mcpDetailContainer, $(".editor-header"));
684
790
  const backButton = append(detailHeader, $("button.editor-back-button"));
685
- backButton.setAttribute("aria-label", ( localize(5286, "Back to MCP servers")));
791
+ backButton.setAttribute("aria-label", ( localize(5314, "Back to MCP servers")));
686
792
  const backIconEl = append(backButton, $(`.codicon.codicon-${Codicon.arrowLeft.id}`));
687
793
  backIconEl.setAttribute("aria-hidden", "true");
688
794
  this.editorDisposables.add(addDisposableListener(backButton, "click", () => {
@@ -721,7 +827,52 @@ let AICustomizationManagementEditor = class AICustomizationManagementEditor exte
721
827
  }
722
828
  this.mcpListWidget?.focusSearch();
723
829
  }
830
+ createEmbeddedPluginDetail() {
831
+ if (!this.pluginDetailContainer) {
832
+ return;
833
+ }
834
+ const detailHeader = append(this.pluginDetailContainer, $(".editor-header"));
835
+ const backButton = append(detailHeader, $("button.editor-back-button"));
836
+ backButton.setAttribute("aria-label", ( localize(5315, "Back to plugins")));
837
+ const backIconEl = append(backButton, $(`.codicon.codicon-${Codicon.arrowLeft.id}`));
838
+ backIconEl.setAttribute("aria-hidden", "true");
839
+ this.editorDisposables.add(addDisposableListener(backButton, "click", () => {
840
+ this.goBackFromPluginDetail();
841
+ }));
842
+ const editorContainer = append(this.pluginDetailContainer, $(".plugin-detail-editor-container"));
843
+ this.embeddedPluginEditor = this.editorDisposables.add(this.instantiationService.createInstance(AgentPluginEditor, this.group));
844
+ this.embeddedPluginEditor.create(editorContainer);
845
+ }
846
+ async showEmbeddedPluginDetail(item) {
847
+ if (!this.embeddedPluginEditor) {
848
+ return;
849
+ }
850
+ this.viewMode = "pluginDetail";
851
+ this.updateContentVisibility();
852
+ const input = ( new AgentPluginEditorInput(item));
853
+ this.pluginDetailDisposables.clear();
854
+ this.pluginDetailDisposables.add(input);
855
+ try {
856
+ await this.embeddedPluginEditor.setInput(input, undefined, {}, CancellationToken.None);
857
+ } catch {
858
+ this.goBackFromPluginDetail();
859
+ return;
860
+ }
861
+ if (this.dimension) {
862
+ this.layout(this.dimension);
863
+ }
864
+ }
865
+ goBackFromPluginDetail() {
866
+ this.pluginDetailDisposables.clear();
867
+ this.embeddedPluginEditor?.clearInput();
868
+ this.viewMode = "list";
869
+ this.updateContentVisibility();
870
+ if (this.dimension) {
871
+ this.layout(this.dimension);
872
+ }
873
+ this.pluginListWidget?.focusSearch();
874
+ }
724
875
  };
725
- AICustomizationManagementEditor = AICustomizationManagementEditor_1 = ( __decorate([( __param(1, ITelemetryService)), ( __param(2, IThemeService)), ( __param(3, IStorageService)), ( __param(4, IInstantiationService)), ( __param(5, IContextKeyService)), ( __param(6, IOpenerService)), ( __param(7, ICommandService)), ( __param(8, IAICustomizationWorkspaceService)), ( __param(9, IPromptsService)), ( __param(10, ITextModelService)), ( __param(11, IConfigurationService)), ( __param(12, IWorkingCopyService)), ( __param(13, ITextFileService)), ( __param(14, IFileService))], AICustomizationManagementEditor));
876
+ AICustomizationManagementEditor = AICustomizationManagementEditor_1 = ( __decorate([( __param(1, ITelemetryService)), ( __param(2, IThemeService)), ( __param(3, IStorageService)), ( __param(4, IInstantiationService)), ( __param(5, IContextKeyService)), ( __param(6, IOpenerService)), ( __param(7, ICommandService)), ( __param(8, IAICustomizationWorkspaceService)), ( __param(9, IPromptsService)), ( __param(10, ITextModelService)), ( __param(11, IConfigurationService)), ( __param(12, IWorkingCopyService)), ( __param(13, ITextFileService)), ( __param(14, IFileDialogService)), ( __param(15, IHoverService))], AICustomizationManagementEditor));
726
877
 
727
878
  export { AICustomizationManagementEditor, aiCustomizationManagementSashBorder };
@@ -25,7 +25,7 @@ class AICustomizationManagementEditorInput extends EditorInput {
25
25
  return AICustomizationManagementEditorInput.ID;
26
26
  }
27
27
  getName() {
28
- return localize(5287, "Chat Customizations");
28
+ return localize(5316, "Chat Customizations");
29
29
  }
30
30
  getIcon() {
31
31
  return Codicon.settingsGear;
@@ -6,9 +6,11 @@ import { AICustomizationManagementSection } from '../../common/aiCustomizationWo
6
6
  import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
7
7
  import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/extensions';
8
8
  import { PromptsStorage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
9
+ import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
9
10
  import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
10
11
  import { PromptsType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
11
12
  import { GENERATE_HOOK_COMMAND_ID, GENERATE_PROMPT_COMMAND_ID, GENERATE_ON_DEMAND_INSTRUCTIONS_COMMAND_ID, GENERATE_SKILL_COMMAND_ID, GENERATE_AGENT_COMMAND_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
13
+ import { constObservable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/constObservable';
12
14
  import { observableFromEventOpts } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
13
15
  import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
14
16
 
@@ -17,18 +19,21 @@ let AICustomizationWorkspaceService = class AICustomizationWorkspaceService {
17
19
  static {
18
20
  AICustomizationWorkspaceService_1 = this;
19
21
  }
20
- constructor(workspaceContextService, commandService) {
22
+ constructor(workspaceContextService, commandService, promptsService) {
21
23
  this.workspaceContextService = workspaceContextService;
22
24
  this.commandService = commandService;
25
+ this.promptsService = promptsService;
23
26
  this.managementSections = [
24
27
  AICustomizationManagementSection.Agents,
25
28
  AICustomizationManagementSection.Skills,
26
29
  AICustomizationManagementSection.Instructions,
27
30
  AICustomizationManagementSection.Prompts,
28
31
  AICustomizationManagementSection.Hooks,
29
- AICustomizationManagementSection.McpServers
32
+ AICustomizationManagementSection.McpServers,
33
+ AICustomizationManagementSection.Plugins
30
34
  ];
31
35
  this.isSessionsWindow = false;
36
+ this.hasOverrideProjectRoot = constObservable(false);
32
37
  const workspaceFolders = observableFromEventOpts({
33
38
  owner: this
34
39
  }, this.workspaceContextService.onDidChangeWorkspaceFolders, () => this.workspaceContextService.getWorkspace().folders);
@@ -54,7 +59,10 @@ let AICustomizationWorkspaceService = class AICustomizationWorkspaceService {
54
59
  getStorageSourceFilter(_type) {
55
60
  return AICustomizationWorkspaceService_1._defaultFilter;
56
61
  }
62
+ setOverrideProjectRoot(_root) {}
63
+ clearOverrideProjectRoot() {}
57
64
  async commitFiles(_projectRoot, _fileUris) {}
65
+ async deleteFiles(_projectRoot, _fileUris) {}
58
66
  async generateCustomization(type) {
59
67
  const commandIds = {
60
68
  [PromptsType.agent]: GENERATE_AGENT_COMMAND_ID,
@@ -68,5 +76,8 @@ let AICustomizationWorkspaceService = class AICustomizationWorkspaceService {
68
76
  await this.commandService.executeCommand(commandId);
69
77
  }
70
78
  }
79
+ async getFilteredPromptSlashCommands(token) {
80
+ return this.promptsService.getPromptSlashCommands(token);
81
+ }
71
82
  };
72
- AICustomizationWorkspaceService = AICustomizationWorkspaceService_1 = ( __decorate([( __param(0, IWorkspaceContextService)), ( __param(1, ICommandService))], AICustomizationWorkspaceService));
83
+ AICustomizationWorkspaceService = AICustomizationWorkspaceService_1 = ( __decorate([( __param(0, IWorkspaceContextService)), ( __param(1, ICommandService)), ( __param(2, IPromptsService))], AICustomizationWorkspaceService));
@@ -32,11 +32,11 @@ let CustomizationCreatorService = class CustomizationCreatorService {
32
32
  async createWithAI(type) {
33
33
  const typeLabel = getTypeLabel(type);
34
34
  const name = await this.quickInputService.input({
35
- prompt: ( localize(5288, "Name for the new {0}", typeLabel)),
36
- placeHolder: ( localize(5289, "e.g., my-{0}", typeLabel)),
35
+ prompt: ( localize(5317, "Name for the new {0}", typeLabel)),
36
+ placeHolder: ( localize(5318, "e.g., my-{0}", typeLabel)),
37
37
  validateInput: async value => {
38
38
  if (!value || !value.trim()) {
39
- return localize(5290, "Name is required");
39
+ return localize(5319, "Name is required");
40
40
  }
41
41
  return undefined;
42
42
  }