@codingame/monaco-vscode-chat-service-override 34.1.3 → 35.0.1

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 (427) hide show
  1. package/index.js +38 -0
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.d.ts +1 -0
  4. package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.js +40 -0
  5. package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.d.ts +27 -0
  6. package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.js +91 -0
  7. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +20 -4
  8. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +148 -15
  9. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +1 -0
  10. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +9 -1
  11. package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.js +57 -3
  12. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +10 -14
  13. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +29 -8
  14. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +109 -2
  15. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +207 -21
  16. package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.js +362 -37
  17. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +698 -91
  18. package/vscode/src/vs/platform/agentHost/common/agentService.js +46 -3
  19. package/vscode/src/vs/platform/agentHost/common/customAgents.js +1 -0
  20. package/vscode/src/vs/platform/agentHost/common/resourceReadLogging.d.ts +1 -0
  21. package/vscode/src/vs/platform/agentHost/common/resourceReadLogging.js +26 -0
  22. package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.d.ts +5 -5
  23. package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.js +17 -17
  24. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +96 -12
  25. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +226 -19
  26. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.d.ts +18 -0
  27. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.js +89 -0
  28. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.js +10 -0
  29. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.d.ts +6 -0
  30. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.js +400 -0
  31. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.js +129 -446
  32. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.d.ts +2 -2
  33. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +1 -1
  34. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +1 -1
  35. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +35 -25
  36. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +7 -1
  37. package/vscode/src/vs/{workbench/contrib → platform}/browserView/common/browserChatToolReferenceNames.d.ts +4 -0
  38. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +1 -1
  39. package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.js +1 -0
  40. package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.d.ts +0 -6
  41. package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.js +5 -18
  42. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.d.ts +52 -3
  43. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.js +212 -34
  44. package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.js +3 -4
  45. package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.js +11 -10
  46. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +13 -6
  47. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.js +6 -1
  48. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoice.contribution.d.ts +2 -0
  49. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoice.contribution.js +399 -0
  50. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceSessionsPicker.d.ts +20 -0
  51. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceSessionsPicker.js +85 -0
  52. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.d.ts +177 -0
  53. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.js +898 -0
  54. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.d.ts +24 -0
  55. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.js +204 -0
  56. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.d.ts +61 -0
  57. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.js +338 -0
  58. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.d.ts +10 -0
  59. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.js +57 -0
  60. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/feedbackDialog.d.ts +33 -0
  61. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/feedbackDialog.js +98 -0
  62. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.d.ts +30 -0
  63. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.js +149 -0
  64. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/onboardingComponent.d.ts +12 -0
  65. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/onboardingComponent.js +116 -0
  66. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.d.ts +32 -0
  67. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.js +226 -0
  68. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.d.ts +18 -0
  69. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.js +138 -0
  70. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.d.ts +26 -0
  71. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.js +25 -0
  72. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/transcriptComponent.d.ts +13 -0
  73. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/transcriptComponent.js +108 -0
  74. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.d.ts +13 -0
  75. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.js +63 -0
  76. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscripts.contribution.d.ts +1 -0
  77. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscripts.contribution.js +178 -0
  78. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscriptsView.d.ts +47 -0
  79. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscriptsView.js +322 -0
  80. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.d.ts +15 -0
  81. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.js +15 -0
  82. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoiceColors.d.ts +2 -0
  83. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoiceColors.js +26 -0
  84. package/vscode/src/vs/workbench/contrib/agentsVoice/common/voiceTranscriptStore.d.ts +132 -0
  85. package/vscode/src/vs/workbench/contrib/agentsVoice/common/voiceTranscriptStore.js +237 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  87. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +2 -2
  88. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +32 -16
  89. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  90. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.d.ts +1 -1
  91. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +71 -60
  92. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  93. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +6 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +15 -15
  95. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
  96. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +7 -7
  97. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +19 -24
  98. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +9 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +14 -5
  101. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  102. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  103. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  104. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +14 -14
  105. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +13 -13
  106. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +66 -52
  107. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  108. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +15 -36
  109. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  110. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +19 -19
  111. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +20 -20
  112. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.d.ts +1 -1
  113. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +128 -13
  114. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +6 -6
  115. package/vscode/src/vs/workbench/contrib/chat/browser/actions/reviewEdits.js +1 -1
  116. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +10 -10
  117. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +2 -2
  118. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  119. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +1 -0
  120. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +58 -9
  121. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
  122. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +15 -3
  123. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.js +64 -17
  124. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.d.ts +45 -1
  125. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.js +15 -0
  126. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +25 -5
  127. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.js +143 -20
  128. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.js +7 -31
  129. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.d.ts +23 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.js +52 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +5 -5
  132. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.d.ts +47 -0
  133. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.js +163 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +26 -3
  135. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +106 -8
  136. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.d.ts +16 -3
  137. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.js +44 -14
  138. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
  139. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +70 -59
  140. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
  141. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  142. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  144. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  145. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  146. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +22 -22
  147. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  148. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  149. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.d.ts +27 -0
  150. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.js +152 -0
  151. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +11 -5
  152. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +1 -1
  153. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +9 -36
  154. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +8 -0
  155. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +17 -15
  156. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +143 -0
  157. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +30 -0
  158. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +6 -3
  159. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +3 -1
  160. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +1 -3
  161. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +107 -126
  162. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +46 -46
  163. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +19 -22
  164. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +244 -190
  165. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +2 -0
  166. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +13 -1
  167. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.d.ts +3 -1
  168. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.js +7 -2
  169. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.d.ts +5 -1
  170. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +47 -28
  171. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +2 -5
  172. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +4 -8
  173. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.d.ts +87 -0
  174. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.js +772 -0
  175. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +24 -8
  176. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +3 -8
  177. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +1 -7
  178. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +2 -2
  179. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.d.ts +42 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.js +130 -0
  181. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +3 -3
  182. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.d.ts +46 -0
  183. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.js +94 -0
  184. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +9 -1
  185. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +421 -201
  186. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +1424 -97
  187. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +1 -1
  188. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +1 -0
  189. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +107 -127
  190. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +29 -0
  191. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.js +331 -0
  192. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.d.ts +120 -0
  193. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.js +898 -0
  194. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  195. package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +581 -336
  196. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.d.ts +123 -0
  197. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.js +567 -0
  198. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +32 -32
  199. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheDiff.js +168 -84
  200. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.d.ts +183 -2
  201. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +897 -251
  202. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheInsights.d.ts +213 -0
  203. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheInsights.js +720 -0
  204. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  205. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  206. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +20 -20
  207. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  208. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  209. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  210. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +22 -22
  211. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +13 -13
  212. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  213. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +24 -24
  214. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  215. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  216. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +33 -33
  217. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  218. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +354 -1
  219. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +9 -2
  220. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  221. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +1 -1
  222. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  223. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  224. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  225. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
  226. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +11 -4
  227. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  228. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  229. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +4 -4
  230. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +3 -3
  231. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +1 -1
  232. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  233. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.d.ts +9 -3
  234. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +55 -8
  235. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -8
  236. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
  237. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +18 -1
  238. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +192 -87
  239. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +37 -3
  240. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
  241. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  242. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.d.ts +40 -1
  243. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +230 -41
  244. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  245. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.d.ts +30 -0
  246. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.js +29 -0
  247. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +23 -25
  248. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  249. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  250. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +35 -32
  251. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +26 -2
  252. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +56 -32
  253. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +19 -19
  254. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +0 -1
  255. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +109 -68
  256. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.d.ts +38 -5
  257. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +175 -50
  258. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +4 -0
  259. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +19 -19
  260. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -2
  261. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
  262. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  263. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +5 -5
  264. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +5 -5
  265. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
  266. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  267. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
  268. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +4 -4
  269. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +5 -5
  270. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.d.ts +4 -5
  271. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +1 -1
  272. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +3 -3
  273. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +32 -3
  274. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +183 -84
  275. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +15 -15
  276. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +3 -1
  277. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +20 -9
  278. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  279. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +27 -27
  280. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
  281. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  282. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolSetsCodeLensProvider.d.ts +1 -0
  283. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolSetsCodeLensProvider.js +109 -0
  284. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  285. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  286. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  287. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  288. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  289. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +20 -20
  290. package/vscode/src/vs/workbench/contrib/chat/browser/tools/clientToolSetsContribution.d.ts +17 -0
  291. package/vscode/src/vs/workbench/contrib/chat/browser/tools/clientToolSetsContribution.js +117 -0
  292. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +39 -39
  293. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +40 -4
  294. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +169 -34
  295. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +7 -7
  296. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +5 -1
  297. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +2 -2
  298. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +8 -8
  299. package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +2 -2
  300. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  301. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.d.ts +125 -0
  302. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.js +399 -0
  303. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/ttsPlaybackService.d.ts +34 -0
  304. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/ttsPlaybackService.js +198 -0
  305. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.d.ts +85 -0
  306. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.js +504 -0
  307. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.d.ts +321 -0
  308. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.js +2117 -0
  309. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.d.ts +57 -0
  310. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.js +367 -0
  311. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +16 -12
  312. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.d.ts +2 -0
  313. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +68 -18
  314. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +11 -10
  315. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +2 -2
  316. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  317. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  318. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.d.ts +7 -0
  319. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +13 -2
  320. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +23 -5
  321. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +320 -40
  322. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  323. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +80 -4
  324. package/vscode/src/vs/workbench/contrib/chat/common/automations/automation.d.ts +78 -0
  325. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.d.ts +13 -0
  326. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.d.ts +11 -0
  327. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.js +6 -0
  328. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.d.ts +16 -0
  329. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.js +6 -0
  330. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.d.ts +46 -0
  331. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.d.ts +36 -0
  332. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.js +6 -0
  333. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.d.ts +12 -0
  334. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.js +6 -0
  335. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +9 -0
  336. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +6 -0
  337. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +2 -0
  338. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +7 -1
  339. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +28 -0
  340. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +226 -88
  341. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +6 -0
  342. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +8 -3
  343. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +13 -2
  344. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +12 -8
  345. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +5 -0
  346. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +5 -2
  347. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.d.ts +15 -0
  348. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.js +177 -0
  349. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +2 -18
  350. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +78 -136
  351. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +1 -16
  352. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +1 -17
  353. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +2 -0
  354. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +16 -5
  355. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.d.ts +31 -0
  356. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.js +122 -0
  357. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +24 -18
  358. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +3 -0
  359. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +113 -10
  360. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  361. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  362. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +10 -0
  363. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +227 -152
  364. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  365. package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.d.ts +26 -0
  366. package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.js +98 -0
  367. package/vscode/src/vs/workbench/contrib/chat/common/workingDirectory.d.ts +5 -0
  368. package/vscode/src/vs/workbench/contrib/chat/common/workingDirectory.js +7 -6
  369. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +11 -12
  370. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +10 -10
  371. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.d.ts +2 -0
  372. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.js +7 -0
  373. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +15 -15
  374. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  375. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +4 -4
  376. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  377. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  378. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  379. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  380. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  381. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  382. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  383. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +32 -20
  384. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  385. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.d.ts +23 -5
  386. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.js +37 -30
  387. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +7 -0
  388. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +7 -0
  389. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +7 -0
  390. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/largeOutputFileWriter.d.ts +33 -0
  391. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/largeOutputFileWriter.js +71 -0
  392. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +19 -0
  393. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +29 -9
  394. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +7 -20
  395. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +4 -4
  396. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +2 -1
  397. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  398. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  399. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +10 -8
  400. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  401. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +4 -4
  402. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  403. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  404. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +3 -3
  405. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +26 -2
  406. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +32 -3
  407. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +416 -252
  408. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +1 -1
  409. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +3 -2
  410. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +10 -10
  411. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  412. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  413. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  414. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  415. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.d.ts +2 -3
  416. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.js +5 -5
  417. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +6 -2
  418. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +25 -8
  419. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.d.ts +8 -3
  420. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.js +15 -0
  421. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +0 -20
  422. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +0 -77
  423. package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.d.ts +0 -52
  424. package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.js +0 -82
  425. package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.d.ts +0 -38
  426. package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.js +0 -47
  427. /package/vscode/src/vs/{workbench/contrib → platform}/browserView/common/browserChatToolReferenceNames.js +0 -0
@@ -28,6 +28,14 @@ import { GithubPromptHeaderAttributes } from '@codingame/monaco-vscode-api/vscod
28
28
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
29
29
 
30
30
  const MARKERS_OWNER_ID = "prompts-diagnostics-provider";
31
+ var PromptValidatorMarkerCode;
32
+ (function(PromptValidatorMarkerCode) {
33
+ PromptValidatorMarkerCode["MissingGithubMcpServer"] = "promptValidator.missingGithubMcpServer";
34
+ PromptValidatorMarkerCode["MissingPlaywrightMcpServer"] = "promptValidator.missingPlaywrightMcpServer";
35
+ PromptValidatorMarkerCode["UnknownExtensionReference"] = "promptValidator.unknownExtensionReference";
36
+ PromptValidatorMarkerCode["UnknownMcpServerReference"] = "promptValidator.unknownMcpServerReference";
37
+ PromptValidatorMarkerCode["UnknownExtensionOrMcpServerReference"] = "promptValidator.unknownExtensionOrMcpServerReference";
38
+ })(PromptValidatorMarkerCode || (PromptValidatorMarkerCode = {}));
31
39
  let PromptValidator = class PromptValidator {
32
40
  constructor(
33
41
  languageModelsService,
@@ -63,13 +71,13 @@ let PromptValidator = class PromptValidator {
63
71
  const location = this.promptsService.getAgentFileURIFromModeFile(promptAST.uri);
64
72
  if (location && (await this.fileService.canCreateFile(location))) {
65
73
  report(toMarker(( localize(
66
- 8166,
74
+ 8779,
67
75
  "Chat modes have been renamed to agents. Please move this file to {0}",
68
76
  (location.toString())
69
77
  )), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
70
78
  } else {
71
79
  report(toMarker(( localize(
72
- 8167,
80
+ 8780,
73
81
  "Chat modes have been renamed to agents. Please move the file to {0}",
74
82
  AGENTS_SOURCE_FOLDER
75
83
  )), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
@@ -82,13 +90,13 @@ let PromptValidator = class PromptValidator {
82
90
  }
83
91
  const nameAttribute = promptAST.header.getAttribute(PromptHeaderAttributes.name);
84
92
  if (!nameAttribute) {
85
- report(toMarker(( localize(8168, "Skill should provide a name.")), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
93
+ report(toMarker(( localize(8781, "Skill should provide a name.")), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
86
94
  } else if (nameAttribute.value.type === "scalar") {
87
95
  const skillName = nameAttribute.value.value.trim();
88
96
  if (skillName.length > 0) {
89
97
  if (!VALID_SKILL_NAME_REGEX.test(skillName)) {
90
98
  report(toMarker(( localize(
91
- 8169,
99
+ 8782,
92
100
  "Skill name may only contain lowercase letters, numbers, and hyphens."
93
101
  )), nameAttribute.value.range, MarkerSeverity.Error));
94
102
  }
@@ -98,7 +106,7 @@ let PromptValidator = class PromptValidator {
98
106
  const folderName = pathParts[skillIndex - 1];
99
107
  if (folderName && skillName !== folderName) {
100
108
  report(toMarker(( localize(
101
- 8170,
109
+ 8783,
102
110
  "The skill name '{0}' should match the folder name '{1}'.",
103
111
  skillName,
104
112
  folderName
@@ -109,12 +117,12 @@ let PromptValidator = class PromptValidator {
109
117
  }
110
118
  const descriptionAttribute = promptAST.header.getAttribute(PromptHeaderAttributes.description);
111
119
  if (!descriptionAttribute) {
112
- report(toMarker(( localize(8171, "Skill should provide a description.")), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
120
+ report(toMarker(( localize(8784, "Skill should provide a description.")), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
113
121
  if (promptAST.header.userInvocable === false) {
114
122
  const userInvocableAttr = promptAST.header.getAttribute(PromptHeaderAttributes.userInvocable);
115
123
  if (userInvocableAttr) {
116
124
  report(toMarker(( localize(
117
- 8172,
125
+ 8785,
118
126
  "A description is required when user-invocable is false, because the model needs a description to decide when to load the skill."
119
127
  )), userInvocableAttr.value.range, MarkerSeverity.Error));
120
128
  }
@@ -123,7 +131,7 @@ let PromptValidator = class PromptValidator {
123
131
  const disableModelInvocationAttr = promptAST.header.getAttribute(PromptHeaderAttributes.disableModelInvocation);
124
132
  if (disableModelInvocationAttr) {
125
133
  report(toMarker(( localize(
126
- 8173,
134
+ 8786,
127
135
  "A description is required when model invocation is enabled, because the model needs a description to decide when to load the skill."
128
136
  )), disableModelInvocationAttr.value.range, MarkerSeverity.Error));
129
137
  }
@@ -134,7 +142,7 @@ let PromptValidator = class PromptValidator {
134
142
  const skillToolEnabled = this.configurationService.getValue("github.copilot.chat.skillTool.enabled");
135
143
  if (!skillToolEnabled) {
136
144
  report(toMarker(( localize(
137
- 8174,
145
+ 8787,
138
146
  "The 'context: fork' attribute requires the skill tool to be enabled (github.copilot.chat.skillTool.enabled)."
139
147
  )), contextAttribute.value.range, MarkerSeverity.Warning));
140
148
  }
@@ -149,7 +157,7 @@ let PromptValidator = class PromptValidator {
149
157
  for (const ref of body.fileReferences) {
150
158
  const resolved = body.resolveFilePath(ref.content);
151
159
  if (!resolved) {
152
- report(toMarker(( localize(8175, "Invalid file reference '{0}'.", ref.content)), ref.range, MarkerSeverity.Warning));
160
+ report(toMarker(( localize(8788, "Invalid file reference '{0}'.", ref.content)), ref.range, MarkerSeverity.Warning));
153
161
  continue;
154
162
  }
155
163
  if (promptAST.uri.scheme === resolved.scheme) {
@@ -158,7 +166,7 @@ let PromptValidator = class PromptValidator {
158
166
  const exists = await this.fileService.exists(resolved);
159
167
  if (!exists) {
160
168
  const loc = this.labelService.getUriLabel(resolved);
161
- report(toMarker(( localize(8176, "File '{0}' not found at '{1}'.", ref.content, loc)), ref.range, MarkerSeverity.Warning));
169
+ report(toMarker(( localize(8789, "File '{0}' not found at '{1}'.", ref.content, loc)), ref.range, MarkerSeverity.Warning));
162
170
  }
163
171
  } catch (e) {
164
172
  this.logger.warn(
@@ -181,7 +189,7 @@ let PromptValidator = class PromptValidator {
181
189
  if (currentNames.size === 1) {
182
190
  const newName = Array.from(currentNames)[0];
183
191
  report(toMarker(( localize(
184
- 8177,
192
+ 8790,
185
193
  "Tool or toolset '{0}' has been renamed, use '{1}' instead.",
186
194
  variable.name,
187
195
  newName
@@ -189,7 +197,7 @@ let PromptValidator = class PromptValidator {
189
197
  } else {
190
198
  const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(", ");
191
199
  report(toMarker(( localize(
192
- 8178,
200
+ 8791,
193
201
  "Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
194
202
  variable.name,
195
203
  newNames
@@ -197,13 +205,23 @@ let PromptValidator = class PromptValidator {
197
205
  }
198
206
  }
199
207
  } else {
200
- report(toMarker(( localize(8179, "Unknown tool or toolset '{0}'.", variable.name)), variable.range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
208
+ const missingGithubServerMarker = this.getMissingGithubMcpServerMarker(variable.name, variable.range);
209
+ if (missingGithubServerMarker) {
210
+ report(missingGithubServerMarker);
211
+ } else {
212
+ const missingPlaywrightServerMarker = this.getMissingPlaywrightMcpServerMarker(variable.name, variable.range);
213
+ if (missingPlaywrightServerMarker) {
214
+ report(missingPlaywrightServerMarker);
215
+ } else {
216
+ report(this.getUnknownToolMarker(variable.name, variable.range, true));
217
+ }
218
+ }
201
219
  }
202
220
  } else if (headerToolsMap) {
203
221
  const tool = this.languageModelToolsService.getToolByFullReferenceName(variable.name);
204
222
  if (tool && headerToolsMap.get(tool) === false) {
205
223
  report(toMarker(( localize(
206
- 8180,
224
+ 8792,
207
225
  "Tool or toolset '{0}' also needs to be enabled in the header.",
208
226
  variable.name
209
227
  )), variable.range, MarkerSeverity.Warning));
@@ -277,7 +295,7 @@ let PromptValidator = class PromptValidator {
277
295
  switch (promptType) {
278
296
  case PromptsType.prompt:
279
297
  report(toMarker(( localize(
280
- 8181,
298
+ 8793,
281
299
  "Attribute '{0}' is not supported in prompt files. Supported: {1}.",
282
300
  attribute.key,
283
301
  supportedNames.value
@@ -286,7 +304,7 @@ let PromptValidator = class PromptValidator {
286
304
  case PromptsType.agent:
287
305
  if (target === Target.GitHubCopilot) {
288
306
  report(toMarker(( localize(
289
- 8182,
307
+ 8794,
290
308
  "Attribute '{0}' is not supported in custom GitHub Copilot agent files. Supported: {1}.",
291
309
  attribute.key,
292
310
  supportedNames.value
@@ -295,13 +313,13 @@ let PromptValidator = class PromptValidator {
295
313
  ; else {
296
314
  if (( validGithubCopilotAttributeNames.value.has(attribute.key))) {
297
315
  report(toMarker(( localize(
298
- 8183,
316
+ 8795,
299
317
  "Attribute '{0}' is ignored when running locally in VS Code.",
300
318
  attribute.key
301
319
  )), attribute.range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
302
320
  } else {
303
321
  report(toMarker(( localize(
304
- 8184,
322
+ 8796,
305
323
  "Attribute '{0}' is not supported in VS Code agent files. Supported: {1}.",
306
324
  attribute.key,
307
325
  supportedNames.value
@@ -312,14 +330,14 @@ let PromptValidator = class PromptValidator {
312
330
  case PromptsType.instructions:
313
331
  if (target === Target.Claude) {
314
332
  report(toMarker(( localize(
315
- 8185,
333
+ 8797,
316
334
  "Attribute '{0}' is not supported in rules files by VS Code agents. Supported: {1}.",
317
335
  attribute.key,
318
336
  supportedNames.value
319
337
  )), attribute.range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
320
338
  } else {
321
339
  report(toMarker(( localize(
322
- 8186,
340
+ 8798,
323
341
  "Attribute '{0}' is not supported in instructions files. Supported: {1}.",
324
342
  attribute.key,
325
343
  supportedNames.value
@@ -328,7 +346,7 @@ let PromptValidator = class PromptValidator {
328
346
  break;
329
347
  case PromptsType.skill:
330
348
  report(toMarker(( localize(
331
- 8187,
349
+ 8799,
332
350
  "Attribute '{0}' is not supported by VS Code agents. Supported: {1}.",
333
351
  attribute.key,
334
352
  supportedNames.value
@@ -344,11 +362,11 @@ let PromptValidator = class PromptValidator {
344
362
  return;
345
363
  }
346
364
  if (nameAttribute.value.type !== "scalar") {
347
- report(toMarker(( localize(8188, "The 'name' attribute must be a string.")), nameAttribute.range, MarkerSeverity.Error));
365
+ report(toMarker(( localize(8800, "The 'name' attribute must be a string.")), nameAttribute.range, MarkerSeverity.Error));
348
366
  return;
349
367
  }
350
368
  if (nameAttribute.value.value.trim().length === 0) {
351
- report(toMarker(( localize(8189, "The 'name' attribute must not be empty.")), nameAttribute.value.range, MarkerSeverity.Error));
369
+ report(toMarker(( localize(8801, "The 'name' attribute must not be empty.")), nameAttribute.value.range, MarkerSeverity.Error));
352
370
  return;
353
371
  }
354
372
  }
@@ -358,11 +376,11 @@ let PromptValidator = class PromptValidator {
358
376
  return;
359
377
  }
360
378
  if (descriptionAttribute.value.type !== "scalar") {
361
- report(toMarker(( localize(8190, "The 'description' attribute must be a string.")), descriptionAttribute.range, MarkerSeverity.Error));
379
+ report(toMarker(( localize(8802, "The 'description' attribute must be a string.")), descriptionAttribute.range, MarkerSeverity.Error));
362
380
  return;
363
381
  }
364
382
  if (descriptionAttribute.value.value.trim().length === 0) {
365
- report(toMarker(( localize(8191, "The 'description' attribute should not be empty.")), descriptionAttribute.value.range, MarkerSeverity.Error));
383
+ report(toMarker(( localize(8803, "The 'description' attribute should not be empty.")), descriptionAttribute.value.range, MarkerSeverity.Error));
366
384
  return;
367
385
  }
368
386
  }
@@ -372,11 +390,11 @@ let PromptValidator = class PromptValidator {
372
390
  return;
373
391
  }
374
392
  if (argumentHintAttribute.value.type !== "scalar") {
375
- report(toMarker(( localize(8192, "The 'argument-hint' attribute must be a string.")), argumentHintAttribute.range, MarkerSeverity.Error));
393
+ report(toMarker(( localize(8804, "The 'argument-hint' attribute must be a string.")), argumentHintAttribute.range, MarkerSeverity.Error));
376
394
  return;
377
395
  }
378
396
  if (argumentHintAttribute.value.value.trim().length === 0) {
379
- report(toMarker(( localize(8193, "The 'argument-hint' attribute should not be empty.")), argumentHintAttribute.value.range, MarkerSeverity.Warning));
397
+ report(toMarker(( localize(8805, "The 'argument-hint' attribute should not be empty.")), argumentHintAttribute.value.range, MarkerSeverity.Warning));
380
398
  return;
381
399
  }
382
400
  }
@@ -386,30 +404,30 @@ let PromptValidator = class PromptValidator {
386
404
  return;
387
405
  }
388
406
  if (attribute.value.type !== "scalar" && attribute.value.type !== "sequence") {
389
- report(toMarker(( localize(8194, "The 'model' attribute must be a string or an array of strings.")), attribute.value.range, MarkerSeverity.Error));
407
+ report(toMarker(( localize(8806, "The 'model' attribute must be a string or an array of strings.")), attribute.value.range, MarkerSeverity.Error));
390
408
  return;
391
409
  }
392
410
  const modelNames = [];
393
411
  if (attribute.value.type === "scalar") {
394
412
  const modelName = attribute.value.value.trim();
395
413
  if (modelName.length === 0) {
396
- report(toMarker(( localize(8195, "The 'model' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
414
+ report(toMarker(( localize(8807, "The 'model' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
397
415
  return;
398
416
  }
399
417
  modelNames.push([modelName, attribute.value.range]);
400
418
  } else if (attribute.value.type === "sequence") {
401
419
  if (attribute.value.items.length === 0) {
402
- report(toMarker(( localize(8196, "The 'model' array must not be empty.")), attribute.value.range, MarkerSeverity.Error));
420
+ report(toMarker(( localize(8808, "The 'model' array must not be empty.")), attribute.value.range, MarkerSeverity.Error));
403
421
  return;
404
422
  }
405
423
  for (const item of attribute.value.items) {
406
424
  if (item.type !== "scalar") {
407
- report(toMarker(( localize(8197, "The 'model' array must contain only strings.")), item.range, MarkerSeverity.Error));
425
+ report(toMarker(( localize(8809, "The 'model' array must contain only strings.")), item.range, MarkerSeverity.Error));
408
426
  return;
409
427
  }
410
428
  const modelName = item.value.trim();
411
429
  if (modelName.length === 0) {
412
- report(toMarker(( localize(8198, "Model names in the array must be non-empty strings.")), item.range, MarkerSeverity.Error));
430
+ report(toMarker(( localize(8810, "Model names in the array must be non-empty strings.")), item.range, MarkerSeverity.Error));
413
431
  return;
414
432
  }
415
433
  modelNames.push([modelName, item.range]);
@@ -422,9 +440,9 @@ let PromptValidator = class PromptValidator {
422
440
  for (const [modelName, range] of modelNames) {
423
441
  const modelMetadata = this.findModelByName(modelName);
424
442
  if (!modelMetadata) {
425
- report(toMarker(( localize(8199, "Unknown model '{0}' will be ignored.", modelName)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
443
+ report(toMarker(( localize(8811, "Unknown model '{0}' will be ignored.", modelName)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
426
444
  } else if (agentKind === ChatModeKind.Agent && !ILanguageModelChatMetadata.suitableForAgentMode(modelMetadata)) {
427
- report(toMarker(( localize(8200, "Model '{0}' is not suited for agent mode.", modelName)), range, MarkerSeverity.Warning));
445
+ report(toMarker(( localize(8812, "Model '{0}' is not suited for agent mode.", modelName)), range, MarkerSeverity.Warning));
428
446
  }
429
447
  }
430
448
  }
@@ -438,13 +456,13 @@ let PromptValidator = class PromptValidator {
438
456
  continue;
439
457
  }
440
458
  if (attribute.value.type !== "scalar") {
441
- report(toMarker(( localize(8201, "The '{0}' attribute must be a string.", claudeAttributeName)), attribute.value.range, MarkerSeverity.Error));
459
+ report(toMarker(( localize(8813, "The '{0}' attribute must be a string.", claudeAttributeName)), attribute.value.range, MarkerSeverity.Error));
442
460
  continue;
443
461
  } else {
444
462
  const modelName = attribute.value.value.trim();
445
463
  if (enumValues.every(model => model.name !== modelName)) {
446
464
  const validValues = ( enumValues.map(model => model.name)).join(", ");
447
- report(toMarker(( localize(8202, "Unknown value '{0}', valid: {1}.", modelName, validValues)), attribute.value.range, MarkerSeverity.Warning));
465
+ report(toMarker(( localize(8814, "Unknown value '{0}', valid: {1}.", modelName, validValues)), attribute.value.range, MarkerSeverity.Warning));
448
466
  }
449
467
  }
450
468
  }
@@ -463,12 +481,12 @@ let PromptValidator = class PromptValidator {
463
481
  if (modeAttribute) {
464
482
  if (agentAttribute) {
465
483
  report(toMarker(( localize(
466
- 8203,
484
+ 8815,
467
485
  "The 'mode' attribute has been deprecated. The 'agent' attribute is used instead."
468
486
  )), modeAttribute.range, MarkerSeverity.Warning, [MarkerTag.Deprecated]));
469
487
  } else {
470
488
  report(toMarker(( localize(
471
- 8204,
489
+ 8816,
472
490
  "The 'mode' attribute has been deprecated. Please rename it to 'agent'."
473
491
  )), modeAttribute.range, MarkerSeverity.Warning, [MarkerTag.Deprecated]));
474
492
  }
@@ -478,12 +496,12 @@ let PromptValidator = class PromptValidator {
478
496
  return undefined;
479
497
  }
480
498
  if (attribute.value.type !== "scalar") {
481
- report(toMarker(( localize(8205, "The '{0}' attribute must be a string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
499
+ report(toMarker(( localize(8817, "The '{0}' attribute must be a string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
482
500
  return undefined;
483
501
  }
484
502
  const agentValue = attribute.value.value;
485
503
  if (agentValue.trim().length === 0) {
486
- report(toMarker(( localize(8206, "The '{0}' attribute must be a non-empty string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
504
+ report(toMarker(( localize(8818, "The '{0}' attribute must be a non-empty string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
487
505
  return undefined;
488
506
  }
489
507
  return await this.validateAgentValue(attribute.value, report);
@@ -498,7 +516,7 @@ let PromptValidator = class PromptValidator {
498
516
  availableAgents.push(agent.name.get());
499
517
  }
500
518
  const errorMessage = ( localize(
501
- 8207,
519
+ 8819,
502
520
  "Unknown agent '{0}'. Available agents: {1}.",
503
521
  value.value,
504
522
  availableAgents.join(", ")
@@ -513,7 +531,7 @@ let PromptValidator = class PromptValidator {
513
531
  }
514
532
  if (agentKind !== ChatModeKind.Agent) {
515
533
  report(toMarker(( localize(
516
- 8208,
534
+ 8820,
517
535
  "The 'tools' attribute is only supported when using agents. Attribute will be ignored."
518
536
  )), attribute.range, MarkerSeverity.Warning));
519
537
  }
@@ -523,7 +541,7 @@ let PromptValidator = class PromptValidator {
523
541
  }
524
542
  if (value.type !== "sequence") {
525
543
  report(toMarker(( localize(
526
- 8209,
544
+ 8821,
527
545
  "The 'tools' attribute must be an array or a comma separated string."
528
546
  )), attribute.value.range, MarkerSeverity.Error));
529
547
  return;
@@ -539,7 +557,7 @@ let PromptValidator = class PromptValidator {
539
557
  const deprecatedNames = this.languageModelToolsService.getDeprecatedFullReferenceNames();
540
558
  for (const item of valueItem.items) {
541
559
  if (item.type !== "scalar") {
542
- report(toMarker(( localize(8210, "Each tool name in the 'tools' attribute must be a string.")), item.range, MarkerSeverity.Error));
560
+ report(toMarker(( localize(8822, "Each tool name in the 'tools' attribute must be a string.")), item.range, MarkerSeverity.Error));
543
561
  } else if (item.value) {
544
562
  if (!( available.has(item.value))) {
545
563
  const currentNames = deprecatedNames.get(item.value);
@@ -547,7 +565,7 @@ let PromptValidator = class PromptValidator {
547
565
  if (currentNames?.size === 1) {
548
566
  const newName = Array.from(currentNames)[0];
549
567
  report(toMarker(( localize(
550
- 8211,
568
+ 8823,
551
569
  "Tool or toolset '{0}' has been renamed, use '{1}' instead.",
552
570
  item.value,
553
571
  newName
@@ -555,45 +573,99 @@ let PromptValidator = class PromptValidator {
555
573
  } else {
556
574
  const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(", ");
557
575
  report(toMarker(( localize(
558
- 8212,
576
+ 8824,
559
577
  "Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
560
578
  item.value,
561
579
  newNames
562
580
  )), item.range, MarkerSeverity.Info, [MarkerTag.Deprecated]));
563
581
  }
564
582
  } else {
565
- report(toMarker(( localize(8213, "Unknown tool '{0}' will be ignored.", item.value)), item.range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
583
+ const missingGithubServerMarker = this.getMissingGithubMcpServerMarker(item.value, item.range);
584
+ if (missingGithubServerMarker) {
585
+ report(missingGithubServerMarker);
586
+ } else {
587
+ const missingPlaywrightServerMarker = this.getMissingPlaywrightMcpServerMarker(item.value, item.range);
588
+ if (missingPlaywrightServerMarker) {
589
+ report(missingPlaywrightServerMarker);
590
+ } else {
591
+ report(this.getUnknownToolMarker(item.value, item.range, false));
592
+ }
593
+ }
566
594
  }
567
595
  }
568
596
  }
569
597
  }
570
598
  }
571
599
  }
600
+ getUnknownToolMarker(toolReferenceName, range, isVariableReference) {
601
+ const splitBySlash = toolReferenceName.split("/");
602
+ const slashCount = splitBySlash.length - 1;
603
+ const hasExtensionLikeName = splitBySlash[0].includes(".");
604
+ if (slashCount >= 2) {
605
+ return toMarker(( localize(
606
+ 8825,
607
+ "Unknown tool '{0}'. It is likely to be a missing MCP server, please ensure it is installed and enabled.",
608
+ toolReferenceName
609
+ )), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.UnknownMcpServerReference);
610
+ }
611
+ if (hasExtensionLikeName) {
612
+ return toMarker(( localize(
613
+ 8826,
614
+ "Unknown extension tool '{0}'. It is likely to be a missing extension, please ensure it is installed and enabled.",
615
+ toolReferenceName
616
+ )), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.UnknownExtensionReference);
617
+ }
618
+ if (isVariableReference) {
619
+ return toMarker(( localize(8827, "Unknown tool or toolset '{0}'.", toolReferenceName)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.UnknownExtensionOrMcpServerReference);
620
+ } else {
621
+ return toMarker(( localize(8828, "Unknown tool '{0}' will be ignored.", toolReferenceName)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.UnknownExtensionOrMcpServerReference);
622
+ }
623
+ }
624
+ getMissingGithubMcpServerMarker(toolReferenceName, range) {
625
+ if (toolReferenceName !== "github/*") {
626
+ return undefined;
627
+ }
628
+ return toMarker(( localize(
629
+ 8829,
630
+ "Tool alias '{0}' requires the GitHub MCP server. Enable the built-in server with setting 'github.copilot.chat.githubMcpServer.enabled' or install extension 'io.github.github/github-mcp-server' from Extensions (`@mcp github`).",
631
+ toolReferenceName
632
+ )), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.MissingGithubMcpServer);
633
+ }
634
+ getMissingPlaywrightMcpServerMarker(toolReferenceName, range) {
635
+ if (toolReferenceName !== "playwright/*") {
636
+ return undefined;
637
+ }
638
+ return toMarker(( localize(
639
+ 8830,
640
+ "Tool alias '{0}' requires the Playwright MCP server. Install it from Extensions (`@mcp playwright`).",
641
+ toolReferenceName
642
+ )), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.MissingPlaywrightMcpServer);
643
+ }
572
644
  validateApplyTo(attributes, report) {
573
645
  const attribute = attributes.find(attr => attr.key === PromptHeaderAttributes.applyTo);
574
646
  if (!attribute) {
575
647
  return;
576
648
  }
577
649
  if (attribute.value.type !== "scalar") {
578
- report(toMarker(( localize(8214, "The 'applyTo' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
650
+ report(toMarker(( localize(8831, "The 'applyTo' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
579
651
  return;
580
652
  }
581
653
  const pattern = attribute.value.value;
582
654
  try {
583
655
  const patterns = splitGlobAware(pattern, ",");
584
656
  if (patterns.length === 0) {
585
- report(toMarker(( localize(8215, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
657
+ report(toMarker(( localize(8832, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
586
658
  return;
587
659
  }
588
660
  for (const pattern of patterns) {
589
661
  const globPattern = parse(pattern);
590
662
  if (isEmptyPattern(globPattern)) {
591
- report(toMarker(( localize(8215, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
663
+ report(toMarker(( localize(8832, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
592
664
  return;
593
665
  }
594
666
  }
595
667
  } catch (_error) {
596
- report(toMarker(( localize(8215, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
668
+ report(toMarker(( localize(8832, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
597
669
  }
598
670
  }
599
671
  validatePaths(attributes, report) {
@@ -602,26 +674,26 @@ let PromptValidator = class PromptValidator {
602
674
  return;
603
675
  }
604
676
  if (attribute.value.type !== "sequence") {
605
- report(toMarker(( localize(8216, "The 'paths' attribute must be an array of glob patterns.")), attribute.value.range, MarkerSeverity.Error));
677
+ report(toMarker(( localize(8833, "The 'paths' attribute must be an array of glob patterns.")), attribute.value.range, MarkerSeverity.Error));
606
678
  return;
607
679
  }
608
680
  for (const item of attribute.value.items) {
609
681
  if (item.type !== "scalar") {
610
- report(toMarker(( localize(8217, "Each entry in the 'paths' attribute must be a string.")), item.range, MarkerSeverity.Error));
682
+ report(toMarker(( localize(8834, "Each entry in the 'paths' attribute must be a string.")), item.range, MarkerSeverity.Error));
611
683
  continue;
612
684
  }
613
685
  const pattern = item.value.trim();
614
686
  if (pattern.length === 0) {
615
- report(toMarker(( localize(8218, "Path entries must be non-empty glob patterns.")), item.range, MarkerSeverity.Error));
687
+ report(toMarker(( localize(8835, "Path entries must be non-empty glob patterns.")), item.range, MarkerSeverity.Error));
616
688
  continue;
617
689
  }
618
690
  try {
619
691
  const globPattern = parse(pattern);
620
692
  if (isEmptyPattern(globPattern)) {
621
- report(toMarker(( localize(8219, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
693
+ report(toMarker(( localize(8836, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
622
694
  }
623
695
  } catch (_error) {
624
- report(toMarker(( localize(8219, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
696
+ report(toMarker(( localize(8836, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
625
697
  }
626
698
  }
627
699
  }
@@ -631,7 +703,7 @@ let PromptValidator = class PromptValidator {
631
703
  return;
632
704
  }
633
705
  if (attribute.value.type !== "sequence" && attribute.value.type !== "scalar") {
634
- report(toMarker(( localize(8220, "The 'excludeAgent' attribute must be an string or array.")), attribute.value.range, MarkerSeverity.Error));
706
+ report(toMarker(( localize(8837, "The 'excludeAgent' attribute must be an string or array.")), attribute.value.range, MarkerSeverity.Error));
635
707
  return;
636
708
  }
637
709
  }
@@ -642,7 +714,7 @@ let PromptValidator = class PromptValidator {
642
714
  }
643
715
  if (attribute.value.type !== "map") {
644
716
  report(toMarker(( localize(
645
- 8221,
717
+ 8838,
646
718
  "The 'hooks' attribute must be a map of hook event types to command arrays."
647
719
  )), attribute.value.range, MarkerSeverity.Error));
648
720
  return;
@@ -651,7 +723,7 @@ let PromptValidator = class PromptValidator {
651
723
  for (const prop of attribute.value.properties) {
652
724
  if (!( validHookNames.has(prop.key.value))) {
653
725
  report(toMarker(( localize(
654
- 8222,
726
+ 8839,
655
727
  "Unknown hook event type '{0}'. Supported: {1}.",
656
728
  prop.key.value,
657
729
  Array.from(validHookNames).join(", ")
@@ -659,7 +731,7 @@ let PromptValidator = class PromptValidator {
659
731
  }
660
732
  if (prop.value.type !== "sequence") {
661
733
  report(toMarker(( localize(
662
- 8223,
734
+ 8840,
663
735
  "Hook event '{0}' must have an array of command objects as its value.",
664
736
  prop.key.value
665
737
  )), prop.value.range, MarkerSeverity.Error));
@@ -672,19 +744,19 @@ let PromptValidator = class PromptValidator {
672
744
  }
673
745
  validateHookCommand(item, target, report) {
674
746
  if (item.type !== "map") {
675
- report(toMarker(( localize(8224, "Each hook command must be an object.")), item.range, MarkerSeverity.Error));
747
+ report(toMarker(( localize(8841, "Each hook command must be an object.")), item.range, MarkerSeverity.Error));
676
748
  return;
677
749
  }
678
750
  const hooksProperty = item.properties.find(p => p.key.value === "hooks");
679
751
  if (hooksProperty) {
680
752
  for (const prop of item.properties) {
681
753
  if (prop.key.value !== "hooks" && prop.key.value !== "matcher") {
682
- report(toMarker(( localize(8225, "Unknown property '{0}' in hook matcher.", prop.key.value)), prop.key.range, MarkerSeverity.Warning));
754
+ report(toMarker(( localize(8842, "Unknown property '{0}' in hook matcher.", prop.key.value)), prop.key.range, MarkerSeverity.Warning));
683
755
  }
684
756
  }
685
757
  if (hooksProperty.value.type !== "sequence") {
686
758
  report(toMarker(( localize(
687
- 8226,
759
+ 8843,
688
760
  "The 'hooks' property in a matcher must be an array of command objects."
689
761
  )), hooksProperty.value.range, MarkerSeverity.Error));
690
762
  return;
@@ -713,37 +785,37 @@ let PromptValidator = class PromptValidator {
713
785
  for (const prop of item.properties) {
714
786
  const key = prop.key.value;
715
787
  if (!( validProperties.has(key))) {
716
- report(toMarker(( localize(8227, "Unknown property '{0}' in hook command.", key)), prop.key.range, MarkerSeverity.Warning));
788
+ report(toMarker(( localize(8844, "Unknown property '{0}' in hook command.", key)), prop.key.range, MarkerSeverity.Warning));
717
789
  }
718
790
  if (key === "type") {
719
791
  hasType = true;
720
792
  if (prop.value.type !== "scalar" || prop.value.value !== "command") {
721
- report(toMarker(( localize(8228, "The 'type' property in a hook command must be 'command'.")), prop.value.range, MarkerSeverity.Error));
793
+ report(toMarker(( localize(8845, "The 'type' property in a hook command must be 'command'.")), prop.value.range, MarkerSeverity.Error));
722
794
  }
723
795
  } else if (( validCommandFields.has(key))) {
724
796
  hasCommandField = true;
725
797
  if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
726
798
  report(toMarker(( localize(
727
- 8229,
799
+ 8846,
728
800
  "The '{0}' property in a hook command must be a non-empty string.",
729
801
  key
730
802
  )), prop.value.range, MarkerSeverity.Error));
731
803
  }
732
804
  } else if (key === "cwd") {
733
805
  if (prop.value.type !== "scalar") {
734
- report(toMarker(( localize(8230, "The 'cwd' property in a hook command must be a string.")), prop.value.range, MarkerSeverity.Error));
806
+ report(toMarker(( localize(8847, "The 'cwd' property in a hook command must be a string.")), prop.value.range, MarkerSeverity.Error));
735
807
  }
736
808
  } else if (key === "env") {
737
809
  if (prop.value.type !== "map") {
738
810
  report(toMarker(( localize(
739
- 8231,
811
+ 8848,
740
812
  "The 'env' property in a hook command must be a map of string values."
741
813
  )), prop.value.range, MarkerSeverity.Error));
742
814
  } else {
743
815
  for (const envProp of prop.value.properties) {
744
816
  if (envProp.value.type !== "scalar") {
745
817
  report(toMarker(( localize(
746
- 8232,
818
+ 8849,
747
819
  "Environment variable '{0}' must have a string value.",
748
820
  envProp.key.value
749
821
  )), envProp.value.range, MarkerSeverity.Error));
@@ -752,19 +824,19 @@ let PromptValidator = class PromptValidator {
752
824
  }
753
825
  } else if (key === "timeout" || key === "timeoutSec") {
754
826
  if (prop.value.type !== "scalar" || isNaN(Number(prop.value.value))) {
755
- report(toMarker(( localize(8233, "The '{0}' property in a hook command must be a number.", key)), prop.value.range, MarkerSeverity.Error));
827
+ report(toMarker(( localize(8850, "The '{0}' property in a hook command must be a number.", key)), prop.value.range, MarkerSeverity.Error));
756
828
  }
757
829
  }
758
830
  }
759
831
  if (!hasType) {
760
- report(toMarker(( localize(8234, "Hook command is missing required property 'type'.")), item.range, MarkerSeverity.Error));
832
+ report(toMarker(( localize(8851, "Hook command is missing required property 'type'.")), item.range, MarkerSeverity.Error));
761
833
  }
762
834
  if (!hasCommandField) {
763
835
  if (isCopilotCli) {
764
- report(toMarker(( localize(8235, "Hook command must specify at least one of 'bash' or 'powershell'.")), item.range, MarkerSeverity.Error));
836
+ report(toMarker(( localize(8852, "Hook command must specify at least one of 'bash' or 'powershell'.")), item.range, MarkerSeverity.Error));
765
837
  } else {
766
838
  report(toMarker(( localize(
767
- 8236,
839
+ 8853,
768
840
  "Hook command must specify at least one of 'command', 'windows', 'linux', or 'osx'."
769
841
  )), item.range, MarkerSeverity.Error));
770
842
  }
@@ -776,14 +848,14 @@ let PromptValidator = class PromptValidator {
776
848
  return;
777
849
  }
778
850
  if (attribute.value.type !== "sequence") {
779
- report(toMarker(( localize(8237, "The 'handoffs' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
851
+ report(toMarker(( localize(8854, "The 'handoffs' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
780
852
  return;
781
853
  }
782
854
  const seenLabels = ( new Map());
783
855
  for (const item of attribute.value.items) {
784
856
  if (item.type !== "map") {
785
857
  report(toMarker(( localize(
786
- 8238,
858
+ 8855,
787
859
  "Each handoff in the 'handoffs' attribute must be an object with 'label', 'agent', 'prompt' and optional 'send'."
788
860
  )), item.range, MarkerSeverity.Error));
789
861
  continue;
@@ -793,44 +865,44 @@ let PromptValidator = class PromptValidator {
793
865
  switch (prop.key.value) {
794
866
  case "label":
795
867
  if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
796
- report(toMarker(( localize(8239, "The 'label' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
868
+ report(toMarker(( localize(8856, "The 'label' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
797
869
  } else if (!/[a-zA-Z0-9]/.test(prop.value.value)) {
798
870
  report(toMarker(( localize(
799
- 8240,
871
+ 8857,
800
872
  "The 'label' property in a handoff must contain at least one alphanumeric character."
801
873
  )), prop.value.range, MarkerSeverity.Error));
802
874
  }
803
875
  break;
804
876
  case "agent":
805
877
  if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
806
- report(toMarker(( localize(8241, "The 'agent' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
878
+ report(toMarker(( localize(8858, "The 'agent' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
807
879
  } else {
808
880
  this.validateAgentValue(prop.value, report);
809
881
  }
810
882
  break;
811
883
  case "prompt":
812
884
  if (prop.value.type !== "scalar") {
813
- report(toMarker(( localize(8242, "The 'prompt' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
885
+ report(toMarker(( localize(8859, "The 'prompt' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
814
886
  }
815
887
  break;
816
888
  case "send":
817
889
  if (!isTrueOrFalse(prop.value)) {
818
- report(toMarker(( localize(8243, "The 'send' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
890
+ report(toMarker(( localize(8860, "The 'send' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
819
891
  }
820
892
  break;
821
893
  case "showContinueOn":
822
894
  if (!isTrueOrFalse(prop.value)) {
823
- report(toMarker(( localize(8244, "The 'showContinueOn' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
895
+ report(toMarker(( localize(8861, "The 'showContinueOn' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
824
896
  }
825
897
  break;
826
898
  case "model":
827
899
  if (prop.value.type !== "scalar") {
828
- report(toMarker(( localize(8245, "The 'model' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
900
+ report(toMarker(( localize(8862, "The 'model' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
829
901
  }
830
902
  break;
831
903
  default:
832
904
  report(toMarker(( localize(
833
- 8246,
905
+ 8863,
834
906
  "Unknown property '{0}' in handoff object. Supported properties are 'label', 'agent', 'prompt' and optional 'send', 'showContinueOn', 'model'.",
835
907
  prop.key.value
836
908
  )), prop.value.range, MarkerSeverity.Warning));
@@ -839,7 +911,7 @@ let PromptValidator = class PromptValidator {
839
911
  }
840
912
  if (required.size > 0) {
841
913
  report(toMarker(( localize(
842
- 8247,
914
+ 8864,
843
915
  "Missing required properties {0} in handoff object.",
844
916
  ( Array.from(required).map(s => `'${s}'`)).join(", ")
845
917
  )), item.range, MarkerSeverity.Error));
@@ -849,7 +921,7 @@ let PromptValidator = class PromptValidator {
849
921
  const normalizedLabel = labelProp.value.value.toLowerCase();
850
922
  if (normalizedLabel && ( seenLabels.has(normalizedLabel))) {
851
923
  report(toMarker(( localize(
852
- 8248,
924
+ 8865,
853
925
  "Duplicate handoff label '{0}'. Each handoff must have a unique label.",
854
926
  labelProp.value.value
855
927
  )), labelProp.value.range, MarkerSeverity.Error));
@@ -865,7 +937,7 @@ let PromptValidator = class PromptValidator {
865
937
  return;
866
938
  }
867
939
  report(toMarker(( localize(
868
- 8249,
940
+ 8866,
869
941
  "The 'infer' attribute is deprecated in favour of 'user-invocable' and 'disable-model-invocation'."
870
942
  )), attribute.value.range, MarkerSeverity.Error));
871
943
  }
@@ -875,18 +947,18 @@ let PromptValidator = class PromptValidator {
875
947
  return;
876
948
  }
877
949
  if (attribute.value.type !== "scalar") {
878
- report(toMarker(( localize(8250, "The 'target' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
950
+ report(toMarker(( localize(8867, "The 'target' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
879
951
  return;
880
952
  }
881
953
  const targetValue = attribute.value.value.trim();
882
954
  if (targetValue.length === 0) {
883
- report(toMarker(( localize(8251, "The 'target' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
955
+ report(toMarker(( localize(8868, "The 'target' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
884
956
  return;
885
957
  }
886
958
  const validTargets = ["github-copilot", "vscode"];
887
959
  if (!validTargets.includes(targetValue)) {
888
960
  report(toMarker(( localize(
889
- 8252,
961
+ 8869,
890
962
  "The 'target' attribute must be one of: {0}.",
891
963
  validTargets.join(", ")
892
964
  )), attribute.value.range, MarkerSeverity.Error));
@@ -898,7 +970,7 @@ let PromptValidator = class PromptValidator {
898
970
  return;
899
971
  }
900
972
  if (!isTrueOrFalse(attribute.value)) {
901
- report(toMarker(( localize(8253, "The 'user-invocable' attribute must be 'true' or 'false'.")), attribute.value.range, MarkerSeverity.Error));
973
+ report(toMarker(( localize(8870, "The 'user-invocable' attribute must be 'true' or 'false'.")), attribute.value.range, MarkerSeverity.Error));
902
974
  return;
903
975
  }
904
976
  }
@@ -909,7 +981,7 @@ let PromptValidator = class PromptValidator {
909
981
  }
910
982
  if (!isTrueOrFalse(attribute.value)) {
911
983
  report(toMarker(( localize(
912
- 8254,
984
+ 8871,
913
985
  "The 'disable-model-invocation' attribute must be 'true' or 'false'."
914
986
  )), attribute.value.range, MarkerSeverity.Error));
915
987
  return;
@@ -921,7 +993,7 @@ let PromptValidator = class PromptValidator {
921
993
  return;
922
994
  }
923
995
  if (attribute.value.type !== "sequence") {
924
- report(toMarker(( localize(8255, "The 'agents' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
996
+ report(toMarker(( localize(8872, "The 'agents' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
925
997
  return;
926
998
  }
927
999
  const agents = (await this.promptsService.getCustomAgents(CancellationToken.None)).filter(a => a.enabled);
@@ -930,12 +1002,12 @@ let PromptValidator = class PromptValidator {
930
1002
  const agentNames = [];
931
1003
  for (const item of attribute.value.items) {
932
1004
  if (item.type !== "scalar") {
933
- report(toMarker(( localize(8256, "Each agent name in the 'agents' attribute must be a string.")), item.range, MarkerSeverity.Error));
1005
+ report(toMarker(( localize(8873, "Each agent name in the 'agents' attribute must be a string.")), item.range, MarkerSeverity.Error));
934
1006
  } else if (item.value) {
935
1007
  agentNames.push(item.value);
936
1008
  if (item.value !== "*" && !( availableAgentNames.has(item.value))) {
937
1009
  report(toMarker(( localize(
938
- 8257,
1010
+ 8874,
939
1011
  "Unknown agent '{0}' will be ignored. Available agents: {1}.",
940
1012
  item.value,
941
1013
  Array.from(availableAgentNames).join(", ")
@@ -947,7 +1019,7 @@ let PromptValidator = class PromptValidator {
947
1019
  const tools = header.tools;
948
1020
  if (tools && !tools.includes(SpecedToolAliases.agent)) {
949
1021
  report(toMarker(( localize(
950
- 8258,
1022
+ 8875,
951
1023
  "When 'agents' and 'tools' are specified, the 'agent' tool must be included in the 'tools' attribute."
952
1024
  )), attribute.value.range, MarkerSeverity.Warning));
953
1025
  }
@@ -959,20 +1031,20 @@ let PromptValidator = class PromptValidator {
959
1031
  return;
960
1032
  }
961
1033
  if (attribute.value.type !== "map") {
962
- report(toMarker(( localize(8259, "The 'github' attribute must be an object.")), attribute.value.range, MarkerSeverity.Error));
1034
+ report(toMarker(( localize(8876, "The 'github' attribute must be an object.")), attribute.value.range, MarkerSeverity.Error));
963
1035
  return;
964
1036
  }
965
1037
  for (const prop of attribute.value.properties) {
966
1038
  if (prop.key.value !== "permissions") {
967
1039
  report(toMarker(( localize(
968
- 8260,
1040
+ 8877,
969
1041
  "Unknown property '{0}' in 'github' object. Supported: 'permissions'.",
970
1042
  prop.key.value
971
1043
  )), prop.key.range, MarkerSeverity.Warning));
972
1044
  continue;
973
1045
  }
974
1046
  if (prop.value.type !== "map") {
975
- report(toMarker(( localize(8261, "The 'permissions' property must be an object.")), prop.value.range, MarkerSeverity.Error));
1047
+ report(toMarker(( localize(8878, "The 'permissions' property must be an object.")), prop.value.range, MarkerSeverity.Error));
976
1048
  continue;
977
1049
  }
978
1050
  for (const permProp of prop.value.properties) {
@@ -981,7 +1053,7 @@ let PromptValidator = class PromptValidator {
981
1053
  if (!scopeInfo) {
982
1054
  const validScopes = ( Object.keys(githubPermissionScopes)).sort().join(", ");
983
1055
  report(toMarker(( localize(
984
- 8262,
1056
+ 8879,
985
1057
  "Unknown permission scope '{0}'. Valid scopes: {1}.",
986
1058
  scope,
987
1059
  validScopes
@@ -989,13 +1061,13 @@ let PromptValidator = class PromptValidator {
989
1061
  continue;
990
1062
  }
991
1063
  if (permProp.value.type !== "scalar") {
992
- report(toMarker(( localize(8263, "The permission value for '{0}' must be a string.", scope)), permProp.value.range, MarkerSeverity.Error));
1064
+ report(toMarker(( localize(8880, "The permission value for '{0}' must be a string.", scope)), permProp.value.range, MarkerSeverity.Error));
993
1065
  continue;
994
1066
  }
995
1067
  const value = permProp.value.value;
996
1068
  if (!scopeInfo.allowedValues.includes(value)) {
997
1069
  report(toMarker(( localize(
998
- 8264,
1070
+ 8881,
999
1071
  "Invalid permission value '{0}' for scope '{1}'. Allowed values: {2}.",
1000
1072
  value,
1001
1073
  scope,
@@ -1010,39 +1082,39 @@ PromptValidator = ( __decorate([( __param(0, ILanguageModelsService)), ( __param
1010
1082
  const githubPermissionScopes = {
1011
1083
  "actions": {
1012
1084
  allowedValues: ["read", "write", "none"],
1013
- description: ( localize(8265, "Access to GitHub Actions workflows and runs"))
1085
+ description: ( localize(8882, "Access to GitHub Actions workflows and runs"))
1014
1086
  },
1015
1087
  "checks": {
1016
1088
  allowedValues: ["read", "none"],
1017
- description: ( localize(8266, "Access to check runs and statuses"))
1089
+ description: ( localize(8883, "Access to check runs and statuses"))
1018
1090
  },
1019
1091
  "contents": {
1020
1092
  allowedValues: ["read", "write", "none"],
1021
- description: ( localize(8267, "Access to repository contents (files, commits, branches)"))
1093
+ description: ( localize(8884, "Access to repository contents (files, commits, branches)"))
1022
1094
  },
1023
1095
  "discussions": {
1024
1096
  allowedValues: ["read", "write", "none"],
1025
- description: ( localize(8268, "Access to discussions"))
1097
+ description: ( localize(8885, "Access to discussions"))
1026
1098
  },
1027
1099
  "issues": {
1028
1100
  allowedValues: ["read", "write", "none"],
1029
- description: ( localize(8269, "Access to issues (read, create, update, comment)"))
1101
+ description: ( localize(8886, "Access to issues (read, create, update, comment)"))
1030
1102
  },
1031
1103
  "metadata": {
1032
1104
  allowedValues: ["read"],
1033
- description: ( localize(8270, "Repository metadata (always read-only)"))
1105
+ description: ( localize(8887, "Repository metadata (always read-only)"))
1034
1106
  },
1035
1107
  "pull-requests": {
1036
1108
  allowedValues: ["read", "write", "none"],
1037
- description: ( localize(8271, "Access to pull requests (read, create, update, review)"))
1109
+ description: ( localize(8888, "Access to pull requests (read, create, update, review)"))
1038
1110
  },
1039
1111
  "security-events": {
1040
1112
  allowedValues: ["read", "none"],
1041
- description: ( localize(8272, "Access to security-related events"))
1113
+ description: ( localize(8889, "Access to security-related events"))
1042
1114
  },
1043
1115
  "workflows": {
1044
1116
  allowedValues: ["write", "none"],
1045
- description: ( localize(8273, "Access to modify workflow files"))
1117
+ description: ( localize(8890, "Access to modify workflow files"))
1046
1118
  }
1047
1119
  };
1048
1120
  function isTrueOrFalse(value) {
@@ -1130,103 +1202,103 @@ function isNonRecommendedAttribute(attributeName) {
1130
1202
  }
1131
1203
  const knownClaudeTools = [{
1132
1204
  name: "Bash",
1133
- description: ( localize(8274, "Execute shell commands")),
1205
+ description: ( localize(8891, "Execute shell commands")),
1134
1206
  toolEquivalent: [SpecedToolAliases.execute]
1135
1207
  }, {
1136
1208
  name: "Edit",
1137
- description: ( localize(8275, "Make targeted file edits")),
1209
+ description: ( localize(8892, "Make targeted file edits")),
1138
1210
  toolEquivalent: ["edit/editNotebook", "edit/editFiles"]
1139
1211
  }, {
1140
1212
  name: "Glob",
1141
- description: ( localize(8276, "Find files by pattern")),
1213
+ description: ( localize(8893, "Find files by pattern")),
1142
1214
  toolEquivalent: ["search/fileSearch"]
1143
1215
  }, {
1144
1216
  name: "Grep",
1145
- description: ( localize(8277, "Search file contents with regex")),
1217
+ description: ( localize(8894, "Search file contents with regex")),
1146
1218
  toolEquivalent: ["search/textSearch"]
1147
1219
  }, {
1148
1220
  name: "Read",
1149
- description: ( localize(8278, "Read file contents")),
1221
+ description: ( localize(8895, "Read file contents")),
1150
1222
  toolEquivalent: ["read/readFile", "read/getNotebookSummary"]
1151
1223
  }, {
1152
1224
  name: "Write",
1153
- description: ( localize(8279, "Create/overwrite files")),
1225
+ description: ( localize(8896, "Create/overwrite files")),
1154
1226
  toolEquivalent: ["edit/createDirectory", "edit/createFile", "edit/createJupyterNotebook"]
1155
1227
  }, {
1156
1228
  name: "WebFetch",
1157
- description: ( localize(8280, "Fetch URL content")),
1229
+ description: ( localize(8897, "Fetch URL content")),
1158
1230
  toolEquivalent: [SpecedToolAliases.web]
1159
1231
  }, {
1160
1232
  name: "WebSearch",
1161
- description: ( localize(8281, "Perform web searches")),
1233
+ description: ( localize(8898, "Perform web searches")),
1162
1234
  toolEquivalent: [SpecedToolAliases.web]
1163
1235
  }, {
1164
1236
  name: "Task",
1165
- description: ( localize(8282, "Run subagents for complex tasks")),
1237
+ description: ( localize(8899, "Run subagents for complex tasks")),
1166
1238
  toolEquivalent: [SpecedToolAliases.agent]
1167
1239
  }, {
1168
1240
  name: "Skill",
1169
- description: ( localize(8283, "Execute skills")),
1241
+ description: ( localize(8900, "Execute skills")),
1170
1242
  toolEquivalent: []
1171
1243
  }, {
1172
1244
  name: "LSP",
1173
- description: ( localize(8284, "Code intelligence (requires plugin)")),
1245
+ description: ( localize(8901, "Code intelligence (requires plugin)")),
1174
1246
  toolEquivalent: []
1175
1247
  }, {
1176
1248
  name: "NotebookEdit",
1177
- description: ( localize(8285, "Modify Jupyter notebooks")),
1249
+ description: ( localize(8902, "Modify Jupyter notebooks")),
1178
1250
  toolEquivalent: ["edit/editNotebook"]
1179
1251
  }, {
1180
1252
  name: "AskUserQuestion",
1181
- description: ( localize(8286, "Ask multiple-choice questions")),
1253
+ description: ( localize(8903, "Ask multiple-choice questions")),
1182
1254
  toolEquivalent: ["vscode/askQuestions"]
1183
1255
  }, {
1184
1256
  name: "MCPSearch",
1185
- description: ( localize(8287, "Searches for MCP tools when tool search is enabled")),
1257
+ description: ( localize(8904, "Searches for MCP tools when tool search is enabled")),
1186
1258
  toolEquivalent: []
1187
1259
  }];
1188
1260
  const knownClaudeModels = [{
1189
1261
  name: "sonnet",
1190
- description: ( localize(8288, "Latest Claude Sonnet")),
1262
+ description: ( localize(8905, "Latest Claude Sonnet")),
1191
1263
  modelEquivalent: "Claude Sonnet 4.5 (copilot)"
1192
1264
  }, {
1193
1265
  name: "opus",
1194
- description: ( localize(8289, "Latest Claude Opus")),
1266
+ description: ( localize(8906, "Latest Claude Opus")),
1195
1267
  modelEquivalent: "Claude Opus 4.6 (copilot)"
1196
1268
  }, {
1197
1269
  name: "haiku",
1198
- description: ( localize(8290, "Latest Claude Haiku, fast for simple tasks")),
1270
+ description: ( localize(8907, "Latest Claude Haiku, fast for simple tasks")),
1199
1271
  modelEquivalent: "Claude Haiku 4.5 (copilot)"
1200
1272
  }, {
1201
1273
  name: "inherit",
1202
- description: ( localize(8291, "Inherit model from parent agent or prompt")),
1274
+ description: ( localize(8908, "Inherit model from parent agent or prompt")),
1203
1275
  modelEquivalent: undefined
1204
1276
  }];
1205
1277
  const claudeAgentAttributes = {
1206
1278
  "name": {
1207
1279
  type: "scalar",
1208
- description: ( localize(8292, "Unique identifier using lowercase letters and hyphens (required)"))
1280
+ description: ( localize(8909, "Unique identifier using lowercase letters and hyphens (required)"))
1209
1281
  },
1210
1282
  "description": {
1211
1283
  type: "scalar",
1212
- description: ( localize(8293, "When to delegate to this subagent (required)"))
1284
+ description: ( localize(8910, "When to delegate to this subagent (required)"))
1213
1285
  },
1214
1286
  "tools": {
1215
1287
  type: "sequence",
1216
- description: ( localize(8294, "Array of tools the subagent can use. Inherits all tools if omitted")),
1288
+ description: ( localize(8911, "Array of tools the subagent can use. Inherits all tools if omitted")),
1217
1289
  defaults: ["Read, Edit, Bash"],
1218
1290
  items: knownClaudeTools
1219
1291
  },
1220
1292
  "disallowedTools": {
1221
1293
  type: "sequence",
1222
- description: ( localize(8295, "Tools to deny, removed from inherited or specified list")),
1294
+ description: ( localize(8912, "Tools to deny, removed from inherited or specified list")),
1223
1295
  defaults: ["Write, Edit, Bash"],
1224
1296
  items: knownClaudeTools
1225
1297
  },
1226
1298
  "model": {
1227
1299
  type: "scalar",
1228
1300
  description: ( localize(
1229
- 8296,
1301
+ 8913,
1230
1302
  "Model to use: sonnet, opus, haiku, or inherit. Defaults to inherit."
1231
1303
  )),
1232
1304
  defaults: ["sonnet", "opus", "haiku", "inherit"],
@@ -1235,77 +1307,77 @@ const claudeAgentAttributes = {
1235
1307
  "permissionMode": {
1236
1308
  type: "scalar",
1237
1309
  description: ( localize(
1238
- 8297,
1310
+ 8914,
1239
1311
  "Permission mode: default, acceptEdits, dontAsk, bypassPermissions, or plan."
1240
1312
  )),
1241
1313
  defaults: ["default", "acceptEdits", "dontAsk", "bypassPermissions", "plan"],
1242
1314
  enums: [{
1243
1315
  name: "default",
1244
1316
  description: ( localize(
1245
- 8298,
1317
+ 8915,
1246
1318
  "Standard behavior: prompts for permission on first use of each tool."
1247
1319
  ))
1248
1320
  }, {
1249
1321
  name: "acceptEdits",
1250
- description: ( localize(8299, "Automatically accepts file edit permissions for the session."))
1322
+ description: ( localize(8916, "Automatically accepts file edit permissions for the session."))
1251
1323
  }, {
1252
1324
  name: "plan",
1253
1325
  description: ( localize(
1254
- 8300,
1326
+ 8917,
1255
1327
  "Plan Mode: Claude can analyze but not modify files or execute commands."
1256
1328
  ))
1257
1329
  }, {
1258
1330
  name: "delegate",
1259
1331
  description: ( localize(
1260
- 8301,
1332
+ 8918,
1261
1333
  "Coordination-only mode for agent team leads. Only available when an agent team is active."
1262
1334
  ))
1263
1335
  }, {
1264
1336
  name: "dontAsk",
1265
1337
  description: ( localize(
1266
- 8302,
1338
+ 8919,
1267
1339
  "Auto-denies tools unless pre-approved via /permissions or permissions.allow rules."
1268
1340
  ))
1269
1341
  }, {
1270
1342
  name: "bypassPermissions",
1271
1343
  description: ( localize(
1272
- 8303,
1344
+ 8920,
1273
1345
  "Skips all permission prompts (requires safe environment like containers)."
1274
1346
  ))
1275
1347
  }]
1276
1348
  },
1277
1349
  "skills": {
1278
1350
  type: "sequence",
1279
- description: ( localize(8304, "Skills to load into the subagent's context at startup."))
1351
+ description: ( localize(8921, "Skills to load into the subagent's context at startup."))
1280
1352
  },
1281
1353
  "mcpServers": {
1282
1354
  type: "sequence",
1283
- description: ( localize(8305, "MCP servers available to this subagent."))
1355
+ description: ( localize(8922, "MCP servers available to this subagent."))
1284
1356
  },
1285
1357
  "hooks": {
1286
1358
  type: "object",
1287
- description: ( localize(8306, "Lifecycle hooks scoped to this subagent."))
1359
+ description: ( localize(8923, "Lifecycle hooks scoped to this subagent."))
1288
1360
  },
1289
1361
  "memory": {
1290
1362
  type: "scalar",
1291
1363
  description: ( localize(
1292
- 8307,
1364
+ 8924,
1293
1365
  "Persistent memory scope: user, project, or local. Enables cross-session learning."
1294
1366
  )),
1295
1367
  defaults: ["user", "project", "local"],
1296
1368
  enums: [{
1297
1369
  name: "user",
1298
- description: ( localize(8308, "Remember learnings across all projects."))
1370
+ description: ( localize(8925, "Remember learnings across all projects."))
1299
1371
  }, {
1300
1372
  name: "project",
1301
1373
  description: ( localize(
1302
- 8309,
1374
+ 8926,
1303
1375
  "The subagent's knowledge is project-specific and shareable via version control."
1304
1376
  ))
1305
1377
  }, {
1306
1378
  name: "local",
1307
1379
  description: ( localize(
1308
- 8310,
1380
+ 8927,
1309
1381
  "The subagent's knowledge is project-specific but should not be checked into version control."
1310
1382
  ))
1311
1383
  }]
@@ -1315,14 +1387,14 @@ const claudeRulesAttributes = {
1315
1387
  "description": {
1316
1388
  type: "scalar",
1317
1389
  description: ( localize(
1318
- 8311,
1390
+ 8928,
1319
1391
  "A description of what this rule covers, used to provide context about when it applies."
1320
1392
  ))
1321
1393
  },
1322
1394
  "paths": {
1323
1395
  type: "sequence",
1324
1396
  description: ( localize(
1325
- 8312,
1397
+ 8929,
1326
1398
  "Array of glob patterns that describe for which files the rule applies. Based on these patterns, the file is automatically included in the prompt when the context contains a file that matches.\nExample: `['src/**/*.ts', 'test/**']`"
1327
1399
  ))
1328
1400
  }
@@ -1351,15 +1423,18 @@ function getTarget(promptType, header) {
1351
1423
  }
1352
1424
  return Target.Undefined;
1353
1425
  }
1354
- function toMarker(message, range, severity = MarkerSeverity.Error, tags) {
1426
+ function toMarker(message, range, severity = MarkerSeverity.Error, tags, code) {
1355
1427
  return {
1356
1428
  severity,
1357
1429
  message,
1358
1430
  ...(tags ? {
1359
1431
  tags
1360
1432
  } : {}),
1433
+ ...(code ? {
1434
+ code
1435
+ } : {}),
1361
1436
  ...range
1362
1437
  };
1363
1438
  }
1364
1439
 
1365
- export { MARKERS_OWNER_ID, PromptValidator, claudeAgentAttributes, claudeRulesAttributes, getTarget, getValidAttributeNames, githubPermissionScopes, isNonRecommendedAttribute, isVSCodeOrDefaultTarget, knownClaudeModels, knownClaudeTools };
1440
+ export { MARKERS_OWNER_ID, PromptValidator, PromptValidatorMarkerCode, claudeAgentAttributes, claudeRulesAttributes, getTarget, getValidAttributeNames, githubPermissionScopes, isNonRecommendedAttribute, isVSCodeOrDefaultTarget, knownClaudeModels, knownClaudeTools };