@codingame/monaco-vscode-chat-service-override 27.0.0 → 28.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/index.js +5 -2
  2. package/package.json +5 -5
  3. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +54 -4
  4. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +179 -11
  5. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.js +5 -1
  6. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.d.ts +6 -1
  7. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.js +25 -10
  8. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +67 -0
  9. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +263 -0
  10. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.d.ts +6 -0
  11. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.js +25 -6
  12. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  13. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +15 -15
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +13 -5
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +5 -5
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +11 -11
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +5 -4
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.d.ts +7 -0
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +2 -2
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +13 -13
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +12 -12
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +49 -13
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.d.ts +58 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +537 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.d.ts +17 -0
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +55 -0
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +26 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.js +9 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/media/agentPluginEditor.css +32 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +17 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +89 -11
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +4 -26
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +146 -53
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +56 -54
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +5 -5
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +25 -25
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  58. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +4 -0
  59. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +13 -12
  60. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +7 -9
  61. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +189 -145
  62. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +42 -44
  63. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.d.ts +0 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +3 -4
  65. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +20 -8
  66. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +210 -59
  67. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +1 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +14 -3
  69. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +3 -3
  70. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +122 -53
  71. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +87 -9
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +62 -0
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +702 -0
  74. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +279 -214
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +21 -21
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +12 -3
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +19 -19
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.d.ts +12 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +63 -4
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +18 -18
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +6 -6
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +4 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +62 -24
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +28 -28
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +9 -9
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +2 -0
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +7 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +2 -5
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +32 -36
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +4 -5
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +1 -1
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +2 -2
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -8
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +13 -13
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +49 -49
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +9 -0
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +14 -14
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +26 -26
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +13 -13
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +3 -1
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +103 -60
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +61 -61
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +66 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +245 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.d.ts +78 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.js +234 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +31 -126
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +229 -524
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.d.ts +41 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.js +22 -0
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +4 -3
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +54 -20
  137. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  138. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +11 -12
  139. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +112 -39
  140. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +99 -0
  141. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +489 -0
  142. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  143. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +6 -3
  144. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +348 -285
  145. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +18 -1
  146. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +107 -5
  147. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  148. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +4 -4
  149. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  150. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  151. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  152. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  153. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +2 -0
  154. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +55 -38
  155. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +20 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +148 -60
  157. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +5 -5
  158. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  159. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +6 -6
  160. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +2 -0
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +29 -14
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +72 -14
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +5 -3
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +5 -2
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +11 -10
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +8 -0
  172. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.d.ts +1 -0
  173. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.js +1 -0
  174. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +8 -0
  175. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +20 -0
  176. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +72 -23
  178. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +19 -1
  179. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +5 -1
  180. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -1
  181. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +37 -8
  182. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +36 -3
  183. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +4 -4
  184. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +2 -2
  185. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +6 -1
  186. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +71 -25
  187. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +217 -91
  188. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +85 -3
  189. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +257 -63
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +17 -17
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.d.ts +3 -16
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.js +7 -50
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.d.ts +2 -1
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +32 -3
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +1 -1
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +3 -1
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +1 -1
  198. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +7 -6
  199. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +1 -1
  200. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +26 -1
  201. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +287 -88
  202. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +10 -1
  203. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +75 -20
  204. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +121 -0
  205. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +1422 -0
  206. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
  207. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +5 -1
  208. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +81 -41
  209. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +3 -1
  210. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +8 -6
  211. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  212. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.d.ts +14 -2
  213. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +54 -5
  214. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +6 -5
  215. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +4 -4
  216. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +38 -22
  217. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  218. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +8 -8
  219. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  220. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  221. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  222. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  223. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  224. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +8 -0
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +36 -18
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +6 -0
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +27 -13
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +1 -1
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +1 -0
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +8 -1
  250. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.d.ts +0 -12
  251. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +0 -67
@@ -2,7 +2,7 @@
2
2
  import { registerCss } from '@codingame/monaco-vscode-api/css';
3
3
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
4
  import * as aiCustomizationManagement from './media/aiCustomizationManagement.css';
5
- import { $ as $$1, append, addDisposableListener } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
5
+ import { $ as $$1, append, addDisposableListener, getWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
6
6
  import { DisposableStore, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
7
7
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
8
8
  import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
@@ -17,7 +17,7 @@ import { WorkbenchList } from '@codingame/monaco-vscode-api/vscode/vs/platform/l
17
17
  import { PromptsStorage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
18
18
  import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
19
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';
20
+ import { workspaceIcon, userIcon, extensionIcon, pluginIcon, agentIcon, promptIcon, hookIcon, instructionsIcon, skillIcon } from './aiCustomizationIcons.js';
21
21
  import { AICustomizationManagementItemMenuId } from './aiCustomizationManagement.js';
22
22
  import { InputBox } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/inputbox/inputBox';
23
23
  import { defaultInputBoxStyles, defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
@@ -36,15 +36,22 @@ import { AICustomizationManagementSection, applyStorageSourceFilter } from '../.
36
36
  import { IAICustomizationWorkspaceService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.service';
37
37
  import { Separator, Action } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
38
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
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';
41
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';
42
49
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
43
50
 
44
51
  registerCss(aiCustomizationManagement);
45
52
  const $ = $$1;
46
53
  const ITEM_HEIGHT = 44;
47
- const GROUP_HEADER_HEIGHT = 32;
54
+ const GROUP_HEADER_HEIGHT = 36;
48
55
  const GROUP_HEADER_HEIGHT_WITH_SEPARATOR = 40;
49
56
  class AICustomizationListDelegate {
50
57
  getHeight(element) {
@@ -109,8 +116,10 @@ class GroupHeaderRenderer {
109
116
  templateData.disposables.dispose();
110
117
  }
111
118
  }
112
- class AICustomizationItemRenderer {
113
- constructor() {
119
+ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
120
+ constructor(hoverService, labelService) {
121
+ this.hoverService = hoverService;
122
+ this.labelService = labelService;
114
123
  this.templateId = "aiCustomizationItem";
115
124
  }
116
125
  renderTemplate(container) {
@@ -118,19 +127,15 @@ class AICustomizationItemRenderer {
118
127
  const elementDisposables = ( new DisposableStore());
119
128
  container.classList.add("ai-customization-list-item");
120
129
  const leftSection = append(container, $(".item-left"));
121
- const storageBadge = append(leftSection, $(".storage-badge"));
122
130
  const textContainer = append(leftSection, $(".item-text"));
123
131
  const nameLabel = disposables.add(( new HighlightedLabel(append(textContainer, $(".item-name")))));
124
132
  const description = disposables.add(( new HighlightedLabel(append(textContainer, $(".item-description")))));
125
- const gitStatusBadge = append(container, $(".git-status-badge"));
126
133
  const actionsContainer = append(container, $(".item-right"));
127
134
  return {
128
135
  container,
129
136
  actionsContainer,
130
137
  nameLabel,
131
138
  description,
132
- storageBadge,
133
- gitStatusBadge,
134
139
  disposables,
135
140
  elementDisposables
136
141
  };
@@ -138,6 +143,18 @@ class AICustomizationItemRenderer {
138
143
  renderElement(entry, index, templateData) {
139
144
  templateData.elementDisposables.clear();
140
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
+ }));
141
158
  templateData.nameLabel.set(element.name, element.nameMatches);
142
159
  const secondaryText = element.description || element.filename;
143
160
  if (secondaryText) {
@@ -151,46 +168,13 @@ class AICustomizationItemRenderer {
151
168
  templateData.description.set("", undefined);
152
169
  templateData.description.element.style.display = "none";
153
170
  }
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
171
  }
189
172
  disposeTemplate(templateData) {
190
173
  templateData.elementDisposables.dispose();
191
174
  templateData.disposables.dispose();
192
175
  }
193
- }
176
+ };
177
+ AICustomizationItemRenderer = ( __decorate([( __param(0, IHoverService)), ( __param(1, ILabelService))], AICustomizationItemRenderer));
194
178
  function sectionToPromptType(section) {
195
179
  switch (section) {
196
180
  case AICustomizationManagementSection.Agents:
@@ -219,8 +203,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
219
203
  labelService,
220
204
  workspaceService,
221
205
  clipboardService,
222
- scmService,
223
- hoverService
206
+ hoverService,
207
+ fileService,
208
+ pathService
224
209
  ) {
225
210
  super();
226
211
  this.instantiationService = instantiationService;
@@ -234,8 +219,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
234
219
  this.labelService = labelService;
235
220
  this.workspaceService = workspaceService;
236
221
  this.clipboardService = clipboardService;
237
- this.scmService = scmService;
238
222
  this.hoverService = hoverService;
223
+ this.fileService = fileService;
224
+ this.pathService = pathService;
239
225
  this.currentSection = AICustomizationManagementSection.Agents;
240
226
  this.allItems = [];
241
227
  this.displayEntries = [];
@@ -261,22 +247,12 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
261
247
  this.updateAddButton();
262
248
  this.refresh();
263
249
  }));
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
250
  }
275
251
  create() {
276
252
  this.searchAndButtonContainer = append(this.element, $(".list-search-and-button-container"));
277
253
  this.searchContainer = append(this.searchAndButtonContainer, $(".list-search-container"));
278
254
  this.searchInput = this._register(( new InputBox(this.searchContainer, this.contextViewService, {
279
- placeholder: ( localize(5211, "Type to search...")),
255
+ placeholder: ( localize(5231, "Type to search...")),
280
256
  inputBoxStyles: defaultInputBoxStyles
281
257
  })));
282
258
  this._register(this.searchInput.onDidChange(() => {
@@ -322,16 +298,16 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
322
298
  getAriaLabel: entry => {
323
299
  if (entry.type === "group-header") {
324
300
  return localize(
325
- 5212,
301
+ 5232,
326
302
  "{0}, {1} items, {2}",
327
303
  entry.label,
328
304
  entry.count,
329
- entry.collapsed ? ( localize(5213, "collapsed")) : ( localize(5214, "expanded"))
305
+ entry.collapsed ? ( localize(5233, "collapsed")) : ( localize(5234, "expanded"))
330
306
  );
331
307
  }
332
- return entry.item.description ? ( localize(5215, "{0}, {1}", entry.item.name, entry.item.description)) : entry.item.name;
308
+ return entry.item.description ? ( localize(5235, "{0}, {1}", entry.item.name, entry.item.description)) : entry.item.name;
333
309
  },
334
- getWidgetAriaLabel: () => ( localize(5216, "Chat Customizations"))
310
+ getWidgetAriaLabel: () => ( localize(5236, "Chat Customizations"))
335
311
  },
336
312
  keyboardNavigationLabelProvider: {
337
313
  getKeyboardNavigationLabel: entry => entry.type === "group-header" ? entry.label : entry.item.name
@@ -380,9 +356,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
380
356
  shouldForwardArgs: true
381
357
  });
382
358
  const flatActions = getFlatContextMenuActions(actions);
383
- const copyActions = [( new Separator()), ( new Action("copyFullPath", ( localize(5217, "Copy Full Path")), undefined, true, async () => {
359
+ const copyActions = [( new Separator()), ( new Action("copyFullPath", ( localize(5237, "Copy Full Path")), undefined, true, async () => {
384
360
  await this.clipboardService.writeText(item.uri.fsPath);
385
- })), ( new Action("copyRelativePath", ( localize(5218, "Copy Relative Path")), undefined, true, async () => {
361
+ })), ( new Action("copyRelativePath", ( localize(5238, "Copy Relative Path")), undefined, true, async () => {
386
362
  const basePath = this.workspaceService.getActiveProjectRoot();
387
363
  if (basePath && item.uri.fsPath.startsWith(basePath.fsPath)) {
388
364
  const relative = item.uri.fsPath.substring(basePath.fsPath.length + 1);
@@ -412,41 +388,41 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
412
388
  switch (this.currentSection) {
413
389
  case AICustomizationManagementSection.Agents:
414
390
  description = ( localize(
415
- 5219,
391
+ 5239,
416
392
  "Configure the AI to adopt different personas tailored to specific development tasks. Each agent has its own instructions, tools, and behavior."
417
393
  ));
418
394
  docsUrl = "https://code.visualstudio.com/docs/copilot/customization/custom-agents";
419
- learnMoreLabel = ( localize(5220, "Learn more about custom agents"));
395
+ learnMoreLabel = ( localize(5240, "Learn more about custom agents"));
420
396
  break;
421
397
  case AICustomizationManagementSection.Skills:
422
398
  description = ( localize(
423
- 5221,
399
+ 5241,
424
400
  "Folders of instructions, scripts, and resources that Copilot loads when relevant to perform specialized tasks."
425
401
  ));
426
402
  docsUrl = "https://code.visualstudio.com/docs/copilot/customization/agent-skills";
427
- learnMoreLabel = ( localize(5222, "Learn more about agent skills"));
403
+ learnMoreLabel = ( localize(5242, "Learn more about agent skills"));
428
404
  break;
429
405
  case AICustomizationManagementSection.Instructions:
430
406
  description = ( localize(
431
- 5223,
407
+ 5243,
432
408
  "Define common guidelines and rules that automatically influence how AI generates code and handles development tasks."
433
409
  ));
434
410
  docsUrl = "https://code.visualstudio.com/docs/copilot/customization/custom-instructions";
435
- learnMoreLabel = ( localize(5224, "Learn more about custom instructions"));
411
+ learnMoreLabel = ( localize(5244, "Learn more about custom instructions"));
436
412
  break;
437
413
  case AICustomizationManagementSection.Hooks:
438
- description = ( localize(5225, "Prompts executed at specific points during an agentic lifecycle."));
414
+ description = ( localize(5245, "Prompts executed at specific points during an agentic lifecycle."));
439
415
  docsUrl = "https://code.visualstudio.com/docs/copilot/customization/hooks";
440
- learnMoreLabel = ( localize(5226, "Learn more about hooks"));
416
+ learnMoreLabel = ( localize(5246, "Learn more about hooks"));
441
417
  break;
442
418
  case AICustomizationManagementSection.Prompts:
443
419
  default:
444
420
  description = ( localize(
445
- 5227,
421
+ 5247,
446
422
  "Reusable prompts for common development tasks like generating code, performing reviews, or scaffolding components."
447
423
  ));
448
424
  docsUrl = "https://code.visualstudio.com/docs/copilot/customization/prompt-files";
449
- learnMoreLabel = ( localize(5228, "Learn more about prompt files"));
425
+ learnMoreLabel = ( localize(5248, "Learn more about prompt files"));
450
426
  break;
451
427
  }
452
428
  this.sectionDescription.textContent = description;
@@ -468,7 +444,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
468
444
  this.addButton.primaryButton.setTitle("");
469
445
  this.addButton.dropdownButton.setTitle("");
470
446
  if (!hasWorkspace) {
471
- const disabledTitle = ( localize(5229, "Open a workspace folder to create customizations."));
447
+ const disabledTitle = ( localize(5249, "Open a workspace folder to create customizations."));
472
448
  this.addButton.primaryButton.setTitle(disabledTitle);
473
449
  this.addButton.dropdownButton.setTitle(disabledTitle);
474
450
  }
@@ -476,7 +452,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
476
452
  this.addButtonSimple.label = label;
477
453
  this.addButtonSimple.enabled = hasWorkspace;
478
454
  if (!hasWorkspace) {
479
- this.addButtonSimple.setTitle(( localize(5229, "Open a workspace folder to create customizations.")));
455
+ this.addButtonSimple.setTitle(( localize(5249, "Open a workspace folder to create customizations.")));
480
456
  } else {
481
457
  this.addButtonSimple.setTitle("");
482
458
  }
@@ -583,16 +559,16 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
583
559
  getTypeLabel() {
584
560
  switch (this.currentSection) {
585
561
  case AICustomizationManagementSection.Agents:
586
- return localize(5230, "Agent");
562
+ return localize(5250, "Agent");
587
563
  case AICustomizationManagementSection.Skills:
588
- return localize(5231, "Skill");
564
+ return localize(5251, "Skill");
589
565
  case AICustomizationManagementSection.Instructions:
590
- return localize(5232, "Instructions");
566
+ return localize(5252, "Instructions");
591
567
  case AICustomizationManagementSection.Hooks:
592
- return localize(5233, "Hook");
568
+ return localize(5253, "Hook");
593
569
  case AICustomizationManagementSection.Prompts:
594
570
  default:
595
- return localize(5234, "Prompt");
571
+ return localize(5254, "Prompt");
596
572
  }
597
573
  }
598
574
  async refresh() {
@@ -600,7 +576,8 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
600
576
  await this.loadItems();
601
577
  }
602
578
  async loadItems() {
603
- const promptType = sectionToPromptType(this.currentSection);
579
+ const section = this.currentSection;
580
+ const promptType = sectionToPromptType(section);
604
581
  const items = [];
605
582
  if (promptType === PromptsType.agent) {
606
583
  const agents = await this.promptsService.getCustomAgents(CancellationToken.None);
@@ -650,16 +627,77 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
650
627
  }
651
628
  } else if (promptType === PromptsType.hook) {
652
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;
653
633
  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
- });
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
+ }
663
701
  }
664
702
  } else {
665
703
  const promptFiles = await this.promptsService.listPromptFiles(promptType, CancellationToken.None);
@@ -708,26 +746,13 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
708
746
  items.length = 0;
709
747
  items.push(...filteredItems);
710
748
  items.sort((a, b) => a.name.localeCompare(b.name));
711
- this.updateGitStatus(items);
749
+ if (this.currentSection !== section) {
750
+ return;
751
+ }
712
752
  this.allItems = items;
713
753
  this.filterItems();
714
754
  this._onDidChangeItemCount.fire(items.length);
715
755
  }
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
756
  getFriendlyName(filename) {
732
757
  let name = filename.replace(/\.instructions\.md$/i, "").replace(/\.prompt\.md$/i, "").replace(/\.agent\.md$/i, "").replace(/\.md$/i, "");
733
758
  name = name.replace(/[-_]/g, " ").replace(/\b\w/g, c => c.toUpperCase());
@@ -760,38 +785,45 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
760
785
  const promptType = sectionToPromptType(this.currentSection);
761
786
  const visibleSources = ( new Set(this.workspaceService.getStorageSourceFilter(promptType).sources));
762
787
  const groups = [{
763
- storage: PromptsStorage.local,
764
- label: ( localize(5235, "Workspace")),
788
+ groupKey: PromptsStorage.local,
789
+ label: ( localize(5256, "Workspace")),
765
790
  icon: workspaceIcon,
766
791
  description: ( localize(
767
- 5236,
792
+ 5257,
768
793
  "Customizations stored as files in your project folder and shared with your team via version control."
769
794
  )),
770
795
  items: []
771
796
  }, {
772
- storage: PromptsStorage.user,
773
- label: ( localize(5237, "User")),
797
+ groupKey: PromptsStorage.user,
798
+ label: ( localize(5258, "User")),
774
799
  icon: userIcon,
775
800
  description: ( localize(
776
- 5238,
801
+ 5259,
777
802
  "Customizations stored locally on your machine in a central location. Private to you and available across all projects."
778
803
  )),
779
804
  items: []
780
805
  }, {
781
- storage: PromptsStorage.extension,
782
- label: ( localize(5239, "Extensions")),
806
+ groupKey: PromptsStorage.extension,
807
+ label: ( localize(5260, "Extensions")),
783
808
  icon: extensionIcon,
784
- description: ( localize(5240, "Read-only customizations provided by installed extensions.")),
809
+ description: ( localize(5261, "Read-only customizations provided by installed extensions.")),
785
810
  items: []
786
811
  }, {
787
- storage: PromptsStorage.plugin,
788
- label: ( localize(5241, "Plugins")),
812
+ groupKey: PromptsStorage.plugin,
813
+ label: ( localize(5262, "Plugins")),
789
814
  icon: pluginIcon,
790
- description: ( localize(5242, "Read-only customizations provided by installed plugins.")),
815
+ description: ( localize(5263, "Read-only customizations provided by installed plugins.")),
791
816
  items: []
792
- }].filter(g => ( visibleSources.has(g.storage)));
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");
793
824
  for (const item of matchedItems) {
794
- const group = groups.find(g => g.storage === item.storage);
825
+ const key = item.groupKey ?? item.storage;
826
+ const group = groups.find(g => g.groupKey === key);
795
827
  if (group) {
796
828
  group.items.push(item);
797
829
  }
@@ -805,11 +837,11 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
805
837
  if (group.items.length === 0) {
806
838
  continue;
807
839
  }
808
- const collapsed = ( this.collapsedGroups.has(group.storage));
840
+ const collapsed = ( this.collapsedGroups.has(group.groupKey));
809
841
  this.displayEntries.push({
810
842
  type: "group-header",
811
- id: `group-${group.storage}`,
812
- storage: group.storage,
843
+ id: `group-${group.groupKey}`,
844
+ groupKey: group.groupKey,
813
845
  label: group.label,
814
846
  icon: group.icon,
815
847
  count: group.items.length,
@@ -831,10 +863,10 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
831
863
  this.updateEmptyState();
832
864
  }
833
865
  toggleGroup(entry) {
834
- if (( this.collapsedGroups.has(entry.storage))) {
835
- this.collapsedGroups.delete(entry.storage);
866
+ if (( this.collapsedGroups.has(entry.groupKey))) {
867
+ this.collapsedGroups.delete(entry.groupKey);
836
868
  } else {
837
- this.collapsedGroups.add(entry.storage);
869
+ this.collapsedGroups.add(entry.groupKey);
838
870
  }
839
871
  this.filterItems();
840
872
  }
@@ -847,8 +879,8 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
847
879
  const sectionIcon = this.getSectionIcon();
848
880
  this.emptyStateIcon.classList.add(...ThemeIcon.asClassNameArray(sectionIcon));
849
881
  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"));
882
+ this.emptyStateText.textContent = ( localize(5266, "No items match '{0}'", this.searchQuery));
883
+ this.emptyStateSubtext.textContent = ( localize(5267, "Try a different search term"));
852
884
  } else {
853
885
  const emptyInfo = this.getEmptyStateInfo();
854
886
  this.emptyStateText.textContent = emptyInfo.title;
@@ -878,29 +910,29 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
878
910
  switch (this.currentSection) {
879
911
  case AICustomizationManagementSection.Agents:
880
912
  return {
881
- title: ( localize(5245, "No agents yet")),
882
- description: ( localize(5246, "Create your first custom agent to get started"))
913
+ title: ( localize(5268, "No agents yet")),
914
+ description: ( localize(5269, "Create your first custom agent to get started"))
883
915
  };
884
916
  case AICustomizationManagementSection.Skills:
885
917
  return {
886
- title: ( localize(5247, "No skills yet")),
887
- description: ( localize(5248, "Create your first skill to extend agent capabilities"))
918
+ title: ( localize(5270, "No skills yet")),
919
+ description: ( localize(5271, "Create your first skill to extend agent capabilities"))
888
920
  };
889
921
  case AICustomizationManagementSection.Instructions:
890
922
  return {
891
- title: ( localize(5249, "No instructions yet")),
892
- description: ( localize(5250, "Add instructions to teach Copilot about your codebase"))
923
+ title: ( localize(5272, "No instructions yet")),
924
+ description: ( localize(5273, "Add instructions to teach Copilot about your codebase"))
893
925
  };
894
926
  case AICustomizationManagementSection.Hooks:
895
927
  return {
896
- title: ( localize(5251, "No hooks yet")),
897
- description: ( localize(5252, "Create hooks to execute commands at agent lifecycle events"))
928
+ title: ( localize(5274, "No hooks yet")),
929
+ description: ( localize(5275, "Create hooks to execute commands at agent lifecycle events"))
898
930
  };
899
931
  case AICustomizationManagementSection.Prompts:
900
932
  default:
901
933
  return {
902
- title: ( localize(5253, "No prompts yet")),
903
- description: ( localize(5254, "Create reusable prompts for common tasks"))
934
+ title: ( localize(5276, "No prompts yet")),
935
+ description: ( localize(5277, "Create reusable prompts for common tasks"))
904
936
  };
905
937
  }
906
938
  }
@@ -920,13 +952,25 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
920
952
  }
921
953
  }
922
954
  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;
955
+ const sectionFooterHeight = this.sectionHeader.offsetHeight || 0;
956
+ const searchBarHeight = this.searchAndButtonContainer.offsetHeight || 52;
957
+ const listHeight = height - sectionFooterHeight - searchBarHeight;
927
958
  this.searchInput.layout();
928
959
  this.listContainer.style.height = `${Math.max(0, listHeight)}px`;
929
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
+ }
930
974
  }
931
975
  get itemCount() {
932
976
  return this.allItems.length;
@@ -938,6 +982,6 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
938
982
  });
939
983
  }
940
984
  };
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));
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));
942
986
 
943
987
  export { AICustomizationListWidget, sectionToPromptType };