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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/index.js +5 -2
  2. package/package.json +5 -5
  3. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +54 -4
  4. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +179 -11
  5. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.js +5 -1
  6. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.d.ts +6 -1
  7. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.js +25 -10
  8. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +67 -0
  9. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +263 -0
  10. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.d.ts +6 -0
  11. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.js +25 -6
  12. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  13. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +15 -15
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +13 -5
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +5 -5
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +11 -11
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +5 -4
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.d.ts +7 -0
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +2 -2
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +13 -13
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +12 -12
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +49 -13
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.d.ts +58 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +537 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.d.ts +17 -0
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +55 -0
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +26 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.js +9 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/media/agentPluginEditor.css +32 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +17 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +89 -11
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +4 -26
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +146 -53
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +56 -54
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +5 -5
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +25 -25
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  58. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +4 -0
  59. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +13 -12
  60. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +7 -9
  61. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +189 -145
  62. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +42 -44
  63. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.d.ts +0 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +3 -4
  65. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +20 -8
  66. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +210 -59
  67. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +1 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +14 -3
  69. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +3 -3
  70. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +122 -53
  71. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +87 -9
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +62 -0
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +702 -0
  74. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +279 -214
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +21 -21
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +12 -3
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +19 -19
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.d.ts +12 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +63 -4
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +18 -18
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +6 -6
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +4 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +62 -24
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +28 -28
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +9 -9
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +2 -0
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +7 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +2 -5
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +32 -36
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +4 -5
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +1 -1
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +2 -2
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -8
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +13 -13
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +49 -49
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +9 -0
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +14 -14
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +26 -26
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +13 -13
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +3 -1
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +103 -60
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +61 -61
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +66 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +245 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.d.ts +78 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.js +234 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +31 -126
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +229 -524
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.d.ts +41 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.js +22 -0
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +4 -3
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +54 -20
  137. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  138. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +11 -12
  139. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +112 -39
  140. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +99 -0
  141. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +489 -0
  142. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  143. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +6 -3
  144. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +348 -285
  145. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +18 -1
  146. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +107 -5
  147. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  148. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +4 -4
  149. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  150. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  151. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  152. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  153. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +2 -0
  154. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +55 -38
  155. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +20 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +148 -60
  157. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +5 -5
  158. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  159. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +6 -6
  160. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +2 -0
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +29 -14
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +72 -14
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +5 -3
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +5 -2
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +11 -10
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +8 -0
  172. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.d.ts +1 -0
  173. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.js +1 -0
  174. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +8 -0
  175. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +20 -0
  176. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +72 -23
  178. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +19 -1
  179. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +5 -1
  180. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -1
  181. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +37 -8
  182. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +36 -3
  183. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +4 -4
  184. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +2 -2
  185. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +6 -1
  186. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +71 -25
  187. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +217 -91
  188. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +85 -3
  189. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +257 -63
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +17 -17
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.d.ts +3 -16
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.js +7 -50
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.d.ts +2 -1
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +32 -3
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +1 -1
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +3 -1
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +1 -1
  198. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +7 -6
  199. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +1 -1
  200. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +26 -1
  201. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +287 -88
  202. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +10 -1
  203. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +75 -20
  204. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +121 -0
  205. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +1422 -0
  206. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
  207. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +5 -1
  208. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +81 -41
  209. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +3 -1
  210. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +8 -6
  211. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  212. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.d.ts +14 -2
  213. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +54 -5
  214. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +6 -5
  215. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +4 -4
  216. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +38 -22
  217. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  218. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +8 -8
  219. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  220. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  221. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  222. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  223. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  224. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +8 -0
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +36 -18
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +6 -0
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +27 -13
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +1 -1
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +1 -0
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +8 -1
  250. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.d.ts +0 -12
  251. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +0 -67
@@ -9,26 +9,34 @@ import { ILanguageModelChatMetadata } from '@codingame/monaco-vscode-api/vscode/
9
9
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
10
10
  import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
11
11
  import { IChatModeService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service';
12
- import { getPromptsTypeForLanguageId, PromptsType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
13
- import { Target } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
12
+ import { getPromptsTypeForLanguageId, PromptsType, Target } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
14
13
  import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
15
14
  import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
16
- import { PromptHeaderAttributes, ClaudeHeaderAttributes, parseCommaSeparatedList } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptFileParser';
17
- import { getTarget, getValidAttributeNames, getAttributeDescription, knownClaudeTools, knownGithubCopilotTools, claudeRulesAttributes, claudeAgentAttributes } from '@codingame/monaco-vscode-xterm-addons-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator';
15
+ import { PromptHeaderAttributes, parseCommaSeparatedList } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptFileParser';
16
+ import { getTarget, getValidAttributeNames, getAttributeDefinition, knownClaudeTools, ClaudeHeaderAttributes, knownGithubCopilotTools } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptFileAttributes';
18
17
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
19
18
  import { getQuotePreference, formatArrayValue } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/utils/promptEditHelper';
19
+ import { HOOKS_BY_TARGET, HOOK_METADATA } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookTypes';
20
+ import { HOOK_COMMAND_FIELD_DESCRIPTIONS } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
21
+ import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service';
22
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
23
+ import { PromptsConfig } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/config';
20
24
 
21
25
  let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
22
26
  constructor(
23
27
  promptsService,
24
28
  languageModelsService,
25
29
  languageModelToolsService,
26
- chatModeService
30
+ chatModeService,
31
+ environmentService,
32
+ configurationService
27
33
  ) {
28
34
  this.promptsService = promptsService;
29
35
  this.languageModelsService = languageModelsService;
30
36
  this.languageModelToolsService = languageModelToolsService;
31
37
  this.chatModeService = chatModeService;
38
+ this.environmentService = environmentService;
39
+ this.configurationService = configurationService;
32
40
  this._debugDisplayName = "PromptHeaderAutocompletion";
33
41
  this.triggerCharacters = [":"];
34
42
  }
@@ -40,7 +48,7 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
40
48
  if (/^\s*$/.test(model.getValue())) {
41
49
  return {
42
50
  suggestions: [{
43
- label: ( localize(6981, "Add Prompt Header")),
51
+ label: ( localize(7170, "Add Prompt Header")),
44
52
  kind: CompletionItemKind.Snippet,
45
53
  insertText: [`---`, `description: $1`, `---`, `$0`].join("\n"),
46
54
  insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,
@@ -61,6 +69,31 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
61
69
  const colonIndex = lineText.indexOf(":");
62
70
  const colonPosition = colonIndex !== -1 ? ( new Position(position.lineNumber, colonIndex + 1)) : undefined;
63
71
  if (!colonPosition || position.isBeforeOrEqual(colonPosition)) {
72
+ let containingAttribute = header.attributes.find((
73
+ {
74
+ range
75
+ }
76
+ ) => range.startLineNumber < position.lineNumber && position.lineNumber <= range.endLineNumber);
77
+ if (!containingAttribute) {
78
+ for (let i = header.attributes.length - 1; i >= 0; i--) {
79
+ const attr = header.attributes[i];
80
+ if (attr.range.endLineNumber < position.lineNumber && attr.value.type === "map") {
81
+ const nextAttr = header.attributes[i + 1];
82
+ const nextStartLine = nextAttr ? nextAttr.range.startLineNumber : headerRange.endLineNumber;
83
+ if (position.lineNumber < nextStartLine) {
84
+ containingAttribute = attr;
85
+ }
86
+ break;
87
+ }
88
+ }
89
+ }
90
+ if (containingAttribute) {
91
+ const attrLineText = model.getLineContent(containingAttribute.range.startLineNumber);
92
+ const attrColonIndex = attrLineText.indexOf(":");
93
+ if (attrColonIndex !== -1) {
94
+ return this.provideValueCompletions(model, position, header, ( new Position(containingAttribute.range.startLineNumber, attrColonIndex + 1)), promptType, containingAttribute);
95
+ }
96
+ }
64
97
  return this.provideAttributeNameCompletions(model, position, header, colonPosition, promptType);
65
98
  } else if (colonPosition && colonPosition.isBefore(position)) {
66
99
  return this.provideValueCompletions(model, position, header, colonPosition, promptType);
@@ -71,6 +104,9 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
71
104
  const suggestions = [];
72
105
  const target = getTarget(promptType, header);
73
106
  const attributesToPropose = ( new Set(getValidAttributeNames(promptType, false, target)));
107
+ if (!this.configurationService.getValue(PromptsConfig.USE_CUSTOM_AGENT_HOOKS)) {
108
+ attributesToPropose.delete(PromptHeaderAttributes.hooks);
109
+ }
74
110
  for (const attr of header.attributes) {
75
111
  attributesToPropose.delete(attr.key);
76
112
  }
@@ -78,6 +114,10 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
78
114
  if (colonPosition) {
79
115
  return key;
80
116
  }
117
+ if (key === PromptHeaderAttributes.hooks && promptType === PromptsType.agent && target !== Target.Claude) {
118
+ const hookNames = ( Object.keys(HOOKS_BY_TARGET[target] ?? HOOKS_BY_TARGET[Target.Undefined]));
119
+ return `${key}:\n \${1|${hookNames.join(",")}|}:\n - type: command\n command: "$2"`;
120
+ }
81
121
  const valueSuggestions = this.getValueSuggestions(promptType, key, target);
82
122
  if (valueSuggestions.length > 0) {
83
123
  return `${key}: \${0:${valueSuggestions[0].name}}`;
@@ -88,7 +128,7 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
88
128
  for (const attribute of attributesToPropose) {
89
129
  const item = {
90
130
  label: attribute,
91
- documentation: getAttributeDescription(attribute, promptType, target),
131
+ documentation: getAttributeDefinition(attribute, promptType, target)?.description,
92
132
  kind: CompletionItemKind.Property,
93
133
  insertText: getInsertText(attribute),
94
134
  insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,
@@ -105,10 +145,10 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
105
145
  suggestions
106
146
  };
107
147
  }
108
- async provideValueCompletions(model, position, header, colonPosition, promptType) {
148
+ async provideValueCompletions(model, position, header, colonPosition, promptType, preFoundAttribute) {
109
149
  const suggestions = [];
110
150
  const posLineNumber = position.lineNumber;
111
- const attribute = header.attributes.find((
151
+ const attribute = preFoundAttribute ?? header.attributes.find((
112
152
  {
113
153
  range
114
154
  }
@@ -140,7 +180,7 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
140
180
  }
141
181
  if (value.type === "sequence") {
142
182
  const getValues = async () => {
143
- if (target === Target.GitHubCopilot) {
183
+ if (target === Target.GitHubCopilot || this.environmentService.isSessionsWindow) {
144
184
  return knownGithubCopilotTools;
145
185
  } else if (target === Target.Claude) {
146
186
  return knownClaudeTools;
@@ -161,6 +201,19 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
161
201
  });
162
202
  }
163
203
  }
204
+ if (attribute.key === PromptHeaderAttributes.hooks) {
205
+ if (attribute.value.type === "map") {
206
+ return this.provideHookEventCompletions(model, position, attribute.value, target);
207
+ }
208
+ if (position.lineNumber !== attribute.range.startLineNumber) {
209
+ const emptyMap = {
210
+ type: "map",
211
+ properties: [],
212
+ range: attribute.value.range
213
+ };
214
+ return this.provideHookEventCompletions(model, position, emptyMap, target);
215
+ }
216
+ }
164
217
  const lineContent = model.getLineContent(attribute.range.startLineNumber);
165
218
  const whilespaceAfterColon = (lineContent.substring(colonPosition.column).match(/^\s*/)?.[0].length) ?? 0;
166
219
  const entries = this.getValueSuggestions(promptType, attribute.key, target);
@@ -188,7 +241,7 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
188
241
  " send: true"
189
242
  ].join("\n");
190
243
  const item = {
191
- label: ( localize(6982, "Handoff Example")),
244
+ label: ( localize(7171, "Handoff Example")),
192
245
  kind: CompletionItemKind.Value,
193
246
  insertText: whilespaceAfterColon === 0 ? ` ${value}` : value,
194
247
  range: ( new Range(
@@ -200,38 +253,236 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
200
253
  };
201
254
  suggestions.push(item);
202
255
  }
256
+ if (attribute.key === PromptHeaderAttributes.hooks && promptType === PromptsType.agent) {
257
+ const hookSnippet = ["", " ${1|" + ( Object.keys(HOOKS_BY_TARGET[target] ?? HOOKS_BY_TARGET[Target.Undefined])).join(",") + "|}:", " - type: command", " command: \"$2\""].join("\n");
258
+ const item = {
259
+ label: ( localize(7172, "New Hook")),
260
+ kind: CompletionItemKind.Snippet,
261
+ insertText: whilespaceAfterColon === 0 ? ` ${hookSnippet}` : hookSnippet,
262
+ insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,
263
+ range: ( new Range(
264
+ position.lineNumber,
265
+ colonPosition.column + whilespaceAfterColon + 1,
266
+ position.lineNumber,
267
+ model.getLineMaxColumn(position.lineNumber)
268
+ ))
269
+ };
270
+ suggestions.push(item);
271
+ }
203
272
  return {
204
273
  suggestions
205
274
  };
206
275
  }
207
- getValueSuggestions(promptType, attribute, target) {
208
- if (target === Target.Claude) {
209
- const attributeDesc = promptType === PromptsType.instructions ? claudeRulesAttributes[attribute] : claudeAgentAttributes[attribute];
210
- if (attributeDesc) {
211
- if (attributeDesc.enums) {
212
- return attributeDesc.enums;
213
- } else if (attributeDesc.defaults) {
214
- return ( attributeDesc.defaults.map(value => ({
215
- name: value
216
- })));
276
+ provideHookEventCompletions(model, position, hooksMap, target) {
277
+ const hookEventOnLine = hooksMap.properties.find(p => p.key.range.startLineNumber === position.lineNumber);
278
+ if (hookEventOnLine) {
279
+ const lineText = model.getLineContent(position.lineNumber);
280
+ const colonIdx = lineText.indexOf(":");
281
+ if (colonIdx !== -1 && position.column > colonIdx + 1) {
282
+ const whilespaceAfterColon = (lineText.substring(colonIdx + 1).match(/^\s*/)?.[0].length) ?? 0;
283
+ const commandSnippet = ["", " - type: command", " command: \"$1\""].join("\n");
284
+ return {
285
+ suggestions: [{
286
+ label: ( localize(7173, "New Command")),
287
+ documentation: ( localize(7174, "Add a new command entry to this hook.")),
288
+ kind: CompletionItemKind.Snippet,
289
+ insertText: whilespaceAfterColon === 0 ? ` ${commandSnippet}` : commandSnippet,
290
+ insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,
291
+ range: ( new Range(
292
+ position.lineNumber,
293
+ colonIdx + 1 + whilespaceAfterColon + 1,
294
+ position.lineNumber,
295
+ model.getLineMaxColumn(position.lineNumber)
296
+ ))
297
+ }]
298
+ };
299
+ }
300
+ }
301
+ const commandFieldCompletions = this.provideHookCommandFieldCompletions(model, position, hooksMap, target);
302
+ if (commandFieldCompletions) {
303
+ return commandFieldCompletions;
304
+ }
305
+ const suggestions = [];
306
+ const hooksByTarget = HOOKS_BY_TARGET[target] ?? HOOKS_BY_TARGET[Target.Undefined];
307
+ const lineText = model.getLineContent(position.lineNumber);
308
+ const firstNonWhitespace = lineText.search(/\S/);
309
+ const isEmptyLine = firstNonWhitespace === -1;
310
+ const rangeStartColumn = isEmptyLine ? position.column : firstNonWhitespace + 1;
311
+ const existingKeys = ( new Set(( hooksMap.properties.filter(p => p.key.range.startLineNumber !== position.lineNumber).map(p => p.key.value))));
312
+ const expectedIndent = hooksMap.properties.length > 0 ? hooksMap.properties[0].key.range.startColumn - 1 : -1;
313
+ if (expectedIndent >= 0) {
314
+ const scanEnd = model.getLineCount();
315
+ for (let lineNum = hooksMap.range.endLineNumber + 1; lineNum <= scanEnd; lineNum++) {
316
+ if (lineNum === position.lineNumber) {
317
+ continue;
318
+ }
319
+ const lt = model.getLineContent(lineNum);
320
+ const lineIndent = lt.search(/\S/);
321
+ if (lineIndent === -1) {
322
+ continue;
323
+ }
324
+ if (lineIndent < expectedIndent) {
325
+ break;
326
+ }
327
+ if (lineIndent === expectedIndent) {
328
+ const match = lt.match(/^\s+(\S+)\s*:/);
329
+ if (match) {
330
+ existingKeys.add(match[1]);
331
+ }
217
332
  }
218
333
  }
219
- return [];
220
334
  }
221
- switch (attribute) {
222
- case PromptHeaderAttributes.applyTo:
223
- if (promptType === PromptsType.instructions) {
224
- return [{
225
- name: `'**'`
226
- }, {
227
- name: `'**/*.ts, **/*.js'`
228
- }, {
229
- name: `'**/*.php'`
230
- }, {
231
- name: `'**/*.py'`
232
- }];
335
+ const lineHasColon = lineText.indexOf(":") !== -1;
336
+ for (const [hookName, hookType] of Object.entries(hooksByTarget)) {
337
+ if (( existingKeys.has(hookName))) {
338
+ continue;
233
339
  }
234
- break;
340
+ const meta = HOOK_METADATA[hookType];
341
+ let insertText;
342
+ if (isEmptyLine) {
343
+ insertText = [`${hookName}:`, ` - type: command`, ` command: "$1"`].join("\n");
344
+ } else if (lineHasColon) {
345
+ insertText = `${hookName}:`;
346
+ } else {
347
+ insertText = hookName;
348
+ }
349
+ suggestions.push({
350
+ label: hookName,
351
+ documentation: meta?.description,
352
+ kind: CompletionItemKind.Property,
353
+ insertText,
354
+ insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,
355
+ range: ( new Range(
356
+ position.lineNumber,
357
+ rangeStartColumn,
358
+ position.lineNumber,
359
+ model.getLineMaxColumn(position.lineNumber)
360
+ ))
361
+ });
362
+ }
363
+ return {
364
+ suggestions
365
+ };
366
+ }
367
+ provideHookCommandFieldCompletions(model, position, hooksMap, target) {
368
+ const containingCommandMap = this.findContainingCommandMap(model, position, hooksMap);
369
+ if (!containingCommandMap) {
370
+ return undefined;
371
+ }
372
+ const isCopilotCli = target === Target.GitHubCopilot;
373
+ const validFields = isCopilotCli ? ["type", "bash", "powershell", "cwd", "env", "timeoutSec"] : [
374
+ "type",
375
+ "command",
376
+ "windows",
377
+ "linux",
378
+ "osx",
379
+ "bash",
380
+ "powershell",
381
+ "cwd",
382
+ "env",
383
+ "timeout"
384
+ ];
385
+ const existingFields = ( new Set(( containingCommandMap.properties.filter(p => p.key.range.startLineNumber !== position.lineNumber).map(p => p.key.value))));
386
+ const lineText = model.getLineContent(position.lineNumber);
387
+ const firstNonWhitespace = lineText.search(/\S/);
388
+ const isEmptyLine = firstNonWhitespace === -1;
389
+ const dashPrefixMatch = lineText.match(/^(\s*-\s+)/);
390
+ const fieldStart = dashPrefixMatch ? dashPrefixMatch[1].length : firstNonWhitespace;
391
+ const rangeStartColumn = isEmptyLine ? position.column : fieldStart + 1;
392
+ const colonIndex = lineText.indexOf(":");
393
+ const suggestions = [];
394
+ for (const fieldName of validFields) {
395
+ if (( existingFields.has(fieldName))) {
396
+ continue;
397
+ }
398
+ const desc = HOOK_COMMAND_FIELD_DESCRIPTIONS[fieldName];
399
+ const insertText = colonIndex !== -1 ? fieldName : `${fieldName}: $0`;
400
+ suggestions.push({
401
+ label: fieldName,
402
+ documentation: desc,
403
+ kind: CompletionItemKind.Property,
404
+ insertText,
405
+ insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,
406
+ range: ( new Range(
407
+ position.lineNumber,
408
+ rangeStartColumn,
409
+ position.lineNumber,
410
+ colonIndex !== -1 ? colonIndex + 1 : model.getLineMaxColumn(position.lineNumber)
411
+ ))
412
+ });
413
+ }
414
+ return suggestions.length > 0 ? {
415
+ suggestions
416
+ } : undefined;
417
+ }
418
+ findContainingCommandMap(model, position, hooksMap) {
419
+ for (let i = 0; i < hooksMap.properties.length; i++) {
420
+ const prop = hooksMap.properties[i];
421
+ if (prop.value.type !== "sequence") {
422
+ continue;
423
+ }
424
+ const seqRange = prop.value.range;
425
+ const nextProp = hooksMap.properties[i + 1];
426
+ const isInSeq = seqRange.containsPosition(position);
427
+ const isTrailingSeq = !isInSeq && seqRange.endLineNumber < position.lineNumber && (!nextProp || nextProp.key.range.startLineNumber > position.lineNumber);
428
+ if (isInSeq || isTrailingSeq) {
429
+ if (isTrailingSeq) {
430
+ const lineText = model.getLineContent(position.lineNumber);
431
+ const firstNonWs = lineText.search(/\S/);
432
+ const effectiveIndent = firstNonWs === -1 ? position.column - 1 : firstNonWs;
433
+ const hookKeyIndent = prop.key.range.startColumn - 1;
434
+ if (effectiveIndent <= hookKeyIndent) {
435
+ continue;
436
+ }
437
+ }
438
+ const result = this.findCommandMapInSequence(position, prop.value);
439
+ if (result) {
440
+ return result;
441
+ }
442
+ }
443
+ }
444
+ return undefined;
445
+ }
446
+ findCommandMapInSequence(position, sequence) {
447
+ for (let i = 0; i < sequence.items.length; i++) {
448
+ const item = sequence.items[i];
449
+ if (item.type !== "map") {
450
+ if (item.type === "scalar" && item.range.startLineNumber === position.lineNumber) {
451
+ return {
452
+ type: "map",
453
+ properties: [],
454
+ range: item.range
455
+ };
456
+ }
457
+ continue;
458
+ }
459
+ const isInRange = item.range.containsPosition(position);
460
+ const isTrailing = !isInRange && item.range.endLineNumber < position.lineNumber && (i + 1 >= sequence.items.length || sequence.items[i + 1].range.startLineNumber > position.lineNumber);
461
+ if (!isInRange && !isTrailing) {
462
+ continue;
463
+ }
464
+ const nestedHooks = item.properties.find(p => p.key.value === "hooks");
465
+ if (nestedHooks?.value.type === "sequence") {
466
+ const result = this.findCommandMapInSequence(position, nestedHooks.value);
467
+ if (result) {
468
+ return result;
469
+ }
470
+ }
471
+ return item;
472
+ }
473
+ return undefined;
474
+ }
475
+ getValueSuggestions(promptType, attribute, target) {
476
+ const attributeDesc = getAttributeDefinition(attribute, promptType, target);
477
+ if (attributeDesc?.enums) {
478
+ return attributeDesc.enums;
479
+ }
480
+ if (attributeDesc?.defaults) {
481
+ return ( attributeDesc.defaults.map(value => ({
482
+ name: value
483
+ })));
484
+ }
485
+ switch (attribute) {
235
486
  case PromptHeaderAttributes.agent:
236
487
  case PromptHeaderAttributes.mode:
237
488
  if (promptType === PromptsType.prompt) {
@@ -246,63 +497,11 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
246
497
  return suggestions;
247
498
  }
248
499
  break;
249
- case PromptHeaderAttributes.target:
250
- if (promptType === PromptsType.agent) {
251
- return [{
252
- name: "vscode"
253
- }, {
254
- name: "github-copilot"
255
- }];
256
- }
257
- break;
258
- case PromptHeaderAttributes.tools:
259
- if (promptType === PromptsType.prompt || promptType === PromptsType.agent) {
260
- return [{
261
- name: "[]"
262
- }, {
263
- name: `['search', 'edit', 'web']`
264
- }];
265
- }
266
- break;
267
500
  case PromptHeaderAttributes.model:
268
501
  if (promptType === PromptsType.prompt || promptType === PromptsType.agent) {
269
502
  return this.getModelNames(promptType === PromptsType.agent);
270
503
  }
271
504
  break;
272
- case PromptHeaderAttributes.infer:
273
- if (promptType === PromptsType.agent) {
274
- return [{
275
- name: "true"
276
- }, {
277
- name: "false"
278
- }];
279
- }
280
- break;
281
- case PromptHeaderAttributes.agents:
282
- if (promptType === PromptsType.agent) {
283
- return [{
284
- name: "[\"*\"]"
285
- }];
286
- }
287
- break;
288
- case PromptHeaderAttributes.userInvocable:
289
- if (promptType === PromptsType.agent || promptType === PromptsType.skill) {
290
- return [{
291
- name: "true"
292
- }, {
293
- name: "false"
294
- }];
295
- }
296
- break;
297
- case PromptHeaderAttributes.disableModelInvocation:
298
- if (promptType === PromptsType.agent || promptType === PromptsType.skill) {
299
- return [{
300
- name: "true"
301
- }, {
302
- name: "false"
303
- }];
304
- }
305
- break;
306
505
  }
307
506
  return [];
308
507
  }
@@ -364,6 +563,6 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion {
364
563
  return undefined;
365
564
  }
366
565
  };
367
- PromptHeaderAutocompletion = ( __decorate([( __param(0, IPromptsService)), ( __param(1, ILanguageModelsService)), ( __param(2, ILanguageModelToolsService)), ( __param(3, IChatModeService))], PromptHeaderAutocompletion));
566
+ PromptHeaderAutocompletion = ( __decorate([( __param(0, IPromptsService)), ( __param(1, ILanguageModelsService)), ( __param(2, ILanguageModelToolsService)), ( __param(3, IChatModeService)), ( __param(4, IWorkbenchEnvironmentService)), ( __param(5, IConfigurationService))], PromptHeaderAutocompletion));
368
567
 
369
568
  export { PromptHeaderAutocompletion };
@@ -6,16 +6,18 @@ import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/w
6
6
  import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service";
7
7
  import { IChatModeService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service";
8
8
  import { IPromptsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service";
9
+ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
9
10
  export declare class PromptHoverProvider implements HoverProvider {
10
11
  private readonly promptsService;
11
12
  private readonly languageModelToolsService;
12
13
  private readonly languageModelsService;
13
14
  private readonly chatModeService;
15
+ private readonly configurationService;
14
16
  /**
15
17
  * Debug display name for this provider.
16
18
  */
17
19
  readonly _debugDisplayName: string;
18
- constructor(promptsService: IPromptsService, languageModelToolsService: ILanguageModelToolsService, languageModelsService: ILanguageModelsService, chatModeService: IChatModeService);
20
+ constructor(promptsService: IPromptsService, languageModelToolsService: ILanguageModelToolsService, languageModelsService: ILanguageModelsService, chatModeService: IChatModeService, configurationService: IConfigurationService);
19
21
  private createHover;
20
22
  provideHover(model: ITextModel, position: Position, token: CancellationToken, _context?: HoverContext): Promise<Hover | undefined>;
21
23
  private provideBodyHover;
@@ -25,5 +27,12 @@ export declare class PromptHoverProvider implements HoverProvider {
25
27
  private getToolsetHover;
26
28
  private getModelHover;
27
29
  private getAgentHover;
30
+ private getHooksHover;
31
+ /**
32
+ * Recursively searches hook command items for hover information.
33
+ * Handles both direct command objects and nested matcher format
34
+ * (e.g., `{ matcher: "...", hooks: [{ type: command, ... }] }`).
35
+ */
36
+ private getHookCommandItemHover;
28
37
  private getHandsOffHover;
29
38
  }