@codingame/monaco-vscode-chat-service-override 28.4.1 → 29.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/index.js +18 -12
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +300 -0
  4. package/vscode/src/vs/platform/agentHost/common/agentService.js +31 -0
  5. package/vscode/src/vs/platform/agentHost/common/agentService.service.d.ts +84 -0
  6. package/vscode/src/vs/platform/agentHost/common/state/protocol/action-origin.generated.d.ts +16 -0
  7. package/vscode/src/vs/platform/agentHost/common/state/protocol/actions.d.ts +488 -0
  8. package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.d.ts +424 -0
  9. package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.d.ts +50 -0
  10. package/vscode/src/vs/platform/agentHost/common/state/protocol/messages.d.ts +202 -0
  11. package/vscode/src/vs/platform/agentHost/common/state/protocol/notifications.d.ts +114 -0
  12. package/vscode/src/vs/platform/agentHost/common/state/protocol/state.d.ts +723 -0
  13. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +33 -0
  14. package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.d.ts +40 -0
  15. package/vscode/src/vs/platform/agentHost/common/state/sessionState.d.ts +22 -0
  16. package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +13 -0
  17. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  18. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +2 -2
  19. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +29 -15
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +3 -3
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +76 -10
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +11 -11
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.d.ts +1 -1
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +162 -4
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +167 -4
  36. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  37. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.d.ts +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +52 -20
  39. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
  42. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +19 -19
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +82 -0
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +195 -0
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.d.ts +5 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +97 -88
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +3 -3
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +4 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +5 -3
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +78 -35
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +7 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +174 -170
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +7 -4
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +12 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +118 -52
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +7 -7
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.d.ts +5 -1
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +13 -2
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +0 -3
  62. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +5 -10
  63. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +9 -10
  65. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +23 -25
  66. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +341 -196
  67. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +79 -7
  68. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  69. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  70. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.d.ts +5 -4
  71. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +22 -10
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +2 -2
  74. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +4 -0
  75. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +15 -14
  76. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +85 -5
  77. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +668 -214
  78. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.d.ts +10 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.js +18 -0
  80. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +306 -39
  81. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +84 -4
  82. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +651 -81
  83. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +2 -1
  84. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +6 -2
  85. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +31 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +9 -20
  87. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +11 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +7 -142
  89. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.d.ts +43 -0
  90. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.js +63 -0
  91. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +11 -0
  92. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +44 -0
  93. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +25 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +297 -123
  95. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +153 -31
  96. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +17 -1
  97. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +111 -171
  98. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.d.ts +1 -3
  99. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +5 -30
  100. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +277 -186
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.d.ts +4 -2
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +31 -23
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.d.ts +3 -7
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.js +4 -16
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.d.ts +18 -2
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +112 -17
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +3 -3
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +16 -27
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.d.ts +1 -1
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +41 -19
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.d.ts +7 -1
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +35 -23
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.d.ts +1 -8
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +8 -51
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.d.ts +1 -0
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +13 -8
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.d.ts +1 -1
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +29 -36
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowLayout.js +14 -7
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.d.ts +5 -1
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +79 -26
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.d.ts +19 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +125 -0
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +11 -4
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +113 -82
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.d.ts +18 -7
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +54 -15
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.d.ts +8 -3
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +103 -28
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.d.ts +2 -0
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +48 -37
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.d.ts +28 -2
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +62 -20
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +21 -37
  137. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  138. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +2 -1
  139. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  140. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +4 -3
  141. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +1 -1
  142. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +1 -0
  144. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +17 -4
  145. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +5 -5
  146. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +4 -1
  147. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +43 -5
  148. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  149. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.d.ts +59 -0
  150. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +194 -0
  151. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +9 -10
  152. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +13 -13
  153. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.d.ts +2 -1
  154. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +8 -4
  155. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  156. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +11 -0
  157. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +81 -50
  158. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
  159. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
  160. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +32 -32
  161. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  162. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
  163. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +22 -15
  164. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  165. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.d.ts +2 -2
  166. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +9 -7
  167. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -26
  168. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +0 -2
  169. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +19 -27
  170. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +2 -4
  171. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +105 -172
  172. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
  173. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +80 -65
  174. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
  175. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +56 -27
  176. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
  178. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.d.ts +16 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +70 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  181. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.d.ts +20 -0
  182. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +40 -0
  183. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.d.ts +31 -0
  184. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +53 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +33 -2
  186. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +21 -2
  187. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +362 -18
  188. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +15 -4
  189. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +90 -43
  190. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +35 -0
  191. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +146 -0
  192. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  193. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +26 -26
  194. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
  195. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  196. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  197. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +10 -9
  198. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  199. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  200. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  201. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.d.ts +1 -1
  202. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +33 -5
  203. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +3 -0
  204. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +200 -55
  205. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +7 -0
  206. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +90 -45
  207. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +4 -2
  208. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +21 -10
  209. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +22 -16
  210. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +4 -2
  211. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +28 -13
  212. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  213. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
  214. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
  215. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +20 -16
  216. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +68 -5
  217. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  218. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  219. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +1 -1
  220. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +1 -0
  221. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +57 -20
  222. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  223. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +21 -5
  224. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +171 -57
  225. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +7 -5
  226. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +206 -35
  227. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +4 -3
  228. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +7 -7
  229. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +7 -1
  230. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +11 -3
  231. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +44 -22
  232. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +450 -301
  233. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +23 -0
  234. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +165 -0
  235. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +34 -20
  236. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +209 -144
  237. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.d.ts +20 -0
  238. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +205 -0
  239. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +17 -17
  240. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.d.ts +33 -0
  241. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.js +47 -0
  242. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalSkill.d.ts +30 -0
  243. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
  244. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  245. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  246. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +1 -1
  247. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +191 -159
  248. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +6 -7
  249. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +210 -233
  250. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +19 -26
  251. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +183 -193
  252. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.d.ts +24 -0
  253. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.js +75 -0
  254. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  255. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +8 -5
  256. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +8 -0
  257. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +97 -35
  258. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  259. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.d.ts +16 -0
  260. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.js +67 -0
  261. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +2 -2
  262. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +62 -23
  263. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  264. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  265. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  266. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  267. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  268. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +8 -8
  269. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  270. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  271. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +2 -2
  272. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +3 -1
  273. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +23 -9
  274. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +1 -1
  275. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +2 -2
  276. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +3 -1
  277. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +50 -9
  278. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +3 -1
  279. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +21 -7
  280. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +20 -1
  281. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +124 -1
  282. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +20 -5
  283. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +5 -0
  284. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +10 -7
  285. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +2 -1
  286. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +46 -31
  287. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +18 -1
  288. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +74 -37
  289. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  290. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  291. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +1 -0
  292. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +24 -14
  293. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  294. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +1 -1
  295. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +3 -2
  296. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +1 -1
  297. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +2 -0
  298. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +5 -1
  299. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  300. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  301. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  302. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  303. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +1 -2
  304. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +66 -64
  305. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +1 -0
  306. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +1 -0
  307. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +5 -2
  308. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +32 -2
  309. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +390 -114
  310. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +14 -0
  311. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +21 -11
  312. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +70 -51
  313. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +61 -51
  314. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +94 -76
  315. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  316. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +19 -1
  317. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +112 -21
  318. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.d.ts +0 -53
  319. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.js +0 -219
  320. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +0 -89
  321. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +0 -251
  322. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.d.ts +0 -123
  323. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.js +0 -278
  324. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.d.ts +0 -76
  325. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.js +0 -299
  326. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +0 -67
  327. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +0 -263
  328. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.d.ts +0 -85
  329. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.js +0 -397
  330. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.d.ts +0 -56
  331. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +0 -26
  332. package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.d.ts +0 -5
  333. package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.js +0 -30
  334. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.d.ts +0 -40
  335. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.js +0 -28
  336. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.d.ts +0 -190
  337. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.js +0 -11
  338. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +0 -16
  339. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +0 -20
@@ -24,7 +24,7 @@ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/fi
24
24
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
25
25
  import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
26
26
  import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
27
- import { LEGACY_MODE_FILE_EXTENSION, AGENTS_SOURCE_FOLDER, CLAUDE_AGENTS_SOURCE_FOLDER, isInClaudeRulesFolder } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
27
+ import { LEGACY_MODE_FILE_EXTENSION, AGENTS_SOURCE_FOLDER, VALID_SKILL_NAME_REGEX, CLAUDE_AGENTS_SOURCE_FOLDER, isInClaudeRulesFolder } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
28
28
  import { Lazy } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lazy';
29
29
  import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
30
30
  import { dirname } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
@@ -60,49 +60,62 @@ let PromptValidator = class PromptValidator {
60
60
  await this.validateHeader(promptAST, promptType, target, report);
61
61
  await this.validateBody(promptAST, target, report);
62
62
  await this.validateFileName(promptAST, promptType, report);
63
- await this.validateSkillFolderName(promptAST, promptType, report);
63
+ await this.validateSkillAttributes(promptAST, promptType, report);
64
64
  }
65
65
  async validateFileName(promptAST, promptType, report) {
66
66
  if (promptType === PromptsType.agent && promptAST.uri.path.endsWith(LEGACY_MODE_FILE_EXTENSION)) {
67
67
  const location = this.promptsService.getAgentFileURIFromModeFile(promptAST.uri);
68
68
  if (location && (await this.fileService.canCreateFile(location))) {
69
69
  report(toMarker(( localize(
70
- 7187,
70
+ 7410,
71
71
  "Chat modes have been renamed to agents. Please move this file to {0}",
72
72
  (location.toString())
73
73
  )), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
74
74
  } else {
75
75
  report(toMarker(( localize(
76
- 7188,
76
+ 7411,
77
77
  "Chat modes have been renamed to agents. Please move the file to {0}",
78
78
  AGENTS_SOURCE_FOLDER
79
79
  )), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
80
80
  }
81
81
  }
82
82
  }
83
- async validateSkillFolderName(promptAST, promptType, report) {
83
+ async validateSkillAttributes(promptAST, promptType, report) {
84
84
  if (promptType !== PromptsType.skill) {
85
85
  return;
86
86
  }
87
87
  const nameAttribute = promptAST.header?.attributes.find(attr => attr.key === PromptHeaderAttributes.name);
88
- if (!nameAttribute || nameAttribute.value.type !== "scalar") {
88
+ if (!nameAttribute) {
89
+ report(toMarker(( localize(7412, "Skill must provide a name.")), ( new Range(1, 1, 1, 4)), MarkerSeverity.Error));
89
90
  return;
90
91
  }
91
- const skillName = nameAttribute.value.value.trim();
92
- if (!skillName) {
92
+ const descriptionAttribute = promptAST.header?.attributes.find(attr => attr.key === PromptHeaderAttributes.description);
93
+ if (!descriptionAttribute) {
94
+ report(toMarker(( localize(7413, "Skill must provide a description.")), ( new Range(1, 1, 1, 4)), MarkerSeverity.Error));
93
95
  return;
94
96
  }
95
- const pathParts = promptAST.uri.path.split("/");
96
- const skillIndex = pathParts.findIndex(part => part === "SKILL.md");
97
- if (skillIndex > 0) {
98
- const folderName = pathParts[skillIndex - 1];
99
- if (folderName && skillName !== folderName) {
100
- report(toMarker(( localize(
101
- 7189,
102
- "The skill name '{0}' should match the folder name '{1}'.",
103
- skillName,
104
- folderName
105
- )), nameAttribute.value.range, MarkerSeverity.Warning));
97
+ if (nameAttribute.value.type === "scalar") {
98
+ const skillName = nameAttribute.value.value.trim();
99
+ if (skillName.length > 0) {
100
+ if (!VALID_SKILL_NAME_REGEX.test(skillName)) {
101
+ report(toMarker(( localize(
102
+ 7414,
103
+ "Skill name may only contain lowercase letters, numbers, and hyphens."
104
+ )), nameAttribute.value.range, MarkerSeverity.Error));
105
+ }
106
+ const pathParts = promptAST.uri.path.split("/");
107
+ const skillIndex = pathParts.findIndex(part => part === "SKILL.md");
108
+ if (skillIndex > 0) {
109
+ const folderName = pathParts[skillIndex - 1];
110
+ if (folderName && skillName !== folderName) {
111
+ report(toMarker(( localize(
112
+ 7415,
113
+ "The skill name '{0}' should match the folder name '{1}'.",
114
+ skillName,
115
+ folderName
116
+ )), nameAttribute.value.range, MarkerSeverity.Warning));
117
+ }
118
+ }
106
119
  }
107
120
  }
108
121
  }
@@ -115,7 +128,7 @@ let PromptValidator = class PromptValidator {
115
128
  for (const ref of body.fileReferences) {
116
129
  const resolved = body.resolveFilePath(ref.content);
117
130
  if (!resolved) {
118
- report(toMarker(( localize(7190, "Invalid file reference '{0}'.", ref.content)), ref.range, MarkerSeverity.Warning));
131
+ report(toMarker(( localize(7416, "Invalid file reference '{0}'.", ref.content)), ref.range, MarkerSeverity.Warning));
119
132
  continue;
120
133
  }
121
134
  if (promptAST.uri.scheme === resolved.scheme) {
@@ -127,7 +140,7 @@ let PromptValidator = class PromptValidator {
127
140
  }
128
141
  } catch {}
129
142
  const loc = this.labelService.getUriLabel(resolved);
130
- report(toMarker(( localize(7191, "File '{0}' not found at '{1}'.", ref.content, loc)), ref.range, MarkerSeverity.Warning));
143
+ report(toMarker(( localize(7417, "File '{0}' not found at '{1}'.", ref.content, loc)), ref.range, MarkerSeverity.Warning));
131
144
  })());
132
145
  }
133
146
  }
@@ -144,7 +157,7 @@ let PromptValidator = class PromptValidator {
144
157
  if (currentNames.size === 1) {
145
158
  const newName = Array.from(currentNames)[0];
146
159
  report(toMarker(( localize(
147
- 7192,
160
+ 7418,
148
161
  "Tool or toolset '{0}' has been renamed, use '{1}' instead.",
149
162
  variable.name,
150
163
  newName
@@ -152,7 +165,7 @@ let PromptValidator = class PromptValidator {
152
165
  } else {
153
166
  const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(", ");
154
167
  report(toMarker(( localize(
155
- 7193,
168
+ 7419,
156
169
  "Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
157
170
  variable.name,
158
171
  newNames
@@ -160,13 +173,13 @@ let PromptValidator = class PromptValidator {
160
173
  }
161
174
  }
162
175
  } else {
163
- report(toMarker(( localize(7194, "Unknown tool or toolset '{0}'.", variable.name)), variable.range, MarkerSeverity.Warning));
176
+ report(toMarker(( localize(7420, "Unknown tool or toolset '{0}'.", variable.name)), variable.range, MarkerSeverity.Warning));
164
177
  }
165
178
  } else if (headerToolsMap) {
166
179
  const tool = this.languageModelToolsService.getToolByFullReferenceName(variable.name);
167
180
  if (tool && headerToolsMap.get(tool) === false) {
168
181
  report(toMarker(( localize(
169
- 7195,
182
+ 7421,
170
183
  "Tool or toolset '{0}' also needs to be enabled in the header.",
171
184
  variable.name
172
185
  )), variable.range, MarkerSeverity.Warning));
@@ -251,7 +264,7 @@ let PromptValidator = class PromptValidator {
251
264
  switch (promptType) {
252
265
  case PromptsType.prompt:
253
266
  report(toMarker(( localize(
254
- 7196,
267
+ 7422,
255
268
  "Attribute '{0}' is not supported in prompt files. Supported: {1}.",
256
269
  attribute.key,
257
270
  supportedNames.value
@@ -260,7 +273,7 @@ let PromptValidator = class PromptValidator {
260
273
  case PromptsType.agent:
261
274
  if (target === Target.GitHubCopilot) {
262
275
  report(toMarker(( localize(
263
- 7197,
276
+ 7423,
264
277
  "Attribute '{0}' is not supported in custom GitHub Copilot agent files. Supported: {1}.",
265
278
  attribute.key,
266
279
  supportedNames.value
@@ -269,13 +282,13 @@ let PromptValidator = class PromptValidator {
269
282
  ; else {
270
283
  if (( validGithubCopilotAttributeNames.value.has(attribute.key))) {
271
284
  report(toMarker(( localize(
272
- 7198,
285
+ 7424,
273
286
  "Attribute '{0}' is ignored when running locally in VS Code.",
274
287
  attribute.key
275
288
  )), attribute.range, MarkerSeverity.Info));
276
289
  } else {
277
290
  report(toMarker(( localize(
278
- 7199,
291
+ 7425,
279
292
  "Attribute '{0}' is not supported in VS Code agent files. Supported: {1}.",
280
293
  attribute.key,
281
294
  supportedNames.value
@@ -286,14 +299,14 @@ let PromptValidator = class PromptValidator {
286
299
  case PromptsType.instructions:
287
300
  if (target === Target.Claude) {
288
301
  report(toMarker(( localize(
289
- 7200,
302
+ 7426,
290
303
  "Attribute '{0}' is not supported in rules files. Supported: {1}.",
291
304
  attribute.key,
292
305
  supportedNames.value
293
306
  )), attribute.range, MarkerSeverity.Warning));
294
307
  } else {
295
308
  report(toMarker(( localize(
296
- 7201,
309
+ 7427,
297
310
  "Attribute '{0}' is not supported in instructions files. Supported: {1}.",
298
311
  attribute.key,
299
312
  supportedNames.value
@@ -302,7 +315,7 @@ let PromptValidator = class PromptValidator {
302
315
  break;
303
316
  case PromptsType.skill:
304
317
  report(toMarker(( localize(
305
- 7202,
318
+ 7428,
306
319
  "Attribute '{0}' is not supported in skill files. Supported: {1}.",
307
320
  attribute.key,
308
321
  supportedNames.value
@@ -318,11 +331,11 @@ let PromptValidator = class PromptValidator {
318
331
  return;
319
332
  }
320
333
  if (nameAttribute.value.type !== "scalar") {
321
- report(toMarker(( localize(7203, "The 'name' attribute must be a string.")), nameAttribute.range, MarkerSeverity.Error));
334
+ report(toMarker(( localize(7429, "The 'name' attribute must be a string.")), nameAttribute.range, MarkerSeverity.Error));
322
335
  return;
323
336
  }
324
337
  if (nameAttribute.value.value.trim().length === 0) {
325
- report(toMarker(( localize(7204, "The 'name' attribute must not be empty.")), nameAttribute.value.range, MarkerSeverity.Error));
338
+ report(toMarker(( localize(7430, "The 'name' attribute must not be empty.")), nameAttribute.value.range, MarkerSeverity.Error));
326
339
  return;
327
340
  }
328
341
  }
@@ -332,11 +345,11 @@ let PromptValidator = class PromptValidator {
332
345
  return;
333
346
  }
334
347
  if (descriptionAttribute.value.type !== "scalar") {
335
- report(toMarker(( localize(7205, "The 'description' attribute must be a string.")), descriptionAttribute.range, MarkerSeverity.Error));
348
+ report(toMarker(( localize(7431, "The 'description' attribute must be a string.")), descriptionAttribute.range, MarkerSeverity.Error));
336
349
  return;
337
350
  }
338
351
  if (descriptionAttribute.value.value.trim().length === 0) {
339
- report(toMarker(( localize(7206, "The 'description' attribute should not be empty.")), descriptionAttribute.value.range, MarkerSeverity.Error));
352
+ report(toMarker(( localize(7432, "The 'description' attribute should not be empty.")), descriptionAttribute.value.range, MarkerSeverity.Error));
340
353
  return;
341
354
  }
342
355
  }
@@ -346,11 +359,11 @@ let PromptValidator = class PromptValidator {
346
359
  return;
347
360
  }
348
361
  if (argumentHintAttribute.value.type !== "scalar") {
349
- report(toMarker(( localize(7207, "The 'argument-hint' attribute must be a string.")), argumentHintAttribute.range, MarkerSeverity.Error));
362
+ report(toMarker(( localize(7433, "The 'argument-hint' attribute must be a string.")), argumentHintAttribute.range, MarkerSeverity.Error));
350
363
  return;
351
364
  }
352
365
  if (argumentHintAttribute.value.value.trim().length === 0) {
353
- report(toMarker(( localize(7208, "The 'argument-hint' attribute should not be empty.")), argumentHintAttribute.value.range, MarkerSeverity.Error));
366
+ report(toMarker(( localize(7434, "The 'argument-hint' attribute should not be empty.")), argumentHintAttribute.value.range, MarkerSeverity.Error));
354
367
  return;
355
368
  }
356
369
  }
@@ -360,30 +373,30 @@ let PromptValidator = class PromptValidator {
360
373
  return;
361
374
  }
362
375
  if (attribute.value.type !== "scalar" && attribute.value.type !== "sequence") {
363
- report(toMarker(( localize(7209, "The 'model' attribute must be a string or an array of strings.")), attribute.value.range, MarkerSeverity.Error));
376
+ report(toMarker(( localize(7435, "The 'model' attribute must be a string or an array of strings.")), attribute.value.range, MarkerSeverity.Error));
364
377
  return;
365
378
  }
366
379
  const modelNames = [];
367
380
  if (attribute.value.type === "scalar") {
368
381
  const modelName = attribute.value.value.trim();
369
382
  if (modelName.length === 0) {
370
- report(toMarker(( localize(7210, "The 'model' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
383
+ report(toMarker(( localize(7436, "The 'model' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
371
384
  return;
372
385
  }
373
386
  modelNames.push([modelName, attribute.value.range]);
374
387
  } else if (attribute.value.type === "sequence") {
375
388
  if (attribute.value.items.length === 0) {
376
- report(toMarker(( localize(7211, "The 'model' array must not be empty.")), attribute.value.range, MarkerSeverity.Error));
389
+ report(toMarker(( localize(7437, "The 'model' array must not be empty.")), attribute.value.range, MarkerSeverity.Error));
377
390
  return;
378
391
  }
379
392
  for (const item of attribute.value.items) {
380
393
  if (item.type !== "scalar") {
381
- report(toMarker(( localize(7212, "The 'model' array must contain only strings.")), item.range, MarkerSeverity.Error));
394
+ report(toMarker(( localize(7438, "The 'model' array must contain only strings.")), item.range, MarkerSeverity.Error));
382
395
  return;
383
396
  }
384
397
  const modelName = item.value.trim();
385
398
  if (modelName.length === 0) {
386
- report(toMarker(( localize(7213, "Model names in the array must be non-empty strings.")), item.range, MarkerSeverity.Error));
399
+ report(toMarker(( localize(7439, "Model names in the array must be non-empty strings.")), item.range, MarkerSeverity.Error));
387
400
  return;
388
401
  }
389
402
  modelNames.push([modelName, item.range]);
@@ -396,9 +409,9 @@ let PromptValidator = class PromptValidator {
396
409
  for (const [modelName, range] of modelNames) {
397
410
  const modelMetadata = this.findModelByName(modelName);
398
411
  if (!modelMetadata) {
399
- report(toMarker(( localize(7214, "Unknown model '{0}'.", modelName)), range, MarkerSeverity.Warning));
412
+ report(toMarker(( localize(7440, "Unknown model '{0}'.", modelName)), range, MarkerSeverity.Warning));
400
413
  } else if (agentKind === ChatModeKind.Agent && !ILanguageModelChatMetadata.suitableForAgentMode(modelMetadata)) {
401
- report(toMarker(( localize(7215, "Model '{0}' is not suited for agent mode.", modelName)), range, MarkerSeverity.Warning));
414
+ report(toMarker(( localize(7441, "Model '{0}' is not suited for agent mode.", modelName)), range, MarkerSeverity.Warning));
402
415
  }
403
416
  }
404
417
  }
@@ -412,13 +425,13 @@ let PromptValidator = class PromptValidator {
412
425
  continue;
413
426
  }
414
427
  if (attribute.value.type !== "scalar") {
415
- report(toMarker(( localize(7216, "The '{0}' attribute must be a string.", claudeAttributeName)), attribute.value.range, MarkerSeverity.Error));
428
+ report(toMarker(( localize(7442, "The '{0}' attribute must be a string.", claudeAttributeName)), attribute.value.range, MarkerSeverity.Error));
416
429
  continue;
417
430
  } else {
418
431
  const modelName = attribute.value.value.trim();
419
432
  if (enumValues.every(model => model.name !== modelName)) {
420
433
  const validValues = ( enumValues.map(model => model.name)).join(", ");
421
- report(toMarker(( localize(7217, "Unknown value '{0}', valid: {1}.", modelName, validValues)), attribute.value.range, MarkerSeverity.Warning));
434
+ report(toMarker(( localize(7443, "Unknown value '{0}', valid: {1}.", modelName, validValues)), attribute.value.range, MarkerSeverity.Warning));
422
435
  }
423
436
  }
424
437
  }
@@ -437,12 +450,12 @@ let PromptValidator = class PromptValidator {
437
450
  if (modeAttribute) {
438
451
  if (agentAttribute) {
439
452
  report(toMarker(( localize(
440
- 7218,
453
+ 7444,
441
454
  "The 'mode' attribute has been deprecated. The 'agent' attribute is used instead."
442
455
  )), modeAttribute.range, MarkerSeverity.Warning));
443
456
  } else {
444
457
  report(toMarker(( localize(
445
- 7219,
458
+ 7445,
446
459
  "The 'mode' attribute has been deprecated. Please rename it to 'agent'."
447
460
  )), modeAttribute.range, MarkerSeverity.Error));
448
461
  }
@@ -452,12 +465,12 @@ let PromptValidator = class PromptValidator {
452
465
  return undefined;
453
466
  }
454
467
  if (attribute.value.type !== "scalar") {
455
- report(toMarker(( localize(7220, "The '{0}' attribute must be a string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
468
+ report(toMarker(( localize(7446, "The '{0}' attribute must be a string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
456
469
  return undefined;
457
470
  }
458
471
  const agentValue = attribute.value.value;
459
472
  if (agentValue.trim().length === 0) {
460
- report(toMarker(( localize(7221, "The '{0}' attribute must be a non-empty string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
473
+ report(toMarker(( localize(7447, "The '{0}' attribute must be a non-empty string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
461
474
  return undefined;
462
475
  }
463
476
  return this.validateAgentValue(attribute.value, report);
@@ -472,7 +485,7 @@ let PromptValidator = class PromptValidator {
472
485
  availableAgents.push(agent.name.get());
473
486
  }
474
487
  const errorMessage = ( localize(
475
- 7222,
488
+ 7448,
476
489
  "Unknown agent '{0}'. Available agents: {1}.",
477
490
  value.value,
478
491
  availableAgents.join(", ")
@@ -487,7 +500,7 @@ let PromptValidator = class PromptValidator {
487
500
  }
488
501
  if (agentKind !== ChatModeKind.Agent) {
489
502
  report(toMarker(( localize(
490
- 7223,
503
+ 7449,
491
504
  "The 'tools' attribute is only supported when using agents. Attribute will be ignored."
492
505
  )), attribute.range, MarkerSeverity.Warning));
493
506
  }
@@ -497,7 +510,7 @@ let PromptValidator = class PromptValidator {
497
510
  }
498
511
  if (value.type !== "sequence") {
499
512
  report(toMarker(( localize(
500
- 7224,
513
+ 7450,
501
514
  "The 'tools' attribute must be an array or a comma separated string."
502
515
  )), attribute.value.range, MarkerSeverity.Error));
503
516
  return;
@@ -513,7 +526,7 @@ let PromptValidator = class PromptValidator {
513
526
  const deprecatedNames = this.languageModelToolsService.getDeprecatedFullReferenceNames();
514
527
  for (const item of valueItem.items) {
515
528
  if (item.type !== "scalar") {
516
- report(toMarker(( localize(7225, "Each tool name in the 'tools' attribute must be a string.")), item.range, MarkerSeverity.Error));
529
+ report(toMarker(( localize(7451, "Each tool name in the 'tools' attribute must be a string.")), item.range, MarkerSeverity.Error));
517
530
  } else if (item.value) {
518
531
  if (!( available.has(item.value))) {
519
532
  const currentNames = deprecatedNames.get(item.value);
@@ -521,7 +534,7 @@ let PromptValidator = class PromptValidator {
521
534
  if (currentNames?.size === 1) {
522
535
  const newName = Array.from(currentNames)[0];
523
536
  report(toMarker(( localize(
524
- 7226,
537
+ 7452,
525
538
  "Tool or toolset '{0}' has been renamed, use '{1}' instead.",
526
539
  item.value,
527
540
  newName
@@ -529,14 +542,14 @@ let PromptValidator = class PromptValidator {
529
542
  } else {
530
543
  const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(", ");
531
544
  report(toMarker(( localize(
532
- 7227,
545
+ 7453,
533
546
  "Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
534
547
  item.value,
535
548
  newNames
536
549
  )), item.range, MarkerSeverity.Info));
537
550
  }
538
551
  } else {
539
- report(toMarker(( localize(7228, "Unknown tool '{0}'.", item.value)), item.range, MarkerSeverity.Warning));
552
+ report(toMarker(( localize(7454, "Unknown tool '{0}'.", item.value)), item.range, MarkerSeverity.Warning));
540
553
  }
541
554
  }
542
555
  }
@@ -549,25 +562,25 @@ let PromptValidator = class PromptValidator {
549
562
  return;
550
563
  }
551
564
  if (attribute.value.type !== "scalar") {
552
- report(toMarker(( localize(7229, "The 'applyTo' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
565
+ report(toMarker(( localize(7455, "The 'applyTo' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
553
566
  return;
554
567
  }
555
568
  const pattern = attribute.value.value;
556
569
  try {
557
570
  const patterns = splitGlobAware(pattern, ",");
558
571
  if (patterns.length === 0) {
559
- report(toMarker(( localize(7230, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
572
+ report(toMarker(( localize(7456, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
560
573
  return;
561
574
  }
562
575
  for (const pattern of patterns) {
563
576
  const globPattern = parse(pattern);
564
577
  if (isEmptyPattern(globPattern)) {
565
- report(toMarker(( localize(7230, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
578
+ report(toMarker(( localize(7456, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
566
579
  return;
567
580
  }
568
581
  }
569
582
  } catch (_error) {
570
- report(toMarker(( localize(7230, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
583
+ report(toMarker(( localize(7456, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
571
584
  }
572
585
  }
573
586
  validatePaths(attributes, report) {
@@ -576,26 +589,26 @@ let PromptValidator = class PromptValidator {
576
589
  return;
577
590
  }
578
591
  if (attribute.value.type !== "sequence") {
579
- report(toMarker(( localize(7231, "The 'paths' attribute must be an array of glob patterns.")), attribute.value.range, MarkerSeverity.Error));
592
+ report(toMarker(( localize(7457, "The 'paths' attribute must be an array of glob patterns.")), attribute.value.range, MarkerSeverity.Error));
580
593
  return;
581
594
  }
582
595
  for (const item of attribute.value.items) {
583
596
  if (item.type !== "scalar") {
584
- report(toMarker(( localize(7232, "Each entry in the 'paths' attribute must be a string.")), item.range, MarkerSeverity.Error));
597
+ report(toMarker(( localize(7458, "Each entry in the 'paths' attribute must be a string.")), item.range, MarkerSeverity.Error));
585
598
  continue;
586
599
  }
587
600
  const pattern = item.value.trim();
588
601
  if (pattern.length === 0) {
589
- report(toMarker(( localize(7233, "Path entries must be non-empty glob patterns.")), item.range, MarkerSeverity.Error));
602
+ report(toMarker(( localize(7459, "Path entries must be non-empty glob patterns.")), item.range, MarkerSeverity.Error));
590
603
  continue;
591
604
  }
592
605
  try {
593
606
  const globPattern = parse(pattern);
594
607
  if (isEmptyPattern(globPattern)) {
595
- report(toMarker(( localize(7234, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
608
+ report(toMarker(( localize(7460, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
596
609
  }
597
610
  } catch (_error) {
598
- report(toMarker(( localize(7234, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
611
+ report(toMarker(( localize(7460, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
599
612
  }
600
613
  }
601
614
  }
@@ -605,7 +618,7 @@ let PromptValidator = class PromptValidator {
605
618
  return;
606
619
  }
607
620
  if (attribute.value.type !== "sequence" && attribute.value.type !== "scalar") {
608
- report(toMarker(( localize(7235, "The 'excludeAgent' attribute must be an string or array.")), attribute.value.range, MarkerSeverity.Error));
621
+ report(toMarker(( localize(7461, "The 'excludeAgent' attribute must be an string or array.")), attribute.value.range, MarkerSeverity.Error));
609
622
  return;
610
623
  }
611
624
  }
@@ -616,7 +629,7 @@ let PromptValidator = class PromptValidator {
616
629
  }
617
630
  if (attribute.value.type !== "map") {
618
631
  report(toMarker(( localize(
619
- 7236,
632
+ 7462,
620
633
  "The 'hooks' attribute must be a map of hook event types to command arrays."
621
634
  )), attribute.value.range, MarkerSeverity.Error));
622
635
  return;
@@ -625,7 +638,7 @@ let PromptValidator = class PromptValidator {
625
638
  for (const prop of attribute.value.properties) {
626
639
  if (!( validHookNames.has(prop.key.value))) {
627
640
  report(toMarker(( localize(
628
- 7237,
641
+ 7463,
629
642
  "Unknown hook event type '{0}'. Supported: {1}.",
630
643
  prop.key.value,
631
644
  Array.from(validHookNames).join(", ")
@@ -633,7 +646,7 @@ let PromptValidator = class PromptValidator {
633
646
  }
634
647
  if (prop.value.type !== "sequence") {
635
648
  report(toMarker(( localize(
636
- 7238,
649
+ 7464,
637
650
  "Hook event '{0}' must have an array of command objects as its value.",
638
651
  prop.key.value
639
652
  )), prop.value.range, MarkerSeverity.Error));
@@ -646,19 +659,19 @@ let PromptValidator = class PromptValidator {
646
659
  }
647
660
  validateHookCommand(item, target, report) {
648
661
  if (item.type !== "map") {
649
- report(toMarker(( localize(7239, "Each hook command must be an object.")), item.range, MarkerSeverity.Error));
662
+ report(toMarker(( localize(7465, "Each hook command must be an object.")), item.range, MarkerSeverity.Error));
650
663
  return;
651
664
  }
652
665
  const hooksProperty = item.properties.find(p => p.key.value === "hooks");
653
666
  if (hooksProperty) {
654
667
  for (const prop of item.properties) {
655
668
  if (prop.key.value !== "hooks" && prop.key.value !== "matcher") {
656
- report(toMarker(( localize(7240, "Unknown property '{0}' in hook matcher.", prop.key.value)), prop.key.range, MarkerSeverity.Warning));
669
+ report(toMarker(( localize(7466, "Unknown property '{0}' in hook matcher.", prop.key.value)), prop.key.range, MarkerSeverity.Warning));
657
670
  }
658
671
  }
659
672
  if (hooksProperty.value.type !== "sequence") {
660
673
  report(toMarker(( localize(
661
- 7241,
674
+ 7467,
662
675
  "The 'hooks' property in a matcher must be an array of command objects."
663
676
  )), hooksProperty.value.range, MarkerSeverity.Error));
664
677
  return;
@@ -687,37 +700,37 @@ let PromptValidator = class PromptValidator {
687
700
  for (const prop of item.properties) {
688
701
  const key = prop.key.value;
689
702
  if (!( validProperties.has(key))) {
690
- report(toMarker(( localize(7242, "Unknown property '{0}' in hook command.", key)), prop.key.range, MarkerSeverity.Warning));
703
+ report(toMarker(( localize(7468, "Unknown property '{0}' in hook command.", key)), prop.key.range, MarkerSeverity.Warning));
691
704
  }
692
705
  if (key === "type") {
693
706
  hasType = true;
694
707
  if (prop.value.type !== "scalar" || prop.value.value !== "command") {
695
- report(toMarker(( localize(7243, "The 'type' property in a hook command must be 'command'.")), prop.value.range, MarkerSeverity.Error));
708
+ report(toMarker(( localize(7469, "The 'type' property in a hook command must be 'command'.")), prop.value.range, MarkerSeverity.Error));
696
709
  }
697
710
  } else if (( validCommandFields.has(key))) {
698
711
  hasCommandField = true;
699
712
  if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
700
713
  report(toMarker(( localize(
701
- 7244,
714
+ 7470,
702
715
  "The '{0}' property in a hook command must be a non-empty string.",
703
716
  key
704
717
  )), prop.value.range, MarkerSeverity.Error));
705
718
  }
706
719
  } else if (key === "cwd") {
707
720
  if (prop.value.type !== "scalar") {
708
- report(toMarker(( localize(7245, "The 'cwd' property in a hook command must be a string.")), prop.value.range, MarkerSeverity.Error));
721
+ report(toMarker(( localize(7471, "The 'cwd' property in a hook command must be a string.")), prop.value.range, MarkerSeverity.Error));
709
722
  }
710
723
  } else if (key === "env") {
711
724
  if (prop.value.type !== "map") {
712
725
  report(toMarker(( localize(
713
- 7246,
726
+ 7472,
714
727
  "The 'env' property in a hook command must be a map of string values."
715
728
  )), prop.value.range, MarkerSeverity.Error));
716
729
  } else {
717
730
  for (const envProp of prop.value.properties) {
718
731
  if (envProp.value.type !== "scalar") {
719
732
  report(toMarker(( localize(
720
- 7247,
733
+ 7473,
721
734
  "Environment variable '{0}' must have a string value.",
722
735
  envProp.key.value
723
736
  )), envProp.value.range, MarkerSeverity.Error));
@@ -726,19 +739,19 @@ let PromptValidator = class PromptValidator {
726
739
  }
727
740
  } else if (key === "timeout" || key === "timeoutSec") {
728
741
  if (prop.value.type !== "scalar" || isNaN(Number(prop.value.value))) {
729
- report(toMarker(( localize(7248, "The '{0}' property in a hook command must be a number.", key)), prop.value.range, MarkerSeverity.Error));
742
+ report(toMarker(( localize(7474, "The '{0}' property in a hook command must be a number.", key)), prop.value.range, MarkerSeverity.Error));
730
743
  }
731
744
  }
732
745
  }
733
746
  if (!hasType) {
734
- report(toMarker(( localize(7249, "Hook command is missing required property 'type'.")), item.range, MarkerSeverity.Error));
747
+ report(toMarker(( localize(7475, "Hook command is missing required property 'type'.")), item.range, MarkerSeverity.Error));
735
748
  }
736
749
  if (!hasCommandField) {
737
750
  if (isCopilotCli) {
738
- report(toMarker(( localize(7250, "Hook command must specify at least one of 'bash' or 'powershell'.")), item.range, MarkerSeverity.Error));
751
+ report(toMarker(( localize(7476, "Hook command must specify at least one of 'bash' or 'powershell'.")), item.range, MarkerSeverity.Error));
739
752
  } else {
740
753
  report(toMarker(( localize(
741
- 7251,
754
+ 7477,
742
755
  "Hook command must specify at least one of 'command', 'windows', 'linux', or 'osx'."
743
756
  )), item.range, MarkerSeverity.Error));
744
757
  }
@@ -750,13 +763,14 @@ let PromptValidator = class PromptValidator {
750
763
  return;
751
764
  }
752
765
  if (attribute.value.type !== "sequence") {
753
- report(toMarker(( localize(7252, "The 'handoffs' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
766
+ report(toMarker(( localize(7478, "The 'handoffs' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
754
767
  return;
755
768
  }
769
+ const seenLabels = ( new Map());
756
770
  for (const item of attribute.value.items) {
757
771
  if (item.type !== "map") {
758
772
  report(toMarker(( localize(
759
- 7253,
773
+ 7479,
760
774
  "Each handoff in the 'handoffs' attribute must be an object with 'label', 'agent', 'prompt' and optional 'send'."
761
775
  )), item.range, MarkerSeverity.Error));
762
776
  continue;
@@ -766,39 +780,44 @@ let PromptValidator = class PromptValidator {
766
780
  switch (prop.key.value) {
767
781
  case "label":
768
782
  if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
769
- report(toMarker(( localize(7254, "The 'label' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
783
+ report(toMarker(( localize(7480, "The 'label' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
784
+ } else if (!/[a-zA-Z0-9]/.test(prop.value.value)) {
785
+ report(toMarker(( localize(
786
+ 7481,
787
+ "The 'label' property in a handoff must contain at least one alphanumeric character."
788
+ )), prop.value.range, MarkerSeverity.Error));
770
789
  }
771
790
  break;
772
791
  case "agent":
773
792
  if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
774
- report(toMarker(( localize(7255, "The 'agent' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
793
+ report(toMarker(( localize(7482, "The 'agent' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
775
794
  } else {
776
795
  this.validateAgentValue(prop.value, report);
777
796
  }
778
797
  break;
779
798
  case "prompt":
780
799
  if (prop.value.type !== "scalar") {
781
- report(toMarker(( localize(7256, "The 'prompt' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
800
+ report(toMarker(( localize(7483, "The 'prompt' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
782
801
  }
783
802
  break;
784
803
  case "send":
785
804
  if (!isTrueOrFalse(prop.value)) {
786
- report(toMarker(( localize(7257, "The 'send' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
805
+ report(toMarker(( localize(7484, "The 'send' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
787
806
  }
788
807
  break;
789
808
  case "showContinueOn":
790
809
  if (!isTrueOrFalse(prop.value)) {
791
- report(toMarker(( localize(7258, "The 'showContinueOn' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
810
+ report(toMarker(( localize(7485, "The 'showContinueOn' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
792
811
  }
793
812
  break;
794
813
  case "model":
795
814
  if (prop.value.type !== "scalar") {
796
- report(toMarker(( localize(7259, "The 'model' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
815
+ report(toMarker(( localize(7486, "The 'model' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
797
816
  }
798
817
  break;
799
818
  default:
800
819
  report(toMarker(( localize(
801
- 7260,
820
+ 7487,
802
821
  "Unknown property '{0}' in handoff object. Supported properties are 'label', 'agent', 'prompt' and optional 'send', 'showContinueOn', 'model'.",
803
822
  prop.key.value
804
823
  )), prop.value.range, MarkerSeverity.Warning));
@@ -807,11 +826,24 @@ let PromptValidator = class PromptValidator {
807
826
  }
808
827
  if (required.size > 0) {
809
828
  report(toMarker(( localize(
810
- 7261,
829
+ 7488,
811
830
  "Missing required properties {0} in handoff object.",
812
831
  ( Array.from(required).map(s => `'${s}'`)).join(", ")
813
832
  )), item.range, MarkerSeverity.Error));
814
833
  }
834
+ const labelProp = item.properties.find(p => p.key.value === "label");
835
+ if (labelProp?.value.type === "scalar") {
836
+ const normalizedLabel = labelProp.value.value.toLowerCase();
837
+ if (normalizedLabel && ( seenLabels.has(normalizedLabel))) {
838
+ report(toMarker(( localize(
839
+ 7489,
840
+ "Duplicate handoff label '{0}'. Each handoff must have a unique label.",
841
+ labelProp.value.value
842
+ )), labelProp.value.range, MarkerSeverity.Error));
843
+ } else if (normalizedLabel) {
844
+ seenLabels.set(normalizedLabel, labelProp.value.range);
845
+ }
846
+ }
815
847
  }
816
848
  }
817
849
  validateInfer(attributes, report) {
@@ -820,7 +852,7 @@ let PromptValidator = class PromptValidator {
820
852
  return;
821
853
  }
822
854
  report(toMarker(( localize(
823
- 7262,
855
+ 7490,
824
856
  "The 'infer' attribute is deprecated in favour of 'user-invocable' and 'disable-model-invocation'."
825
857
  )), attribute.value.range, MarkerSeverity.Error));
826
858
  }
@@ -830,18 +862,18 @@ let PromptValidator = class PromptValidator {
830
862
  return;
831
863
  }
832
864
  if (attribute.value.type !== "scalar") {
833
- report(toMarker(( localize(7263, "The 'target' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
865
+ report(toMarker(( localize(7491, "The 'target' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
834
866
  return;
835
867
  }
836
868
  const targetValue = attribute.value.value.trim();
837
869
  if (targetValue.length === 0) {
838
- report(toMarker(( localize(7264, "The 'target' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
870
+ report(toMarker(( localize(7492, "The 'target' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
839
871
  return;
840
872
  }
841
873
  const validTargets = ["github-copilot", "vscode"];
842
874
  if (!validTargets.includes(targetValue)) {
843
875
  report(toMarker(( localize(
844
- 7265,
876
+ 7493,
845
877
  "The 'target' attribute must be one of: {0}.",
846
878
  validTargets.join(", ")
847
879
  )), attribute.value.range, MarkerSeverity.Error));
@@ -853,7 +885,7 @@ let PromptValidator = class PromptValidator {
853
885
  return;
854
886
  }
855
887
  if (!isTrueOrFalse(attribute.value)) {
856
- report(toMarker(( localize(7266, "The 'user-invocable' attribute must be 'true' or 'false'.")), attribute.value.range, MarkerSeverity.Error));
888
+ report(toMarker(( localize(7494, "The 'user-invocable' attribute must be 'true' or 'false'.")), attribute.value.range, MarkerSeverity.Error));
857
889
  return;
858
890
  }
859
891
  }
@@ -863,7 +895,7 @@ let PromptValidator = class PromptValidator {
863
895
  return;
864
896
  }
865
897
  report(toMarker(( localize(
866
- 7267,
898
+ 7495,
867
899
  "The 'user-invokable' attribute is deprecated. Use 'user-invocable' instead."
868
900
  )), attribute.range, MarkerSeverity.Warning));
869
901
  }
@@ -874,7 +906,7 @@ let PromptValidator = class PromptValidator {
874
906
  }
875
907
  if (!isTrueOrFalse(attribute.value)) {
876
908
  report(toMarker(( localize(
877
- 7268,
909
+ 7496,
878
910
  "The 'disable-model-invocation' attribute must be 'true' or 'false'."
879
911
  )), attribute.value.range, MarkerSeverity.Error));
880
912
  return;
@@ -886,7 +918,7 @@ let PromptValidator = class PromptValidator {
886
918
  return;
887
919
  }
888
920
  if (attribute.value.type !== "sequence") {
889
- report(toMarker(( localize(7269, "The 'agents' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
921
+ report(toMarker(( localize(7497, "The 'agents' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
890
922
  return;
891
923
  }
892
924
  const agents = await this.promptsService.getCustomAgents(CancellationToken.None);
@@ -895,12 +927,12 @@ let PromptValidator = class PromptValidator {
895
927
  const agentNames = [];
896
928
  for (const item of attribute.value.items) {
897
929
  if (item.type !== "scalar") {
898
- report(toMarker(( localize(7270, "Each agent name in the 'agents' attribute must be a string.")), item.range, MarkerSeverity.Error));
930
+ report(toMarker(( localize(7498, "Each agent name in the 'agents' attribute must be a string.")), item.range, MarkerSeverity.Error));
899
931
  } else if (item.value) {
900
932
  agentNames.push(item.value);
901
933
  if (item.value !== "*" && !( availableAgentNames.has(item.value))) {
902
934
  report(toMarker(( localize(
903
- 7271,
935
+ 7499,
904
936
  "Unknown agent '{0}'. Available agents: {1}.",
905
937
  item.value,
906
938
  Array.from(availableAgentNames).join(", ")
@@ -912,7 +944,7 @@ let PromptValidator = class PromptValidator {
912
944
  const tools = header.tools;
913
945
  if (tools && !tools.includes(SpecedToolAliases.agent)) {
914
946
  report(toMarker(( localize(
915
- 7272,
947
+ 7500,
916
948
  "When 'agents' and 'tools' are specified, the 'agent' tool must be included in the 'tools' attribute."
917
949
  )), attribute.value.range, MarkerSeverity.Warning));
918
950
  }
@@ -924,20 +956,20 @@ let PromptValidator = class PromptValidator {
924
956
  return;
925
957
  }
926
958
  if (attribute.value.type !== "map") {
927
- report(toMarker(( localize(7273, "The 'github' attribute must be an object.")), attribute.value.range, MarkerSeverity.Error));
959
+ report(toMarker(( localize(7501, "The 'github' attribute must be an object.")), attribute.value.range, MarkerSeverity.Error));
928
960
  return;
929
961
  }
930
962
  for (const prop of attribute.value.properties) {
931
963
  if (prop.key.value !== "permissions") {
932
964
  report(toMarker(( localize(
933
- 7274,
965
+ 7502,
934
966
  "Unknown property '{0}' in 'github' object. Supported: 'permissions'.",
935
967
  prop.key.value
936
968
  )), prop.key.range, MarkerSeverity.Warning));
937
969
  continue;
938
970
  }
939
971
  if (prop.value.type !== "map") {
940
- report(toMarker(( localize(7275, "The 'permissions' property must be an object.")), prop.value.range, MarkerSeverity.Error));
972
+ report(toMarker(( localize(7503, "The 'permissions' property must be an object.")), prop.value.range, MarkerSeverity.Error));
941
973
  continue;
942
974
  }
943
975
  for (const permProp of prop.value.properties) {
@@ -946,7 +978,7 @@ let PromptValidator = class PromptValidator {
946
978
  if (!scopeInfo) {
947
979
  const validScopes = ( Object.keys(githubPermissionScopes)).sort().join(", ");
948
980
  report(toMarker(( localize(
949
- 7276,
981
+ 7504,
950
982
  "Unknown permission scope '{0}'. Valid scopes: {1}.",
951
983
  scope,
952
984
  validScopes
@@ -954,13 +986,13 @@ let PromptValidator = class PromptValidator {
954
986
  continue;
955
987
  }
956
988
  if (permProp.value.type !== "scalar") {
957
- report(toMarker(( localize(7277, "The permission value for '{0}' must be a string.", scope)), permProp.value.range, MarkerSeverity.Error));
989
+ report(toMarker(( localize(7505, "The permission value for '{0}' must be a string.", scope)), permProp.value.range, MarkerSeverity.Error));
958
990
  continue;
959
991
  }
960
992
  const value = permProp.value.value;
961
993
  if (!scopeInfo.allowedValues.includes(value)) {
962
994
  report(toMarker(( localize(
963
- 7278,
995
+ 7506,
964
996
  "Invalid permission value '{0}' for scope '{1}'. Allowed values: {2}.",
965
997
  value,
966
998
  scope,
@@ -975,39 +1007,39 @@ PromptValidator = ( __decorate([( __param(0, ILanguageModelsService)), ( __param
975
1007
  const githubPermissionScopes = {
976
1008
  "actions": {
977
1009
  allowedValues: ["read", "write", "none"],
978
- description: ( localize(7279, "Access to GitHub Actions workflows and runs"))
1010
+ description: ( localize(7507, "Access to GitHub Actions workflows and runs"))
979
1011
  },
980
1012
  "checks": {
981
1013
  allowedValues: ["read", "none"],
982
- description: ( localize(7280, "Access to check runs and statuses"))
1014
+ description: ( localize(7508, "Access to check runs and statuses"))
983
1015
  },
984
1016
  "contents": {
985
1017
  allowedValues: ["read", "write", "none"],
986
- description: ( localize(7281, "Access to repository contents (files, commits, branches)"))
1018
+ description: ( localize(7509, "Access to repository contents (files, commits, branches)"))
987
1019
  },
988
1020
  "discussions": {
989
1021
  allowedValues: ["read", "write", "none"],
990
- description: ( localize(7282, "Access to discussions"))
1022
+ description: ( localize(7510, "Access to discussions"))
991
1023
  },
992
1024
  "issues": {
993
1025
  allowedValues: ["read", "write", "none"],
994
- description: ( localize(7283, "Access to issues (read, create, update, comment)"))
1026
+ description: ( localize(7511, "Access to issues (read, create, update, comment)"))
995
1027
  },
996
1028
  "metadata": {
997
1029
  allowedValues: ["read"],
998
- description: ( localize(7284, "Repository metadata (always read-only)"))
1030
+ description: ( localize(7512, "Repository metadata (always read-only)"))
999
1031
  },
1000
1032
  "pull-requests": {
1001
1033
  allowedValues: ["read", "write", "none"],
1002
- description: ( localize(7285, "Access to pull requests (read, create, update, review)"))
1034
+ description: ( localize(7513, "Access to pull requests (read, create, update, review)"))
1003
1035
  },
1004
1036
  "security-events": {
1005
1037
  allowedValues: ["read", "none"],
1006
- description: ( localize(7286, "Access to security-related events"))
1038
+ description: ( localize(7514, "Access to security-related events"))
1007
1039
  },
1008
1040
  "workflows": {
1009
1041
  allowedValues: ["write", "none"],
1010
- description: ( localize(7287, "Access to modify workflow files"))
1042
+ description: ( localize(7515, "Access to modify workflow files"))
1011
1043
  }
1012
1044
  };
1013
1045
  function isTrueOrFalse(value) {
@@ -1096,103 +1128,103 @@ function isNonRecommendedAttribute(attributeName) {
1096
1128
  }
1097
1129
  const knownClaudeTools = [{
1098
1130
  name: "Bash",
1099
- description: ( localize(7288, "Execute shell commands")),
1131
+ description: ( localize(7516, "Execute shell commands")),
1100
1132
  toolEquivalent: [SpecedToolAliases.execute]
1101
1133
  }, {
1102
1134
  name: "Edit",
1103
- description: ( localize(7289, "Make targeted file edits")),
1135
+ description: ( localize(7517, "Make targeted file edits")),
1104
1136
  toolEquivalent: ["edit/editNotebook", "edit/editFiles"]
1105
1137
  }, {
1106
1138
  name: "Glob",
1107
- description: ( localize(7290, "Find files by pattern")),
1139
+ description: ( localize(7518, "Find files by pattern")),
1108
1140
  toolEquivalent: ["search/fileSearch"]
1109
1141
  }, {
1110
1142
  name: "Grep",
1111
- description: ( localize(7291, "Search file contents with regex")),
1143
+ description: ( localize(7519, "Search file contents with regex")),
1112
1144
  toolEquivalent: ["search/textSearch"]
1113
1145
  }, {
1114
1146
  name: "Read",
1115
- description: ( localize(7292, "Read file contents")),
1147
+ description: ( localize(7520, "Read file contents")),
1116
1148
  toolEquivalent: ["read/readFile", "read/getNotebookSummary"]
1117
1149
  }, {
1118
1150
  name: "Write",
1119
- description: ( localize(7293, "Create/overwrite files")),
1151
+ description: ( localize(7521, "Create/overwrite files")),
1120
1152
  toolEquivalent: ["edit/createDirectory", "edit/createFile", "edit/createJupyterNotebook"]
1121
1153
  }, {
1122
1154
  name: "WebFetch",
1123
- description: ( localize(7294, "Fetch URL content")),
1155
+ description: ( localize(7522, "Fetch URL content")),
1124
1156
  toolEquivalent: [SpecedToolAliases.web]
1125
1157
  }, {
1126
1158
  name: "WebSearch",
1127
- description: ( localize(7295, "Perform web searches")),
1159
+ description: ( localize(7523, "Perform web searches")),
1128
1160
  toolEquivalent: [SpecedToolAliases.web]
1129
1161
  }, {
1130
1162
  name: "Task",
1131
- description: ( localize(7296, "Run subagents for complex tasks")),
1163
+ description: ( localize(7524, "Run subagents for complex tasks")),
1132
1164
  toolEquivalent: [SpecedToolAliases.agent]
1133
1165
  }, {
1134
1166
  name: "Skill",
1135
- description: ( localize(7297, "Execute skills")),
1167
+ description: ( localize(7525, "Execute skills")),
1136
1168
  toolEquivalent: []
1137
1169
  }, {
1138
1170
  name: "LSP",
1139
- description: ( localize(7298, "Code intelligence (requires plugin)")),
1171
+ description: ( localize(7526, "Code intelligence (requires plugin)")),
1140
1172
  toolEquivalent: []
1141
1173
  }, {
1142
1174
  name: "NotebookEdit",
1143
- description: ( localize(7299, "Modify Jupyter notebooks")),
1175
+ description: ( localize(7527, "Modify Jupyter notebooks")),
1144
1176
  toolEquivalent: ["edit/editNotebook"]
1145
1177
  }, {
1146
1178
  name: "AskUserQuestion",
1147
- description: ( localize(7300, "Ask multiple-choice questions")),
1179
+ description: ( localize(7528, "Ask multiple-choice questions")),
1148
1180
  toolEquivalent: ["vscode/askQuestions"]
1149
1181
  }, {
1150
1182
  name: "MCPSearch",
1151
- description: ( localize(7301, "Searches for MCP tools when tool search is enabled")),
1183
+ description: ( localize(7529, "Searches for MCP tools when tool search is enabled")),
1152
1184
  toolEquivalent: []
1153
1185
  }];
1154
1186
  const knownClaudeModels = [{
1155
1187
  name: "sonnet",
1156
- description: ( localize(7302, "Latest Claude Sonnet")),
1188
+ description: ( localize(7530, "Latest Claude Sonnet")),
1157
1189
  modelEquivalent: "Claude Sonnet 4.5 (copilot)"
1158
1190
  }, {
1159
1191
  name: "opus",
1160
- description: ( localize(7303, "Latest Claude Opus")),
1192
+ description: ( localize(7531, "Latest Claude Opus")),
1161
1193
  modelEquivalent: "Claude Opus 4.6 (copilot)"
1162
1194
  }, {
1163
1195
  name: "haiku",
1164
- description: ( localize(7304, "Latest Claude Haiku, fast for simple tasks")),
1196
+ description: ( localize(7532, "Latest Claude Haiku, fast for simple tasks")),
1165
1197
  modelEquivalent: "Claude Haiku 4.5 (copilot)"
1166
1198
  }, {
1167
1199
  name: "inherit",
1168
- description: ( localize(7305, "Inherit model from parent agent or prompt")),
1200
+ description: ( localize(7533, "Inherit model from parent agent or prompt")),
1169
1201
  modelEquivalent: undefined
1170
1202
  }];
1171
1203
  const claudeAgentAttributes = {
1172
1204
  "name": {
1173
1205
  type: "scalar",
1174
- description: ( localize(7306, "Unique identifier using lowercase letters and hyphens (required)"))
1206
+ description: ( localize(7534, "Unique identifier using lowercase letters and hyphens (required)"))
1175
1207
  },
1176
1208
  "description": {
1177
1209
  type: "scalar",
1178
- description: ( localize(7307, "When to delegate to this subagent (required)"))
1210
+ description: ( localize(7535, "When to delegate to this subagent (required)"))
1179
1211
  },
1180
1212
  "tools": {
1181
1213
  type: "sequence",
1182
- description: ( localize(7308, "Array of tools the subagent can use. Inherits all tools if omitted")),
1214
+ description: ( localize(7536, "Array of tools the subagent can use. Inherits all tools if omitted")),
1183
1215
  defaults: ["Read, Edit, Bash"],
1184
1216
  items: knownClaudeTools
1185
1217
  },
1186
1218
  "disallowedTools": {
1187
1219
  type: "sequence",
1188
- description: ( localize(7309, "Tools to deny, removed from inherited or specified list")),
1220
+ description: ( localize(7537, "Tools to deny, removed from inherited or specified list")),
1189
1221
  defaults: ["Write, Edit, Bash"],
1190
1222
  items: knownClaudeTools
1191
1223
  },
1192
1224
  "model": {
1193
1225
  type: "scalar",
1194
1226
  description: ( localize(
1195
- 7310,
1227
+ 7538,
1196
1228
  "Model to use: sonnet, opus, haiku, or inherit. Defaults to inherit."
1197
1229
  )),
1198
1230
  defaults: ["sonnet", "opus", "haiku", "inherit"],
@@ -1201,77 +1233,77 @@ const claudeAgentAttributes = {
1201
1233
  "permissionMode": {
1202
1234
  type: "scalar",
1203
1235
  description: ( localize(
1204
- 7311,
1236
+ 7539,
1205
1237
  "Permission mode: default, acceptEdits, dontAsk, bypassPermissions, or plan."
1206
1238
  )),
1207
1239
  defaults: ["default", "acceptEdits", "dontAsk", "bypassPermissions", "plan"],
1208
1240
  enums: [{
1209
1241
  name: "default",
1210
1242
  description: ( localize(
1211
- 7312,
1243
+ 7540,
1212
1244
  "Standard behavior: prompts for permission on first use of each tool."
1213
1245
  ))
1214
1246
  }, {
1215
1247
  name: "acceptEdits",
1216
- description: ( localize(7313, "Automatically accepts file edit permissions for the session."))
1248
+ description: ( localize(7541, "Automatically accepts file edit permissions for the session."))
1217
1249
  }, {
1218
1250
  name: "plan",
1219
1251
  description: ( localize(
1220
- 7314,
1252
+ 7542,
1221
1253
  "Plan Mode: Claude can analyze but not modify files or execute commands."
1222
1254
  ))
1223
1255
  }, {
1224
1256
  name: "delegate",
1225
1257
  description: ( localize(
1226
- 7315,
1258
+ 7543,
1227
1259
  "Coordination-only mode for agent team leads. Only available when an agent team is active."
1228
1260
  ))
1229
1261
  }, {
1230
1262
  name: "dontAsk",
1231
1263
  description: ( localize(
1232
- 7316,
1264
+ 7544,
1233
1265
  "Auto-denies tools unless pre-approved via /permissions or permissions.allow rules."
1234
1266
  ))
1235
1267
  }, {
1236
1268
  name: "bypassPermissions",
1237
1269
  description: ( localize(
1238
- 7317,
1270
+ 7545,
1239
1271
  "Skips all permission prompts (requires safe environment like containers)."
1240
1272
  ))
1241
1273
  }]
1242
1274
  },
1243
1275
  "skills": {
1244
1276
  type: "sequence",
1245
- description: ( localize(7318, "Skills to load into the subagent's context at startup."))
1277
+ description: ( localize(7546, "Skills to load into the subagent's context at startup."))
1246
1278
  },
1247
1279
  "mcpServers": {
1248
1280
  type: "sequence",
1249
- description: ( localize(7319, "MCP servers available to this subagent."))
1281
+ description: ( localize(7547, "MCP servers available to this subagent."))
1250
1282
  },
1251
1283
  "hooks": {
1252
1284
  type: "object",
1253
- description: ( localize(7320, "Lifecycle hooks scoped to this subagent."))
1285
+ description: ( localize(7548, "Lifecycle hooks scoped to this subagent."))
1254
1286
  },
1255
1287
  "memory": {
1256
1288
  type: "scalar",
1257
1289
  description: ( localize(
1258
- 7321,
1290
+ 7549,
1259
1291
  "Persistent memory scope: user, project, or local. Enables cross-session learning."
1260
1292
  )),
1261
1293
  defaults: ["user", "project", "local"],
1262
1294
  enums: [{
1263
1295
  name: "user",
1264
- description: ( localize(7322, "Remember learnings across all projects."))
1296
+ description: ( localize(7550, "Remember learnings across all projects."))
1265
1297
  }, {
1266
1298
  name: "project",
1267
1299
  description: ( localize(
1268
- 7323,
1300
+ 7551,
1269
1301
  "The subagent's knowledge is project-specific and shareable via version control."
1270
1302
  ))
1271
1303
  }, {
1272
1304
  name: "local",
1273
1305
  description: ( localize(
1274
- 7324,
1306
+ 7552,
1275
1307
  "The subagent's knowledge is project-specific but should not be checked into version control."
1276
1308
  ))
1277
1309
  }]
@@ -1281,14 +1313,14 @@ const claudeRulesAttributes = {
1281
1313
  "description": {
1282
1314
  type: "scalar",
1283
1315
  description: ( localize(
1284
- 7325,
1316
+ 7553,
1285
1317
  "A description of what this rule covers, used to provide context about when it applies."
1286
1318
  ))
1287
1319
  },
1288
1320
  "paths": {
1289
1321
  type: "sequence",
1290
1322
  description: ( localize(
1291
- 7326,
1323
+ 7554,
1292
1324
  "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/**']`"
1293
1325
  ))
1294
1326
  }