@codingame/monaco-vscode-chat-service-override 36.2.7 → 37.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 (725) hide show
  1. package/index.d.ts +1 -0
  2. package/index.js +92 -10
  3. package/package.json +5 -5
  4. package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.d.ts +10 -3
  5. package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.js +54 -17
  6. package/vscode/src/vs/platform/agentHost/browser/agentHostEnablementService.d.ts +14 -0
  7. package/vscode/src/vs/platform/agentHost/browser/agentHostEnablementService.js +46 -0
  8. package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.d.ts +7 -2
  9. package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.js +34 -2
  10. package/vscode/src/vs/platform/agentHost/browser/{remoteAgentHostProtocolClient.d.ts → agentHostProtocolClient.d.ts} +240 -60
  11. package/vscode/src/vs/platform/agentHost/browser/agentHostProtocolClient.js +1911 -0
  12. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +30 -33
  13. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +381 -315
  14. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.d.ts +3 -1
  15. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.js +2 -0
  16. package/vscode/src/vs/platform/agentHost/common/agentHostClientInfo.d.ts +9 -0
  17. package/vscode/src/vs/platform/agentHost/common/agentHostClientInfo.js +20 -0
  18. package/vscode/src/vs/platform/agentHost/common/agentHostExtensionProtocol.d.ts +144 -0
  19. package/vscode/src/vs/platform/agentHost/common/agentHostExtensionProtocol.js +20 -0
  20. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +14 -6
  21. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +14 -10
  22. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.js +1 -1
  23. package/vscode/src/vs/platform/agentHost/common/agentHostManagedRules.d.ts +47 -0
  24. package/vscode/src/vs/platform/agentHost/common/agentHostManagedRules.js +75 -0
  25. package/vscode/src/vs/platform/agentHost/common/agentHostManagedSettings.d.ts +68 -0
  26. package/vscode/src/vs/platform/agentHost/common/agentHostManagedSettings.js +161 -0
  27. package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.js +288 -45
  28. package/vscode/src/vs/platform/agentHost/common/agentMerge.d.ts +261 -0
  29. package/vscode/src/vs/platform/agentHost/common/agentMerge.js +67 -0
  30. package/vscode/src/vs/platform/agentHost/common/agentSdkSetup.d.ts +53 -0
  31. package/vscode/src/vs/platform/agentHost/common/agentSdkSetup.js +45 -0
  32. package/vscode/src/vs/platform/agentHost/common/changesetUri.d.ts +130 -0
  33. package/vscode/src/vs/platform/agentHost/common/changesetUri.js +27 -0
  34. package/vscode/src/vs/platform/agentHost/common/customAgents.d.ts +8 -2
  35. package/vscode/src/vs/platform/agentHost/common/customAgents.js +7 -0
  36. package/vscode/src/vs/platform/agentHost/common/meta/agentChatSurfaceMeta.d.ts +39 -0
  37. package/vscode/src/vs/platform/agentHost/common/meta/agentChatSurfaceMeta.js +25 -0
  38. package/vscode/src/vs/platform/agentHost/common/meta/agentCompletionAttachmentMeta.d.ts +110 -0
  39. package/vscode/src/vs/platform/agentHost/common/meta/agentCompletionAttachmentMeta.js +38 -0
  40. package/vscode/src/vs/platform/agentHost/common/meta/agentHostArtifactRemovalMeta.d.ts +4 -0
  41. package/vscode/src/vs/platform/agentHost/common/meta/clientPluginCustomizationMeta.d.ts +7 -0
  42. package/vscode/src/vs/platform/agentHost/common/meta/clientPluginCustomizationMeta.js +14 -0
  43. package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.d.ts +3 -3
  44. package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.js +16 -24
  45. package/vscode/src/vs/platform/agentHost/common/semanticSearchConstants.d.ts +8 -0
  46. package/vscode/src/vs/platform/agentHost/common/semanticSearchConstants.js +8 -0
  47. package/vscode/src/vs/platform/agentHost/common/sessionArtifacts.d.ts +75 -0
  48. package/vscode/src/vs/platform/agentHost/common/sessionArtifacts.js +84 -0
  49. package/vscode/src/vs/platform/agentHost/common/shellInitScript.d.ts +24 -0
  50. package/vscode/src/vs/platform/agentHost/common/shellInitScript.js +63 -0
  51. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +71 -20
  52. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +187 -26
  53. package/vscode/src/vs/platform/agentHost/common/state/legacyProtocolCompatibility.d.ts +30 -0
  54. package/vscode/src/vs/platform/agentHost/common/state/legacyProtocolCompatibility.js +87 -0
  55. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.js +2 -2
  56. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation/reducer.d.ts +4 -0
  57. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation/reducer.js +37 -0
  58. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation-run/reducer.d.ts +4 -0
  59. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation-run/reducer.js +45 -0
  60. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.d.ts +5 -4
  61. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.js +100 -35
  62. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.js +193 -49
  63. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.js +161 -40
  64. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.d.ts +1 -1
  65. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.js +5 -1
  66. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.d.ts +2 -2
  67. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/timestamps.d.ts +1 -0
  68. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/timestamps.js +7 -0
  69. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +1 -1
  70. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +114 -3
  71. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +28 -5
  72. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +4 -2
  73. package/vscode/src/vs/platform/agentHost/common/state/sessionWorkingDirectories.d.ts +34 -0
  74. package/vscode/src/vs/platform/agentHost/common/state/sessionWorkingDirectories.js +28 -0
  75. package/vscode/src/vs/platform/agentHost/common/worktreePaths.d.ts +24 -0
  76. package/vscode/src/vs/platform/agentHost/common/worktreePaths.js +15 -0
  77. package/vscode/src/vs/platform/browserView/common/browserChatToolReferenceNames.d.ts +1 -1
  78. package/vscode/src/vs/platform/chat/common/aiAgentEnv.d.ts +18 -0
  79. package/vscode/src/vs/platform/chat/common/aiAgentEnv.js +6 -0
  80. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +5 -1
  81. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +77 -5
  82. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.d.ts +1 -1
  83. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +9 -5
  84. package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +1 -5
  85. package/vscode/src/vs/platform/networkFilter/common/settings.js +0 -4
  86. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.d.ts +19 -7
  87. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.js +49 -37
  88. package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.d.ts +2 -1
  89. package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.js +12 -0
  90. package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.js +1 -2
  91. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +1 -0
  92. package/vscode/src/vs/platform/terminal/common/autoApprove/autoApproveParseSafety.d.ts +5 -0
  93. package/vscode/src/vs/platform/terminal/common/autoApprove/autoApproveParseSafety.js +7 -0
  94. package/vscode/src/vs/platform/terminal/common/autoApprove/cmdDelayedExpansion.d.ts +5 -0
  95. package/vscode/src/vs/platform/terminal/common/autoApprove/cmdDelayedExpansion.js +8 -0
  96. package/vscode/src/vs/{workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers → platform/terminal/common/autoApprove}/sedFileWriteParser.d.ts +1 -2
  97. package/vscode/src/vs/workbench/browser/chatChangesPill.d.ts +29 -0
  98. package/vscode/src/vs/workbench/browser/chatChangesPill.js +84 -0
  99. package/vscode/src/vs/workbench/common/chatPullRequest.d.ts +19 -0
  100. package/vscode/src/vs/workbench/common/chatPullRequest.js +53 -0
  101. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoice.contribution.js +342 -155
  102. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceSessionsPicker.js +2 -2
  103. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.d.ts +25 -2
  104. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.js +150 -67
  105. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.js +5 -3
  106. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.d.ts +5 -1
  107. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.js +39 -9
  108. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.d.ts +1 -1
  109. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.js +3 -3
  110. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/feedbackDialog.js +6 -6
  111. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.d.ts +4 -2
  112. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.js +54 -17
  113. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/onboardingComponent.js +11 -11
  114. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.d.ts +1 -1
  115. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.js +9 -9
  116. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.d.ts +1 -1
  117. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.js +5 -5
  118. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.d.ts +6 -0
  119. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.js +5 -1
  120. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/transcriptComponent.d.ts +1 -1
  121. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.d.ts +1 -1
  122. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.js +2 -2
  123. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/media/voiceModeOnboarding.css +252 -0
  124. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscripts.contribution.js +13 -13
  125. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscriptsView.js +7 -7
  126. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/voiceModeOnboarding.d.ts +146 -0
  127. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/voiceModeOnboarding.js +889 -0
  128. package/vscode/src/vs/workbench/contrib/agentsVoice/common/voiceTranscriptStore.js +2 -2
  129. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +2 -7
  130. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +3 -54
  131. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +32 -3
  132. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +214 -161
  133. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +10 -9
  134. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.d.ts +2 -1
  135. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +256 -72
  136. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.d.ts +2 -1
  138. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +11 -12
  139. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +19 -15
  140. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +30 -14
  141. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +19 -10
  142. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +9 -9
  143. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  144. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFindActions.d.ts +6 -0
  145. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFindActions.js +237 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +7 -6
  147. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  148. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +10 -10
  149. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.d.ts +6 -0
  150. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +68 -61
  151. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +17 -21
  152. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +17 -21
  153. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  154. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.d.ts +5 -0
  155. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +68 -14
  156. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
  157. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +21 -19
  158. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.d.ts +7 -2
  159. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +222 -72
  160. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.d.ts +64 -17
  161. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +530 -305
  162. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openAgentHostStateFileAction.d.ts +25 -0
  163. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openAgentHostStateFileAction.js +63 -0
  164. package/vscode/src/vs/workbench/contrib/chat/browser/agentHostCompletionAction.d.ts +30 -0
  165. package/vscode/src/vs/workbench/contrib/chat/browser/agentHostCompletionAction.js +37 -0
  166. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginCommands.d.ts +6 -0
  167. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginCommands.js +95 -0
  168. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +10 -6
  169. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  170. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +2 -1
  171. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +18 -1
  172. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +86 -47
  173. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +61 -47
  174. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +43 -24
  175. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.js +326 -76
  176. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.d.ts +112 -5
  177. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.js +33 -7
  178. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostImportConversationStore.d.ts +20 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostImportConversationStore.js +26 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +28 -10
  181. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.js +110 -126
  182. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupport.d.ts +131 -0
  183. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupport.js +638 -0
  184. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupportScope.d.ts +41 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupportScope.js +202 -0
  186. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.d.ts +24 -1
  187. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.js +26 -5
  188. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +10 -7
  189. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostProtectedResourcesService.d.ts +20 -0
  190. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostProtectedResourcesService.js +55 -0
  191. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostResponseFileChanges.d.ts +62 -0
  192. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostResponseFileChanges.js +40 -0
  193. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionInputPills.d.ts +59 -0
  194. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionInputPills.js +624 -0
  195. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectorySynchronizer.d.ts +90 -0
  196. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectorySynchronizer.js +207 -0
  197. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostShellInitSynchronizer.d.ts +31 -0
  198. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostShellInitSynchronizer.js +140 -0
  199. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.d.ts +4 -0
  200. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.js +5 -1
  201. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolUtils.js +5 -4
  202. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +74 -5
  203. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +511 -171
  204. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/applyAgentHostSessionConfig.d.ts +32 -0
  205. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/applyAgentHostSessionConfig.js +48 -0
  206. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.d.ts +55 -6
  207. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.js +210 -20
  208. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +43 -24
  209. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +46 -10
  210. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +216 -110
  211. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +9 -4
  212. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +26 -17
  213. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  214. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  215. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  216. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  217. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +30 -26
  218. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +5 -2
  219. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/unifiedQuickAccess.css +6 -6
  220. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  221. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  222. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu.d.ts +3 -0
  223. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu.js +62 -0
  224. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/sessionSummaryHover.css +104 -0
  225. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHover.d.ts +115 -0
  226. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHover.js +168 -0
  227. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHoverService.d.ts +24 -0
  228. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHoverService.js +32 -0
  229. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessionsConfiguration.js +56 -0
  230. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +0 -4
  231. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +16 -17
  232. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +7 -3
  233. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +1 -0
  234. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +2 -0
  235. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +10 -1
  236. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +48 -1
  237. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +913 -220
  238. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.d.ts +1 -1
  239. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +148 -84
  240. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +161 -17
  241. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +2367 -247
  242. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +5 -2
  243. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +21 -13
  244. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementSectionRegistry.d.ts +26 -0
  245. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementSectionRegistry.js +34 -0
  246. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.d.ts +2 -0
  247. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.js +23 -0
  248. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.d.ts +15 -0
  249. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.js +3 -0
  250. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.d.ts +10 -2
  251. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +143 -68
  252. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +1 -0
  253. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +10 -5
  254. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCardList.d.ts +40 -0
  255. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCardList.js +302 -0
  256. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +1 -2
  257. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +49 -8
  258. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.js +3 -3
  259. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.d.ts +38 -0
  260. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.js +240 -0
  261. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationAccessibility.d.ts +1 -0
  262. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationAccessibility.js +53 -0
  263. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.d.ts +82 -0
  264. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.js +762 -0
  265. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationDashboard.d.ts +80 -0
  266. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationDashboard.js +279 -0
  267. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationServiceImpl.d.ts +44 -0
  268. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationServiceImpl.js +437 -0
  269. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +85 -6
  270. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +697 -15
  271. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.js +7 -7
  272. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.d.ts +40 -10
  273. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +164 -42
  274. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.js +6 -9
  275. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +260 -31
  276. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +2097 -589
  277. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpServerCustomizationMigration.d.ts +32 -0
  278. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpServerCustomizationMigration.js +860 -0
  279. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +2229 -1338
  280. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +79 -26
  281. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/customizationMigrationDashboard.css +354 -0
  282. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +85 -9
  283. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +1550 -357
  284. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +2 -4
  285. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.js +13 -27
  286. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.d.ts +38 -26
  287. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.js +637 -319
  288. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +28 -10
  289. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatPasteTargetService.d.ts +10 -0
  290. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatPasteTargetService.js +22 -0
  291. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatReferenceAttachmentWidget.contribution.d.ts +15 -0
  292. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatReferenceAttachmentWidget.contribution.js +38 -0
  293. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/transcriptContextAttachmentWidget.contribution.d.ts +8 -0
  294. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/transcriptContextAttachmentWidget.contribution.js +38 -0
  295. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +4 -1
  296. package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +1675 -633
  297. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.d.ts +93 -6
  298. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.js +823 -52
  299. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostLogSources.d.ts +132 -0
  300. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostLogSources.js +446 -0
  301. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostUsageSidecar.d.ts +183 -0
  302. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostUsageSidecar.js +218 -0
  303. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +45 -42
  304. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.d.ts +11 -0
  305. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +163 -136
  306. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheInsights.js +72 -72
  307. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +7 -7
  308. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +22 -2
  309. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +105 -14
  310. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  311. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEnablement.d.ts +32 -0
  312. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEnablement.js +49 -0
  313. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +20 -20
  314. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  315. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  316. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  317. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +27 -22
  318. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.d.ts +6 -0
  319. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +22 -23
  320. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  321. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +25 -25
  322. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  323. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  324. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.d.ts +7 -2
  325. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +76 -43
  326. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  327. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +3 -2
  328. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.js +1 -0
  329. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugWireLogView.d.ts +145 -0
  330. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugWireLogView.js +839 -0
  331. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +277 -3
  332. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  333. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +6 -6
  334. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  335. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +8 -8
  336. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  337. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +16 -16
  338. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -4
  339. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  340. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +8 -4
  341. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  342. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +6 -3
  343. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +35 -19
  344. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +16 -9
  345. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +4 -3
  346. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +4 -4
  347. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +4 -0
  348. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +7 -2
  349. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  350. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.d.ts +5 -5
  351. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +3 -3
  352. package/vscode/src/vs/workbench/contrib/chat/browser/chatInputPills.d.ts +86 -0
  353. package/vscode/src/vs/workbench/contrib/chat/browser/chatInputPills.js +282 -0
  354. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +14 -10
  355. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
  356. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +5 -0
  357. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +37 -25
  358. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +7 -5
  359. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +135 -82
  360. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -3
  361. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutlineCreator.d.ts +17 -0
  362. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutlineCreator.js +28 -0
  363. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +5 -5
  364. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +32 -32
  365. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementPreview.d.ts +7 -0
  366. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementPreview.js +114 -0
  367. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievements.contribution.d.ts +45 -0
  368. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievements.contribution.js +326 -0
  369. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditor.d.ts +33 -0
  370. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditor.js +99 -0
  371. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditorInput.d.ts +17 -0
  372. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditorInput.js +46 -0
  373. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsWidget.d.ts +27 -0
  374. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsWidget.js +301 -0
  375. package/vscode/src/vs/workbench/contrib/chat/browser/chatPromoNotification.d.ts +22 -0
  376. package/vscode/src/vs/workbench/contrib/chat/browser/chatPromoNotification.js +103 -0
  377. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.d.ts +9 -36
  378. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +103 -196
  379. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  380. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +36 -30
  381. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +2 -0
  382. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +51 -12
  383. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  384. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +31 -27
  385. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +65 -20
  386. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +291 -138
  387. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/chatSetup.css +9 -0
  388. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/microsoft-dark.svg +1 -0
  389. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/microsoft-light.svg +1 -0
  390. package/vscode/src/vs/workbench/contrib/chat/browser/chatSideChat.d.ts +9 -0
  391. package/vscode/src/vs/workbench/contrib/chat/browser/chatSideChat.js +24 -0
  392. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +2 -1
  393. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +59 -35
  394. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +7 -2
  395. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +221 -145
  396. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +15 -29
  397. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +21 -3
  398. package/vscode/src/vs/workbench/contrib/chat/browser/chatSubmitRequestHandlerService.d.ts +22 -0
  399. package/vscode/src/vs/workbench/contrib/chat/browser/chatSubmitRequestHandlerService.js +27 -0
  400. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +9 -0
  401. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +23 -21
  402. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +6 -1
  403. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +62 -6
  404. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +15 -1
  405. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +97 -8
  406. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  407. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +6 -6
  408. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.d.ts +11 -2
  409. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +24 -16
  410. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +5 -5
  411. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  412. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.d.ts +44 -0
  413. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.js +232 -0
  414. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationContribution.d.ts +36 -0
  415. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationContribution.js +127 -0
  416. package/vscode/src/vs/workbench/contrib/chat/browser/exploreAgentDefaultModel.js +1 -1
  417. package/vscode/src/vs/workbench/contrib/chat/browser/feedbackSurvey/chatModelFeedbackSurveyPromptContribution.d.ts +18 -0
  418. package/vscode/src/vs/workbench/contrib/chat/browser/feedbackSurvey/chatModelFeedbackSurveyPromptContribution.js +55 -0
  419. package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.js +4 -3
  420. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
  421. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatPetAchievements.css +236 -0
  422. package/vscode/src/vs/workbench/contrib/chat/browser/planAgentDefaultModel.js +1 -1
  423. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorOverlay.d.ts +9 -0
  424. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorOverlay.js +260 -0
  425. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.d.ts +39 -5
  426. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.js +155 -56
  427. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.d.ts +10 -14
  428. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +29 -14
  429. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.d.ts +2 -0
  430. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +76 -24
  431. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +1 -1
  432. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +53 -32
  433. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +1 -1
  434. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +17 -17
  435. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +8 -7
  436. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.d.ts +1 -1
  437. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +29 -71
  438. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +3 -0
  439. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +36 -40
  440. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +3 -0
  441. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +5 -5
  442. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  443. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolSetsCodeLensProvider.js +2 -2
  444. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  445. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  446. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +9 -16
  447. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  448. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +5 -13
  449. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/media/promptTimeline.css +820 -0
  450. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptBucketing.d.ts +38 -0
  451. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptBucketing.js +100 -0
  452. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimeline.contribution.d.ts +1 -0
  453. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimeline.contribution.js +51 -0
  454. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineCard.d.ts +30 -0
  455. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineCard.js +113 -0
  456. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineGutterRail.d.ts +146 -0
  457. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineGutterRail.js +440 -0
  458. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineLayout.d.ts +16 -0
  459. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineLayout.js +5 -0
  460. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineModel.d.ts +194 -0
  461. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineModel.js +525 -0
  462. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRail.d.ts +33 -0
  463. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRulerRail.d.ts +128 -0
  464. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRulerRail.js +460 -0
  465. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineStickyHeader.d.ts +38 -0
  466. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineStickyHeader.js +120 -0
  467. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineWidgetContrib.d.ts +53 -0
  468. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineWidgetContrib.js +160 -0
  469. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +25 -22
  470. package/vscode/src/vs/workbench/contrib/chat/browser/sessionChatPillOptions.d.ts +13 -0
  471. package/vscode/src/vs/workbench/contrib/chat/browser/sessionChatPillOptions.js +52 -0
  472. package/vscode/src/vs/workbench/contrib/chat/browser/sessionPullRequestPill.d.ts +22 -0
  473. package/vscode/src/vs/workbench/contrib/chat/browser/sessionPullRequestPill.js +58 -0
  474. package/vscode/src/vs/workbench/contrib/chat/browser/speechToText/voiceCodeTranscriptionClient.d.ts +63 -0
  475. package/vscode/src/vs/workbench/contrib/chat/browser/speechToText/voiceCodeTranscriptionClient.js +361 -0
  476. package/vscode/src/vs/workbench/contrib/chat/browser/telemetry/chatEditorTopologyTelemetry.d.ts +35 -0
  477. package/vscode/src/vs/workbench/contrib/chat/browser/telemetry/chatEditorTopologyTelemetry.js +90 -0
  478. package/vscode/src/vs/workbench/contrib/chat/browser/tools/clientToolSetsContribution.js +25 -18
  479. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +3 -1
  480. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +77 -41
  481. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +60 -43
  482. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +4 -1
  483. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +60 -16
  484. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +10 -8
  485. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +13 -4
  486. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +3 -1
  487. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +44 -24
  488. package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +4 -4
  489. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  490. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.d.ts +52 -6
  491. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.js +446 -79
  492. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceInputUtils.d.ts +11 -0
  493. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceInputUtils.js +13 -0
  494. package/vscode/src/vs/workbench/contrib/chat/browser/voiceInputMode/voiceInputMode.d.ts +66 -0
  495. package/vscode/src/vs/workbench/contrib/chat/browser/voiceInputMode/voiceInputMode.js +297 -0
  496. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentOpenChat.d.ts +137 -0
  497. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentOpenChat.js +714 -0
  498. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatSubagentOpenChat.css +379 -0
  499. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatFind/chatFindAccessibilityHelp.d.ts +10 -0
  500. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatFind/chatFindAccessibilityHelp.js +78 -0
  501. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPetWidgetService.d.ts +36 -0
  502. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPetWidgetService.js +172 -0
  503. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.d.ts +5 -1
  504. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +8 -1
  505. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNoticeHub.d.ts +15 -0
  506. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNoticeHub.js +30 -0
  507. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +11 -1
  508. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +41 -13
  509. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.d.ts +5 -2
  510. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +133 -3
  511. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.d.ts +3 -2
  512. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.js +11 -2
  513. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatEditorInputContentProvider.js +4 -4
  514. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCommandArgumentHint.d.ts +1 -0
  515. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCommandArgumentHint.js +96 -0
  516. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.d.ts +12 -0
  517. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +36 -1
  518. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +67 -17
  519. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +23 -37
  520. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.d.ts +18 -0
  521. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +72 -3
  522. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputPlaceholderDecoration.d.ts +11 -0
  523. package/vscode/src/vs/workbench/contrib/{agentsVoice/common/agentsVoiceColors.js → chat/browser/widget/input/editor/chatInputPlaceholderDecoration.js} +17 -15
  524. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.d.ts +3 -0
  525. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.js +16 -0
  526. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +2 -2
  527. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.d.ts +6 -4
  528. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +21 -13
  529. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +48 -8
  530. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +457 -142
  531. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.d.ts +1 -1
  532. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +22 -14
  533. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +6 -22
  534. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationBlueprint.d.ts +22 -0
  535. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationBlueprint.js +163 -0
  536. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +27 -5
  537. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +79 -32
  538. package/vscode/src/vs/workbench/contrib/chat/common/chatNotification.d.ts +6 -0
  539. package/vscode/src/vs/workbench/contrib/chat/common/chatNotification.js +12 -0
  540. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +44 -11
  541. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +404 -51
  542. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +64 -4
  543. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +33 -2
  544. package/vscode/src/vs/workbench/contrib/chat/common/chatSideChatService.d.ts +68 -0
  545. package/vscode/src/vs/workbench/contrib/chat/common/chatSideChatService.js +70 -0
  546. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -2
  547. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +18 -5
  548. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +43 -14
  549. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +4 -0
  550. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +4 -9
  551. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +164 -71
  552. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.d.ts +1 -1
  553. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +1 -1
  554. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -18
  555. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +12 -12
  556. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  557. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  558. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.d.ts +3 -1
  559. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +19 -10
  560. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +3 -1
  561. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +172 -159
  562. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/customizationMigrationService.d.ts +115 -0
  563. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/customizationMigrationService.js +69 -0
  564. package/vscode/src/vs/workbench/contrib/chat/common/sessionChatPills.d.ts +60 -0
  565. package/vscode/src/vs/workbench/contrib/chat/common/sessionChatPills.js +139 -0
  566. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  567. package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.d.ts +5 -0
  568. package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.js +21 -1
  569. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.d.ts +25 -2
  570. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +55 -18
  571. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +10 -10
  572. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +10 -10
  573. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.js +1 -1
  574. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +1 -0
  575. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +15 -15
  576. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  577. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditReviewSession.d.ts +59 -0
  578. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditReviewSession.js +323 -0
  579. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionResolver.d.ts +30 -0
  580. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionResolver.js +79 -0
  581. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +6 -2
  582. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +118 -13
  583. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  584. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  585. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  586. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  587. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  588. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +8 -8
  589. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +1 -0
  590. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.d.ts +81 -0
  591. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.js +85 -0
  592. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +17 -17
  593. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
  594. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +23 -23
  595. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
  596. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +17 -3
  597. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +81 -7
  598. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatSessionResolver.d.ts +30 -0
  599. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatSessionResolver.js +86 -0
  600. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +10 -2
  601. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +97 -18
  602. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.d.ts +2 -22
  603. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.js +10 -8
  604. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/largeOutputFileWriter.js +2 -1
  605. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +2 -0
  606. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +42 -36
  607. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +8 -0
  608. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +10 -0
  609. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +4 -4
  610. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +2 -1
  611. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  612. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +25 -16
  613. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +4 -3
  614. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/consoleCompactor/consoleCompactor.d.ts +70 -0
  615. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/consoleCompactor/consoleCompactor.js +4316 -0
  616. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  617. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  618. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  619. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  620. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +4 -4
  621. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +3 -3
  622. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +4 -4
  623. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +6 -1
  624. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +188 -148
  625. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +10 -10
  626. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  627. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  628. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  629. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  630. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +7 -0
  631. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +82 -3
  632. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.d.ts +5 -6
  633. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.js +5 -42
  634. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalOutput.d.ts +2 -0
  635. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalOutput.js +8 -0
  636. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +1 -0
  637. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +27 -8
  638. package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.d.ts +205 -0
  639. package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.js +1580 -0
  640. package/vscode/src/vs/workbench/services/agentEditorComments/browser/agentEditorCommentsOverlayWidget.d.ts +30 -0
  641. package/vscode/src/vs/workbench/services/agentEditorComments/browser/agentEditorCommentsOverlayWidget.js +175 -0
  642. package/vscode/src/vs/workbench/services/agentEditorComments/browser/media/agentEditorCommentsOverlayWidget.css +65 -0
  643. package/vscode/src/vs/workbench/services/agentHost/browser/agentSdkSetupService.d.ts +47 -0
  644. package/vscode/src/vs/workbench/services/agentHost/browser/agentSdkSetupService.js +129 -0
  645. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.d.ts +26 -8
  646. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.js +89 -27
  647. package/vscode/src/vs/workbench/services/agentHost/browser/webAgentHostEnablementService.d.ts +8 -0
  648. package/vscode/src/vs/workbench/services/agentHost/browser/webAgentHostEnablementService.js +28 -0
  649. package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.js +5 -1
  650. package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.d.ts +18 -18
  651. package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.js +159 -60
  652. package/vscode/src/vs/workbench/services/agentHost/common/editorRemoteAgentHostTransport.d.ts +47 -0
  653. package/vscode/src/vs/workbench/services/agentHost/common/editorRemoteAgentHostTransport.js +362 -0
  654. package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.d.ts +0 -1
  655. package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.js +0 -40
  656. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +0 -1110
  657. package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.js +0 -76
  658. package/vscode/src/vs/platform/agentHost/common/agentHostResourceService.d.ts +0 -63
  659. package/vscode/src/vs/platform/agentHost/common/agentHostResourceService.js +0 -25
  660. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +0 -254
  661. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +0 -451
  662. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +0 -1294
  663. package/vscode/src/vs/platform/agentHost/common/agentService.js +0 -92
  664. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/errors.d.ts +0 -186
  665. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/errors.js +0 -10
  666. package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.d.ts +0 -42
  667. package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.js +0 -7
  668. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.d.ts +0 -15
  669. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.js +0 -15
  670. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoiceColors.d.ts +0 -2
  671. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +0 -19
  672. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +0 -243
  673. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.d.ts +0 -24
  674. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +0 -77
  675. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +0 -92
  676. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +0 -224
  677. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.d.ts +0 -23
  678. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.js +0 -52
  679. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.d.ts +0 -16
  680. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +0 -96
  681. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.d.ts +0 -27
  682. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.js +0 -152
  683. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.d.ts +0 -87
  684. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.js +0 -772
  685. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.d.ts +0 -30
  686. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.js +0 -29
  687. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.d.ts +0 -20
  688. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +0 -40
  689. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/media/planReviewFeedback.css +0 -160
  690. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.d.ts +0 -9
  691. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +0 -123
  692. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.d.ts +0 -37
  693. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +0 -572
  694. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.d.ts +0 -125
  695. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.js +0 -399
  696. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.d.ts +0 -321
  697. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.js +0 -2117
  698. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.d.ts +0 -57
  699. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.js +0 -367
  700. package/vscode/src/vs/workbench/contrib/chat/common/automations/automation.d.ts +0 -78
  701. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.d.ts +0 -13
  702. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.d.ts +0 -11
  703. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.js +0 -6
  704. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.d.ts +0 -16
  705. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.js +0 -6
  706. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.d.ts +0 -46
  707. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.d.ts +0 -36
  708. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.js +0 -6
  709. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.d.ts +0 -12
  710. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.js +0 -6
  711. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +0 -9
  712. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +0 -6
  713. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.d.ts +0 -15
  714. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.js +0 -177
  715. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +0 -67
  716. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +0 -195
  717. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +0 -65
  718. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +0 -264
  719. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +0 -190
  720. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +0 -865
  721. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.d.ts +0 -31
  722. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.js +0 -122
  723. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +0 -24
  724. /package/vscode/src/vs/{workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers → platform/terminal/common/autoApprove}/sedFileWriteParser.js +0 -0
  725. /package/vscode/src/vs/{platform/agentHost/common/agentHost.config.contribution.d.ts → workbench/contrib/chat/browser/agentSessionsConfiguration.d.ts} +0 -0
@@ -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, createTextNode, addDisposableListener, getWindow, DisposableResizeObserver } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
5
+ import { $ as $$1, append, createTextNode, addDisposableListener, getWindow, DisposableResizeObserver, EventType, getActiveElement, clearNode, scheduleAtNextAnimationFrame, addDisposableGenericMouseDownListener } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
6
6
  import { status } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/aria/aria';
7
7
  import { ActionBar } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionbar';
8
8
  import { DisposableStore, Disposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
@@ -15,14 +15,15 @@ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codi
15
15
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
16
16
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
17
17
  import { WorkbenchList } from '@codingame/monaco-vscode-api/vscode/vs/platform/list/browser/listService';
18
+ import { NotSelectableGroupId } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/list/list';
18
19
  import { PromptsStorage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
19
20
  import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
20
21
  import { PromptsType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
21
- import { promptIcon, hookIcon, instructionsIcon, skillIcon, agentIcon, workspaceIcon, userIcon, pluginIcon, builtinIcon, extensionIcon } from './aiCustomizationIcons.js';
22
- import { AI_CUSTOMIZATION_ITEM_TYPE_KEY, AI_CUSTOMIZATION_ITEM_URI_KEY, AI_CUSTOMIZATION_ITEM_DISABLED_KEY, AI_CUSTOMIZATION_ITEM_STORAGE_KEY, AI_CUSTOMIZATION_ITEM_PLUGIN_URI_KEY, AICustomizationManagementItemMenuId, sectionToPromptType, AICustomizationManagementCreateMenuId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement';
22
+ import { promptIcon, hookIcon, instructionsIcon, skillIcon, agentIcon, workspaceIcon, userIcon, pluginIcon, extensionIcon, builtinIcon } from './aiCustomizationIcons.js';
23
+ import { AI_CUSTOMIZATION_ITEM_TYPE_KEY, AI_CUSTOMIZATION_ITEM_URI_KEY, AI_CUSTOMIZATION_ITEM_DISABLED_KEY, AI_CUSTOMIZATION_ITEM_STORAGE_KEY, AI_CUSTOMIZATION_ITEM_PLUGIN_URI_KEY, getAICustomizationManagementItemMenuId, sectionToPromptType, AICustomizationManagementCreateMenuId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement';
23
24
  import { IAgentPluginService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginService.service';
24
25
  import { InputBox } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/inputbox/inputBox';
25
- import { defaultInputBoxStyles, defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
26
+ import { defaultInputBoxStyles, defaultButtonStyles, getButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
26
27
  import { Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
27
28
  import { IContextViewService, IContextMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service';
28
29
  import { HighlightedLabel } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/highlightedlabel/highlightedLabel';
@@ -34,13 +35,14 @@ import { IMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/ac
34
35
  import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
35
36
  import { createActionViewItem, getContextMenuActions } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
36
37
  import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
37
- import { AICustomizationSources, AICustomizationManagementSection, BUILTIN_STORAGE } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService';
38
+ import { AICustomizationSources, AICustomizationManagementSection } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService';
38
39
  import { IAICustomizationWorkspaceService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.service';
39
- import { Separator, Action } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
40
+ import { Action, Separator } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
40
41
  import { IClipboardService } from '@codingame/monaco-vscode-api/vscode/vs/platform/clipboard/common/clipboardService.service';
41
42
  import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
42
43
  import { getDefaultHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
43
44
  import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
45
+ import { hasReadableCustomizationContent } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostCustomizationUri';
44
46
  import { generateCustomizationDebugReport } from './aiCustomizationDebugPanel.js';
45
47
  import { getCustomizationSecondaryText } from './aiCustomizationListWidgetUtils.js';
46
48
  export { truncateToFirstLine } from './aiCustomizationListWidgetUtils.js';
@@ -48,6 +50,9 @@ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platfo
48
50
  import { ICustomizationHarnessService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/customizationHarnessService.service';
49
51
  import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
50
52
  import { IAICustomizationItemsModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.service';
53
+ import { setupCollapsibleSection, renderVirtualizedSectionLoadingPlaceholder, layoutVirtualizedSections, getVirtualizedSectionMinimumHeight, layoutVirtualizedSectionList, createCustomizationCardPrimaryAction } from './customizationCardList.js';
54
+ import { DomScrollableElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/scrollbar/scrollableElement';
55
+ import { ScrollbarVisibility } from '@codingame/monaco-vscode-api/vscode/vs/base/common/scrollable';
51
56
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
52
57
 
53
58
  registerCss(aiCustomizationManagement);
@@ -96,9 +101,9 @@ class GroupHeaderRenderer {
96
101
  renderElement(element, _index, templateData) {
97
102
  templateData.elementDisposables.clear();
98
103
  templateData.chevron.className = "group-chevron";
99
- templateData.chevron.classList.add(
100
- ...ThemeIcon.asClassNameArray(element.collapsed ? Codicon.chevronRight : Codicon.chevronDown)
101
- );
104
+ templateData.chevron.classList.add(...ThemeIcon.asClassNameArray(
105
+ element.collapsed ? Codicon.chevronRightCompact : Codicon.chevronDownCompact
106
+ ));
102
107
  templateData.icon.className = "group-icon";
103
108
  templateData.icon.classList.add(...ThemeIcon.asClassNameArray(element.icon));
104
109
  templateData.label.textContent = element.label;
@@ -139,6 +144,7 @@ function formatDisplayName(name) {
139
144
  }
140
145
  let AICustomizationItemRenderer = class AICustomizationItemRenderer {
141
146
  constructor(
147
+ showItemActions,
142
148
  hoverService,
143
149
  labelService,
144
150
  menuService,
@@ -146,6 +152,7 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
146
152
  instantiationService,
147
153
  agentPluginService
148
154
  ) {
155
+ this.showItemActions = showItemActions;
149
156
  this.hoverService = hoverService;
150
157
  this.labelService = labelService;
151
158
  this.menuService = menuService;
@@ -207,9 +214,9 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
207
214
  templateData.elementDisposables.add(this.hoverService.setupDelayedHover(templateData.container, () => {
208
215
  let content;
209
216
  if (element.isBuiltin) {
210
- content = `${element.name}\n${( localize(5730, "Built-in"))}`;
217
+ content = `${element.name}\n${( localize(6240, "Built-in"))}`;
211
218
  } else if (element.extensionId) {
212
- content = `${element.name}\n${( localize(5731, "Extension: {0}", element.extensionId))}`;
219
+ content = `${element.name}\n${( localize(6241, "Extension: {0}", element.extensionId))}`;
213
220
  } else {
214
221
  const isWorkspaceItem = element.source === AICustomizationSources.local;
215
222
  const uriLabel = this.labelService.getUriLabel(element.uri, {
@@ -222,7 +229,7 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
222
229
  }
223
230
  const plugin = element.pluginUri && this.agentPluginService.plugins.get().find(p => isEqual(p.uri, element.pluginUri));
224
231
  if (plugin) {
225
- content += `\n${( localize(5732, "Plugin: {0}", plugin.label))}`;
232
+ content += `\n${( localize(6242, "Plugin: {0}", plugin.label))}`;
226
233
  }
227
234
  return {
228
235
  content,
@@ -235,7 +242,7 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
235
242
  templateData.container.classList.toggle("disabled", element.disabled);
236
243
  const displayName = element.displayName ?? formatDisplayName(element.name);
237
244
  templateData.nameLabel.set(displayName, element.nameMatches);
238
- if (element.badge) {
245
+ if (element.badge && element.promptType !== PromptsType.instructions) {
239
246
  templateData.badge.textContent = element.badge;
240
247
  templateData.badge.style.display = "";
241
248
  if (element.badgeTooltip) {
@@ -247,7 +254,8 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
247
254
  templateData.badge.textContent = "";
248
255
  templateData.badge.style.display = "none";
249
256
  }
250
- if (element.status) {
257
+ const hideLoadedStatus = element.status === "loaded" && (element.promptType === PromptsType.agent || element.promptType === PromptsType.skill || element.promptType === PromptsType.instructions);
258
+ if (element.status && !hideLoadedStatus) {
251
259
  templateData.statusIcon.style.display = "";
252
260
  templateData.statusIcon.className = "item-status-icon";
253
261
  switch (element.status) {
@@ -324,20 +332,30 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
324
332
  overlayPairs.push([AI_CUSTOMIZATION_ITEM_PLUGIN_URI_KEY, ( element.pluginUri.toString())]);
325
333
  }
326
334
  const overlay = this.contextKeyService.createOverlay(overlayPairs);
327
- const menu = templateData.elementDisposables.add(this.menuService.createMenu(AICustomizationManagementItemMenuId, overlay));
335
+ const menu = templateData.elementDisposables.add(
336
+ this.menuService.createMenu(getAICustomizationManagementItemMenuId(element.uri), overlay)
337
+ );
328
338
  const updateActions = () => {
329
- const actions = menu.getActions({
330
- arg: context,
331
- shouldForwardArgs: true
332
- });
333
- const {
334
- primary
335
- } = getContextMenuActions(actions, "inline");
336
339
  templateData.actionBar.clear();
337
- templateData.actionBar.push(primary, {
338
- icon: true,
339
- label: false
340
- });
340
+ if (element.promptType === PromptsType.agent || element.promptType === PromptsType.skill || element.promptType === PromptsType.instructions) {
341
+ const moreAction = templateData.elementDisposables.add(( new Action("aiCustomization.moreActions", ( localize(6243, "More actions for {0}", displayName)), ThemeIcon.asClassName(Codicon.ellipsis), true, () => this.showItemActions(element, templateData.actionsContainer))));
342
+ templateData.actionBar.push(moreAction, {
343
+ icon: true,
344
+ label: false
345
+ });
346
+ } else {
347
+ const actions = menu.getActions({
348
+ arg: context,
349
+ shouldForwardArgs: true
350
+ });
351
+ const {
352
+ primary
353
+ } = getContextMenuActions(actions, "inline");
354
+ templateData.actionBar.push(primary, {
355
+ icon: true,
356
+ label: false
357
+ });
358
+ }
341
359
  };
342
360
  updateActions();
343
361
  templateData.elementDisposables.add(menu.onDidChange(updateActions));
@@ -352,7 +370,7 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
352
370
  templateData.disposables.dispose();
353
371
  }
354
372
  };
355
- AICustomizationItemRenderer = ( __decorate([( __param(0, IHoverService)), ( __param(1, ILabelService)), ( __param(2, IMenuService)), ( __param(3, IContextKeyService)), ( __param(4, IInstantiationService)), ( __param(5, IAgentPluginService))], AICustomizationItemRenderer));
373
+ AICustomizationItemRenderer = ( __decorate([( __param(1, IHoverService)), ( __param(2, ILabelService)), ( __param(3, IMenuService)), ( __param(4, IContextKeyService)), ( __param(5, IInstantiationService)), ( __param(6, IAgentPluginService))], AICustomizationItemRenderer));
356
374
  function toItemsModelSection(section) {
357
375
  switch (section) {
358
376
  case AICustomizationManagementSection.Agents:
@@ -365,96 +383,130 @@ function toItemsModelSection(section) {
365
383
  return undefined;
366
384
  }
367
385
  }
386
+ function usesCustomizationCardLayout(section) {
387
+ return section === AICustomizationManagementSection.Agents || section === AICustomizationManagementSection.Skills || section === AICustomizationManagementSection.Instructions || section === AICustomizationManagementSection.Hooks || section === AICustomizationManagementSection.Prompts;
388
+ }
389
+ function getAlwaysVisibleCustomizationGroupKeys(section, isFiltering) {
390
+ return usesCustomizationCardLayout(section) && !isFiltering ? [PromptsStorage.local, PromptsStorage.user] : [];
391
+ }
392
+ function getTargetedCreateActionLabel(label, compactLabel) {
393
+ return compactLabel ?? label.replace(/^\$\([^)]+\)\s*/, "");
394
+ }
368
395
  function getCountAnnouncement(section, count, isFiltering) {
369
396
  switch (section) {
370
397
  case AICustomizationManagementSection.Agents:
371
398
  if (isFiltering) {
372
399
  if (count === 0) {
373
- return localize(5733, "No agents found");
400
+ return localize(6244, "No agents found");
374
401
  }
375
402
  if (count === 1) {
376
- return localize(5734, "1 agent found");
403
+ return localize(6245, "1 agent found");
377
404
  }
378
- return localize(5735, "{0} agents found", count);
405
+ return localize(6246, "{0} agents found", count);
379
406
  }
380
407
  if (count === 0) {
381
- return localize(5736, "No agents");
408
+ return localize(6247, "No agents");
382
409
  }
383
410
  if (count === 1) {
384
- return localize(5737, "1 agent");
411
+ return localize(6248, "1 agent");
385
412
  }
386
- return localize(5738, "{0} agents", count);
413
+ return localize(6249, "{0} agents", count);
387
414
  case AICustomizationManagementSection.Skills:
388
415
  if (isFiltering) {
389
416
  if (count === 0) {
390
- return localize(5739, "No skills found");
417
+ return localize(6250, "No skills found");
391
418
  }
392
419
  if (count === 1) {
393
- return localize(5740, "1 skill found");
420
+ return localize(6251, "1 skill found");
394
421
  }
395
- return localize(5741, "{0} skills found", count);
422
+ return localize(6252, "{0} skills found", count);
396
423
  }
397
424
  if (count === 0) {
398
- return localize(5742, "No skills");
425
+ return localize(6253, "No skills");
399
426
  }
400
427
  if (count === 1) {
401
- return localize(5743, "1 skill");
428
+ return localize(6254, "1 skill");
402
429
  }
403
- return localize(5744, "{0} skills", count);
430
+ return localize(6255, "{0} skills", count);
404
431
  case AICustomizationManagementSection.Instructions:
405
432
  if (isFiltering) {
406
433
  if (count === 0) {
407
- return localize(5745, "No instructions found");
434
+ return localize(6256, "No instructions found");
408
435
  }
409
436
  if (count === 1) {
410
- return localize(5746, "1 instruction file found");
437
+ return localize(6257, "1 instruction file found");
411
438
  }
412
- return localize(5747, "{0} instruction files found", count);
439
+ return localize(6258, "{0} instruction files found", count);
413
440
  }
414
441
  if (count === 0) {
415
- return localize(5748, "No instructions");
442
+ return localize(6259, "No instructions");
416
443
  }
417
444
  if (count === 1) {
418
- return localize(5749, "1 instruction file");
445
+ return localize(6260, "1 instruction file");
419
446
  }
420
- return localize(5750, "{0} instruction files", count);
447
+ return localize(6261, "{0} instruction files", count);
421
448
  case AICustomizationManagementSection.Hooks:
422
449
  if (isFiltering) {
423
450
  if (count === 0) {
424
- return localize(5751, "No hooks found");
451
+ return localize(6262, "No hooks found");
425
452
  }
426
453
  if (count === 1) {
427
- return localize(5752, "1 hook found");
454
+ return localize(6263, "1 hook found");
428
455
  }
429
- return localize(5753, "{0} hooks found", count);
456
+ return localize(6264, "{0} hooks found", count);
430
457
  }
431
458
  if (count === 0) {
432
- return localize(5754, "No hooks");
459
+ return localize(6265, "No hooks");
433
460
  }
434
461
  if (count === 1) {
435
- return localize(5755, "1 hook");
462
+ return localize(6266, "1 hook");
436
463
  }
437
- return localize(5756, "{0} hooks", count);
464
+ return localize(6267, "{0} hooks", count);
438
465
  case AICustomizationManagementSection.Prompts:
439
466
  default:
440
467
  if (isFiltering) {
441
468
  if (count === 0) {
442
- return localize(5757, "No prompts found");
469
+ return localize(6268, "No prompts found");
443
470
  }
444
471
  if (count === 1) {
445
- return localize(5758, "1 prompt found");
472
+ return localize(6269, "1 prompt found");
446
473
  }
447
- return localize(5759, "{0} prompts found", count);
474
+ return localize(6270, "{0} prompts found", count);
448
475
  }
449
476
  if (count === 0) {
450
- return localize(5760, "No prompts");
477
+ return localize(6271, "No prompts");
451
478
  }
452
479
  if (count === 1) {
453
- return localize(5761, "1 prompt");
480
+ return localize(6272, "1 prompt");
454
481
  }
455
- return localize(5762, "{0} prompts", count);
482
+ return localize(6273, "{0} prompts", count);
483
+ }
484
+ }
485
+ function getCollapsedCustomizationGroupKey(section, groupKey) {
486
+ return `${section}:${groupKey}`;
487
+ }
488
+ function getCustomizationItemStatusLabel(item) {
489
+ switch (item.status) {
490
+ case "loading":
491
+ return localize(6274, "Loading");
492
+ case "loaded":
493
+ return localize(6275, "Loaded");
494
+ case "degraded":
495
+ return localize(6276, "Needs attention");
496
+ case "error":
497
+ return localize(6277, "Error");
498
+ default:
499
+ return undefined;
456
500
  }
457
501
  }
502
+ function getCustomizationItemAriaLabel(item) {
503
+ const displayName = item.displayName ?? formatDisplayName(item.name);
504
+ const secondaryText = getCustomizationSecondaryText(item.description, item.filename, item.promptType);
505
+ const statusLabel = getCustomizationItemStatusLabel(item);
506
+ const accessibleSecondaryText = [secondaryText, statusLabel, item.statusMessage].filter(Boolean).join(". ");
507
+ const nameAndDescription = accessibleSecondaryText ? ( localize(6278, "{0}. {1}", displayName, accessibleSecondaryText)) : displayName;
508
+ return item.disabled ? ( localize(6279, "{0}, disabled", nameAndDescription)) : nameAndDescription;
509
+ }
458
510
  let AICustomizationListWidget = class AICustomizationListWidget extends Disposable {
459
511
  constructor(
460
512
  instantiationService,
@@ -493,16 +545,26 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
493
545
  this.commandService = commandService;
494
546
  this.itemsModel = itemsModel;
495
547
  this.agentPluginService = agentPluginService;
548
+ this.cardSectionLists = [];
549
+ this.cardRowsByUri = ( new Map());
550
+ this.cardRowsById = ( new Map());
551
+ this.cardMenuButtonsById = ( new Map());
552
+ this.cardMenuOpen = false;
496
553
  this.currentSection = AICustomizationManagementSection.Agents;
497
554
  this.allItems = [];
498
555
  this.displayEntries = [];
499
556
  this.searchQuery = "";
557
+ this.sectionLoading = false;
500
558
  this.collapsedGroups = ( new Set());
501
559
  this._layoutDeferred = false;
560
+ this.revealLastItemScheduler = this._register(( new MutableDisposable()));
502
561
  this.lastLayoutWidth = 0;
503
562
  this.lastLayoutHeight = 0;
504
563
  this.lastHeaderHeight = 0;
505
564
  this.dropdownActionDisposables = this._register(( new DisposableStore()));
565
+ this.cardDisposables = this._register(( new DisposableStore()));
566
+ this.pendingCardSectionLayout = this._register(( new MutableDisposable()));
567
+ this.cardSectionScrollPositions = ( new Map());
506
568
  this._sectionLoadId = 0;
507
569
  this.delayedFilter = ( new Delayer(200));
508
570
  this.currentSectionSubscription = this._register(( new MutableDisposable()));
@@ -514,7 +576,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
514
576
  this.onDidRequestCreate = this._onDidRequestCreate.event;
515
577
  this._onDidRequestCreateManual = this._register(( new Emitter()));
516
578
  this.onDidRequestCreateManual = this._onDidRequestCreateManual.event;
517
- this.element = $(".ai-customization-list-widget");
579
+ this.element = $(".ai-customization-list-widget.plugin-list-widget");
518
580
  this.create();
519
581
  this._register(autorun(reader => {
520
582
  this.workspaceService.activeProjectRoot.read(reader);
@@ -558,7 +620,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
558
620
  this.searchAndButtonContainer = append(this.element, $(".list-search-and-button-container"));
559
621
  this.searchContainer = append(this.searchAndButtonContainer, $(".list-search-container"));
560
622
  this.searchInput = this._register(( new InputBox(this.searchContainer, this.contextViewService, {
561
- placeholder: ( localize(5763, "Type to search...")),
623
+ placeholder: ( localize(6280, "Type to search...")),
562
624
  inputBoxStyles: defaultInputBoxStyles
563
625
  })));
564
626
  this._register(this.searchInput.onDidChange(() => {
@@ -576,14 +638,12 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
576
638
  }));
577
639
  this.addButtonContainer = append(this.searchAndButtonContainer, $(".list-add-button-container"));
578
640
  this.addButtonSimple = this._register(( new Button(this.addButtonContainer, {
579
- ...defaultButtonStyles,
580
- supportIcons: true
641
+ ...defaultButtonStyles
581
642
  })));
582
643
  this.addButtonSimple.element.classList.add("list-add-button");
583
644
  this._register(this.addButtonSimple.onDidClick(() => this.executePrimaryCreateAction()));
584
645
  this.addButton = this._register(( new ButtonWithDropdown(this.addButtonContainer, {
585
646
  ...defaultButtonStyles,
586
- supportIcons: true,
587
647
  contextMenuProvider: this.contextMenuService,
588
648
  addPrimaryActionToDropdown: false,
589
649
  actions: {
@@ -592,14 +652,38 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
592
652
  })));
593
653
  this.addButton.element.classList.add("list-add-button");
594
654
  this._register(this.addButton.onDidClick(() => this.executePrimaryCreateAction()));
595
- this.updateAddButton();
655
+ this.cardContainer = append(this.element, $(".plugin-card-container.customization-card-container"));
656
+ this.cardScrollable = this._register(( new DomScrollableElement(this.cardContainer, {
657
+ horizontal: ScrollbarVisibility.Hidden,
658
+ vertical: ScrollbarVisibility.Auto,
659
+ useShadows: false
660
+ })));
661
+ this._register(
662
+ addDisposableListener(this.cardContainer, EventType.SCROLL, () => {
663
+ this.cardScrollable.setScrollPosition({
664
+ scrollTop: this.cardContainer.scrollTop
665
+ });
666
+ })
667
+ );
668
+ this.cardScrollableNode = this.cardScrollable.getDomNode();
669
+ this.cardScrollableNode.classList.add("plugin-card-scrollable");
670
+ this.cardScrollableNode.style.display = "none";
671
+ this.element.appendChild(this.cardScrollableNode);
672
+ const cardResizeObserver = this._register(new DisposableResizeObserver(
673
+ "AICustomizationListWidget.cardScrollable",
674
+ () => this.scheduleCardSectionLayout()
675
+ ));
676
+ this._register(cardResizeObserver.observe(this.cardScrollableNode));
596
677
  this.listContainer = append(this.element, $(".list-container"));
597
678
  this.emptyStateContainer = append(this.element, $(".list-empty-state"));
598
679
  const emptyStateHeader = append(this.emptyStateContainer, $(".empty-state-header"));
599
680
  this.emptyStateText = append(emptyStateHeader, $(".empty-state-text"));
600
681
  this.emptyStateSubtext = append(this.emptyStateContainer, $(".empty-state-subtext"));
601
682
  this.emptyStateContainer.style.display = "none";
602
- const itemRenderer = this.instantiationService.createInstance(AICustomizationItemRenderer);
683
+ const itemRenderer = this.instantiationService.createInstance(
684
+ AICustomizationItemRenderer,
685
+ (item, anchor) => this.showCardItemActions(item, anchor)
686
+ );
603
687
  this.list = this._register(this.instantiationService.createInstance(
604
688
  WorkbenchList,
605
689
  "AICustomizationManagementList",
@@ -608,25 +692,27 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
608
692
  [( new GroupHeaderRenderer(this.hoverService)), itemRenderer],
609
693
  {
610
694
  identityProvider: {
611
- getId: entry => entry.type === "group-header" ? entry.id : entry.item.id
695
+ getId: entry => entry.type === "group-header" ? entry.id : entry.item.id,
696
+ getGroupId: entry => entry.type === "group-header" ? NotSelectableGroupId : 0
612
697
  },
613
698
  accessibilityProvider: {
614
699
  getAriaLabel: entry => {
615
700
  if (entry.type === "group-header") {
616
701
  return localize(
617
- 5764,
702
+ 6281,
618
703
  "{0}, {1} items, {2}",
619
704
  entry.label,
620
705
  entry.count,
621
- entry.collapsed ? ( localize(5765, "collapsed")) : ( localize(5766, "expanded"))
706
+ entry.collapsed ? ( localize(6282, "collapsed")) : ( localize(6283, "expanded"))
622
707
  );
623
708
  }
624
- const displayName = entry.item.displayName ?? formatDisplayName(entry.item.name);
625
- const secondaryText = getCustomizationSecondaryText(entry.item.description, entry.item.filename, entry.item.promptType);
626
- const nameAndDesc = secondaryText ? ( localize(5767, "{0}. {1}", displayName, secondaryText)) : displayName;
627
- return entry.item.disabled ? ( localize(5768, "{0}, disabled", nameAndDesc)) : nameAndDesc;
709
+ const label = getCustomizationItemAriaLabel(entry.item);
710
+ if (!hasReadableCustomizationContent(entry.item.uri)) {
711
+ return localize(6284, "{0}, source content unavailable", label);
712
+ }
713
+ return label;
628
714
  },
629
- getWidgetAriaLabel: () => ( localize(5769, "Agent Customizations"))
715
+ getWidgetAriaLabel: () => ( localize(6285, "Agent Customizations"))
630
716
  },
631
717
  keyboardNavigationLabelProvider: {
632
718
  getKeyboardNavigationLabel: entry => entry.type === "group-header" ? entry.label : entry.item.name
@@ -640,7 +726,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
640
726
  if (e.element.type === "group-header") {
641
727
  this.toggleGroup(e.element);
642
728
  } else {
643
- this._onDidSelectItem.fire(e.element.item);
729
+ if (hasReadableCustomizationContent(e.element.item.uri)) {
730
+ this._onDidSelectItem.fire(e.element.item);
731
+ }
644
732
  }
645
733
  }
646
734
  }));
@@ -655,13 +743,18 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
655
743
  }
656
744
  }
657
745
  }));
658
- this._register(this.list.onContextMenu(e => this.onContextMenu(e)));
746
+ this._register(this.list.onContextMenu(e => {
747
+ if (!this.usesCardLayout()) {
748
+ this.onContextMenu(e);
749
+ }
750
+ }));
659
751
  this._register(this.fileService.onDidFilesChange(e => {
660
752
  if (e.gotDeleted()) {
661
753
  this.refresh();
662
754
  }
663
755
  }));
664
756
  this.updateSectionHeader();
757
+ this.updateAddButton();
665
758
  }
666
759
  onContextMenu(e) {
667
760
  if (!e.element || e.element.type !== "file-item") {
@@ -688,16 +781,16 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
688
781
  overlayPairs.push([AI_CUSTOMIZATION_ITEM_PLUGIN_URI_KEY, ( item.pluginUri.toString())]);
689
782
  }
690
783
  const overlay = this.contextKeyService.createOverlay(overlayPairs);
691
- const actions = this.menuService.getMenuActions(AICustomizationManagementItemMenuId, overlay, {
784
+ const actions = this.menuService.getMenuActions(getAICustomizationManagementItemMenuId(item.uri), overlay, {
692
785
  arg: context,
693
786
  shouldForwardArgs: true
694
787
  });
695
788
  const {
696
789
  secondary
697
790
  } = getContextMenuActions(actions, "inline");
698
- const copyActions = item.isBuiltin ? [] : [( new Separator()), ( new Action("copyFullPath", ( localize(5770, "Copy Full Path")), undefined, true, async () => {
791
+ const copyActions = item.isBuiltin || !hasReadableCustomizationContent(item.uri) ? [] : [( new Separator()), ( new Action("copyFullPath", ( localize(6286, "Copy Full Path")), undefined, true, async () => {
699
792
  await this.clipboardService.writeText(item.uri.fsPath);
700
- })), ( new Action("copyRelativePath", ( localize(5771, "Copy Relative Path")), undefined, true, async () => {
793
+ })), ( new Action("copyRelativePath", ( localize(6287, "Copy Relative Path")), undefined, true, async () => {
701
794
  const basePath = this.workspaceService.getActiveProjectRoot();
702
795
  if (basePath && item.uri.fsPath.startsWith(basePath.fsPath)) {
703
796
  const relative = item.uri.fsPath.substring(basePath.fsPath.length + 1);
@@ -714,12 +807,102 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
714
807
  getActions: () => [...secondary, ...copyActions]
715
808
  });
716
809
  }
810
+ showCardItemActions(item, anchor) {
811
+ this.cardMenuOpen = true;
812
+ this.lastCardFocusItemId = item.id;
813
+ const disposables = ( new DisposableStore());
814
+ const context = {
815
+ uri: ( item.uri.toString()),
816
+ name: item.name,
817
+ promptType: item.promptType,
818
+ source: item.source,
819
+ pluginUri: item.pluginUri?.toString(),
820
+ itemId: item.id
821
+ };
822
+ const menu = disposables.add(this.createCardItemMenu(item));
823
+ const groups = menu.getActions({
824
+ arg: context,
825
+ shouldForwardArgs: true
826
+ });
827
+ const actions = [];
828
+ const addedActionIds = ( new Set());
829
+ for (const [, groupActions] of groups) {
830
+ const uniqueGroupActions = groupActions.filter(action => {
831
+ if (( addedActionIds.has(action.id))) {
832
+ return false;
833
+ }
834
+ addedActionIds.add(action.id);
835
+ return true;
836
+ });
837
+ if (uniqueGroupActions.length === 0) {
838
+ continue;
839
+ }
840
+ if (actions.length > 0) {
841
+ actions.push(( new Separator()));
842
+ }
843
+ actions.push(...uniqueGroupActions);
844
+ }
845
+ if (!item.isBuiltin && hasReadableCustomizationContent(item.uri)) {
846
+ if (actions.length > 0) {
847
+ actions.push(( new Separator()));
848
+ }
849
+ actions.push(disposables.add(( new Action("copyRelativePath", ( localize(6287, "Copy Relative Path")), undefined, true, async () => {
850
+ const basePath = this.workspaceService.getActiveProjectRoot();
851
+ const relativePath = basePath && item.uri.fsPath.startsWith(basePath.fsPath) ? item.uri.fsPath.substring(basePath.fsPath.length + 1) : this.labelService.getUriLabel(item.uri, {
852
+ relative: true
853
+ });
854
+ await this.clipboardService.writeText(relativePath);
855
+ }))));
856
+ }
857
+ if (actions.length === 0) {
858
+ this.cardMenuOpen = false;
859
+ disposables.dispose();
860
+ return;
861
+ }
862
+ this.contextMenuService.showContextMenu({
863
+ getAnchor: () => anchor,
864
+ getActions: () => actions,
865
+ onHide: () => {
866
+ this.cardMenuOpen = false;
867
+ if (!this.focusCardSectionItem(item.id)) {
868
+ (this.cardMenuButtonsById.get(item.id) ?? this.cardRowsById.get(item.id) ?? this.firstCardFocusElement)?.focus();
869
+ }
870
+ disposables.dispose();
871
+ }
872
+ });
873
+ }
874
+ createCardItemMenu(item) {
875
+ const overlayPairs = [
876
+ [AI_CUSTOMIZATION_ITEM_TYPE_KEY, item.promptType],
877
+ [AI_CUSTOMIZATION_ITEM_URI_KEY, ( item.uri.toString())],
878
+ [AI_CUSTOMIZATION_ITEM_DISABLED_KEY, item.disabled],
879
+ [AI_CUSTOMIZATION_ITEM_STORAGE_KEY, item.source]
880
+ ];
881
+ if (item.pluginUri) {
882
+ overlayPairs.push([AI_CUSTOMIZATION_ITEM_PLUGIN_URI_KEY, ( item.pluginUri.toString())]);
883
+ }
884
+ const overlay = this.contextKeyService.createOverlay(overlayPairs);
885
+ return this.menuService.createMenu(getAICustomizationManagementItemMenuId(item.uri), overlay);
886
+ }
887
+ hasCardItemActions(item) {
888
+ if (hasReadableCustomizationContent(item.uri)) {
889
+ return true;
890
+ }
891
+ const menu = this.createCardItemMenu(item);
892
+ try {
893
+ return ( menu.getActions().some(([, actions]) => actions.length > 0));
894
+ } finally {
895
+ menu.dispose();
896
+ }
897
+ }
717
898
  async setSection(section) {
718
899
  const loadId = ++this._sectionLoadId;
719
900
  this.currentSection = section;
901
+ this.element.classList.toggle("plugin-list-widget", this.usesCardLayout());
720
902
  this.updateSectionHeader();
721
903
  const modelSection = toItemsModelSection(section);
722
904
  if (!modelSection) {
905
+ this.sectionLoading = false;
723
906
  this.currentSectionSubscription.clear();
724
907
  this.allItems = [];
725
908
  const matchCount = this.filterItems();
@@ -729,6 +912,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
729
912
  return;
730
913
  }
731
914
  const observable = this.itemsModel.getItems(modelSection);
915
+ this.sectionLoading = true;
732
916
  this.currentSectionSubscription.value = autorun(reader => {
733
917
  const items = observable.read(reader);
734
918
  this.allItems = items;
@@ -738,6 +922,8 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
738
922
  this.updateAddButton();
739
923
  await this.itemsModel.whenSectionLoaded(modelSection);
740
924
  if (loadId === this._sectionLoadId) {
925
+ this.sectionLoading = false;
926
+ this.filterItems();
741
927
  this.announceItemCount(this.applySearchFilter(this.allItems).length);
742
928
  }
743
929
  }
@@ -748,47 +934,47 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
748
934
  let learnMoreLabel;
749
935
  switch (this.currentSection) {
750
936
  case AICustomizationManagementSection.Agents:
751
- title = ( localize(5772, "Agents"));
937
+ title = ( localize(6288, "Agents"));
752
938
  description = ( localize(
753
- 5773,
939
+ 6289,
754
940
  "Configure the AI to adopt different personas tailored to specific development tasks. Each agent has its own instructions, tools, and behavior."
755
941
  ));
756
942
  docsUrl = "https://code.visualstudio.com/docs/agent-customization/custom-agents?referrer=in-product";
757
- learnMoreLabel = ( localize(5774, "Learn more about custom agents"));
943
+ learnMoreLabel = ( localize(6290, "Learn more about custom agents"));
758
944
  break;
759
945
  case AICustomizationManagementSection.Skills:
760
- title = ( localize(5775, "Skills"));
946
+ title = ( localize(6291, "Skills"));
761
947
  description = ( localize(
762
- 5776,
948
+ 6292,
763
949
  "Folders of instructions, scripts, and resources that Copilot loads when relevant to perform specialized tasks."
764
950
  ));
765
951
  docsUrl = "https://code.visualstudio.com/docs/agent-customization/agent-skills?referrer=in-product";
766
- learnMoreLabel = ( localize(5777, "Learn more about agent skills"));
952
+ learnMoreLabel = ( localize(6293, "Learn more about agent skills"));
767
953
  break;
768
954
  case AICustomizationManagementSection.Instructions:
769
- title = ( localize(5778, "Instructions"));
955
+ title = ( localize(6294, "Instructions"));
770
956
  description = ( localize(
771
- 5779,
957
+ 6295,
772
958
  "Define common guidelines and rules that automatically influence how AI generates code and handles development tasks."
773
959
  ));
774
960
  docsUrl = "https://code.visualstudio.com/docs/agent-customization/custom-instructions?referrer=in-product";
775
- learnMoreLabel = ( localize(5780, "Learn more about custom instructions"));
961
+ learnMoreLabel = ( localize(6296, "Learn more about custom instructions"));
776
962
  break;
777
963
  case AICustomizationManagementSection.Hooks:
778
- title = ( localize(5781, "Hooks"));
779
- description = ( localize(5782, "Prompts executed at specific points during an agentic lifecycle."));
964
+ title = ( localize(6297, "Hooks"));
965
+ description = ( localize(6298, "Prompts executed at specific points during an agentic lifecycle."));
780
966
  docsUrl = "https://code.visualstudio.com/docs/agent-customization/hooks?referrer=in-product";
781
- learnMoreLabel = ( localize(5783, "Learn more about hooks"));
967
+ learnMoreLabel = ( localize(6299, "Learn more about hooks"));
782
968
  break;
783
969
  case AICustomizationManagementSection.Prompts:
784
970
  default:
785
- title = ( localize(5784, "Prompts"));
971
+ title = ( localize(6300, "Prompts"));
786
972
  description = ( localize(
787
- 5785,
973
+ 6301,
788
974
  "Reusable prompts for common development tasks like generating code, performing reviews, or scaffolding components."
789
975
  ));
790
976
  docsUrl = "https://code.visualstudio.com/docs/agent-customization/prompt-files?referrer=in-product";
791
- learnMoreLabel = ( localize(5786, "Learn more about prompt files"));
977
+ learnMoreLabel = ( localize(6302, "Learn more about prompt files"));
792
978
  break;
793
979
  }
794
980
  this.sectionTitle.textContent = title;
@@ -797,6 +983,14 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
797
983
  this.sectionLink.href = docsUrl;
798
984
  }
799
985
  updateAddButton() {
986
+ if (this.usesCardLayout()) {
987
+ this.addButton.element.style.display = "none";
988
+ this.addButtonSimple.element.style.display = "none";
989
+ if (this.allItems.length > 0 || !this.searchQuery.trim()) {
990
+ this.filterItems();
991
+ }
992
+ return;
993
+ }
800
994
  const actions = this.buildCreateActions();
801
995
  const [primary, ...dropdown] = actions;
802
996
  const hasDropdown = dropdown.length > 0;
@@ -826,7 +1020,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
826
1020
  const hasWorkspace = this.hasActiveWorkspace();
827
1021
  if (override?.commandId) {
828
1022
  return [{
829
- label: `$(${Codicon.add.id}) ${override.label}`,
1023
+ label: override.label ?? ( localize(6303, "New {0}", typeLabel)),
830
1024
  enabled: true,
831
1025
  run: () => {
832
1026
  this.commandService.executeCommand(override.commandId);
@@ -840,9 +1034,8 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
840
1034
  for (const [, group] of menuActions) {
841
1035
  for (const menuItem of group) {
842
1036
  if (menuItem instanceof MenuItemAction) {
843
- const icon = ThemeIcon.isThemeIcon(menuItem.item.icon) ? menuItem.item.icon.id : Codicon.add.id;
844
1037
  extensionCreateActions.push({
845
- label: `$(${icon}) ${typeof menuItem.item.title === "string" ? menuItem.item.title : menuItem.item.title.value}`,
1038
+ label: typeof menuItem.item.title === "string" ? menuItem.item.title : menuItem.item.title.value,
846
1039
  enabled: menuItem.enabled,
847
1040
  run: () => {
848
1041
  menuItem.run();
@@ -859,8 +1052,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
859
1052
  const addedTargets = ( new Set());
860
1053
  if (override?.rootFile && hasWorkspace) {
861
1054
  actions.push({
862
- label: `$(${Codicon.add.id}) ${override.label}`,
1055
+ label: override.label ?? ( localize(6303, "New {0}", typeLabel)),
863
1056
  enabled: true,
1057
+ target: "workspace",
864
1058
  run: () => {
865
1059
  this._onDidRequestCreateManual.fire({
866
1060
  type: promptType,
@@ -873,64 +1067,74 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
873
1067
  if (promptType === PromptsType.hook) {
874
1068
  if (!this.workspaceService.isSessionsWindow && !descriptor.hideGenerateButton) {
875
1069
  actions.push({
876
- label: `$(${Codicon.sparkle.id}) Generate ${typeLabel}`,
1070
+ label: ( localize(6304, "Generate with AI")),
1071
+ tooltip: ( localize(6305, "Generate {0} with AI", typeLabel)),
877
1072
  enabled: true,
1073
+ kind: "generate",
878
1074
  run: () => {
879
1075
  this._onDidRequestCreate.fire(promptType);
880
1076
  }
881
1077
  });
882
- if (hasWorkspace) {
883
- actions.push({
884
- label: `$(${Codicon.add.id}) ${( localize(5787, "Configure Hooks"))}`,
885
- enabled: true,
886
- run: () => {
887
- this._onDidRequestCreateManual.fire({
888
- type: promptType,
889
- target: "workspace"
890
- });
891
- }
892
- });
893
- }
894
- } else if (!override?.commandId) {
1078
+ }
1079
+ if (hasWorkspace) {
895
1080
  actions.push({
896
- label: `$(${Codicon.add.id}) ${( localize(5787, "Configure Hooks"))}`,
897
- enabled: hasWorkspace,
898
- tooltip: hasWorkspace ? undefined : ( localize(5788, "Open a workspace folder to configure hooks.")),
1081
+ label: ( localize(6306, "New Hook")),
1082
+ compactLabel: ( localize(6306, "New Hook")),
1083
+ enabled: true,
1084
+ target: "workspace",
899
1085
  run: () => {
900
1086
  this._onDidRequestCreateManual.fire({
901
1087
  type: promptType,
902
- target: "workspace"
1088
+ target: "local"
903
1089
  });
904
1090
  }
905
1091
  });
906
1092
  }
1093
+ actions.push({
1094
+ label: ( localize(6306, "New Hook")),
1095
+ compactLabel: ( localize(6306, "New Hook")),
1096
+ enabled: true,
1097
+ target: "user",
1098
+ run: () => {
1099
+ this._onDidRequestCreateManual.fire({
1100
+ type: promptType,
1101
+ target: "user"
1102
+ });
1103
+ }
1104
+ });
907
1105
  return actions;
908
1106
  }
909
1107
  if (!override?.rootFile) {
910
1108
  if (!this.workspaceService.isSessionsWindow && !descriptor.hideGenerateButton) {
911
1109
  actions.push({
912
- label: `$(${Codicon.sparkle.id}) Generate ${typeLabel}`,
1110
+ label: ( localize(6304, "Generate with AI")),
1111
+ tooltip: ( localize(6305, "Generate {0} with AI", typeLabel)),
913
1112
  enabled: true,
1113
+ kind: "generate",
914
1114
  run: () => {
915
1115
  this._onDidRequestCreate.fire(promptType);
916
1116
  }
917
1117
  });
918
1118
  } else if (hasWorkspace) {
919
1119
  actions.push({
920
- label: `$(${Codicon.add.id}) New ${createTypeLabel} (Workspace)`,
1120
+ label: ( localize(6307, "New {0} (Workspace)", createTypeLabel)),
1121
+ compactLabel: ( localize(6303, "New {0}", createTypeLabel)),
921
1122
  enabled: true,
1123
+ target: "workspace",
922
1124
  run: () => {
923
1125
  this._onDidRequestCreateManual.fire({
924
1126
  type: promptType,
925
- target: "workspace"
1127
+ target: "local"
926
1128
  });
927
1129
  }
928
1130
  });
929
1131
  addedTargets.add("workspace");
930
1132
  } else {
931
1133
  actions.push({
932
- label: `$(${Codicon.add.id}) New ${createTypeLabel} (User)`,
1134
+ label: ( localize(6308, "New {0} (User)", createTypeLabel)),
1135
+ compactLabel: ( localize(6303, "New {0}", createTypeLabel)),
933
1136
  enabled: true,
1137
+ target: "user",
934
1138
  run: () => {
935
1139
  this._onDidRequestCreateManual.fire({
936
1140
  type: promptType,
@@ -943,20 +1147,24 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
943
1147
  }
944
1148
  if (hasWorkspace && !( addedTargets.has("workspace"))) {
945
1149
  actions.push({
946
- label: `$(${Codicon.folder.id}) New ${createTypeLabel} (Workspace)`,
1150
+ label: ( localize(6307, "New {0} (Workspace)", createTypeLabel)),
1151
+ compactLabel: ( localize(6303, "New {0}", createTypeLabel)),
947
1152
  enabled: true,
1153
+ target: "workspace",
948
1154
  run: () => {
949
1155
  this._onDidRequestCreateManual.fire({
950
1156
  type: promptType,
951
- target: "workspace"
1157
+ target: "local"
952
1158
  });
953
1159
  }
954
1160
  });
955
1161
  }
956
1162
  if (!( addedTargets.has("user"))) {
957
1163
  actions.push({
958
- label: `$(${Codicon.account.id}) New ${createTypeLabel} (User)`,
1164
+ label: ( localize(6308, "New {0} (User)", createTypeLabel)),
1165
+ compactLabel: ( localize(6303, "New {0}", createTypeLabel)),
959
1166
  enabled: true,
1167
+ target: "user",
960
1168
  run: () => {
961
1169
  this._onDidRequestCreateManual.fire({
962
1170
  type: promptType,
@@ -968,8 +1176,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
968
1176
  if (hasWorkspace && override?.rootFileShortcuts && !( addedTargets.has("workspace-root"))) {
969
1177
  for (const fileName of override.rootFileShortcuts) {
970
1178
  actions.push({
971
- label: `$(${Codicon.file.id}) New ${fileName}`,
1179
+ label: ( localize(6309, "New {0}", fileName)),
972
1180
  enabled: true,
1181
+ target: "workspace",
973
1182
  run: () => {
974
1183
  this._onDidRequestCreateManual.fire({
975
1184
  type: promptType,
@@ -999,16 +1208,16 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
999
1208
  getTypeLabel() {
1000
1209
  switch (this.currentSection) {
1001
1210
  case AICustomizationManagementSection.Agents:
1002
- return localize(5789, "Agent");
1211
+ return localize(6310, "Agent");
1003
1212
  case AICustomizationManagementSection.Skills:
1004
- return localize(5790, "Skill");
1213
+ return localize(6311, "Skill");
1005
1214
  case AICustomizationManagementSection.Instructions:
1006
- return localize(5778, "Instructions");
1215
+ return localize(6312, "Instruction");
1007
1216
  case AICustomizationManagementSection.Hooks:
1008
- return localize(5791, "Hook");
1217
+ return localize(6313, "Hook");
1009
1218
  case AICustomizationManagementSection.Prompts:
1010
1219
  default:
1011
- return localize(5792, "Prompt");
1220
+ return localize(6314, "Prompt");
1012
1221
  }
1013
1222
  }
1014
1223
  announceItemCount(count) {
@@ -1068,7 +1277,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
1068
1277
  if (group.items.length === 0) {
1069
1278
  continue;
1070
1279
  }
1071
- const collapsed = ( this.collapsedGroups.has(group.groupKey));
1280
+ const collapsed = !this.usesCardLayout() && ( this.collapsedGroups.has(this.getCollapsedGroupKey(group.groupKey)));
1072
1281
  this.displayEntries.push({
1073
1282
  type: "group-header",
1074
1283
  id: `group-${group.groupKey}`,
@@ -1096,108 +1305,69 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
1096
1305
  this.updateEmptyState();
1097
1306
  }
1098
1307
  groupMatchedItems(matchedItems) {
1099
- const groups = this.currentSection === AICustomizationManagementSection.Instructions ? [{
1100
- groupKey: "agent-instructions",
1101
- label: ( localize(5793, "Agent Instructions")),
1102
- icon: instructionsIcon,
1103
- description: ( localize(
1104
- 5794,
1105
- "Instruction files automatically loaded for all agent interactions (e.g. AGENTS.md, CLAUDE.md, copilot-instructions.md)."
1106
- )),
1107
- items: []
1108
- }, {
1109
- groupKey: "context-instructions",
1110
- label: ( localize(5795, "Included Based on Context")),
1111
- icon: instructionsIcon,
1112
- description: ( localize(
1113
- 5796,
1114
- "Instructions automatically loaded when matching files are part of the context."
1115
- )),
1116
- items: []
1117
- }, {
1118
- groupKey: "on-demand-instructions",
1119
- label: ( localize(5797, "Loaded on Demand")),
1120
- icon: instructionsIcon,
1121
- description: ( localize(5798, "Instructions loaded only when explicitly referenced.")),
1122
- items: []
1123
- }, {
1308
+ const groups = [{
1124
1309
  groupKey: PromptsStorage.local,
1125
- label: ( localize(5799, "Workspace")),
1310
+ label: ( localize(6315, "Workspace")),
1126
1311
  icon: workspaceIcon,
1127
1312
  description: ( localize(
1128
- 5800,
1313
+ 6316,
1129
1314
  "Customizations stored as files in your project folder and shared with your team via version control."
1130
1315
  )),
1131
1316
  items: []
1132
1317
  }, {
1133
1318
  groupKey: PromptsStorage.user,
1134
- label: ( localize(5801, "User")),
1319
+ label: ( localize(6317, "User")),
1135
1320
  icon: userIcon,
1136
1321
  description: ( localize(
1137
- 5802,
1322
+ 6318,
1138
1323
  "Customizations stored locally on your machine in a central location. Private to you and available across all projects."
1139
1324
  )),
1140
1325
  items: []
1141
1326
  }, {
1142
1327
  groupKey: PromptsStorage.plugin,
1143
- label: ( localize(5803, "Plugins")),
1328
+ label: ( localize(6319, "Plugins")),
1144
1329
  icon: pluginIcon,
1145
- description: ( localize(5804, "Read-only customizations provided by installed plugins.")),
1146
- items: []
1147
- }, {
1148
- groupKey: BUILTIN_STORAGE,
1149
- label: ( localize(5805, "Built-in")),
1150
- icon: builtinIcon,
1151
- description: ( localize(5806, "Built-in customizations shipped with the application.")),
1152
- items: []
1153
- }] : [{
1154
- groupKey: PromptsStorage.local,
1155
- label: ( localize(5799, "Workspace")),
1156
- icon: workspaceIcon,
1157
- description: ( localize(
1158
- 5800,
1159
- "Customizations stored as files in your project folder and shared with your team via version control."
1160
- )),
1161
- items: []
1162
- }, {
1163
- groupKey: PromptsStorage.user,
1164
- label: ( localize(5801, "User")),
1165
- icon: userIcon,
1166
- description: ( localize(
1167
- 5802,
1168
- "Customizations stored locally on your machine in a central location. Private to you and available across all projects."
1169
- )),
1170
- items: []
1171
- }, {
1172
- groupKey: PromptsStorage.plugin,
1173
- label: ( localize(5803, "Plugins")),
1174
- icon: pluginIcon,
1175
- description: ( localize(5804, "Read-only customizations provided by installed plugins.")),
1330
+ description: ( localize(6320, "Read-only customizations provided by installed plugins.")),
1176
1331
  items: []
1177
1332
  }, {
1178
1333
  groupKey: PromptsStorage.extension,
1179
- label: ( localize(5807, "Extensions")),
1334
+ label: ( localize(6321, "Extensions")),
1180
1335
  icon: extensionIcon,
1181
- description: ( localize(5808, "Read-only customizations provided by installed extensions.")),
1336
+ description: ( localize(6322, "Read-only customizations provided by installed extensions.")),
1182
1337
  items: []
1183
1338
  }, {
1184
- groupKey: BUILTIN_STORAGE,
1185
- label: ( localize(5805, "Built-in")),
1339
+ groupKey: PromptsStorage.builtIn,
1340
+ label: ( localize(6323, "Built-in")),
1186
1341
  icon: builtinIcon,
1187
- description: ( localize(5806, "Built-in customizations shipped with the application.")),
1342
+ description: ( localize(6324, "Built-in customizations shipped with the application.")),
1188
1343
  items: []
1189
1344
  }];
1190
1345
  for (const item of matchedItems) {
1191
- const key = item.groupKey ?? item.source ?? AICustomizationSources.local;
1346
+ const key = this.currentSection === AICustomizationManagementSection.Instructions ? item.source : item.groupKey ?? item.source ?? AICustomizationSources.local;
1192
1347
  let group = groups.find(g => g.groupKey === key);
1193
1348
  if (!group) {
1194
1349
  let label;
1350
+ let description = "";
1195
1351
  switch (key) {
1196
1352
  case "remote-host":
1197
- label = ( localize(5809, "Remote"));
1353
+ label = ( localize(6325, "Remote"));
1354
+ if (this.currentSection === AICustomizationManagementSection.Skills) {
1355
+ description = ( localize(
1356
+ 6326,
1357
+ "Skills available from {0}, the active remote agent environment.",
1358
+ this.harnessService.getActiveDescriptor().label
1359
+ ));
1360
+ }
1198
1361
  break;
1199
1362
  case "remote-client":
1200
- label = ( localize(5810, "Local"));
1363
+ label = ( localize(6327, "Local"));
1364
+ if (this.currentSection === AICustomizationManagementSection.Skills) {
1365
+ description = ( localize(
1366
+ 6328,
1367
+ "Skills stored on your local machine and synced to {0}, the active remote agent environment.",
1368
+ this.harnessService.getActiveDescriptor().label
1369
+ ));
1370
+ }
1201
1371
  break;
1202
1372
  default:
1203
1373
  label = formatDisplayName(key);
@@ -1206,10 +1376,10 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
1206
1376
  groupKey: key,
1207
1377
  label,
1208
1378
  icon: Codicon.folder,
1209
- description: "",
1379
+ description,
1210
1380
  items: []
1211
1381
  };
1212
- const builtinIdx = groups.findIndex(g => g.groupKey === BUILTIN_STORAGE);
1382
+ const builtinIdx = groups.findIndex(g => g.groupKey === PromptsStorage.builtIn);
1213
1383
  if (builtinIdx >= 0) {
1214
1384
  groups.splice(builtinIdx, 0, group);
1215
1385
  } else {
@@ -1219,7 +1389,458 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
1219
1389
  group.items.push(item);
1220
1390
  }
1221
1391
  this.buildGroupedEntries(groups);
1222
- this.commitDisplayEntries();
1392
+ if (this.usesCardLayout()) {
1393
+ this.renderCardGroups(groups);
1394
+ } else {
1395
+ this.commitDisplayEntries();
1396
+ }
1397
+ }
1398
+ usesCardLayout() {
1399
+ return usesCustomizationCardLayout(this.currentSection);
1400
+ }
1401
+ renderCardGroups(groups) {
1402
+ const activeElement = getActiveElement();
1403
+ const shouldRestoreFocus = this.cardMenuOpen || !!activeElement && this.cardContainer.contains(activeElement);
1404
+ const focusItemId = this.lastCardFocusItemId;
1405
+ const isFiltering = !!this.searchQuery.trim();
1406
+ const usesTargetedCreateActions = this.usesTargetedCreateActions();
1407
+ const createGroupKey = isFiltering || usesTargetedCreateActions ? undefined : this.getCreateActionGroupKey();
1408
+ const alwaysVisibleGroupKeys = ( new Set(getAlwaysVisibleCustomizationGroupKeys(this.currentSection, isFiltering)));
1409
+ const visibleGroups = groups.filter(group => group.items.length > 0 || ( alwaysVisibleGroupKeys.has(group.groupKey)) || group.groupKey === createGroupKey || this.sectionLoading && !isFiltering);
1410
+ if (visibleGroups.length === 0) {
1411
+ this.captureCardSectionScrollPositions();
1412
+ this.cardDisposables.clear();
1413
+ this.cardSectionLists = [];
1414
+ this.cardRowsByUri.clear();
1415
+ this.cardRowsById.clear();
1416
+ this.cardMenuButtonsById.clear();
1417
+ this.firstCardFocusElement = undefined;
1418
+ this.cardSectionLayoutContainer = undefined;
1419
+ clearNode(this.cardContainer);
1420
+ this.cardScrollableNode.style.display = "none";
1421
+ this.updateEmptyState();
1422
+ return;
1423
+ }
1424
+ if (createGroupKey) {
1425
+ const createGroupIndex = visibleGroups.findIndex(group => group.groupKey === createGroupKey);
1426
+ if (createGroupIndex > 0) {
1427
+ visibleGroups.unshift(...visibleGroups.splice(createGroupIndex, 1));
1428
+ }
1429
+ }
1430
+ this.captureCardSectionScrollPositions();
1431
+ this.cardDisposables.clear();
1432
+ this.cardSectionLists = [];
1433
+ this.cardRowsByUri.clear();
1434
+ this.cardRowsById.clear();
1435
+ this.cardMenuButtonsById.clear();
1436
+ this.firstCardFocusElement = undefined;
1437
+ this.cardSectionLayoutContainer = undefined;
1438
+ clearNode(this.cardContainer);
1439
+ this.listContainer.style.display = "none";
1440
+ this.emptyStateContainer.style.display = "none";
1441
+ this.cardScrollableNode.style.display = "";
1442
+ const content = append(this.cardContainer, $(
1443
+ ".plugin-card-scroll.plugin-card-scroll-content.customization-card-scroll.distributed-section-layout"
1444
+ ));
1445
+ this.cardSectionLayoutContainer = content;
1446
+ const contentResizeObserver = this.cardDisposables.add(new DisposableResizeObserver(
1447
+ "AICustomizationListWidget.cardScrollContent",
1448
+ () => this.scheduleCardSectionLayout()
1449
+ ));
1450
+ this.cardDisposables.add(contentResizeObserver.observe(content));
1451
+ for (const group of visibleGroups) {
1452
+ const collapsedGroupKey = this.getCollapsedGroupKey(group.groupKey);
1453
+ const section = append(content, $(".plugin-card-section.customization-card-section"));
1454
+ const header = append(section, $(".plugin-card-section-header"));
1455
+ const text = append(header, $(".plugin-card-section-text"));
1456
+ const headingRow = append(text, $(".plugin-card-section-heading-row"));
1457
+ const heading = append(headingRow, $("h3.plugin-card-section-title"));
1458
+ heading.textContent = group.label;
1459
+ const count = append(headingRow, $(".plugin-card-section-count"));
1460
+ count.textContent = String(group.items.length);
1461
+ if (group.description) {
1462
+ const description = append(text, $(".plugin-card-section-description"));
1463
+ description.textContent = group.description;
1464
+ }
1465
+ if (!isFiltering && usesTargetedCreateActions && (group.groupKey === PromptsStorage.local || group.groupKey === PromptsStorage.user)) {
1466
+ this.renderTargetedCardCreateActions(header, group.groupKey);
1467
+ } else if (group.groupKey === createGroupKey) {
1468
+ this.renderCardCreateActions(header);
1469
+ }
1470
+ const inventory = append(section, $(
1471
+ ".plugin-card-grid.plugin-inventory-list.customization-inventory-list.virtualized-section-list"
1472
+ ));
1473
+ setupCollapsibleSection(headingRow, inventory, group.label, this.cardDisposables, ( this.collapsedGroups.has(collapsedGroupKey)), collapsed => {
1474
+ if (collapsed) {
1475
+ this.collapsedGroups.add(collapsedGroupKey);
1476
+ } else {
1477
+ this.collapsedGroups.delete(collapsedGroupKey);
1478
+ }
1479
+ this.layoutCardSectionLists();
1480
+ this.cardScrollable.scanDomNode();
1481
+ this.scheduleCardSectionLayout();
1482
+ });
1483
+ if (group.items.length === 0) {
1484
+ if (this.sectionLoading) {
1485
+ renderVirtualizedSectionLoadingPlaceholder(inventory, ( localize(6329, "Loading customizations...")), ITEM_HEIGHT);
1486
+ } else {
1487
+ const empty = append(inventory, $(".plugin-inventory-empty"));
1488
+ empty.textContent = this.getEmptyGroupMessage(group.groupKey);
1489
+ }
1490
+ continue;
1491
+ }
1492
+ this.createCustomizationSectionList(inventory, group.groupKey, group.label, group.items);
1493
+ }
1494
+ this.layoutCardSectionLists();
1495
+ this.cardScrollable.scanDomNode();
1496
+ this.scheduleCardSectionLayout();
1497
+ if (shouldRestoreFocus) {
1498
+ getWindow(this.element).requestAnimationFrame(() => {
1499
+ if (!focusItemId || !this.focusCardSectionItem(focusItemId)) {
1500
+ this.firstCardFocusElement?.focus();
1501
+ }
1502
+ });
1503
+ }
1504
+ }
1505
+ createCustomizationSectionList(container, groupKey, label, items) {
1506
+ const key = `${this.currentSection}:${groupKey}`;
1507
+ container.style.height = `${ITEM_HEIGHT}px`;
1508
+ const itemRenderer = this.instantiationService.createInstance(
1509
+ AICustomizationItemRenderer,
1510
+ (item, anchor) => this.showCardItemActions(item, anchor)
1511
+ );
1512
+ const list = this.cardDisposables.add(this.instantiationService.createInstance(
1513
+ WorkbenchList,
1514
+ `AICustomizationManagementList.${label}`,
1515
+ container,
1516
+ ( new AICustomizationListDelegate()),
1517
+ [itemRenderer],
1518
+ {
1519
+ identityProvider: {
1520
+ getId: entry => entry.item.id
1521
+ },
1522
+ accessibilityProvider: {
1523
+ getAriaLabel: entry => getCustomizationItemAriaLabel(entry.item),
1524
+ getWidgetAriaLabel: () => label,
1525
+ getSetSize: (_entry, _index, listLength) => listLength,
1526
+ getPosInSet: (_entry, index) => index + 1
1527
+ },
1528
+ keyboardNavigationLabelProvider: {
1529
+ getKeyboardNavigationLabel: entry => entry.item.name
1530
+ },
1531
+ multipleSelectionSupport: false,
1532
+ openOnSingleClick: true
1533
+ }
1534
+ ));
1535
+ list.splice(0, 0, ( items.map(item => ({
1536
+ type: "file-item",
1537
+ item
1538
+ }))));
1539
+ list.scrollTop = this.cardSectionScrollPositions.get(key) ?? 0;
1540
+ this.cardDisposables.add(list.onDidOpen(event => {
1541
+ if (event.element) {
1542
+ this._onDidSelectItem.fire(event.element.item);
1543
+ }
1544
+ }));
1545
+ this.cardDisposables.add(list.onDidChangeFocus(event => {
1546
+ itemRenderer.setFocusedIndex(event.indexes.length ? event.indexes[0] : -1);
1547
+ if (event.elements.length > 0) {
1548
+ this.lastCardFocusItemId = event.elements[0].item.id;
1549
+ }
1550
+ }));
1551
+ this.cardDisposables.add(list.onDidFocus(() => {
1552
+ if (list.getFocus().length === 0 && items.length > 0) {
1553
+ list.setFocus([0]);
1554
+ }
1555
+ }));
1556
+ this.cardDisposables.add(list.onContextMenu(event => this.onContextMenu(event)));
1557
+ this.cardSectionLists.push({
1558
+ list,
1559
+ items,
1560
+ container,
1561
+ key
1562
+ });
1563
+ }
1564
+ captureCardSectionScrollPositions() {
1565
+ for (const section of this.cardSectionLists) {
1566
+ this.cardSectionScrollPositions.set(section.key, section.list.scrollTop);
1567
+ }
1568
+ }
1569
+ layoutCardSectionLists() {
1570
+ const content = this.cardSectionLayoutContainer;
1571
+ if (!content) {
1572
+ return;
1573
+ }
1574
+ const heights = layoutVirtualizedSections(content, ( this.cardSectionLists.map(section => ({
1575
+ container: section.container,
1576
+ contentHeight: section.items.length * ITEM_HEIGHT,
1577
+ minimumHeight: getVirtualizedSectionMinimumHeight(section.items, () => ITEM_HEIGHT)
1578
+ }))));
1579
+ for (let index = 0; index < this.cardSectionLists.length; index++) {
1580
+ const section = this.cardSectionLists[index];
1581
+ const height = heights[index];
1582
+ layoutVirtualizedSectionList(
1583
+ section.list,
1584
+ section.container,
1585
+ height,
1586
+ section.container.clientWidth || undefined
1587
+ );
1588
+ }
1589
+ }
1590
+ scheduleCardSectionLayout() {
1591
+ const targetWindow = getWindow(this.element);
1592
+ this.pendingCardSectionLayout.value = scheduleAtNextAnimationFrame(targetWindow, () => {
1593
+ this.layoutCardSectionLists();
1594
+ this.cardScrollable.scanDomNode();
1595
+ });
1596
+ }
1597
+ focusCardSectionItem(itemId) {
1598
+ for (const section of this.cardSectionLists) {
1599
+ const index = section.items.findIndex(item => item.id === itemId);
1600
+ if (index >= 0) {
1601
+ section.list.reveal(index);
1602
+ section.list.setFocus([index]);
1603
+ section.list.domFocus();
1604
+ return true;
1605
+ }
1606
+ }
1607
+ return false;
1608
+ }
1609
+ usesTargetedCreateActions() {
1610
+ return this.currentSection === AICustomizationManagementSection.Agents || this.currentSection === AICustomizationManagementSection.Skills || this.currentSection === AICustomizationManagementSection.Instructions || this.currentSection === AICustomizationManagementSection.Hooks || this.currentSection === AICustomizationManagementSection.Prompts;
1611
+ }
1612
+ getCreateActionGroupKey() {
1613
+ if (this.buildCreateActions().length === 0) {
1614
+ return undefined;
1615
+ }
1616
+ return this.hasActiveWorkspace() ? PromptsStorage.local : PromptsStorage.user;
1617
+ }
1618
+ renderTargetedCardCreateActions(header, groupKey) {
1619
+ const target = groupKey === PromptsStorage.local ? "workspace" : "user";
1620
+ const hasWorkspace = this.hasActiveWorkspace();
1621
+ const actions = this.buildCreateActions().filter(
1622
+ action => action.target === target || action.target === undefined && (target === "workspace" ? hasWorkspace : !hasWorkspace)
1623
+ );
1624
+ const primary = actions.find(action => action.target === target) ?? actions[0];
1625
+ if (!primary) {
1626
+ return;
1627
+ }
1628
+ const container = append(header, $(".plugin-card-section-actions"));
1629
+ const label = this.formatTargetedCreateActionLabel(primary);
1630
+ const button = this.cardDisposables.add(( new Button(container, {
1631
+ ...defaultButtonStyles,
1632
+ secondary: true,
1633
+ title: primary.tooltip ?? label,
1634
+ ariaLabel: primary.tooltip ?? label
1635
+ })));
1636
+ button.element.classList.add("customization-create-action");
1637
+ button.label = label;
1638
+ button.enabled = primary.enabled;
1639
+ this.firstCardFocusElement ??= button.element;
1640
+ this.cardDisposables.add(button.onDidClick(() => primary.run()));
1641
+ const generateAction = actions.find(action => action.kind === "generate");
1642
+ if (generateAction && generateAction !== primary) {
1643
+ const generateButton = this.cardDisposables.add(( new Button(container, {
1644
+ ...defaultButtonStyles,
1645
+ secondary: true,
1646
+ title: generateAction.tooltip ?? generateAction.label,
1647
+ ariaLabel: generateAction.tooltip ?? generateAction.label
1648
+ })));
1649
+ generateButton.element.classList.add("customization-generate-action");
1650
+ generateButton.label = generateAction.label;
1651
+ generateButton.enabled = generateAction.enabled;
1652
+ this.cardDisposables.add(generateButton.onDidClick(() => generateAction.run()));
1653
+ }
1654
+ const secondaryActions = actions.filter(action => action !== primary && action !== generateAction);
1655
+ if (secondaryActions.length > 0) {
1656
+ const moreLabel = ( localize(
1657
+ 6330,
1658
+ "More creation actions for {0}",
1659
+ groupKey === PromptsStorage.local ? ( localize(6331, "Workspace")) : ( localize(6332, "User"))
1660
+ ));
1661
+ const more = this.cardDisposables.add(( new Button(container, {
1662
+ ...getButtonStyles({
1663
+ buttonSecondaryBackground: undefined,
1664
+ buttonSecondaryBorder: undefined
1665
+ }),
1666
+ secondary: true,
1667
+ supportIcons: true,
1668
+ title: moreLabel,
1669
+ ariaLabel: moreLabel
1670
+ })));
1671
+ more.element.classList.add("plugin-card-icon-button", "customization-create-more-action");
1672
+ more.label = `$(${Codicon.ellipsis.id})`;
1673
+ this.cardDisposables.add(
1674
+ more.onDidClick(() => this.showCreateActionsMenu(secondaryActions, more.element))
1675
+ );
1676
+ }
1677
+ }
1678
+ formatTargetedCreateActionLabel(action) {
1679
+ return getTargetedCreateActionLabel(action.label, action.compactLabel);
1680
+ }
1681
+ showCreateActionsMenu(createActions, anchor) {
1682
+ const disposables = ( new DisposableStore());
1683
+ const actions = ( createActions.map((action, index) => disposables.add(( new Action(
1684
+ `customization.create.${index}`,
1685
+ action.label.replace(/^\$\([^)]+\)\s*/, ""),
1686
+ undefined,
1687
+ action.enabled,
1688
+ () => action.run()
1689
+ )))));
1690
+ this.contextMenuService.showContextMenu({
1691
+ getAnchor: () => anchor,
1692
+ getActions: () => actions,
1693
+ onHide: () => disposables.dispose()
1694
+ });
1695
+ }
1696
+ getEmptyGroupMessage(groupKey) {
1697
+ const workspace = groupKey === PromptsStorage.local;
1698
+ switch (this.currentSection) {
1699
+ case AICustomizationManagementSection.Agents:
1700
+ return workspace ? ( localize(6333, "No workspace agents yet.")) : ( localize(6334, "No user agents yet."));
1701
+ case AICustomizationManagementSection.Skills:
1702
+ return workspace ? ( localize(6335, "No workspace skills yet.")) : ( localize(6336, "No user skills yet."));
1703
+ case AICustomizationManagementSection.Instructions:
1704
+ return workspace ? ( localize(6337, "No workspace instructions yet.")) : ( localize(6338, "No user instructions yet."));
1705
+ case AICustomizationManagementSection.Hooks:
1706
+ return workspace ? ( localize(6339, "No workspace hooks yet.")) : ( localize(6340, "No user hooks yet."));
1707
+ case AICustomizationManagementSection.Prompts:
1708
+ return workspace ? ( localize(6341, "No workspace prompts yet.")) : ( localize(6342, "No user prompts yet."));
1709
+ default:
1710
+ return localize(6343, "No customizations are available.");
1711
+ }
1712
+ }
1713
+ renderCardCreateActions(header) {
1714
+ const actions = this.buildCreateActions();
1715
+ const [primary, ...dropdown] = actions;
1716
+ if (!primary) {
1717
+ return;
1718
+ }
1719
+ const container = append(header, $(".plugin-card-section-actions"));
1720
+ const accessibleLabel = primary.tooltip ?? primary.label.replace(/\$\([^)]+\)\s*/g, "");
1721
+ if (dropdown.length > 0) {
1722
+ const button = this.cardDisposables.add(( new ButtonWithDropdown(container, {
1723
+ ...defaultButtonStyles,
1724
+ secondary: true,
1725
+ contextMenuProvider: this.contextMenuService,
1726
+ addPrimaryActionToDropdown: false,
1727
+ actions: {
1728
+ getActions: () => this.getDropdownActions()
1729
+ },
1730
+ title: accessibleLabel,
1731
+ ariaLabel: accessibleLabel
1732
+ })));
1733
+ button.element.classList.add("customization-create-action");
1734
+ button.label = primary.label;
1735
+ button.enabled = primary.enabled;
1736
+ this.firstCardFocusElement ??= button.element;
1737
+ this.cardDisposables.add(button.onDidClick(() => this.executePrimaryCreateAction()));
1738
+ return;
1739
+ }
1740
+ const button = this.cardDisposables.add(( new Button(container, {
1741
+ ...defaultButtonStyles,
1742
+ secondary: true,
1743
+ title: accessibleLabel,
1744
+ ariaLabel: accessibleLabel
1745
+ })));
1746
+ button.element.classList.add("customization-create-action");
1747
+ button.label = primary.label;
1748
+ button.enabled = primary.enabled;
1749
+ this.firstCardFocusElement ??= button.element;
1750
+ this.cardDisposables.add(button.onDidClick(() => this.executePrimaryCreateAction()));
1751
+ }
1752
+ appendCustomizationCardRow(parent, item, groupLabel, cardList) {
1753
+ const row = append(parent, $(".plugin-list-item.plugin-home-row.customization-home-row"));
1754
+ row.classList.toggle("disabled", item.disabled);
1755
+ const displayName = item.displayName ?? formatDisplayName(item.name);
1756
+ const secondaryText = getCustomizationSecondaryText(item.description, item.filename, item.promptType);
1757
+ const statusLabel = getCustomizationItemStatusLabel(item);
1758
+ const accessibleSecondaryText = [secondaryText, statusLabel].filter(Boolean).join(". ");
1759
+ const accessibleLabel = item.disabled ? ( localize(
1760
+ 6344,
1761
+ "{0}. {1}. Disabled",
1762
+ displayName,
1763
+ accessibleSecondaryText || groupLabel
1764
+ )) : ( localize(6345, "{0}. {1}", displayName, accessibleSecondaryText || groupLabel));
1765
+ const primary = createCustomizationCardPrimaryAction(row, accessibleLabel, "customization-row-primary");
1766
+ const hasReadableContent = hasReadableCustomizationContent(item.uri);
1767
+ if (!hasReadableContent) {
1768
+ primary.setAttribute("aria-disabled", "true");
1769
+ }
1770
+ this.firstCardFocusElement ??= primary;
1771
+ if (!( this.cardRowsByUri.has(( item.uri.toString())))) {
1772
+ this.cardRowsByUri.set(( item.uri.toString()), primary);
1773
+ }
1774
+ this.cardRowsById.set(item.id, primary);
1775
+ this.cardDisposables.add(addDisposableListener(primary, "focus", () => {
1776
+ this.lastCardFocusItemId = item.id;
1777
+ }));
1778
+ if (hasReadableContent) {
1779
+ this.cardDisposables.add(
1780
+ addDisposableListener(primary, "click", () => this._onDidSelectItem.fire(item))
1781
+ );
1782
+ }
1783
+ const hasItemActions = this.hasCardItemActions(item);
1784
+ if (hasItemActions) {
1785
+ this.cardDisposables.add(addDisposableListener(row, "contextmenu", event => {
1786
+ event.preventDefault();
1787
+ this.showCardItemActions(item, row);
1788
+ }));
1789
+ }
1790
+ this.cardDisposables.add(this.hoverService.setupDelayedHover(row, () => ({
1791
+ content: `${displayName}\n${this.labelService.getUriLabel(item.uri, {
1792
+ relative: item.source === AICustomizationSources.local
1793
+ })}`,
1794
+ appearance: {
1795
+ compact: true,
1796
+ skipFadeInAnimation: true
1797
+ }
1798
+ })));
1799
+ const details = append(primary, $(".plugin-list-item-details"));
1800
+ const nameRow = append(details, $(".plugin-list-item-name-row"));
1801
+ const name = append(nameRow, $(".plugin-list-item-name"));
1802
+ name.textContent = displayName;
1803
+ if (item.badge && item.promptType !== PromptsType.instructions) {
1804
+ const badge = append(nameRow, $(".inline-badge.item-badge"));
1805
+ badge.textContent = item.badge;
1806
+ badge.title = item.badgeTooltip ?? item.badge;
1807
+ }
1808
+ const description = append(details, $(".plugin-list-item-description"));
1809
+ description.textContent = secondaryText ?? ( localize(6346, "No description provided."));
1810
+ const actionElements = [];
1811
+ if (hasItemActions) {
1812
+ const actionContainer = append(row, $(".plugin-list-item-action"));
1813
+ this.cardDisposables.add(
1814
+ addDisposableGenericMouseDownListener(actionContainer, e => e.stopPropagation())
1815
+ );
1816
+ this.cardDisposables.add(
1817
+ addDisposableListener(actionContainer, "click", e => e.stopPropagation())
1818
+ );
1819
+ const more = this.cardDisposables.add(( new Button(actionContainer, {
1820
+ ...getButtonStyles({
1821
+ buttonSecondaryBackground: undefined,
1822
+ buttonSecondaryBorder: undefined
1823
+ }),
1824
+ secondary: true,
1825
+ supportIcons: true,
1826
+ ariaLabel: ( localize(6243, "More actions for {0}", displayName))
1827
+ })));
1828
+ more.element.classList.add("plugin-card-icon-button");
1829
+ more.label = `$(${Codicon.ellipsis.id})`;
1830
+ this.cardMenuButtonsById.set(item.id, more.element);
1831
+ this.cardDisposables.add(addDisposableListener(more.element, "focus", () => {
1832
+ this.lastCardFocusItemId = item.id;
1833
+ }));
1834
+ this.cardDisposables.add(more.onDidClick(() => this.showCardItemActions(item, more.element)));
1835
+ actionElements.push(more.element);
1836
+ }
1837
+ cardList.addItem({
1838
+ row,
1839
+ primaryAction: primary,
1840
+ label: displayName,
1841
+ actions: actionElements,
1842
+ contextMenuAction: actionElements[0]
1843
+ });
1223
1844
  }
1224
1845
  filterItems() {
1225
1846
  const matchedItems = this.applySearchFilter(this.allItems);
@@ -1227,21 +1848,26 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
1227
1848
  return matchedItems.length;
1228
1849
  }
1229
1850
  toggleGroup(entry) {
1230
- if (( this.collapsedGroups.has(entry.groupKey))) {
1231
- this.collapsedGroups.delete(entry.groupKey);
1851
+ const collapsedGroupKey = this.getCollapsedGroupKey(entry.groupKey);
1852
+ if (( this.collapsedGroups.has(collapsedGroupKey))) {
1853
+ this.collapsedGroups.delete(collapsedGroupKey);
1232
1854
  } else {
1233
- this.collapsedGroups.add(entry.groupKey);
1855
+ this.collapsedGroups.add(collapsedGroupKey);
1234
1856
  }
1235
1857
  this.filterItems();
1236
1858
  }
1859
+ getCollapsedGroupKey(groupKey) {
1860
+ return getCollapsedCustomizationGroupKey(this.currentSection, groupKey);
1861
+ }
1237
1862
  updateEmptyState() {
1238
1863
  const hasItems = this.displayEntries.length > 0;
1239
1864
  if (!hasItems) {
1865
+ this.cardScrollableNode.style.display = "none";
1240
1866
  this.emptyStateContainer.style.display = "flex";
1241
1867
  this.listContainer.style.display = "none";
1242
1868
  if (this.searchQuery.trim()) {
1243
- this.emptyStateText.textContent = ( localize(5811, "No items match '{0}'", this.searchQuery));
1244
- this.emptyStateSubtext.textContent = ( localize(5812, "Try a different search term"));
1869
+ this.emptyStateText.textContent = ( localize(6347, "No items match '{0}'", this.searchQuery));
1870
+ this.emptyStateSubtext.textContent = ( localize(6348, "Try a different search term"));
1245
1871
  } else {
1246
1872
  const emptyInfo = this.getEmptyStateInfo();
1247
1873
  this.emptyStateText.textContent = emptyInfo.title;
@@ -1249,36 +1875,37 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
1249
1875
  }
1250
1876
  } else {
1251
1877
  this.emptyStateContainer.style.display = "none";
1252
- this.listContainer.style.display = "";
1878
+ this.listContainer.style.display = this.usesCardLayout() ? "none" : "";
1879
+ this.cardScrollableNode.style.display = this.usesCardLayout() ? "" : "none";
1253
1880
  }
1254
1881
  }
1255
1882
  getEmptyStateInfo() {
1256
1883
  switch (this.currentSection) {
1257
1884
  case AICustomizationManagementSection.Agents:
1258
1885
  return {
1259
- title: ( localize(5813, "No agents yet")),
1260
- description: ( localize(5814, "Create your first custom agent to get started"))
1886
+ title: ( localize(6349, "No agents yet")),
1887
+ description: ( localize(6350, "Create your first custom agent to get started"))
1261
1888
  };
1262
1889
  case AICustomizationManagementSection.Skills:
1263
1890
  return {
1264
- title: ( localize(5815, "No skills yet")),
1265
- description: ( localize(5816, "Create your first skill to extend agent capabilities"))
1891
+ title: ( localize(6351, "No skills yet")),
1892
+ description: ( localize(6352, "Create your first skill to extend agent capabilities"))
1266
1893
  };
1267
1894
  case AICustomizationManagementSection.Instructions:
1268
1895
  return {
1269
- title: ( localize(5817, "No instructions yet")),
1270
- description: ( localize(5818, "Add instructions to teach Copilot about your codebase"))
1896
+ title: ( localize(6353, "No instructions yet")),
1897
+ description: ( localize(6354, "Add instructions to teach Copilot about your codebase"))
1271
1898
  };
1272
1899
  case AICustomizationManagementSection.Hooks:
1273
1900
  return {
1274
- title: ( localize(5819, "No hooks yet")),
1275
- description: ( localize(5820, "Create hooks to execute commands at agent lifecycle events"))
1901
+ title: ( localize(6355, "No hooks yet")),
1902
+ description: ( localize(6356, "Create hooks to execute commands at agent lifecycle events"))
1276
1903
  };
1277
1904
  case AICustomizationManagementSection.Prompts:
1278
1905
  default:
1279
1906
  return {
1280
- title: ( localize(5821, "No prompts yet")),
1281
- description: ( localize(5822, "Create reusable prompts for common tasks"))
1907
+ title: ( localize(6357, "No prompts yet")),
1908
+ description: ( localize(6358, "Create reusable prompts for common tasks"))
1282
1909
  };
1283
1910
  }
1284
1911
  }
@@ -1292,20 +1919,78 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
1292
1919
  this.searchInput.focus();
1293
1920
  }
1294
1921
  focusList() {
1922
+ if (this.usesCardLayout()) {
1923
+ if (!this.firstCardFocusElement) {
1924
+ const firstSection = this.cardSectionLists[0];
1925
+ if (firstSection?.items.length) {
1926
+ firstSection.list.setFocus([0]);
1927
+ firstSection.list.domFocus();
1928
+ }
1929
+ } else {
1930
+ this.firstCardFocusElement.focus();
1931
+ }
1932
+ return;
1933
+ }
1295
1934
  this.list.domFocus();
1296
1935
  if (this.displayEntries.length > 0) {
1297
1936
  this.list.setFocus([0]);
1298
1937
  }
1299
1938
  }
1300
1939
  revealLastItem() {
1940
+ if (this.usesCardLayout()) {
1941
+ const reveal = () => {
1942
+ const section = this.cardSectionLists.at(-1);
1943
+ if (section?.items.length) {
1944
+ section.list.reveal(section.items.length - 1);
1945
+ }
1946
+ this.cardScrollable.scanDomNode();
1947
+ this.cardScrollable.setScrollPosition({
1948
+ scrollTop: this.cardContainer.scrollHeight
1949
+ });
1950
+ };
1951
+ reveal();
1952
+ this.revealLastItemScheduler.value = scheduleAtNextAnimationFrame(getWindow(this.element), reveal);
1953
+ return;
1954
+ }
1301
1955
  if (this.displayEntries.length > 0) {
1302
1956
  this.list.reveal(this.displayEntries.length - 1);
1303
1957
  }
1304
1958
  }
1959
+ revealAndSelectFirstItemByUri(uris) {
1960
+ if (this.usesCardLayout()) {
1961
+ for (const section of this.cardSectionLists) {
1962
+ const index = section.items.findIndex(item => ( uris.some(uri => isEqual(item.uri, uri))));
1963
+ if (index >= 0) {
1964
+ section.list.reveal(index);
1965
+ section.list.setFocus([index]);
1966
+ section.list.setSelection([index]);
1967
+ section.list.domFocus();
1968
+ return true;
1969
+ }
1970
+ }
1971
+ return false;
1972
+ }
1973
+ const entryIndex = this.displayEntries.findIndex(entry => {
1974
+ return entry.type === "file-item" && ( uris.some(uri => isEqual(entry.item.uri, uri)));
1975
+ });
1976
+ if (entryIndex < 0) {
1977
+ return false;
1978
+ }
1979
+ this.list.reveal(entryIndex);
1980
+ this.list.setFocus([entryIndex]);
1981
+ this.list.setSelection([entryIndex]);
1982
+ this.list.domFocus();
1983
+ return true;
1984
+ }
1305
1985
  layout(height, width) {
1306
1986
  this.lastLayoutHeight = height;
1307
1987
  this.lastLayoutWidth = width;
1308
- this.element.style.height = `${height}px`;
1988
+ if (this.element.parentElement?.style.display === "none") {
1989
+ return;
1990
+ }
1991
+ this.element.classList.toggle("narrow-layout", width < 500);
1992
+ this.element.classList.toggle("wide-layout", width >= 600);
1993
+ this.element.style.height = "";
1309
1994
  this.searchInput.layout();
1310
1995
  const searchBarHeight = this.searchAndButtonContainer.offsetHeight;
1311
1996
  if (searchBarHeight === 0 && !this._layoutDeferred) {
@@ -1321,9 +2006,17 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
1321
2006
  }
1322
2007
  const headerHeight = this.sectionTitleHeader.offsetHeight;
1323
2008
  this.lastHeaderHeight = headerHeight;
1324
- const listHeight = Math.max(0, height - searchBarHeight - headerHeight);
2009
+ const availableHeight = this.element.clientHeight || height;
2010
+ const listHeight = Math.max(0, availableHeight - searchBarHeight - headerHeight);
2011
+ this.cardScrollableNode.style.height = `${listHeight}px`;
1325
2012
  this.listContainer.style.height = `${listHeight}px`;
1326
- this.list.layout(listHeight, width);
2013
+ if (this.usesCardLayout()) {
2014
+ this.layoutCardSectionLists();
2015
+ this.cardScrollable.scanDomNode();
2016
+ this.scheduleCardSectionLayout();
2017
+ } else {
2018
+ this.list.layout(listHeight, width);
2019
+ }
1327
2020
  }
1328
2021
  get itemCount() {
1329
2022
  return this.allItems.length;
@@ -1340,4 +2033,4 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
1340
2033
  };
1341
2034
  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, ILabelService)), ( __param(8, IAICustomizationWorkspaceService)), ( __param(9, IClipboardService)), ( __param(10, IHoverService)), ( __param(11, IFileService)), ( __param(12, ITelemetryService)), ( __param(13, ICustomizationHarnessService)), ( __param(14, ICommandService)), ( __param(15, IAICustomizationItemsModel)), ( __param(16, IAgentPluginService))], AICustomizationListWidget));
1342
2035
 
1343
- export { AICustomizationListWidget, formatDisplayName, getCountAnnouncement };
2036
+ export { AICustomizationListWidget, formatDisplayName, getAlwaysVisibleCustomizationGroupKeys, getCollapsedCustomizationGroupKey, getCountAnnouncement, getCustomizationItemAriaLabel, getCustomizationItemStatusLabel, getTargetedCreateActionLabel, usesCustomizationCardLayout };