@codingame/monaco-vscode-chat-service-override 26.2.2 → 27.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 (316) hide show
  1. package/index.js +31 -1
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +15 -0
  4. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.d.ts +53 -0
  5. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.js +219 -0
  6. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +39 -0
  7. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +83 -0
  8. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.d.ts +123 -0
  9. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.js +274 -0
  10. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.d.ts +71 -0
  11. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.js +284 -0
  12. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.d.ts +79 -0
  13. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.js +378 -0
  14. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +1 -2
  15. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +27 -40
  16. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +9 -3
  17. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +74 -18
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.d.ts +1 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +54 -8
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +87 -53
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +71 -15
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +43 -21
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +3 -3
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +22 -3
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +1 -0
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +154 -0
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +6 -8
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +53 -43
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.d.ts +4 -0
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +84 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.d.ts +1 -0
  36. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +33 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +15 -29
  39. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +13 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +16 -16
  42. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +12 -12
  43. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +33 -0
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +204 -0
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +77 -0
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +541 -0
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +10 -11
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +70 -65
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +7 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +27 -18
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.d.ts +1 -0
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +4 -2
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +5 -5
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +2 -0
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +90 -51
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +20 -5
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +3 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +43 -27
  61. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +7 -2
  62. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.d.ts +3 -1
  63. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +84 -22
  64. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  65. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/{localAgentSessionsProvider.d.ts → localAgentSessionsController.d.ts} +7 -4
  66. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/{localAgentSessionsProvider.js → localAgentSessionsController.js} +24 -17
  67. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +23 -0
  68. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +171 -0
  69. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +48 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +19 -0
  71. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +181 -0
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +943 -0
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.d.ts +1 -0
  74. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +248 -0
  75. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.d.ts +57 -0
  76. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +27 -0
  77. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +118 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +727 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +22 -0
  80. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +38 -0
  81. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +1 -0
  82. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +72 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +45 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +165 -0
  85. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +75 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +623 -0
  87. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +858 -0
  88. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.d.ts +2 -0
  89. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +30 -1
  90. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgetRegistry.d.ts +32 -0
  91. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgetRegistry.js +26 -0
  92. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +19 -3
  93. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +36 -26
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +529 -363
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.d.ts +18 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +419 -0
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.d.ts +12 -0
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.js +46 -0
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.d.ts +34 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +198 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +55 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +305 -0
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.d.ts +23 -0
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +64 -0
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.d.ts +5 -0
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +84 -0
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.d.ts +27 -0
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +110 -0
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.d.ts +34 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +111 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.d.ts +71 -0
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +611 -0
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.d.ts +125 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +504 -0
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowLayout.d.ts +10 -0
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowLayout.js +914 -0
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.d.ts +19 -0
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +128 -0
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +58 -0
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +429 -0
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.d.ts +31 -0
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +113 -0
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.d.ts +14 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +126 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.d.ts +38 -0
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +279 -0
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.d.ts +18 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +122 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +45 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.js +85 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +781 -0
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +5 -22
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
  138. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +3 -3
  139. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +2 -1
  140. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  141. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +12 -12
  142. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -0
  143. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +16 -15
  144. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  145. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  146. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +63 -76
  147. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +26 -15
  148. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatManagementEditor.css +2 -2
  149. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  150. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  151. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +15 -7
  152. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +40 -413
  153. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.d.ts +10 -0
  154. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +38 -6
  155. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +5 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +56 -46
  157. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +15 -11
  158. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.d.ts +52 -0
  159. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +138 -0
  160. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +11 -1
  161. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +166 -41
  162. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +6 -0
  163. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +37 -23
  164. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +15 -0
  165. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +351 -0
  166. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
  167. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +118 -63
  168. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
  169. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +28 -0
  170. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +182 -13
  171. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +892 -41
  172. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +5 -1
  173. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +55 -25
  174. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +28 -19
  175. package/vscode/src/vs/workbench/contrib/chat/browser/createSlashCommandsUsageTracker.d.ts +14 -0
  176. package/vscode/src/vs/workbench/contrib/chat/browser/createSlashCommandsUsageTracker.js +62 -0
  177. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.d.ts +36 -0
  178. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +110 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/exploreAgentDefaultModel.d.ts +10 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/exploreAgentDefaultModel.js +39 -0
  181. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +3 -3
  182. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +6 -6
  183. package/vscode/src/vs/workbench/contrib/chat/browser/planAgentDefaultModel.d.ts +10 -0
  184. package/vscode/src/vs/workbench/contrib/chat/browser/planAgentDefaultModel.js +39 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +27 -0
  186. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +102 -0
  187. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  188. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +16 -1
  189. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +69 -47
  190. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +2 -41
  191. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  192. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +7 -7
  193. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  194. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.d.ts +4 -0
  195. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +8 -8
  196. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  197. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.d.ts +4 -0
  198. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +4 -4
  199. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.d.ts +22 -0
  200. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +76 -0
  201. package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.d.ts +5 -0
  202. package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.js +30 -0
  203. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +43 -31
  204. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +67 -42
  205. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +31 -0
  206. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +242 -0
  207. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +34 -0
  208. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +45 -0
  209. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  210. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +33 -0
  211. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +311 -0
  212. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  213. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.d.ts +4 -0
  214. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +10 -1
  215. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +10 -10
  216. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +8 -9
  217. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +64 -26
  218. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +4 -2
  219. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  220. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +2 -2
  221. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.d.ts +15 -4
  222. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +42 -8
  223. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +8 -1
  224. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +58 -31
  225. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +6 -5
  226. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +8 -20
  227. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +15 -6
  228. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.d.ts +39 -0
  229. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.js +27 -0
  230. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.d.ts +190 -0
  231. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.js +11 -0
  232. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +36 -0
  233. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +188 -0
  234. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +18 -8
  235. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +192 -85
  236. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +2 -1
  237. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +2 -1
  238. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -6
  239. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +16 -8
  240. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +8 -4
  241. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +111 -7
  242. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +2 -0
  243. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +52 -0
  244. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.js +29 -0
  245. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +73 -0
  246. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +622 -0
  247. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +64 -0
  248. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +478 -0
  249. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +35 -16
  250. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +1 -30
  251. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +0 -5
  252. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +2 -8
  253. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +1 -1
  254. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +8 -8
  255. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +9 -9
  256. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +23 -22
  257. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +44 -14
  258. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +345 -113
  259. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +14 -1
  260. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +34 -24
  261. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.d.ts +3 -0
  262. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.js +13 -0
  263. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  264. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +11 -5
  265. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +23 -0
  266. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +248 -24
  267. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.d.ts +6 -11
  268. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +18 -81
  269. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +2 -3
  270. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +10 -10
  271. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  272. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  273. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  274. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +6 -6
  275. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  276. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  277. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/media/terminalChatWidget.css +6 -2
  278. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  279. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +35 -26
  280. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +0 -1
  281. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +1 -5
  282. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +3 -3
  283. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  284. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +4 -1
  285. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +13 -11
  286. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +3 -3
  287. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +3 -1
  288. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  289. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  290. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  291. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  292. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  293. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  294. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  295. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  296. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +9 -0
  297. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +280 -65
  298. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +3 -1
  299. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +8 -0
  300. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -10
  301. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +1 -0
  302. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +47 -19
  303. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +8 -0
  304. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +31 -0
  305. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  306. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  307. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  308. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  309. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +6 -1
  310. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +38 -16
  311. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.d.ts +0 -72
  312. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.js +0 -587
  313. package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.d.ts +0 -71
  314. package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.js +0 -293
  315. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.d.ts +0 -2
  316. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.js +0 -31
@@ -0,0 +1,943 @@
1
+
2
+ import { registerCss } from '@codingame/monaco-vscode-api/css';
3
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
+ import * as aiCustomizationManagement from './media/aiCustomizationManagement.css';
5
+ import { $ as $$1, append, addDisposableListener } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
6
+ import { DisposableStore, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
7
+ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
8
+ import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
9
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
10
+ import { basename, dirname, isEqualOrParent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
11
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
12
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
13
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
14
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
15
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
16
+ import { WorkbenchList } from '@codingame/monaco-vscode-api/vscode/vs/platform/list/browser/listService';
17
+ import { PromptsStorage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
18
+ import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
19
+ import { PromptsType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
20
+ import { pluginIcon, extensionIcon, userIcon, workspaceIcon, promptIcon, hookIcon, instructionsIcon, skillIcon, agentIcon } from './aiCustomizationIcons.js';
21
+ import { AICustomizationManagementItemMenuId } from './aiCustomizationManagement.js';
22
+ import { InputBox } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/inputbox/inputBox';
23
+ import { defaultInputBoxStyles, defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
24
+ import { Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
25
+ import { IContextViewService, IContextMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service';
26
+ import { HighlightedLabel } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/highlightedlabel/highlightedLabel';
27
+ import { matchesContiguousSubString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/filters';
28
+ import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
29
+ import { Button, ButtonWithDropdown } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
30
+ import { IMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions.service';
31
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
32
+ import { getFlatContextMenuActions } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
33
+ import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
34
+ import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
35
+ import { AICustomizationManagementSection, applyStorageSourceFilter } from '../../common/aiCustomizationWorkspaceService.js';
36
+ import { IAICustomizationWorkspaceService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.service';
37
+ import { Separator, Action } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
38
+ import { IClipboardService } from '@codingame/monaco-vscode-api/vscode/vs/platform/clipboard/common/clipboardService.service';
39
+ import { ISCMService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/common/scm.service';
40
+ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
41
+ import { generateCustomizationDebugReport } from './aiCustomizationDebugPanel.js';
42
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
43
+
44
+ registerCss(aiCustomizationManagement);
45
+ const $ = $$1;
46
+ const ITEM_HEIGHT = 44;
47
+ const GROUP_HEADER_HEIGHT = 32;
48
+ const GROUP_HEADER_HEIGHT_WITH_SEPARATOR = 40;
49
+ class AICustomizationListDelegate {
50
+ getHeight(element) {
51
+ if (element.type === "group-header") {
52
+ return element.isFirst ? GROUP_HEADER_HEIGHT : GROUP_HEADER_HEIGHT_WITH_SEPARATOR;
53
+ }
54
+ return ITEM_HEIGHT;
55
+ }
56
+ getTemplateId(element) {
57
+ return element.type === "group-header" ? "groupHeader" : "aiCustomizationItem";
58
+ }
59
+ }
60
+ class GroupHeaderRenderer {
61
+ constructor(hoverService) {
62
+ this.hoverService = hoverService;
63
+ this.templateId = "groupHeader";
64
+ }
65
+ renderTemplate(container) {
66
+ const disposables = ( new DisposableStore());
67
+ const elementDisposables = ( new DisposableStore());
68
+ container.classList.add("ai-customization-group-header");
69
+ const chevron = append(container, $(".group-chevron"));
70
+ const icon = append(container, $(".group-icon"));
71
+ const labelGroup = append(container, $(".group-label-group"));
72
+ const label = append(labelGroup, $(".group-label"));
73
+ const infoIcon = append(labelGroup, $(".group-info"));
74
+ infoIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.info));
75
+ const count = append(container, $(".group-count"));
76
+ return {
77
+ container,
78
+ chevron,
79
+ icon,
80
+ label,
81
+ count,
82
+ infoIcon,
83
+ disposables,
84
+ elementDisposables
85
+ };
86
+ }
87
+ renderElement(element, _index, templateData) {
88
+ templateData.elementDisposables.clear();
89
+ templateData.chevron.className = "group-chevron";
90
+ templateData.chevron.classList.add(
91
+ ...ThemeIcon.asClassNameArray(element.collapsed ? Codicon.chevronRight : Codicon.chevronDown)
92
+ );
93
+ templateData.icon.className = "group-icon";
94
+ templateData.icon.classList.add(...ThemeIcon.asClassNameArray(element.icon));
95
+ templateData.label.textContent = element.label;
96
+ templateData.count.textContent = `${element.count}`;
97
+ templateData.elementDisposables.add(this.hoverService.setupDelayedHover(templateData.infoIcon, () => ({
98
+ content: element.description,
99
+ appearance: {
100
+ compact: true,
101
+ skipFadeInAnimation: true
102
+ }
103
+ })));
104
+ templateData.container.classList.toggle("collapsed", element.collapsed);
105
+ templateData.container.classList.toggle("has-previous-group", !element.isFirst);
106
+ }
107
+ disposeTemplate(templateData) {
108
+ templateData.elementDisposables.dispose();
109
+ templateData.disposables.dispose();
110
+ }
111
+ }
112
+ class AICustomizationItemRenderer {
113
+ constructor() {
114
+ this.templateId = "aiCustomizationItem";
115
+ }
116
+ renderTemplate(container) {
117
+ const disposables = ( new DisposableStore());
118
+ const elementDisposables = ( new DisposableStore());
119
+ container.classList.add("ai-customization-list-item");
120
+ const leftSection = append(container, $(".item-left"));
121
+ const storageBadge = append(leftSection, $(".storage-badge"));
122
+ const textContainer = append(leftSection, $(".item-text"));
123
+ const nameLabel = disposables.add(( new HighlightedLabel(append(textContainer, $(".item-name")))));
124
+ const description = disposables.add(( new HighlightedLabel(append(textContainer, $(".item-description")))));
125
+ const gitStatusBadge = append(container, $(".git-status-badge"));
126
+ const actionsContainer = append(container, $(".item-right"));
127
+ return {
128
+ container,
129
+ actionsContainer,
130
+ nameLabel,
131
+ description,
132
+ storageBadge,
133
+ gitStatusBadge,
134
+ disposables,
135
+ elementDisposables
136
+ };
137
+ }
138
+ renderElement(entry, index, templateData) {
139
+ templateData.elementDisposables.clear();
140
+ const element = entry.item;
141
+ templateData.nameLabel.set(element.name, element.nameMatches);
142
+ const secondaryText = element.description || element.filename;
143
+ if (secondaryText) {
144
+ templateData.description.set(
145
+ secondaryText,
146
+ element.description ? element.descriptionMatches : undefined
147
+ );
148
+ templateData.description.element.style.display = "";
149
+ templateData.description.element.classList.toggle("is-filename", !element.description);
150
+ } else {
151
+ templateData.description.set("", undefined);
152
+ templateData.description.element.style.display = "none";
153
+ }
154
+ let storageBadgeIcon;
155
+ let storageBadgeLabel;
156
+ switch (element.storage) {
157
+ case PromptsStorage.local:
158
+ storageBadgeIcon = workspaceIcon;
159
+ storageBadgeLabel = ( localize(5206, "Workspace"));
160
+ break;
161
+ case PromptsStorage.user:
162
+ storageBadgeIcon = userIcon;
163
+ storageBadgeLabel = ( localize(5207, "User"));
164
+ break;
165
+ case PromptsStorage.extension:
166
+ storageBadgeIcon = extensionIcon;
167
+ storageBadgeLabel = ( localize(5208, "Extension"));
168
+ break;
169
+ case PromptsStorage.plugin:
170
+ storageBadgeIcon = pluginIcon;
171
+ storageBadgeLabel = ( localize(5209, "Plugin"));
172
+ break;
173
+ }
174
+ templateData.storageBadge.className = "storage-badge";
175
+ templateData.storageBadge.classList.add(...ThemeIcon.asClassNameArray(storageBadgeIcon));
176
+ templateData.storageBadge.title = storageBadgeLabel;
177
+ const gitBadge = templateData.gitStatusBadge;
178
+ gitBadge.className = "git-status-badge";
179
+ if (element.gitStatus === "committed") {
180
+ gitBadge.classList.add(...ThemeIcon.asClassNameArray(Codicon.check));
181
+ gitBadge.classList.add("committed");
182
+ gitBadge.textContent = "";
183
+ gitBadge.title = ( localize(5210, "Committed"));
184
+ gitBadge.style.display = "";
185
+ } else {
186
+ gitBadge.style.display = "none";
187
+ }
188
+ }
189
+ disposeTemplate(templateData) {
190
+ templateData.elementDisposables.dispose();
191
+ templateData.disposables.dispose();
192
+ }
193
+ }
194
+ function sectionToPromptType(section) {
195
+ switch (section) {
196
+ case AICustomizationManagementSection.Agents:
197
+ return PromptsType.agent;
198
+ case AICustomizationManagementSection.Skills:
199
+ return PromptsType.skill;
200
+ case AICustomizationManagementSection.Instructions:
201
+ return PromptsType.instructions;
202
+ case AICustomizationManagementSection.Hooks:
203
+ return PromptsType.hook;
204
+ case AICustomizationManagementSection.Prompts:
205
+ default:
206
+ return PromptsType.prompt;
207
+ }
208
+ }
209
+ let AICustomizationListWidget = class AICustomizationListWidget extends Disposable {
210
+ constructor(
211
+ instantiationService,
212
+ promptsService,
213
+ contextViewService,
214
+ openerService,
215
+ contextMenuService,
216
+ menuService,
217
+ contextKeyService,
218
+ workspaceContextService,
219
+ labelService,
220
+ workspaceService,
221
+ clipboardService,
222
+ scmService,
223
+ hoverService
224
+ ) {
225
+ super();
226
+ this.instantiationService = instantiationService;
227
+ this.promptsService = promptsService;
228
+ this.contextViewService = contextViewService;
229
+ this.openerService = openerService;
230
+ this.contextMenuService = contextMenuService;
231
+ this.menuService = menuService;
232
+ this.contextKeyService = contextKeyService;
233
+ this.workspaceContextService = workspaceContextService;
234
+ this.labelService = labelService;
235
+ this.workspaceService = workspaceService;
236
+ this.clipboardService = clipboardService;
237
+ this.scmService = scmService;
238
+ this.hoverService = hoverService;
239
+ this.currentSection = AICustomizationManagementSection.Agents;
240
+ this.allItems = [];
241
+ this.displayEntries = [];
242
+ this.searchQuery = "";
243
+ this.collapsedGroups = ( new Set());
244
+ this.dropdownActionDisposables = this._register(( new DisposableStore()));
245
+ this.delayedFilter = ( new Delayer(200));
246
+ this._onDidSelectItem = this._register(( new Emitter()));
247
+ this.onDidSelectItem = this._onDidSelectItem.event;
248
+ this._onDidChangeItemCount = this._register(( new Emitter()));
249
+ this.onDidChangeItemCount = this._onDidChangeItemCount.event;
250
+ this._onDidRequestCreate = this._register(( new Emitter()));
251
+ this.onDidRequestCreate = this._onDidRequestCreate.event;
252
+ this._onDidRequestCreateManual = this._register(( new Emitter()));
253
+ this.onDidRequestCreateManual = this._onDidRequestCreateManual.event;
254
+ this.element = $(".ai-customization-list-widget");
255
+ this.create();
256
+ this._register(
257
+ this.workspaceContextService.onDidChangeWorkspaceFolders(() => this.refresh())
258
+ );
259
+ this._register(autorun(reader => {
260
+ this.workspaceService.activeProjectRoot.read(reader);
261
+ this.updateAddButton();
262
+ this.refresh();
263
+ }));
264
+ const trackRepoChanges = repo => {
265
+ this._register(repo.provider.onDidChangeResources(() => {
266
+ this.updateGitStatus(this.allItems);
267
+ this.filterItems();
268
+ }));
269
+ };
270
+ for (const repo of [...this.scmService.repositories]) {
271
+ trackRepoChanges(repo);
272
+ }
273
+ this._register(this.scmService.onDidAddRepository(repo => trackRepoChanges(repo)));
274
+ }
275
+ create() {
276
+ this.searchAndButtonContainer = append(this.element, $(".list-search-and-button-container"));
277
+ this.searchContainer = append(this.searchAndButtonContainer, $(".list-search-container"));
278
+ this.searchInput = this._register(( new InputBox(this.searchContainer, this.contextViewService, {
279
+ placeholder: ( localize(5211, "Type to search...")),
280
+ inputBoxStyles: defaultInputBoxStyles
281
+ })));
282
+ this._register(this.searchInput.onDidChange(() => {
283
+ this.searchQuery = this.searchInput.value;
284
+ this.delayedFilter.trigger(() => this.filterItems());
285
+ }));
286
+ this.addButtonContainer = append(this.searchAndButtonContainer, $(".list-add-button-container"));
287
+ this.addButtonSimple = this._register(( new Button(this.addButtonContainer, {
288
+ ...defaultButtonStyles,
289
+ supportIcons: true
290
+ })));
291
+ this.addButtonSimple.element.classList.add("list-add-button");
292
+ this._register(this.addButtonSimple.onDidClick(() => this.executePrimaryCreateAction()));
293
+ this.addButton = this._register(( new ButtonWithDropdown(this.addButtonContainer, {
294
+ ...defaultButtonStyles,
295
+ supportIcons: true,
296
+ contextMenuProvider: this.contextMenuService,
297
+ addPrimaryActionToDropdown: false,
298
+ actions: {
299
+ getActions: () => this.getDropdownActions()
300
+ }
301
+ })));
302
+ this.addButton.element.classList.add("list-add-button");
303
+ this._register(this.addButton.onDidClick(() => this.executePrimaryCreateAction()));
304
+ this.updateAddButton();
305
+ this.listContainer = append(this.element, $(".list-container"));
306
+ this.emptyStateContainer = append(this.element, $(".list-empty-state"));
307
+ this.emptyStateIcon = append(this.emptyStateContainer, $(".empty-state-icon"));
308
+ this.emptyStateText = append(this.emptyStateContainer, $(".empty-state-text"));
309
+ this.emptyStateSubtext = append(this.emptyStateContainer, $(".empty-state-subtext"));
310
+ this.emptyStateContainer.style.display = "none";
311
+ this.list = this._register(this.instantiationService.createInstance(
312
+ WorkbenchList,
313
+ "AICustomizationManagementList",
314
+ this.listContainer,
315
+ ( new AICustomizationListDelegate()),
316
+ [( new GroupHeaderRenderer(this.hoverService)), this.instantiationService.createInstance(AICustomizationItemRenderer)],
317
+ {
318
+ identityProvider: {
319
+ getId: entry => entry.type === "group-header" ? entry.id : entry.item.id
320
+ },
321
+ accessibilityProvider: {
322
+ getAriaLabel: entry => {
323
+ if (entry.type === "group-header") {
324
+ return localize(
325
+ 5212,
326
+ "{0}, {1} items, {2}",
327
+ entry.label,
328
+ entry.count,
329
+ entry.collapsed ? ( localize(5213, "collapsed")) : ( localize(5214, "expanded"))
330
+ );
331
+ }
332
+ return entry.item.description ? ( localize(5215, "{0}, {1}", entry.item.name, entry.item.description)) : entry.item.name;
333
+ },
334
+ getWidgetAriaLabel: () => ( localize(5216, "Chat Customizations"))
335
+ },
336
+ keyboardNavigationLabelProvider: {
337
+ getKeyboardNavigationLabel: entry => entry.type === "group-header" ? entry.label : entry.item.name
338
+ },
339
+ multipleSelectionSupport: false,
340
+ openOnSingleClick: true
341
+ }
342
+ ));
343
+ this._register(this.list.onDidOpen(e => {
344
+ if (e.element) {
345
+ if (e.element.type === "group-header") {
346
+ this.toggleGroup(e.element);
347
+ } else {
348
+ this._onDidSelectItem.fire(e.element.item);
349
+ }
350
+ }
351
+ }));
352
+ this._register(this.list.onContextMenu(e => this.onContextMenu(e)));
353
+ this._register(this.promptsService.onDidChangeCustomAgents(() => this.refresh()));
354
+ this._register(this.promptsService.onDidChangeSlashCommands(() => this.refresh()));
355
+ this.sectionHeader = append(this.element, $(".section-footer"));
356
+ this.sectionDescription = append(this.sectionHeader, $("p.section-footer-description"));
357
+ this.sectionLink = append(this.sectionHeader, $("a.section-footer-link"));
358
+ this._register(addDisposableListener(this.sectionLink, "click", e => {
359
+ e.preventDefault();
360
+ const href = this.sectionLink.href;
361
+ if (href) {
362
+ this.openerService.open(( URI.parse(href)));
363
+ }
364
+ }));
365
+ this.updateSectionHeader();
366
+ }
367
+ onContextMenu(e) {
368
+ if (!e.element || e.element.type !== "file-item") {
369
+ return;
370
+ }
371
+ const item = e.element.item;
372
+ const context = {
373
+ uri: ( item.uri.toString()),
374
+ name: item.name,
375
+ promptType: item.promptType,
376
+ storage: item.storage
377
+ };
378
+ const actions = this.menuService.getMenuActions(AICustomizationManagementItemMenuId, this.contextKeyService, {
379
+ arg: context,
380
+ shouldForwardArgs: true
381
+ });
382
+ const flatActions = getFlatContextMenuActions(actions);
383
+ const copyActions = [( new Separator()), ( new Action("copyFullPath", ( localize(5217, "Copy Full Path")), undefined, true, async () => {
384
+ await this.clipboardService.writeText(item.uri.fsPath);
385
+ })), ( new Action("copyRelativePath", ( localize(5218, "Copy Relative Path")), undefined, true, async () => {
386
+ const basePath = this.workspaceService.getActiveProjectRoot();
387
+ if (basePath && item.uri.fsPath.startsWith(basePath.fsPath)) {
388
+ const relative = item.uri.fsPath.substring(basePath.fsPath.length + 1);
389
+ await this.clipboardService.writeText(relative);
390
+ } else {
391
+ const relativePath = this.labelService.getUriLabel(item.uri, {
392
+ relative: true
393
+ });
394
+ await this.clipboardService.writeText(relativePath);
395
+ }
396
+ }))];
397
+ this.contextMenuService.showContextMenu({
398
+ getAnchor: () => e.anchor,
399
+ getActions: () => [...flatActions, ...copyActions]
400
+ });
401
+ }
402
+ async setSection(section) {
403
+ this.currentSection = section;
404
+ this.updateSectionHeader();
405
+ this.updateAddButton();
406
+ await this.loadItems();
407
+ }
408
+ updateSectionHeader() {
409
+ let description;
410
+ let docsUrl;
411
+ let learnMoreLabel;
412
+ switch (this.currentSection) {
413
+ case AICustomizationManagementSection.Agents:
414
+ description = ( localize(
415
+ 5219,
416
+ "Configure the AI to adopt different personas tailored to specific development tasks. Each agent has its own instructions, tools, and behavior."
417
+ ));
418
+ docsUrl = "https://code.visualstudio.com/docs/copilot/customization/custom-agents";
419
+ learnMoreLabel = ( localize(5220, "Learn more about custom agents"));
420
+ break;
421
+ case AICustomizationManagementSection.Skills:
422
+ description = ( localize(
423
+ 5221,
424
+ "Folders of instructions, scripts, and resources that Copilot loads when relevant to perform specialized tasks."
425
+ ));
426
+ docsUrl = "https://code.visualstudio.com/docs/copilot/customization/agent-skills";
427
+ learnMoreLabel = ( localize(5222, "Learn more about agent skills"));
428
+ break;
429
+ case AICustomizationManagementSection.Instructions:
430
+ description = ( localize(
431
+ 5223,
432
+ "Define common guidelines and rules that automatically influence how AI generates code and handles development tasks."
433
+ ));
434
+ docsUrl = "https://code.visualstudio.com/docs/copilot/customization/custom-instructions";
435
+ learnMoreLabel = ( localize(5224, "Learn more about custom instructions"));
436
+ break;
437
+ case AICustomizationManagementSection.Hooks:
438
+ description = ( localize(5225, "Prompts executed at specific points during an agentic lifecycle."));
439
+ docsUrl = "https://code.visualstudio.com/docs/copilot/customization/hooks";
440
+ learnMoreLabel = ( localize(5226, "Learn more about hooks"));
441
+ break;
442
+ case AICustomizationManagementSection.Prompts:
443
+ default:
444
+ description = ( localize(
445
+ 5227,
446
+ "Reusable prompts for common development tasks like generating code, performing reviews, or scaffolding components."
447
+ ));
448
+ docsUrl = "https://code.visualstudio.com/docs/copilot/customization/prompt-files";
449
+ learnMoreLabel = ( localize(5228, "Learn more about prompt files"));
450
+ break;
451
+ }
452
+ this.sectionDescription.textContent = description;
453
+ this.sectionLink.textContent = learnMoreLabel;
454
+ this.sectionLink.href = docsUrl;
455
+ }
456
+ updateAddButton() {
457
+ const typeLabel = this.getTypeLabel();
458
+ const dropdownActions = this.getDropdownActions();
459
+ const hasDropdown = dropdownActions.length > 0;
460
+ this.addButton.element.style.display = hasDropdown ? "" : "none";
461
+ this.addButtonSimple.element.style.display = hasDropdown ? "none" : "";
462
+ if (this.workspaceService.isSessionsWindow) {
463
+ const hasWorkspace = this.hasActiveWorkspace();
464
+ const label = `$(${Codicon.add.id}) New ${typeLabel} (Workspace)`;
465
+ if (hasDropdown) {
466
+ this.addButton.label = label;
467
+ this.addButton.enabled = hasWorkspace;
468
+ this.addButton.primaryButton.setTitle("");
469
+ this.addButton.dropdownButton.setTitle("");
470
+ if (!hasWorkspace) {
471
+ const disabledTitle = ( localize(5229, "Open a workspace folder to create customizations."));
472
+ this.addButton.primaryButton.setTitle(disabledTitle);
473
+ this.addButton.dropdownButton.setTitle(disabledTitle);
474
+ }
475
+ } else {
476
+ this.addButtonSimple.label = label;
477
+ this.addButtonSimple.enabled = hasWorkspace;
478
+ if (!hasWorkspace) {
479
+ this.addButtonSimple.setTitle(( localize(5229, "Open a workspace folder to create customizations.")));
480
+ } else {
481
+ this.addButtonSimple.setTitle("");
482
+ }
483
+ }
484
+ } else {
485
+ const label = `$(${Codicon.sparkle.id}) Generate ${typeLabel}`;
486
+ if (hasDropdown) {
487
+ this.addButton.label = label;
488
+ this.addButton.enabled = true;
489
+ this.addButton.primaryButton.setTitle("");
490
+ this.addButton.dropdownButton.setTitle("");
491
+ } else {
492
+ this.addButtonSimple.label = label;
493
+ this.addButtonSimple.enabled = true;
494
+ this.addButtonSimple.setTitle("");
495
+ }
496
+ }
497
+ }
498
+ getDropdownActions() {
499
+ this.dropdownActionDisposables.clear();
500
+ const typeLabel = this.getTypeLabel();
501
+ const actions = [];
502
+ const promptType = sectionToPromptType(this.currentSection);
503
+ if (promptType === PromptsType.hook) {
504
+ if (this.workspaceService.isSessionsWindow)
505
+ ; else {
506
+ if (this.hasActiveWorkspace()) {
507
+ actions.push(this.dropdownActionDisposables.add(( new Action(
508
+ "configureHooks",
509
+ `$(${Codicon.add.id}) Configure Hooks`,
510
+ undefined,
511
+ true,
512
+ () => {
513
+ this._onDidRequestCreateManual.fire({
514
+ type: promptType,
515
+ target: "workspace"
516
+ });
517
+ }
518
+ ))));
519
+ }
520
+ }
521
+ return actions;
522
+ }
523
+ if (this.workspaceService.isSessionsWindow) {
524
+ actions.push(this.dropdownActionDisposables.add(( new Action(
525
+ "createUser",
526
+ `$(${Codicon.account.id}) New ${typeLabel} (User)`,
527
+ undefined,
528
+ true,
529
+ () => {
530
+ this._onDidRequestCreateManual.fire({
531
+ type: promptType,
532
+ target: "user"
533
+ });
534
+ }
535
+ ))));
536
+ } else {
537
+ if (this.hasActiveWorkspace()) {
538
+ actions.push(this.dropdownActionDisposables.add(( new Action(
539
+ "createWorkspace",
540
+ `$(${Codicon.folder.id}) New ${typeLabel} (Workspace)`,
541
+ undefined,
542
+ true,
543
+ () => {
544
+ this._onDidRequestCreateManual.fire({
545
+ type: promptType,
546
+ target: "workspace"
547
+ });
548
+ }
549
+ ))));
550
+ }
551
+ actions.push(this.dropdownActionDisposables.add(( new Action(
552
+ "createUser",
553
+ `$(${Codicon.account.id}) New ${typeLabel} (User)`,
554
+ undefined,
555
+ true,
556
+ () => {
557
+ this._onDidRequestCreateManual.fire({
558
+ type: promptType,
559
+ target: "user"
560
+ });
561
+ }
562
+ ))));
563
+ }
564
+ return actions;
565
+ }
566
+ hasActiveWorkspace() {
567
+ return !!this.workspaceService.getActiveProjectRoot();
568
+ }
569
+ executePrimaryCreateAction() {
570
+ const promptType = sectionToPromptType(this.currentSection);
571
+ if (this.workspaceService.isSessionsWindow) {
572
+ if (!this.hasActiveWorkspace()) {
573
+ return;
574
+ }
575
+ this._onDidRequestCreateManual.fire({
576
+ type: promptType,
577
+ target: "workspace"
578
+ });
579
+ } else {
580
+ this._onDidRequestCreate.fire(promptType);
581
+ }
582
+ }
583
+ getTypeLabel() {
584
+ switch (this.currentSection) {
585
+ case AICustomizationManagementSection.Agents:
586
+ return localize(5230, "Agent");
587
+ case AICustomizationManagementSection.Skills:
588
+ return localize(5231, "Skill");
589
+ case AICustomizationManagementSection.Instructions:
590
+ return localize(5232, "Instructions");
591
+ case AICustomizationManagementSection.Hooks:
592
+ return localize(5233, "Hook");
593
+ case AICustomizationManagementSection.Prompts:
594
+ default:
595
+ return localize(5234, "Prompt");
596
+ }
597
+ }
598
+ async refresh() {
599
+ this.updateAddButton();
600
+ await this.loadItems();
601
+ }
602
+ async loadItems() {
603
+ const promptType = sectionToPromptType(this.currentSection);
604
+ const items = [];
605
+ if (promptType === PromptsType.agent) {
606
+ const agents = await this.promptsService.getCustomAgents(CancellationToken.None);
607
+ for (const agent of agents) {
608
+ const filename = basename(agent.uri);
609
+ items.push({
610
+ id: ( agent.uri.toString()),
611
+ uri: agent.uri,
612
+ name: agent.name,
613
+ filename,
614
+ description: agent.description,
615
+ storage: agent.source.storage,
616
+ promptType
617
+ });
618
+ }
619
+ } else if (promptType === PromptsType.skill) {
620
+ const skills = await this.promptsService.findAgentSkills(CancellationToken.None);
621
+ for (const skill of skills || []) {
622
+ const filename = basename(skill.uri);
623
+ const skillName = skill.name || basename(dirname(skill.uri)) || filename;
624
+ items.push({
625
+ id: ( skill.uri.toString()),
626
+ uri: skill.uri,
627
+ name: skillName,
628
+ filename,
629
+ description: skill.description,
630
+ storage: skill.storage,
631
+ promptType
632
+ });
633
+ }
634
+ } else if (promptType === PromptsType.prompt) {
635
+ const commands = await this.promptsService.getPromptSlashCommands(CancellationToken.None);
636
+ for (const command of commands) {
637
+ if (command.promptPath.type === PromptsType.skill) {
638
+ continue;
639
+ }
640
+ const filename = basename(command.promptPath.uri);
641
+ items.push({
642
+ id: ( command.promptPath.uri.toString()),
643
+ uri: command.promptPath.uri,
644
+ name: command.name,
645
+ filename,
646
+ description: command.description,
647
+ storage: command.promptPath.storage,
648
+ promptType
649
+ });
650
+ }
651
+ } else if (promptType === PromptsType.hook) {
652
+ const hookFiles = await this.promptsService.listPromptFiles(PromptsType.hook, CancellationToken.None);
653
+ for (const hookFile of hookFiles) {
654
+ const filename = basename(hookFile.uri);
655
+ items.push({
656
+ id: ( hookFile.uri.toString()),
657
+ uri: hookFile.uri,
658
+ name: this.getFriendlyName(filename),
659
+ filename,
660
+ storage: hookFile.storage,
661
+ promptType
662
+ });
663
+ }
664
+ } else {
665
+ const promptFiles = await this.promptsService.listPromptFiles(promptType, CancellationToken.None);
666
+ const allItems = [...promptFiles];
667
+ if (promptType === PromptsType.instructions) {
668
+ const agentInstructions = await this.promptsService.listAgentInstructions(CancellationToken.None, undefined);
669
+ const workspaceFolderUris = ( this.workspaceContextService.getWorkspace().folders.map(f => f.uri));
670
+ const activeRoot = this.workspaceService.getActiveProjectRoot();
671
+ if (activeRoot) {
672
+ workspaceFolderUris.push(activeRoot);
673
+ }
674
+ for (const file of agentInstructions) {
675
+ const isWorkspaceFile = ( workspaceFolderUris.some(root => isEqualOrParent(file.uri, root)));
676
+ allItems.push({
677
+ uri: file.uri,
678
+ storage: isWorkspaceFile ? PromptsStorage.local : PromptsStorage.user,
679
+ type: PromptsType.instructions,
680
+ name: basename(file.uri)
681
+ });
682
+ }
683
+ }
684
+ const workspaceItems = allItems.filter(item => item.storage === PromptsStorage.local);
685
+ const userItems = allItems.filter(item => item.storage === PromptsStorage.user);
686
+ const extensionItems = allItems.filter(item => item.storage === PromptsStorage.extension);
687
+ const pluginItems = allItems.filter(item => item.storage === PromptsStorage.plugin);
688
+ const mapToListItem = item => {
689
+ const filename = basename(item.uri);
690
+ const friendlyName = item.name || this.getFriendlyName(filename);
691
+ return {
692
+ id: ( item.uri.toString()),
693
+ uri: item.uri,
694
+ name: friendlyName,
695
+ filename,
696
+ description: item.description,
697
+ storage: item.storage,
698
+ promptType
699
+ };
700
+ };
701
+ items.push(...( workspaceItems.map(mapToListItem)));
702
+ items.push(...( userItems.map(mapToListItem)));
703
+ items.push(...( extensionItems.map(mapToListItem)));
704
+ items.push(...( pluginItems.map(mapToListItem)));
705
+ }
706
+ const filter = this.workspaceService.getStorageSourceFilter(promptType);
707
+ const filteredItems = applyStorageSourceFilter(items, filter);
708
+ items.length = 0;
709
+ items.push(...filteredItems);
710
+ items.sort((a, b) => a.name.localeCompare(b.name));
711
+ this.updateGitStatus(items);
712
+ this.allItems = items;
713
+ this.filterItems();
714
+ this._onDidChangeItemCount.fire(items.length);
715
+ }
716
+ updateGitStatus(items) {
717
+ const uncommittedUris = ( new Set());
718
+ for (const repo of [...this.scmService.repositories]) {
719
+ for (const group of repo.provider.groups) {
720
+ for (const resource of group.resources) {
721
+ uncommittedUris.add(( resource.sourceUri.toString()));
722
+ }
723
+ }
724
+ }
725
+ for (const item of items) {
726
+ if (item.storage === PromptsStorage.local) {
727
+ item.gitStatus = ( uncommittedUris.has(( item.uri.toString()))) ? "uncommitted" : "committed";
728
+ }
729
+ }
730
+ }
731
+ getFriendlyName(filename) {
732
+ let name = filename.replace(/\.instructions\.md$/i, "").replace(/\.prompt\.md$/i, "").replace(/\.agent\.md$/i, "").replace(/\.md$/i, "");
733
+ name = name.replace(/[-_]/g, " ").replace(/\b\w/g, c => c.toUpperCase());
734
+ return name || filename;
735
+ }
736
+ filterItems() {
737
+ let matchedItems;
738
+ if (!this.searchQuery.trim()) {
739
+ matchedItems = ( this.allItems.map(item => ({
740
+ ...item,
741
+ nameMatches: undefined,
742
+ descriptionMatches: undefined
743
+ })));
744
+ } else {
745
+ const query = this.searchQuery.toLowerCase();
746
+ matchedItems = [];
747
+ for (const item of this.allItems) {
748
+ const nameMatches = matchesContiguousSubString(query, item.name);
749
+ const descriptionMatches = item.description ? matchesContiguousSubString(query, item.description) : null;
750
+ const filenameMatches = matchesContiguousSubString(query, item.filename);
751
+ if (nameMatches || descriptionMatches || filenameMatches) {
752
+ matchedItems.push({
753
+ ...item,
754
+ nameMatches: nameMatches || undefined,
755
+ descriptionMatches: descriptionMatches || undefined
756
+ });
757
+ }
758
+ }
759
+ }
760
+ const promptType = sectionToPromptType(this.currentSection);
761
+ const visibleSources = ( new Set(this.workspaceService.getStorageSourceFilter(promptType).sources));
762
+ const groups = [{
763
+ storage: PromptsStorage.local,
764
+ label: ( localize(5235, "Workspace")),
765
+ icon: workspaceIcon,
766
+ description: ( localize(
767
+ 5236,
768
+ "Customizations stored as files in your project folder and shared with your team via version control."
769
+ )),
770
+ items: []
771
+ }, {
772
+ storage: PromptsStorage.user,
773
+ label: ( localize(5237, "User")),
774
+ icon: userIcon,
775
+ description: ( localize(
776
+ 5238,
777
+ "Customizations stored locally on your machine in a central location. Private to you and available across all projects."
778
+ )),
779
+ items: []
780
+ }, {
781
+ storage: PromptsStorage.extension,
782
+ label: ( localize(5239, "Extensions")),
783
+ icon: extensionIcon,
784
+ description: ( localize(5240, "Read-only customizations provided by installed extensions.")),
785
+ items: []
786
+ }, {
787
+ storage: PromptsStorage.plugin,
788
+ label: ( localize(5241, "Plugins")),
789
+ icon: pluginIcon,
790
+ description: ( localize(5242, "Read-only customizations provided by installed plugins.")),
791
+ items: []
792
+ }].filter(g => ( visibleSources.has(g.storage)));
793
+ for (const item of matchedItems) {
794
+ const group = groups.find(g => g.storage === item.storage);
795
+ if (group) {
796
+ group.items.push(item);
797
+ }
798
+ }
799
+ for (const group of groups) {
800
+ group.items.sort((a, b) => a.name.localeCompare(b.name));
801
+ }
802
+ this.displayEntries = [];
803
+ let isFirstGroup = true;
804
+ for (const group of groups) {
805
+ if (group.items.length === 0) {
806
+ continue;
807
+ }
808
+ const collapsed = ( this.collapsedGroups.has(group.storage));
809
+ this.displayEntries.push({
810
+ type: "group-header",
811
+ id: `group-${group.storage}`,
812
+ storage: group.storage,
813
+ label: group.label,
814
+ icon: group.icon,
815
+ count: group.items.length,
816
+ isFirst: isFirstGroup,
817
+ description: group.description,
818
+ collapsed
819
+ });
820
+ isFirstGroup = false;
821
+ if (!collapsed) {
822
+ for (const item of group.items) {
823
+ this.displayEntries.push({
824
+ type: "file-item",
825
+ item
826
+ });
827
+ }
828
+ }
829
+ }
830
+ this.list.splice(0, this.list.length, this.displayEntries);
831
+ this.updateEmptyState();
832
+ }
833
+ toggleGroup(entry) {
834
+ if (( this.collapsedGroups.has(entry.storage))) {
835
+ this.collapsedGroups.delete(entry.storage);
836
+ } else {
837
+ this.collapsedGroups.add(entry.storage);
838
+ }
839
+ this.filterItems();
840
+ }
841
+ updateEmptyState() {
842
+ const hasItems = this.displayEntries.length > 0;
843
+ if (!hasItems) {
844
+ this.emptyStateContainer.style.display = "flex";
845
+ this.listContainer.style.display = "none";
846
+ this.emptyStateIcon.className = "empty-state-icon";
847
+ const sectionIcon = this.getSectionIcon();
848
+ this.emptyStateIcon.classList.add(...ThemeIcon.asClassNameArray(sectionIcon));
849
+ if (this.searchQuery.trim()) {
850
+ this.emptyStateText.textContent = ( localize(5243, "No items match '{0}'", this.searchQuery));
851
+ this.emptyStateSubtext.textContent = ( localize(5244, "Try a different search term"));
852
+ } else {
853
+ const emptyInfo = this.getEmptyStateInfo();
854
+ this.emptyStateText.textContent = emptyInfo.title;
855
+ this.emptyStateSubtext.textContent = emptyInfo.description;
856
+ }
857
+ } else {
858
+ this.emptyStateContainer.style.display = "none";
859
+ this.listContainer.style.display = "";
860
+ }
861
+ }
862
+ getSectionIcon() {
863
+ switch (this.currentSection) {
864
+ case AICustomizationManagementSection.Agents:
865
+ return agentIcon;
866
+ case AICustomizationManagementSection.Skills:
867
+ return skillIcon;
868
+ case AICustomizationManagementSection.Instructions:
869
+ return instructionsIcon;
870
+ case AICustomizationManagementSection.Hooks:
871
+ return hookIcon;
872
+ case AICustomizationManagementSection.Prompts:
873
+ default:
874
+ return promptIcon;
875
+ }
876
+ }
877
+ getEmptyStateInfo() {
878
+ switch (this.currentSection) {
879
+ case AICustomizationManagementSection.Agents:
880
+ return {
881
+ title: ( localize(5245, "No agents yet")),
882
+ description: ( localize(5246, "Create your first custom agent to get started"))
883
+ };
884
+ case AICustomizationManagementSection.Skills:
885
+ return {
886
+ title: ( localize(5247, "No skills yet")),
887
+ description: ( localize(5248, "Create your first skill to extend agent capabilities"))
888
+ };
889
+ case AICustomizationManagementSection.Instructions:
890
+ return {
891
+ title: ( localize(5249, "No instructions yet")),
892
+ description: ( localize(5250, "Add instructions to teach Copilot about your codebase"))
893
+ };
894
+ case AICustomizationManagementSection.Hooks:
895
+ return {
896
+ title: ( localize(5251, "No hooks yet")),
897
+ description: ( localize(5252, "Create hooks to execute commands at agent lifecycle events"))
898
+ };
899
+ case AICustomizationManagementSection.Prompts:
900
+ default:
901
+ return {
902
+ title: ( localize(5253, "No prompts yet")),
903
+ description: ( localize(5254, "Create reusable prompts for common tasks"))
904
+ };
905
+ }
906
+ }
907
+ setSearchQuery(query) {
908
+ this.searchInput.value = query;
909
+ }
910
+ clearSearch() {
911
+ this.searchInput.value = "";
912
+ }
913
+ focusSearch() {
914
+ this.searchInput.focus();
915
+ }
916
+ focusList() {
917
+ this.list.domFocus();
918
+ if (this.displayEntries.length > 0) {
919
+ this.list.setFocus([0]);
920
+ }
921
+ }
922
+ layout(height, width) {
923
+ const sectionFooterHeight = this.sectionHeader.offsetHeight || 100;
924
+ const searchBarHeight = this.searchAndButtonContainer.offsetHeight || 40;
925
+ const margins = 12;
926
+ const listHeight = height - sectionFooterHeight - searchBarHeight - margins;
927
+ this.searchInput.layout();
928
+ this.listContainer.style.height = `${Math.max(0, listHeight)}px`;
929
+ this.list.layout(Math.max(0, listHeight), width);
930
+ }
931
+ get itemCount() {
932
+ return this.allItems.length;
933
+ }
934
+ async generateDebugReport() {
935
+ return generateCustomizationDebugReport(this.currentSection, this.promptsService, this.workspaceService, {
936
+ allItems: this.allItems,
937
+ displayEntries: this.displayEntries
938
+ });
939
+ }
940
+ };
941
+ AICustomizationListWidget = ( __decorate([( __param(0, IInstantiationService)), ( __param(1, IPromptsService)), ( __param(2, IContextViewService)), ( __param(3, IOpenerService)), ( __param(4, IContextMenuService)), ( __param(5, IMenuService)), ( __param(6, IContextKeyService)), ( __param(7, IWorkspaceContextService)), ( __param(8, ILabelService)), ( __param(9, IAICustomizationWorkspaceService)), ( __param(10, IClipboardService)), ( __param(11, ISCMService)), ( __param(12, IHoverService))], AICustomizationListWidget));
942
+
943
+ export { AICustomizationListWidget, sectionToPromptType };