@codingame/monaco-vscode-chat-service-override 24.2.0 → 25.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 (271) hide show
  1. package/index.js +35 -35
  2. package/package.json +5 -5
  3. package/vscode/src/vs/workbench/contrib/chat/browser/{chatAccessibilityService.d.ts → accessibility/chatAccessibilityService.d.ts} +10 -8
  4. package/vscode/src/vs/workbench/contrib/chat/browser/{chatAccessibilityService.js → accessibility/chatAccessibilityService.js} +23 -11
  5. package/vscode/src/vs/workbench/contrib/chat/browser/{chatResponseAccessibleView.d.ts → accessibility/chatResponseAccessibleView.d.ts} +6 -0
  6. package/vscode/src/vs/workbench/contrib/chat/browser/{chatResponseAccessibleView.js → accessibility/chatResponseAccessibleView.js} +38 -10
  7. package/vscode/src/vs/workbench/contrib/chat/browser/{chatTerminalOutputAccessibleView.js → accessibility/chatTerminalOutputAccessibleView.js} +1 -1
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +7 -7
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +69 -60
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +2 -12
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.d.ts +3 -0
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +25 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +24 -22
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +13 -13
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +5 -5
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +48 -4
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +7 -7
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +12 -12
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +10 -10
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +16 -19
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +35 -19
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +4 -3
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +22 -17
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.d.ts +1 -1
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +3 -3
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +21 -21
  32. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +31 -53
  33. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +61 -25
  34. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +482 -125
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +16 -13
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +84 -93
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +2 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +10 -8
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.d.ts +7 -0
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +41 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +23 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +137 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.d.ts +15 -0
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +92 -0
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +81 -32
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +335 -102
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +3 -2
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +47 -51
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +80 -8
  50. package/vscode/src/vs/workbench/contrib/chat/browser/{chatAttachmentResolveService.d.ts → attachments/chatAttachmentResolveService.d.ts} +2 -2
  51. package/vscode/src/vs/workbench/contrib/chat/browser/{chatAttachmentResolveService.js → attachments/chatAttachmentResolveService.js} +4 -4
  52. package/vscode/src/vs/workbench/contrib/chat/browser/{chatVariables.d.ts → attachments/chatVariables.d.ts} +3 -3
  53. package/vscode/src/vs/workbench/contrib/chat/browser/{chatVariables.js → attachments/chatVariables.js} +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditing → attachments}/simpleBrowserEditorOverlay.js +21 -21
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +171 -206
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditing.d.ts +1 -1
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +2 -2
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +2 -2
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +2 -2
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +3 -3
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.d.ts +1 -1
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +1 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +20 -20
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +14 -14
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +3 -3
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +4 -4
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +4 -4
  70. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +3 -3
  71. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +3 -3
  72. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +3 -3
  73. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +1 -1
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +4 -4
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +10 -8
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +5 -5
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +6 -2
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +1 -1
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +2 -2
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +1 -1
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +2 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +1 -1
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.d.ts +1 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +2 -2
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +5 -5
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +18 -18
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +1 -1
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +41 -41
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +10 -10
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.d.ts +1 -1
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +35 -35
  98. package/vscode/src/vs/workbench/contrib/chat/browser/{chatSessions.contribution.d.ts → chatSessions/chatSessions.contribution.d.ts} +7 -11
  99. package/vscode/src/vs/workbench/contrib/chat/browser/{chatSessions.contribution.js → chatSessions/chatSessions.contribution.js} +53 -106
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +18 -22
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +3 -3
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -29
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +13 -13
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +3 -3
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +64 -64
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +22 -0
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +90 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/{chatContextService.d.ts → contextContrib/chatContextService.d.ts} +3 -3
  111. package/vscode/src/vs/workbench/contrib/chat/browser/{chatContextService.js → contextContrib/chatContextService.js} +1 -1
  112. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +7 -7
  113. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +3 -3
  115. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  116. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +8 -8
  117. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +4 -4
  118. package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsConfirmationService.d.ts → tools/languageModelToolsConfirmationService.d.ts} +4 -4
  119. package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsConfirmationService.js → tools/languageModelToolsConfirmationService.js} +47 -58
  120. package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsService.d.ts → tools/languageModelToolsService.d.ts} +5 -5
  121. package/vscode/src/vs/workbench/contrib/chat/browser/{languageModelToolsService.js → tools/languageModelToolsService.js} +21 -21
  122. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +1 -1
  123. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
  124. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  125. package/vscode/src/vs/workbench/contrib/chat/browser/{chatContentParts → widget/chatContentParts}/chatMarkdownAnchorService.d.ts +2 -2
  126. package/vscode/src/vs/workbench/contrib/chat/browser/{chatLayoutService.d.ts → widget/chatLayoutService.d.ts} +1 -1
  127. package/vscode/src/vs/workbench/contrib/chat/browser/{chatWidgetService.d.ts → widget/chatWidgetService.d.ts} +6 -2
  128. package/vscode/src/vs/workbench/contrib/chat/browser/{chatWidgetService.js → widget/chatWidgetService.js} +27 -5
  129. package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusWidget.d.ts → widget/input/chatStatusWidget.d.ts} +4 -2
  130. package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusWidget.js → widget/input/chatStatusWidget.js} +17 -10
  131. package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorContrib.js +12 -6
  132. package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorHover.d.ts +1 -1
  133. package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorHover.js +3 -3
  134. package/vscode/src/vs/workbench/contrib/chat/browser/{chatQuick.d.ts → widgetHosts/chatQuick.d.ts} +1 -1
  135. package/vscode/src/vs/workbench/contrib/chat/browser/{chatQuick.js → widgetHosts/chatQuick.js} +4 -4
  136. package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditor.d.ts → widgetHosts/editor/chatEditor.d.ts} +4 -5
  137. package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditor.js → widgetHosts/editor/chatEditor.js} +6 -6
  138. package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewPane.d.ts → widgetHosts/viewPane/chatViewPane.d.ts} +46 -31
  139. package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewPane.js → widgetHosts/viewPane/chatViewPane.js} +258 -154
  140. package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewTitleControl.d.ts → widgetHosts/viewPane/chatViewTitleControl.d.ts} +5 -12
  141. package/vscode/src/vs/workbench/contrib/chat/browser/{chatViewTitleControl.js → widgetHosts/viewPane/chatViewTitleControl.js} +97 -85
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +176 -0
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +89 -0
  144. package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceImpl.d.ts → chatService/chatServiceImpl.d.ts} +16 -20
  145. package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceImpl.js → chatService/chatServiceImpl.js} +97 -151
  146. package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceTelemetry.d.ts → chatService/chatServiceTelemetry.d.ts} +4 -4
  147. package/vscode/src/vs/workbench/contrib/chat/common/{chatServiceTelemetry.js → chatService/chatServiceTelemetry.js} +2 -2
  148. package/vscode/src/vs/workbench/contrib/chat/common/{chatCodeMapperService.d.ts → editing/chatCodeMapperService.d.ts} +1 -1
  149. package/vscode/src/vs/workbench/contrib/chat/common/{chatModelStore.d.ts → model/chatModelStore.d.ts} +2 -2
  150. package/vscode/src/vs/workbench/contrib/chat/common/{chatProgressTypes → model/chatProgressTypes}/chatToolInvocation.d.ts +2 -2
  151. package/vscode/src/vs/workbench/contrib/chat/common/{chatProgressTypes → model/chatProgressTypes}/chatToolInvocation.js +4 -4
  152. package/vscode/src/vs/workbench/contrib/chat/common/{chatSessionStore.d.ts → model/chatSessionStore.d.ts} +14 -7
  153. package/vscode/src/vs/workbench/contrib/chat/common/{chatSessionStore.js → model/chatSessionStore.js} +164 -39
  154. package/vscode/src/vs/workbench/contrib/chat/common/{chatTransferService.d.ts → model/chatTransferService.d.ts} +3 -3
  155. package/vscode/src/vs/workbench/contrib/chat/common/{chatTransferService.js → model/chatTransferService.js} +1 -1
  156. package/vscode/src/vs/workbench/contrib/chat/common/{chatSlashCommands.d.ts → participants/chatSlashCommands.d.ts} +2 -2
  157. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +25 -49
  158. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +1 -1
  159. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +2 -2
  160. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +1 -1
  161. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +6 -6
  162. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -1
  163. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +3 -3
  164. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +1 -1
  165. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +29 -29
  166. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +1 -1
  167. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +54 -54
  168. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +11 -4
  169. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +83 -18
  170. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +11 -5
  171. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +27 -10
  172. package/vscode/src/vs/workbench/contrib/chat/common/{chatTodoListService.d.ts → tools/chatTodoListService.d.ts} +1 -1
  173. package/vscode/src/vs/workbench/contrib/chat/common/{chatTodoListService.js → tools/chatTodoListService.js} +1 -1
  174. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +1 -1
  175. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +29 -29
  176. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +2 -2
  177. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +3 -3
  178. package/vscode/src/vs/workbench/contrib/chat/common/{chatResponseResourceFileSystemProvider.d.ts → widget/chatResponseResourceFileSystemProvider.d.ts} +1 -1
  179. package/vscode/src/vs/workbench/contrib/chat/common/{chatResponseResourceFileSystemProvider.js → widget/chatResponseResourceFileSystemProvider.js} +4 -4
  180. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +5 -5
  181. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
  182. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +23 -23
  183. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  184. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/common/remoteCodingAgentsService.js +1 -1
  185. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/media/terminalChatWidget.css +1 -0
  186. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  187. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +47 -30
  188. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +1 -1
  189. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.d.ts +1 -1
  190. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
  191. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +15 -1
  192. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +33 -11
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +4 -3
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +6 -5
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +1 -1
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +12 -2
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +1 -0
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +17 -2
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +12 -2
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +10 -1
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +22 -1
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +3 -2
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +100 -23
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +1 -1
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +6 -6
  206. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +2 -1
  207. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +19 -6
  208. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{commandLineAutoApprover.d.ts → tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts} +11 -12
  209. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{commandLineAutoApprover.js → tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js} +83 -6
  210. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +45 -0
  211. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +156 -0
  212. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +17 -2
  213. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +10 -0
  214. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +1 -1
  215. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +64 -26
  216. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +1 -0
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +16 -8
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +14 -0
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +31 -0
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.d.ts +1 -1
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +4 -4
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.d.ts +1 -1
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +4 -4
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.d.ts +1 -1
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +4 -4
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +3 -2
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +55 -23
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +1 -1
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +3 -3
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +85 -46
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.d.ts +1 -1
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +16 -16
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.d.ts +1 -1
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +9 -9
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.d.ts +1 -1
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +16 -16
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +1 -1
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +9 -5
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +1 -1
  241. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +0 -46
  242. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +0 -248
  243. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +0 -36
  244. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +0 -184
  245. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +0 -19
  246. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +0 -22
  247. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +0 -229
  248. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +0 -102
  249. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +0 -495
  250. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +0 -64
  251. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +0 -386
  252. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +0 -299
  253. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewPane.css +0 -142
  254. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewTitleControl.css +0 -39
  255. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatTerminalOutputAccessibleView.d.ts → accessibility/chatTerminalOutputAccessibleView.d.ts} +0 -0
  256. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → attachments/media}/simpleBrowserOverlay.css +0 -0
  257. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatEditing → attachments}/simpleBrowserEditorOverlay.d.ts +0 -0
  258. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatEditing/media}/chatEditingEditorOverlay.css +0 -0
  259. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatEditing/media}/chatEditorController.css +0 -0
  260. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatContentParts → widget/chatContentParts}/chatMarkdownAnchorService.js +0 -0
  261. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatLayoutService.js → widget/chatLayoutService.js} +0 -0
  262. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatEdinputInputContentProvider.d.ts → widget/input/editor/chatEditorInputContentProvider.d.ts} +0 -0
  263. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatEdinputInputContentProvider.js → widget/input/editor/chatEditorInputContentProvider.js} +0 -0
  264. /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/chatInputEditorContrib.d.ts +0 -0
  265. /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/editorHoverWrapper.d.ts +0 -0
  266. /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/editorHoverWrapper.js +0 -0
  267. /package/vscode/src/vs/workbench/contrib/chat/browser/{contrib → widget/input/editor}/media/editorHoverWrapper.css +0 -0
  268. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → widget/input/media}/chatStatusWidget.css +0 -0
  269. /package/vscode/src/vs/workbench/contrib/chat/common/{chatCodeMapperService.js → editing/chatCodeMapperService.js} +0 -0
  270. /package/vscode/src/vs/workbench/contrib/chat/common/{chatModelStore.js → model/chatModelStore.js} +0 -0
  271. /package/vscode/src/vs/workbench/contrib/chat/common/{chatSlashCommands.js → participants/chatSlashCommands.js} +0 -0
@@ -12,8 +12,8 @@ import { IChatModeService } from '@codingame/monaco-vscode-api/vscode/vs/workben
12
12
  import { ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
13
13
  import { ILanguageModelChatMetadata } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
14
14
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
15
- import { SpecedToolAliases } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
16
- import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
15
+ import { SpecedToolAliases } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
16
+ import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
17
17
  import { PromptsType, getPromptsTypeForLanguageId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
18
18
  import { PromptHeaderAttributes, Target, GithubPromptHeaderAttributes } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptFileParser';
19
19
  import { Disposable, DisposableStore, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
@@ -46,14 +46,14 @@ let PromptValidator = class PromptValidator {
46
46
  const location = this.promptsService.getAgentFileURIFromModeFile(promptAST.uri);
47
47
  if (location && (await this.fileService.canCreateFile(location))) {
48
48
  report(toMarker(( localize(
49
- 6016,
49
+ 6018,
50
50
  "Chat modes have been renamed to agents. Please move this file to {0}",
51
51
  (location.toString())
52
52
  )), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
53
53
  }
54
54
  else {
55
55
  report(toMarker(( localize(
56
- 6017,
56
+ 6019,
57
57
  "Chat modes have been renamed to agents. Please move the file to {0}",
58
58
  AGENTS_SOURCE_FOLDER
59
59
  )), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
@@ -69,7 +69,7 @@ let PromptValidator = class PromptValidator {
69
69
  for (const ref of body.fileReferences) {
70
70
  const resolved = body.resolveFilePath(ref.content);
71
71
  if (!resolved) {
72
- report(toMarker(( localize(6018, "Invalid file reference '{0}'.", ref.content)), ref.range, MarkerSeverity.Warning));
72
+ report(toMarker(( localize(6020, "Invalid file reference '{0}'.", ref.content)), ref.range, MarkerSeverity.Warning));
73
73
  continue;
74
74
  }
75
75
  if (promptAST.uri.scheme === resolved.scheme) {
@@ -83,7 +83,7 @@ let PromptValidator = class PromptValidator {
83
83
  catch {
84
84
  }
85
85
  const loc = this.labelService.getUriLabel(resolved);
86
- report(toMarker(( localize(6019, "File '{0}' not found at '{1}'.", ref.content, loc)), ref.range, MarkerSeverity.Warning));
86
+ report(toMarker(( localize(6021, "File '{0}' not found at '{1}'.", ref.content, loc)), ref.range, MarkerSeverity.Warning));
87
87
  })());
88
88
  }
89
89
  }
@@ -102,7 +102,7 @@ let PromptValidator = class PromptValidator {
102
102
  if (currentNames.size === 1) {
103
103
  const newName = Array.from(currentNames)[0];
104
104
  report(toMarker(( localize(
105
- 6020,
105
+ 6022,
106
106
  "Tool or toolset '{0}' has been renamed, use '{1}' instead.",
107
107
  variable.name,
108
108
  newName
@@ -111,7 +111,7 @@ let PromptValidator = class PromptValidator {
111
111
  else {
112
112
  const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(', ');
113
113
  report(toMarker(( localize(
114
- 6021,
114
+ 6023,
115
115
  "Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
116
116
  variable.name,
117
117
  newNames
@@ -120,14 +120,14 @@ let PromptValidator = class PromptValidator {
120
120
  }
121
121
  }
122
122
  else {
123
- report(toMarker(( localize(6022, "Unknown tool or toolset '{0}'.", variable.name)), variable.range, MarkerSeverity.Warning));
123
+ report(toMarker(( localize(6024, "Unknown tool or toolset '{0}'.", variable.name)), variable.range, MarkerSeverity.Warning));
124
124
  }
125
125
  }
126
126
  else if (headerToolsMap) {
127
127
  const tool = this.languageModelToolsService.getToolByFullReferenceName(variable.name);
128
128
  if (tool && headerToolsMap.get(tool) === false) {
129
129
  report(toMarker(( localize(
130
- 6023,
130
+ 6025,
131
131
  "Tool or toolset '{0}' also needs to be enabled in the header.",
132
132
  variable.name
133
133
  )), variable.range, MarkerSeverity.Warning));
@@ -182,7 +182,7 @@ let PromptValidator = class PromptValidator {
182
182
  switch (promptType) {
183
183
  case PromptsType.prompt:
184
184
  report(toMarker(( localize(
185
- 6024,
185
+ 6026,
186
186
  "Attribute '{0}' is not supported in prompt files. Supported: {1}.",
187
187
  attribute.key,
188
188
  supportedNames.value
@@ -191,7 +191,7 @@ let PromptValidator = class PromptValidator {
191
191
  case PromptsType.agent:
192
192
  if (isGitHubTarget) {
193
193
  report(toMarker(( localize(
194
- 6025,
194
+ 6027,
195
195
  "Attribute '{0}' is not supported in custom GitHub Copilot agent files. Supported: {1}.",
196
196
  attribute.key,
197
197
  supportedNames.value
@@ -200,14 +200,14 @@ let PromptValidator = class PromptValidator {
200
200
  else {
201
201
  if (( validGithubCopilotAttributeNames.value.has(attribute.key))) {
202
202
  report(toMarker(( localize(
203
- 6026,
203
+ 6028,
204
204
  "Attribute '{0}' is ignored when running locally in VS Code.",
205
205
  attribute.key
206
206
  )), attribute.range, MarkerSeverity.Info));
207
207
  }
208
208
  else {
209
209
  report(toMarker(( localize(
210
- 6027,
210
+ 6029,
211
211
  "Attribute '{0}' is not supported in VS Code agent files. Supported: {1}.",
212
212
  attribute.key,
213
213
  supportedNames.value
@@ -217,7 +217,7 @@ let PromptValidator = class PromptValidator {
217
217
  break;
218
218
  case PromptsType.instructions:
219
219
  report(toMarker(( localize(
220
- 6028,
220
+ 6030,
221
221
  "Attribute '{0}' is not supported in instructions files. Supported: {1}.",
222
222
  attribute.key,
223
223
  supportedNames.value
@@ -233,11 +233,11 @@ let PromptValidator = class PromptValidator {
233
233
  return;
234
234
  }
235
235
  if (nameAttribute.value.type !== 'string') {
236
- report(toMarker(( localize(6029, "The 'name' attribute must be a string.")), nameAttribute.range, MarkerSeverity.Error));
236
+ report(toMarker(( localize(6031, "The 'name' attribute must be a string.")), nameAttribute.range, MarkerSeverity.Error));
237
237
  return;
238
238
  }
239
239
  if (nameAttribute.value.value.trim().length === 0) {
240
- report(toMarker(( localize(6030, "The 'name' attribute must not be empty.")), nameAttribute.value.range, MarkerSeverity.Error));
240
+ report(toMarker(( localize(6032, "The 'name' attribute must not be empty.")), nameAttribute.value.range, MarkerSeverity.Error));
241
241
  return;
242
242
  }
243
243
  }
@@ -247,11 +247,11 @@ let PromptValidator = class PromptValidator {
247
247
  return;
248
248
  }
249
249
  if (descriptionAttribute.value.type !== 'string') {
250
- report(toMarker(( localize(6031, "The 'description' attribute must be a string.")), descriptionAttribute.range, MarkerSeverity.Error));
250
+ report(toMarker(( localize(6033, "The 'description' attribute must be a string.")), descriptionAttribute.range, MarkerSeverity.Error));
251
251
  return;
252
252
  }
253
253
  if (descriptionAttribute.value.value.trim().length === 0) {
254
- report(toMarker(( localize(6032, "The 'description' attribute should not be empty.")), descriptionAttribute.value.range, MarkerSeverity.Error));
254
+ report(toMarker(( localize(6034, "The 'description' attribute should not be empty.")), descriptionAttribute.value.range, MarkerSeverity.Error));
255
255
  return;
256
256
  }
257
257
  }
@@ -261,11 +261,11 @@ let PromptValidator = class PromptValidator {
261
261
  return;
262
262
  }
263
263
  if (argumentHintAttribute.value.type !== 'string') {
264
- report(toMarker(( localize(6033, "The 'argument-hint' attribute must be a string.")), argumentHintAttribute.range, MarkerSeverity.Error));
264
+ report(toMarker(( localize(6035, "The 'argument-hint' attribute must be a string.")), argumentHintAttribute.range, MarkerSeverity.Error));
265
265
  return;
266
266
  }
267
267
  if (argumentHintAttribute.value.value.trim().length === 0) {
268
- report(toMarker(( localize(6034, "The 'argument-hint' attribute should not be empty.")), argumentHintAttribute.value.range, MarkerSeverity.Error));
268
+ report(toMarker(( localize(6036, "The 'argument-hint' attribute should not be empty.")), argumentHintAttribute.value.range, MarkerSeverity.Error));
269
269
  return;
270
270
  }
271
271
  }
@@ -275,12 +275,12 @@ let PromptValidator = class PromptValidator {
275
275
  return;
276
276
  }
277
277
  if (attribute.value.type !== 'string') {
278
- report(toMarker(( localize(6035, "The 'model' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
278
+ report(toMarker(( localize(6037, "The 'model' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
279
279
  return;
280
280
  }
281
281
  const modelName = attribute.value.value.trim();
282
282
  if (modelName.length === 0) {
283
- report(toMarker(( localize(6036, "The 'model' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
283
+ report(toMarker(( localize(6038, "The 'model' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
284
284
  return;
285
285
  }
286
286
  const languageModes = this.languageModelsService.getLanguageModelIds();
@@ -289,10 +289,10 @@ let PromptValidator = class PromptValidator {
289
289
  }
290
290
  const modelMetadata = this.findModelByName(languageModes, modelName);
291
291
  if (!modelMetadata) {
292
- report(toMarker(( localize(6037, "Unknown model '{0}'.", modelName)), attribute.value.range, MarkerSeverity.Warning));
292
+ report(toMarker(( localize(6039, "Unknown model '{0}'.", modelName)), attribute.value.range, MarkerSeverity.Warning));
293
293
  }
294
294
  else if (agentKind === ChatModeKind.Agent && !ILanguageModelChatMetadata.suitableForAgentMode(modelMetadata)) {
295
- report(toMarker(( localize(6038, "Model '{0}' is not suited for agent mode.", modelName)), attribute.value.range, MarkerSeverity.Warning));
295
+ report(toMarker(( localize(6040, "Model '{0}' is not suited for agent mode.", modelName)), attribute.value.range, MarkerSeverity.Warning));
296
296
  }
297
297
  }
298
298
  findModelByName(languageModes, modelName) {
@@ -310,13 +310,13 @@ let PromptValidator = class PromptValidator {
310
310
  if (modeAttribute) {
311
311
  if (agentAttribute) {
312
312
  report(toMarker(( localize(
313
- 6039,
313
+ 6041,
314
314
  "The 'mode' attribute has been deprecated. The 'agent' attribute is used instead."
315
315
  )), modeAttribute.range, MarkerSeverity.Warning));
316
316
  }
317
317
  else {
318
318
  report(toMarker(( localize(
319
- 6040,
319
+ 6042,
320
320
  "The 'mode' attribute has been deprecated. Please rename it to 'agent'."
321
321
  )), modeAttribute.range, MarkerSeverity.Error));
322
322
  }
@@ -326,12 +326,12 @@ let PromptValidator = class PromptValidator {
326
326
  return undefined;
327
327
  }
328
328
  if (attribute.value.type !== 'string') {
329
- report(toMarker(( localize(6041, "The '{0}' attribute must be a string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
329
+ report(toMarker(( localize(6043, "The '{0}' attribute must be a string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
330
330
  return undefined;
331
331
  }
332
332
  const agentValue = attribute.value.value;
333
333
  if (agentValue.trim().length === 0) {
334
- report(toMarker(( localize(6042, "The '{0}' attribute must be a non-empty string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
334
+ report(toMarker(( localize(6044, "The '{0}' attribute must be a non-empty string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
335
335
  return undefined;
336
336
  }
337
337
  return this.validateAgentValue(attribute.value, report);
@@ -346,7 +346,7 @@ let PromptValidator = class PromptValidator {
346
346
  availableAgents.push(agent.name.get());
347
347
  }
348
348
  const errorMessage = ( localize(
349
- 6043,
349
+ 6045,
350
350
  "Unknown agent '{0}'. Available agents: {1}.",
351
351
  value.value,
352
352
  availableAgents.join(', ')
@@ -361,7 +361,7 @@ let PromptValidator = class PromptValidator {
361
361
  }
362
362
  if (agentKind !== ChatModeKind.Agent) {
363
363
  report(toMarker(( localize(
364
- 6044,
364
+ 6046,
365
365
  "The 'tools' attribute is only supported when using agents. Attribute will be ignored."
366
366
  )), attribute.range, MarkerSeverity.Warning));
367
367
  }
@@ -373,7 +373,7 @@ let PromptValidator = class PromptValidator {
373
373
  }
374
374
  break;
375
375
  default:
376
- report(toMarker(( localize(6045, "The 'tools' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
376
+ report(toMarker(( localize(6047, "The 'tools' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
377
377
  }
378
378
  }
379
379
  validateVSCodeTools(valueItem, target, report) {
@@ -382,7 +382,7 @@ let PromptValidator = class PromptValidator {
382
382
  const deprecatedNames = this.languageModelToolsService.getDeprecatedFullReferenceNames();
383
383
  for (const item of valueItem.items) {
384
384
  if (item.type !== 'string') {
385
- report(toMarker(( localize(6046, "Each tool name in the 'tools' attribute must be a string.")), item.range, MarkerSeverity.Error));
385
+ report(toMarker(( localize(6048, "Each tool name in the 'tools' attribute must be a string.")), item.range, MarkerSeverity.Error));
386
386
  }
387
387
  else if (item.value) {
388
388
  if (!( available.has(item.value))) {
@@ -391,7 +391,7 @@ let PromptValidator = class PromptValidator {
391
391
  if (currentNames?.size === 1) {
392
392
  const newName = Array.from(currentNames)[0];
393
393
  report(toMarker(( localize(
394
- 6047,
394
+ 6049,
395
395
  "Tool or toolset '{0}' has been renamed, use '{1}' instead.",
396
396
  item.value,
397
397
  newName
@@ -400,7 +400,7 @@ let PromptValidator = class PromptValidator {
400
400
  else {
401
401
  const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(', ');
402
402
  report(toMarker(( localize(
403
- 6048,
403
+ 6050,
404
404
  "Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
405
405
  item.value,
406
406
  newNames
@@ -408,7 +408,7 @@ let PromptValidator = class PromptValidator {
408
408
  }
409
409
  }
410
410
  else {
411
- report(toMarker(( localize(6049, "Unknown tool '{0}'.", item.value)), item.range, MarkerSeverity.Warning));
411
+ report(toMarker(( localize(6051, "Unknown tool '{0}'.", item.value)), item.range, MarkerSeverity.Warning));
412
412
  }
413
413
  }
414
414
  }
@@ -421,26 +421,26 @@ let PromptValidator = class PromptValidator {
421
421
  return;
422
422
  }
423
423
  if (attribute.value.type !== 'string') {
424
- report(toMarker(( localize(6050, "The 'applyTo' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
424
+ report(toMarker(( localize(6052, "The 'applyTo' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
425
425
  return;
426
426
  }
427
427
  const pattern = attribute.value.value;
428
428
  try {
429
429
  const patterns = splitGlobAware(pattern, ',');
430
430
  if (patterns.length === 0) {
431
- report(toMarker(( localize(6051, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
431
+ report(toMarker(( localize(6053, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
432
432
  return;
433
433
  }
434
434
  for (const pattern of patterns) {
435
435
  const globPattern = parse(pattern);
436
436
  if (isEmptyPattern(globPattern)) {
437
- report(toMarker(( localize(6051, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
437
+ report(toMarker(( localize(6053, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
438
438
  return;
439
439
  }
440
440
  }
441
441
  }
442
442
  catch (_error) {
443
- report(toMarker(( localize(6051, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
443
+ report(toMarker(( localize(6053, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
444
444
  }
445
445
  }
446
446
  validateExcludeAgent(attributes, report) {
@@ -449,7 +449,7 @@ let PromptValidator = class PromptValidator {
449
449
  return;
450
450
  }
451
451
  if (attribute.value.type !== 'array') {
452
- report(toMarker(( localize(6052, "The 'excludeAgent' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
452
+ report(toMarker(( localize(6054, "The 'excludeAgent' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
453
453
  return;
454
454
  }
455
455
  }
@@ -459,13 +459,13 @@ let PromptValidator = class PromptValidator {
459
459
  return;
460
460
  }
461
461
  if (attribute.value.type !== 'array') {
462
- report(toMarker(( localize(6053, "The 'handoffs' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
462
+ report(toMarker(( localize(6055, "The 'handoffs' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
463
463
  return;
464
464
  }
465
465
  for (const item of attribute.value.items) {
466
466
  if (item.type !== 'object') {
467
467
  report(toMarker(( localize(
468
- 6054,
468
+ 6056,
469
469
  "Each handoff in the 'handoffs' attribute must be an object with 'label', 'agent', 'prompt' and optional 'send'."
470
470
  )), item.range, MarkerSeverity.Error));
471
471
  continue;
@@ -475,12 +475,12 @@ let PromptValidator = class PromptValidator {
475
475
  switch (prop.key.value) {
476
476
  case 'label':
477
477
  if (prop.value.type !== 'string' || prop.value.value.trim().length === 0) {
478
- report(toMarker(( localize(6055, "The 'label' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
478
+ report(toMarker(( localize(6057, "The 'label' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
479
479
  }
480
480
  break;
481
481
  case 'agent':
482
482
  if (prop.value.type !== 'string' || prop.value.value.trim().length === 0) {
483
- report(toMarker(( localize(6056, "The 'agent' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
483
+ report(toMarker(( localize(6058, "The 'agent' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
484
484
  }
485
485
  else {
486
486
  this.validateAgentValue(prop.value, report);
@@ -488,22 +488,22 @@ let PromptValidator = class PromptValidator {
488
488
  break;
489
489
  case 'prompt':
490
490
  if (prop.value.type !== 'string') {
491
- report(toMarker(( localize(6057, "The 'prompt' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
491
+ report(toMarker(( localize(6059, "The 'prompt' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
492
492
  }
493
493
  break;
494
494
  case 'send':
495
495
  if (prop.value.type !== 'boolean') {
496
- report(toMarker(( localize(6058, "The 'send' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
496
+ report(toMarker(( localize(6060, "The 'send' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
497
497
  }
498
498
  break;
499
499
  case 'showContinueOn':
500
500
  if (prop.value.type !== 'boolean') {
501
- report(toMarker(( localize(6059, "The 'showContinueOn' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
501
+ report(toMarker(( localize(6061, "The 'showContinueOn' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
502
502
  }
503
503
  break;
504
504
  default:
505
505
  report(toMarker(( localize(
506
- 6060,
506
+ 6062,
507
507
  "Unknown property '{0}' in handoff object. Supported properties are 'label', 'agent', 'prompt' and optional 'send', 'showContinueOn'.",
508
508
  prop.key.value
509
509
  )), prop.value.range, MarkerSeverity.Warning));
@@ -512,7 +512,7 @@ let PromptValidator = class PromptValidator {
512
512
  }
513
513
  if (required.size > 0) {
514
514
  report(toMarker(( localize(
515
- 6061,
515
+ 6063,
516
516
  "Missing required properties {0} in handoff object.",
517
517
  ( Array.from(required).map(s => `'${s}'`)).join(', ')
518
518
  )), item.range, MarkerSeverity.Error));
@@ -525,7 +525,7 @@ let PromptValidator = class PromptValidator {
525
525
  return;
526
526
  }
527
527
  if (attribute.value.type !== 'boolean') {
528
- report(toMarker(( localize(6062, "The 'infer' attribute must be a boolean.")), attribute.value.range, MarkerSeverity.Error));
528
+ report(toMarker(( localize(6064, "The 'infer' attribute must be a boolean.")), attribute.value.range, MarkerSeverity.Error));
529
529
  return;
530
530
  }
531
531
  }
@@ -535,18 +535,18 @@ let PromptValidator = class PromptValidator {
535
535
  return;
536
536
  }
537
537
  if (attribute.value.type !== 'string') {
538
- report(toMarker(( localize(6063, "The 'target' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
538
+ report(toMarker(( localize(6065, "The 'target' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
539
539
  return;
540
540
  }
541
541
  const targetValue = attribute.value.value.trim();
542
542
  if (targetValue.length === 0) {
543
- report(toMarker(( localize(6064, "The 'target' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
543
+ report(toMarker(( localize(6066, "The 'target' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
544
544
  return;
545
545
  }
546
546
  const validTargets = ['github-copilot', 'vscode'];
547
547
  if (!validTargets.includes(targetValue)) {
548
548
  report(toMarker(( localize(
549
- 6065,
549
+ 6067,
550
550
  "The 'target' attribute must be one of: {0}.",
551
551
  validTargets.join(', ')
552
552
  )), attribute.value.range, MarkerSeverity.Error));
@@ -14,10 +14,12 @@ import { ILabelService } from "@codingame/monaco-vscode-api/vscode/vs/platform/l
14
14
  import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
15
15
  import { IFilesConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService.service";
16
16
  import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
17
+ import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
17
18
  import { IUserDataProfileService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.service";
19
+ import { IDefaultAccountService } from "@codingame/monaco-vscode-api/vscode/vs/platform/defaultAccount/common/defaultAccount.service";
18
20
  import { PromptsType } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes";
19
21
  import { ParsedPromptFile } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptFileParser";
20
- import { IChatPromptSlashCommand, ICustomAgent, IPromptPath, IClaudeSkill, PromptsStorage, ICustomAgentQueryOptions, IExternalCustomAgent } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService";
22
+ import { IChatPromptSlashCommand, ICustomAgent, IPromptPath, IAgentSkill, PromptsStorage, ICustomAgentQueryOptions, IExternalCustomAgent } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService";
21
23
  import { IPromptsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service";
22
24
  /**
23
25
  * Provides prompt services.
@@ -33,6 +35,8 @@ export declare class PromptsService extends Disposable implements IPromptsServic
33
35
  private readonly filesConfigService;
34
36
  private readonly storageService;
35
37
  private readonly extensionService;
38
+ private readonly defaultAccountService;
39
+ private readonly telemetryService;
36
40
  readonly _serviceBrand: undefined;
37
41
  /**
38
42
  * Prompt files locator utility.
@@ -65,7 +69,7 @@ export declare class PromptsService extends Disposable implements IPromptsServic
65
69
  * Contributed files from extensions keyed by prompt type then name.
66
70
  */
67
71
  private readonly contributedFiles;
68
- constructor(logger: ILogService, labelService: ILabelService, modelService: IModelService, instantiationService: IInstantiationService, userDataService: IUserDataProfileService, configurationService: IConfigurationService, fileService: IFileService, filesConfigService: IFilesConfigurationService, storageService: IStorageService, extensionService: IExtensionService);
72
+ constructor(logger: ILogService, labelService: ILabelService, modelService: IModelService, instantiationService: IInstantiationService, userDataService: IUserDataProfileService, configurationService: IConfigurationService, fileService: IFileService, filesConfigService: IFilesConfigurationService, storageService: IStorageService, extensionService: IExtensionService, defaultAccountService: IDefaultAccountService, telemetryService: ITelemetryService);
69
73
  private getFileLocatorEvent;
70
74
  getParsedPromptFile(textModel: ITextModel): ParsedPromptFile;
71
75
  listPromptFiles(type: PromptsType, token: CancellationToken): Promise<readonly IPromptPath[]>;
@@ -103,7 +107,7 @@ export declare class PromptsService extends Disposable implements IPromptsServic
103
107
  getCustomAgents(token: CancellationToken): Promise<readonly ICustomAgent[]>;
104
108
  private computeCustomAgents;
105
109
  parseNew(uri: URI, token: CancellationToken): Promise<ParsedPromptFile>;
106
- registerContributedFile(type: PromptsType, name: string, description: string, uri: URI, extension: IExtensionDescription): Readonly<IDisposable>;
110
+ registerContributedFile(type: PromptsType, uri: URI, extension: IExtensionDescription, name?: string, description?: string): Readonly<IDisposable>;
107
111
  getPromptLocationLabel(promptPath: IPromptPath): string;
108
112
  findAgentMDsInWorkspace(token: CancellationToken): Promise<URI[]>;
109
113
  listAgentMDs(token: CancellationToken, includeNested: boolean): Promise<URI[]>;
@@ -112,5 +116,8 @@ export declare class PromptsService extends Disposable implements IPromptsServic
112
116
  private readonly disabledPromptsStorageKeyPrefix;
113
117
  getDisabledPromptFiles(type: PromptsType): ResourceSet;
114
118
  setDisabledPromptFiles(type: PromptsType, uris: ResourceSet): void;
115
- findClaudeSkills(token: CancellationToken): Promise<IClaudeSkill[] | undefined>;
119
+ private sanitizeAgentSkillText;
120
+ private truncateAgentSkillName;
121
+ private truncateAgentSkillDescription;
122
+ findAgentSkills(token: CancellationToken): Promise<IAgentSkill[] | undefined>;
116
123
  }
@@ -19,8 +19,10 @@ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log
19
19
  import { IFilesConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService.service';
20
20
  import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
21
21
  import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
22
+ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
22
23
  import { IUserDataProfileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.service';
23
24
  import { PromptsConfig } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/config';
25
+ import { IDefaultAccountService } from '@codingame/monaco-vscode-api/vscode/vs/platform/defaultAccount/common/defaultAccount.service';
24
26
  import { getCleanPromptName } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
25
27
  import { PromptsType, PROMPT_LANGUAGE_ID, getPromptsTypeForLanguageId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
26
28
  import { PromptFilesLocator } from '../utils/promptFilesLocator.js';
@@ -30,7 +32,7 @@ import { Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/asyn
30
32
  import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
31
33
 
32
34
  let PromptsService = class PromptsService extends Disposable {
33
- constructor(logger, labelService, modelService, instantiationService, userDataService, configurationService, fileService, filesConfigService, storageService, extensionService) {
35
+ constructor(logger, labelService, modelService, instantiationService, userDataService, configurationService, fileService, filesConfigService, storageService, extensionService, defaultAccountService, telemetryService) {
34
36
  super();
35
37
  this.logger = logger;
36
38
  this.labelService = labelService;
@@ -42,6 +44,8 @@ let PromptsService = class PromptsService extends Disposable {
42
44
  this.filesConfigService = filesConfigService;
43
45
  this.storageService = storageService;
44
46
  this.extensionService = extensionService;
47
+ this.defaultAccountService = defaultAccountService;
48
+ this.telemetryService = telemetryService;
45
49
  this.cachedParsedPromptFromModels = ( new ResourceMap());
46
50
  this.cachedFileLocations = {};
47
51
  this.fileLocatorEvents = {};
@@ -346,7 +350,7 @@ let PromptsService = class PromptsService extends Disposable {
346
350
  }
347
351
  return ( new PromptFileParser()).parse(uri, ( fileContent.value.toString()));
348
352
  }
349
- registerContributedFile(type, name, description, uri, extension) {
353
+ registerContributedFile(type, uri, extension, name, description) {
350
354
  const bucket = this.contributedFiles[type];
351
355
  if (( bucket.has(uri))) {
352
356
  return Disposable.None;
@@ -384,10 +388,10 @@ let PromptsService = class PromptsService extends Disposable {
384
388
  getPromptLocationLabel(promptPath) {
385
389
  switch (promptPath.storage) {
386
390
  case PromptsStorage.local: return this.labelService.getUriLabel(dirname(promptPath.uri), { relative: true });
387
- case PromptsStorage.user: return localize(6066, 'User Data');
391
+ case PromptsStorage.user: return localize(6068, 'User Data');
388
392
  case PromptsStorage.extension: {
389
393
  return localize(
390
- 6067,
394
+ 6069,
391
395
  'Extension: {0}',
392
396
  promptPath.extension.displayName ?? promptPath.extension.id
393
397
  );
@@ -447,29 +451,88 @@ let PromptsService = class PromptsService extends Disposable {
447
451
  this.cachedCustomAgents.refresh();
448
452
  }
449
453
  }
450
- async findClaudeSkills(token) {
451
- const useClaudeSkills = this.configurationService.getValue(PromptsConfig.USE_CLAUDE_SKILLS);
452
- if (useClaudeSkills) {
454
+ sanitizeAgentSkillText(text) {
455
+ return text.replace(/<[^>]+>/g, '');
456
+ }
457
+ truncateAgentSkillName(name, uri) {
458
+ const MAX_NAME_LENGTH = 64;
459
+ const sanitized = this.sanitizeAgentSkillText(name);
460
+ if (sanitized !== name) {
461
+ this.logger.warn(`[findAgentSkills] Agent skill name contains XML tags, removed: ${uri}`);
462
+ }
463
+ if (sanitized.length > MAX_NAME_LENGTH) {
464
+ this.logger.warn(`[findAgentSkills] Agent skill name exceeds ${MAX_NAME_LENGTH} characters, truncated: ${uri}`);
465
+ return sanitized.substring(0, MAX_NAME_LENGTH);
466
+ }
467
+ return sanitized;
468
+ }
469
+ truncateAgentSkillDescription(description, uri) {
470
+ if (!description) {
471
+ return undefined;
472
+ }
473
+ const MAX_DESCRIPTION_LENGTH = 1024;
474
+ const sanitized = this.sanitizeAgentSkillText(description);
475
+ if (sanitized !== description) {
476
+ this.logger.warn(`[findAgentSkills] Agent skill description contains XML tags, removed: ${uri}`);
477
+ }
478
+ if (sanitized.length > MAX_DESCRIPTION_LENGTH) {
479
+ this.logger.warn(`[findAgentSkills] Agent skill description exceeds ${MAX_DESCRIPTION_LENGTH} characters, truncated: ${uri}`);
480
+ return sanitized.substring(0, MAX_DESCRIPTION_LENGTH);
481
+ }
482
+ return sanitized;
483
+ }
484
+ async findAgentSkills(token) {
485
+ const useAgentSkills = this.configurationService.getValue(PromptsConfig.USE_AGENT_SKILLS);
486
+ const defaultAccount = await this.defaultAccountService.getDefaultAccount();
487
+ const previewFeaturesEnabled = defaultAccount?.chat_preview_features_enabled ?? true;
488
+ if (useAgentSkills && previewFeaturesEnabled) {
453
489
  const result = [];
454
- const process = async (uri, type) => {
490
+ const seenNames = ( new Set());
491
+ const skillTypes = ( new Map());
492
+ let skippedMissingName = 0;
493
+ let skippedDuplicateName = 0;
494
+ let skippedParseFailed = 0;
495
+ const process = async (uri, skillType, scopeType) => {
455
496
  try {
456
497
  const parsedFile = await this.parseNew(uri, token);
457
498
  const name = parsedFile.header?.name;
458
- if (name) {
459
- result.push({ uri, type, name, description: parsedFile.header?.description });
499
+ if (!name) {
500
+ skippedMissingName++;
501
+ this.logger.error(`[findAgentSkills] Agent skill file missing name attribute: ${uri}`);
502
+ return;
460
503
  }
461
- else {
462
- this.logger.error(`[findClaudeSkills] Claude skill file missing name attribute: ${uri}`);
504
+ const sanitizedName = this.truncateAgentSkillName(name, uri);
505
+ if (( seenNames.has(sanitizedName))) {
506
+ skippedDuplicateName++;
507
+ this.logger.warn(`[findAgentSkills] Skipping duplicate agent skill name: ${sanitizedName} at ${uri}`);
508
+ return;
463
509
  }
510
+ seenNames.add(sanitizedName);
511
+ const sanitizedDescription = this.truncateAgentSkillDescription(parsedFile.header?.description, uri);
512
+ result.push({ uri, type: scopeType, name: sanitizedName, description: sanitizedDescription });
513
+ skillTypes.set(skillType, (skillTypes.get(skillType) || 0) + 1);
464
514
  }
465
515
  catch (e) {
466
- this.logger.error(`[findClaudeSkills] Failed to parse Claude skill file: ${uri}`, e instanceof Error ? e.message : String(e));
516
+ skippedParseFailed++;
517
+ this.logger.error(`[findAgentSkills] Failed to parse Agent skill file: ${uri}`, e instanceof Error ? e.message : String(e));
467
518
  }
468
519
  };
469
- const workspaceSkills = await this.fileLocator.findClaudeSkillsInWorkspace(token);
470
- await Promise.all(( workspaceSkills.map(uri => process(uri, 'project'))));
471
- const userSkills = await this.fileLocator.findClaudeSkillsInUserHome(token);
472
- await Promise.all(( userSkills.map(uri => process(uri, 'personal'))));
520
+ const workspaceSkills = await this.fileLocator.findAgentSkillsInWorkspace(token);
521
+ await Promise.all(( workspaceSkills.map(({ uri, type }) => process(uri, type, 'project'))));
522
+ const userSkills = await this.fileLocator.findAgentSkillsInUserHome(token);
523
+ await Promise.all(( userSkills.map(({ uri, type }) => process(uri, type, 'personal'))));
524
+ this.telemetryService.publicLog2('agentSkillsFound', {
525
+ totalSkillsFound: result.length,
526
+ claudePersonal: skillTypes.get('claude-personal') ?? 0,
527
+ claudeWorkspace: skillTypes.get('claude-workspace') ?? 0,
528
+ copilotPersonal: skillTypes.get('copilot-personal') ?? 0,
529
+ githubWorkspace: skillTypes.get('github-workspace') ?? 0,
530
+ customPersonal: skillTypes.get('custom-personal') ?? 0,
531
+ customWorkspace: skillTypes.get('custom-workspace') ?? 0,
532
+ skippedDuplicateName,
533
+ skippedMissingName,
534
+ skippedParseFailed
535
+ });
473
536
  return result;
474
537
  }
475
538
  return undefined;
@@ -485,7 +548,9 @@ PromptsService = ( __decorate([
485
548
  ( __param(6, IFileService)),
486
549
  ( __param(7, IFilesConfigurationService)),
487
550
  ( __param(8, IStorageService)),
488
- ( __param(9, IExtensionService))
551
+ ( __param(9, IExtensionService)),
552
+ ( __param(10, IDefaultAccountService)),
553
+ ( __param(11, ITelemetryService))
489
554
  ], PromptsService));
490
555
  class CachedPromise extends Disposable {
491
556
  constructor(computeFn, getEvent, delay = 0) {