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