@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
@@ -15,6 +15,11 @@ class ChatDebugServiceImpl extends Disposable {
15
15
  this._size = 0;
16
16
  this._onDidAddEvent = this._register(( new Emitter()));
17
17
  this.onDidAddEvent = this._onDidAddEvent.event;
18
+ this._onDidClearProviderEvents = this._register(( new Emitter()));
19
+ this.onDidClearProviderEvents = this._onDidClearProviderEvents.event;
20
+ this._onDidAttachDebugData = this._register(( new Emitter()));
21
+ this.onDidAttachDebugData = this._onDidAttachDebugData.event;
22
+ this._debugDataAttachedSessions = ( new ResourceMap());
18
23
  this._providers = ( new Set());
19
24
  this._invocationCts = ( new ResourceMap());
20
25
  this._providerEvents = ( new WeakSet());
@@ -86,6 +91,7 @@ class ChatDebugServiceImpl extends Disposable {
86
91
  this._buffer.fill(undefined);
87
92
  this._head = 0;
88
93
  this._size = 0;
94
+ this._debugDataAttachedSessions.clear();
89
95
  }
90
96
  registerProvider(provider) {
91
97
  this._providers.add(provider);
@@ -98,6 +104,9 @@ class ChatDebugServiceImpl extends Disposable {
98
104
  this._providers.delete(provider);
99
105
  });
100
106
  }
107
+ hasInvokedProviders(sessionResource) {
108
+ return ( this._invocationCts.has(sessionResource));
109
+ }
101
110
  async invokeProviders(sessionResource) {
102
111
  if (!LocalChatSessionUri.isLocalSession(sessionResource)) {
103
112
  return;
@@ -139,6 +148,7 @@ class ChatDebugServiceImpl extends Disposable {
139
148
  cts.dispose();
140
149
  this._invocationCts.delete(sessionResource);
141
150
  }
151
+ this._debugDataAttachedSessions.delete(sessionResource);
142
152
  }
143
153
  _clearProviderEvents(sessionResource) {
144
154
  const key = ( sessionResource.toString());
@@ -159,6 +169,16 @@ class ChatDebugServiceImpl extends Disposable {
159
169
  this._buffer[(this._head + i) % ChatDebugServiceImpl.MAX_EVENTS] = undefined;
160
170
  }
161
171
  this._size = write;
172
+ this._onDidClearProviderEvents.fire(sessionResource);
173
+ }
174
+ markDebugDataAttached(sessionResource) {
175
+ if (!( this._debugDataAttachedSessions.has(sessionResource))) {
176
+ this._debugDataAttachedSessions.set(sessionResource, true);
177
+ this._onDidAttachDebugData.fire(sessionResource);
178
+ }
179
+ }
180
+ hasAttachedDebugData(sessionResource) {
181
+ return ( this._debugDataAttachedSessions.has(sessionResource));
162
182
  }
163
183
  async resolveEvent(eventId) {
164
184
  for (const provider of this._providers) {
@@ -80,7 +80,6 @@ export declare class ChatService extends Disposable implements IChatService {
80
80
  * For test use only
81
81
  */
82
82
  waitForModelDisposals(): Promise<void>;
83
- get edits2Enabled(): boolean;
84
83
  private get isEmptyWindow();
85
84
  constructor(storageService: IStorageService, logService: ILogService, telemetryService: ITelemetryService, extensionService: IExtensionService, instantiationService: IInstantiationService, workspaceContextService: IWorkspaceContextService, chatSlashCommandService: IChatSlashCommandService, chatAgentService: IChatAgentService, configurationService: IConfigurationService, chatTransferService: IChatTransferService, chatSessionService: IChatSessionsService, mcpService: IMcpService, promptsService: IPromptsService, chatEntitlementService: IChatEntitlementService, languageModelsService: ILanguageModelsService, chatDebugService: IChatDebugService);
86
85
  get editingSessions(): import("@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService").IChatEditingSession[];
@@ -144,6 +143,7 @@ export declare class ChatService extends Disposable implements IChatService {
144
143
  /**
145
144
  * Process the next pending request from the model's queue, if any.
146
145
  * Called after a request completes to continue processing queued requests.
146
+ * Multiple consecutive steering requests are combined into a single request.
147
147
  */
148
148
  private processNextPendingRequest;
149
149
  private generateInitialChatTitleIfNeeded;
@@ -45,12 +45,13 @@ import { ChatSessionStore } from '../model/chatSessionStore.js';
45
45
  import { IChatSlashCommandService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatSlashCommands.service';
46
46
  import { IChatTransferService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatTransferService.service';
47
47
  import { LocalChatSessionUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
48
- import { ChatConfiguration, ChatAgentLocation, ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
48
+ import { ChatAgentLocation, ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
49
49
  import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
50
50
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
51
51
  import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
52
52
  import { ChatSessionOperationLog } from '../model/chatSessionOperationLog.js';
53
53
  import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
54
+ import { mergeHooks } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
54
55
  import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
55
56
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
56
57
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
@@ -99,9 +100,6 @@ let ChatService = class ChatService extends Disposable {
99
100
  waitForModelDisposals() {
100
101
  return this._sessionModels.waitForModelDisposals();
101
102
  }
102
- get edits2Enabled() {
103
- return this.configurationService.getValue(ChatConfiguration.Edits2Enabled);
104
- }
105
103
  get isEmptyWindow() {
106
104
  const workspace = this.workspaceContextService.getWorkspace();
107
105
  return !workspace.configuration && workspace.folders.length === 0;
@@ -333,7 +331,7 @@ let ChatService = class ChatService extends Disposable {
333
331
  }
334
332
  async getLiveSessionItems() {
335
333
  return await Promise.all(( Array.from(( this._sessionModels.values())).filter(session => this.shouldBeInHistory(session)).map(async session => {
336
- const title = session.title || ( localize(6868, "New Chat"));
334
+ const title = session.title || ( localize(6984, "New Chat"));
337
335
  return {
338
336
  sessionResource: session.sessionResource,
339
337
  title,
@@ -498,7 +496,7 @@ let ChatService = class ChatService extends Disposable {
498
496
  }
499
497
  }
500
498
  async loadRemoteSession(sessionResource, location, token) {
501
- await this.chatSessionService.canResolveChatSession(sessionResource);
499
+ await this.chatSessionService.canResolveChatSession(sessionResource.scheme);
502
500
  {
503
501
  const existingRef = this.acquireExistingSession(sessionResource);
504
502
  if (existingRef) {
@@ -872,6 +870,18 @@ let ChatService = class ChatService extends Disposable {
872
870
  } catch (error) {
873
871
  this.logService.warn("[ChatService] Failed to collect hooks:", error);
874
872
  }
873
+ const agentName = options?.modeInfo?.modeInstructions?.name;
874
+ if (agentName) {
875
+ try {
876
+ const agents = await this.promptsService.getCustomAgents(token, model.sessionResource);
877
+ const customAgent = agents.find(a => a.name === agentName);
878
+ if (customAgent?.hooks) {
879
+ collectedHooks = mergeHooks(collectedHooks, customAgent.hooks);
880
+ }
881
+ } catch (error) {
882
+ this.logService.warn("[ChatService] Failed to collect agent hooks:", error);
883
+ }
884
+ }
875
885
  const stopWatch = ( new StopWatch(false));
876
886
  store.add(token.onCancellationRequested(() => {
877
887
  this.trace(
@@ -949,6 +959,7 @@ let ChatService = class ChatService extends Disposable {
949
959
  userSelectedModelId: options?.userSelectedModelId,
950
960
  userSelectedTools: options?.userSelectedTools?.get(),
951
961
  modeInstructions: options?.modeInfo?.modeInstructions,
962
+ permissionLevel: options?.modeInfo?.permissionLevel,
952
963
  editedFileEvents: request.editedFileEvents,
953
964
  hooks: collectedHooks,
954
965
  hasHooksEnabled: !!collectedHooks && ( ( Object.values(collectedHooks)).some(arr => arr.length > 0))
@@ -1063,7 +1074,8 @@ let ChatService = class ChatService extends Disposable {
1063
1074
  history,
1064
1075
  location,
1065
1076
  model.sessionResource,
1066
- token
1077
+ token,
1078
+ options
1067
1079
  );
1068
1080
  agentOrCommandFollowups = Promise.resolve(commandResult?.followUp);
1069
1081
  rawResult = {};
@@ -1073,6 +1085,7 @@ let ChatService = class ChatService extends Disposable {
1073
1085
  if ((token.isCancellationRequested && !rawResult)) {
1074
1086
  return;
1075
1087
  } else if (!request) {
1088
+ shouldProcessPending = !token.isCancellationRequested;
1076
1089
  return;
1077
1090
  } else {
1078
1091
  if (!rawResult) {
@@ -1082,7 +1095,7 @@ let ChatService = class ChatService extends Disposable {
1082
1095
  );
1083
1096
  rawResult = {
1084
1097
  errorDetails: {
1085
- message: ( localize(6869, "Provider returned null response"))
1098
+ message: ( localize(6985, "Provider returned null response"))
1086
1099
  }
1087
1100
  };
1088
1101
  }
@@ -1177,31 +1190,64 @@ let ChatService = class ChatService extends Disposable {
1177
1190
  }
1178
1191
  }
1179
1192
  processNextPendingRequest(model) {
1180
- const pendingRequest = model.dequeuePendingRequest();
1181
- if (!pendingRequest) {
1193
+ const steeringRequests = model.dequeueAllSteeringRequests();
1194
+ const nextQueued = steeringRequests.length === 0 ? model.dequeuePendingRequest() : undefined;
1195
+ const allRequests = steeringRequests.length > 0 ? steeringRequests : (nextQueued ? [nextQueued] : []);
1196
+ if (allRequests.length === 0) {
1182
1197
  return;
1183
1198
  }
1184
1199
  this.trace(
1185
1200
  "processNextPendingRequest",
1186
- `Processing queued request for session ${model.sessionResource}`
1201
+ `Processing ${allRequests.length} queued request(s) for session ${model.sessionResource}`
1187
1202
  );
1188
- const deferred = this._queuedRequestDeferreds.get(pendingRequest.request.id);
1189
- this._queuedRequestDeferreds.delete(pendingRequest.request.id);
1203
+ const deferreds = [];
1204
+ for (const req of allRequests) {
1205
+ const deferred = this._queuedRequestDeferreds.get(req.request.id);
1206
+ this._queuedRequestDeferreds.delete(req.request.id);
1207
+ if (deferred) {
1208
+ deferreds.push(deferred);
1209
+ }
1210
+ }
1211
+ const firstRequest = allRequests[0];
1190
1212
  const sendOptions = {
1191
- ...pendingRequest.sendOptions,
1192
- attachedContext: pendingRequest.request.variableData.variables.slice()
1213
+ ...firstRequest.sendOptions,
1214
+ attachedContext: allRequests.flatMap(req => req.request.variableData.variables.slice())
1193
1215
  };
1194
1216
  const location = sendOptions.location ?? sendOptions.locationData?.type ?? model.initialLocation;
1195
1217
  const defaultAgent = this.chatAgentService.getDefaultAgent(location, sendOptions.modeInfo?.kind);
1196
1218
  if (!defaultAgent) {
1197
1219
  this.logService.warn("processNextPendingRequest", `No default agent for location ${location}`);
1198
- deferred?.complete({
1199
- kind: "rejected",
1200
- reason: "No default agent available"
1201
- });
1220
+ for (const deferred of deferreds) {
1221
+ deferred.complete({
1222
+ kind: "rejected",
1223
+ reason: "No default agent available"
1224
+ });
1225
+ }
1226
+ return;
1227
+ }
1228
+ let parsedRequest;
1229
+ try {
1230
+ if (allRequests.length > 1) {
1231
+ const combinedText = ( allRequests.map(req => req.request.message.text)).join("\n\n");
1232
+ parsedRequest = this.parseChatRequest(model.sessionResource, combinedText, location, {
1233
+ ...sendOptions,
1234
+ agentId: undefined,
1235
+ slashCommand: undefined
1236
+ });
1237
+ } else {
1238
+ parsedRequest = firstRequest.request.message;
1239
+ }
1240
+ } catch (err) {
1241
+ this.logService.error("processNextPendingRequest: failed to parse combined chat request", err);
1242
+ const reason = toErrorMessage(err);
1243
+ for (const deferred of deferreds) {
1244
+ deferred.complete({
1245
+ kind: "rejected",
1246
+ reason
1247
+ });
1248
+ }
1202
1249
  return;
1203
1250
  }
1204
- const parsedRequest = pendingRequest.request.message;
1205
1251
  const silentAgent = sendOptions.agentIdSilent ? this.chatAgentService.getAgent(sendOptions.agentIdSilent) : undefined;
1206
1252
  const agent = silentAgent ?? parsedRequest.parts.find(r => r instanceof ChatRequestAgentPart)?.agent ?? defaultAgent;
1207
1253
  const agentSlashCommandPart = parsedRequest.parts.find(r => r instanceof ChatRequestAgentSubcommandPart);
@@ -1209,20 +1255,23 @@ let ChatService = class ChatService extends Disposable {
1209
1255
  model,
1210
1256
  model.sessionResource,
1211
1257
  parsedRequest,
1212
- pendingRequest.request.attempt,
1258
+ firstRequest.request.attempt,
1213
1259
  !sendOptions.noCommandDetection,
1214
1260
  silentAgent ?? defaultAgent,
1215
1261
  location,
1216
1262
  sendOptions
1217
1263
  );
1218
- deferred?.complete({
1264
+ const result = {
1219
1265
  kind: "sent",
1220
1266
  data: {
1221
1267
  ...responseState,
1222
1268
  agent,
1223
1269
  slashCommand: agentSlashCommandPart?.command
1224
1270
  }
1225
- });
1271
+ };
1272
+ for (const deferred of deferreds) {
1273
+ deferred.complete(result);
1274
+ }
1226
1275
  }
1227
1276
  generateInitialChatTitleIfNeeded(model, request, defaultAgent, token) {
1228
1277
  if (model.getRequests().length !== 1 || model.customTitle) {
@@ -4,7 +4,7 @@ import { IChatAgentData } from "@codingame/monaco-vscode-api/vscode/vs/workbench
4
4
  import { ChatRequestModel } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel";
5
5
  import { ChatRequestAgentSubcommandPart, ChatRequestSlashCommandPart } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/requestParser/chatParserTypes";
6
6
  import { IChatSendRequestOptions, IChatUserActionEvent } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
7
- import { ChatAgentLocation } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
7
+ import { ChatAgentLocation, ChatPermissionLevel } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
8
8
  import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
9
9
  export type ChatProviderInvokedEvent = {
10
10
  timeToFirstProgress: number | undefined;
@@ -22,6 +22,9 @@ export type ChatProviderInvokedEvent = {
22
22
  enableCommandDetection: boolean;
23
23
  attachmentKinds: string[];
24
24
  model: string | undefined;
25
+ permissionLevel: ChatPermissionLevel | undefined;
26
+ chatMode: string | undefined;
27
+ sessionType: string | undefined;
25
28
  };
26
29
  export type ChatProviderInvokedClassification = {
27
30
  timeToFirstProgress: {
@@ -99,6 +102,21 @@ export type ChatProviderInvokedClassification = {
99
102
  purpose: "FeatureInsight";
100
103
  comment: "The model used to generate the response.";
101
104
  };
105
+ permissionLevel: {
106
+ classification: "SystemMetaData";
107
+ purpose: "FeatureInsight";
108
+ comment: "The tool auto-approval permission level selected in the permission picker (default, autoApprove, or autopilot). Undefined when the picker is not applicable (e.g. ask mode or API-driven requests).";
109
+ };
110
+ chatMode: {
111
+ classification: "SystemMetaData";
112
+ purpose: "FeatureInsight";
113
+ comment: "The chat mode used for the request. Built-in modes (ask, agent, edit), extension-contributed names (e.g. Plan), or a hashed identifier for user-created custom agents.";
114
+ };
115
+ sessionType: {
116
+ classification: "SystemMetaData";
117
+ purpose: "FeatureInsight";
118
+ comment: "The session type scheme (e.g. vscodeLocalChatSession for local, or remote session scheme).";
119
+ };
102
120
  owner: "roblourens";
103
121
  comment: "Provides insight into the performance of Chat agents.";
104
122
  };
@@ -5,6 +5,7 @@ import { isLocation } from '@codingame/monaco-vscode-api/vscode/vs/editor/common
5
5
  import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
6
6
  import { ChatAgentVoteDirection, ChatCopyKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
7
7
  import { isImageVariableEntry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/attachments/chatVariableEntries';
8
+ import { ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
8
9
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
9
10
  import { chatSessionResourceToId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
10
11
 
@@ -128,7 +129,10 @@ let ChatRequestTelemetry = class ChatRequestTelemetry {
128
129
  citations: request.response?.codeCitations.length ?? 0,
129
130
  numCodeBlocks: getCodeBlocks(request.response?.response.toString() ?? "").length,
130
131
  attachmentKinds: this.attachmentKindsForTelemetry(request.variableData),
131
- model: this.resolveModelId(this.opts.options?.userSelectedModelId)
132
+ model: this.resolveModelId(this.opts.options?.userSelectedModelId),
133
+ permissionLevel: this.opts.options?.modeInfo?.kind === ChatModeKind.Ask ? undefined : this.opts.options?.modeInfo?.permissionLevel,
134
+ chatMode: this.opts.options?.modeInfo?.modeName ?? this.opts.options?.modeInfo?.modeId,
135
+ sessionType: this.opts.sessionResource.scheme
132
136
  });
133
137
  }
134
138
  attachmentKindsForTelemetry(variableData) {
@@ -1,9 +1,11 @@
1
1
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
2
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
3
3
  import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
4
+ import { IDialogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service";
4
5
  import { IEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service";
5
6
  import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
6
7
  import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
8
+ import { IOpenerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service";
7
9
  import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
8
10
  import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
9
11
  import { IUserDataProfilesService } from "@codingame/monaco-vscode-api/vscode/vs/platform/userDataProfile/common/userDataProfile.service";
@@ -24,13 +26,15 @@ export declare class ChatSessionStore extends Disposable {
24
26
  private readonly userDataProfilesService;
25
27
  private readonly configurationService;
26
28
  private readonly workspaceEditingService;
29
+ private readonly dialogService;
30
+ private readonly openerService;
27
31
  private storageRoot;
28
32
  private readonly previousEmptyWindowStorageRoot;
29
33
  private readonly transferredSessionStorageRoot;
30
34
  private readonly storeQueue;
31
35
  private storeTask;
32
36
  private shuttingDown;
33
- constructor(fileService: IFileService, environmentService: IEnvironmentService, logService: ILogService, workspaceContextService: IWorkspaceContextService, telemetryService: ITelemetryService, storageService: IStorageService, lifecycleService: ILifecycleService, userDataProfilesService: IUserDataProfilesService, configurationService: IConfigurationService, workspaceEditingService: IWorkspaceEditingService);
37
+ constructor(fileService: IFileService, environmentService: IEnvironmentService, logService: ILogService, workspaceContextService: IWorkspaceContextService, telemetryService: ITelemetryService, storageService: IStorageService, lifecycleService: ILifecycleService, userDataProfilesService: IUserDataProfilesService, configurationService: IConfigurationService, workspaceEditingService: IWorkspaceEditingService, dialogService: IDialogService, openerService: IOpenerService);
34
38
  private handleWorkspaceTransition;
35
39
  private migrateSessionsToNewWorkspace;
36
40
  storeSessions(sessions: ChatModel[]): Promise<void>;
@@ -41,6 +45,7 @@ export declare class ChatSessionStore extends Disposable {
41
45
  getTransferredSessionData(): URI | undefined;
42
46
  readTransferredSession(sessionResource: URI): Promise<ISerializedChatDataReference | undefined>;
43
47
  private cleanupTransferredSession;
48
+ private _didReportIssue;
44
49
  private writeSession;
45
50
  private writeSessionMetadataOnly;
46
51
  private flushIndex;
@@ -10,10 +10,12 @@ import { joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/res
10
10
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
11
11
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
12
12
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
13
+ import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
13
14
  import { IEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service';
14
15
  import { toFileOperationResult, FileOperationResult } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
15
16
  import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
16
17
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
18
+ import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
17
19
  import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
18
20
  import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
19
21
  import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
@@ -47,7 +49,9 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
47
49
  lifecycleService,
48
50
  userDataProfilesService,
49
51
  configurationService,
50
- workspaceEditingService
52
+ workspaceEditingService,
53
+ dialogService,
54
+ openerService
51
55
  ) {
52
56
  super();
53
57
  this.fileService = fileService;
@@ -60,8 +64,11 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
60
64
  this.userDataProfilesService = userDataProfilesService;
61
65
  this.configurationService = configurationService;
62
66
  this.workspaceEditingService = workspaceEditingService;
67
+ this.dialogService = dialogService;
68
+ this.openerService = openerService;
63
69
  this.storeQueue = ( new Sequencer());
64
70
  this.shuttingDown = false;
71
+ this._didReportIssue = false;
65
72
  const workspace = this.workspaceContextService.getWorkspace();
66
73
  const isEmptyWindow = !workspace.configuration && workspace.folders.length === 0;
67
74
  const workspaceId = this.workspaceContextService.getWorkspace().id;
@@ -91,7 +98,7 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
91
98
  }
92
99
  e.join(this.storeTask, {
93
100
  id: "join.chatSessionStore",
94
- label: ( localize(6904, "Saving chat history"))
101
+ label: ( localize(7020, "Saving chat history"))
95
102
  });
96
103
  }));
97
104
  }
@@ -337,10 +344,32 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
337
344
  if (!session.dataSerializer) {
338
345
  session.dataSerializer = ( new ChatSessionOperationLog());
339
346
  }
340
- const {
341
- op,
342
- data
343
- } = session.dataSerializer.write(session);
347
+ let op;
348
+ let data;
349
+ try {
350
+ ({
351
+ op,
352
+ data
353
+ } = session.dataSerializer.write(session));
354
+ } catch (e) {
355
+ if (!this._didReportIssue) {
356
+ this._didReportIssue = true;
357
+ this.dialogService.prompt({
358
+ custom: true,
359
+ title: ( localize(7021, "Error saving chat session")),
360
+ message: ( localize(
361
+ 7022,
362
+ "Error serializing chat session for storage. The session will be lost if the window is closed. Please report this issue to the VS Code team:\n\n{0}",
363
+ e.stack || toErrorMessage(e)
364
+ )),
365
+ buttons: [{
366
+ label: ( localize(7023, "Report Issue")),
367
+ run: () => this.openerService.open("https://github.com/microsoft/vscode/issues/new?template=bug_report.md")
368
+ }]
369
+ });
370
+ }
371
+ throw e;
372
+ }
344
373
  if (data.byteLength > 0) {
345
374
  await this.fileService.writeFile(storageLocation.log, data, {
346
375
  append: op === "append"
@@ -638,7 +667,7 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
638
667
  return this.storageRoot;
639
668
  }
640
669
  };
641
- ChatSessionStore = ChatSessionStore_1 = ( __decorate([( __param(0, IFileService)), ( __param(1, IEnvironmentService)), ( __param(2, ILogService)), ( __param(3, IWorkspaceContextService)), ( __param(4, ITelemetryService)), ( __param(5, IStorageService)), ( __param(6, ILifecycleService)), ( __param(7, IUserDataProfilesService)), ( __param(8, IConfigurationService)), ( __param(9, IWorkspaceEditingService))], ChatSessionStore));
670
+ ChatSessionStore = ChatSessionStore_1 = ( __decorate([( __param(0, IFileService)), ( __param(1, IEnvironmentService)), ( __param(2, ILogService)), ( __param(3, IWorkspaceContextService)), ( __param(4, ITelemetryService)), ( __param(5, IStorageService)), ( __param(6, ILifecycleService)), ( __param(7, IUserDataProfilesService)), ( __param(8, IConfigurationService)), ( __param(9, IWorkspaceEditingService)), ( __param(10, IDialogService)), ( __param(11, IOpenerService))], ChatSessionStore));
642
671
  function isChatSessionEntryMetadata(obj) {
643
672
  return (!!obj && typeof obj === "object" && typeof obj.sessionId === "string" && typeof obj.title === "string" && typeof obj.lastMessageDate === "number");
644
673
  }
@@ -679,7 +708,7 @@ async function getSessionMetadata(session) {
679
708
  }
680
709
  return {
681
710
  sessionId: session.sessionId,
682
- title: title || ( localize(6905, "New Chat")),
711
+ title: title || ( localize(7024, "New Chat")),
683
712
  lastMessageDate,
684
713
  timing,
685
714
  initialLocation: session.initialLocation,
@@ -3,6 +3,21 @@ import { assertNever } from '@codingame/monaco-vscode-api/vscode/vs/base/common/
3
3
  import { VSBuffer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
4
4
  import { isUndefinedOrNull } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
5
5
 
6
+ function prefixError(e, prefix) {
7
+ e.message = prefix + e.message;
8
+ if (e.stack) {
9
+ const nlIdx = e.stack.indexOf("\n");
10
+ e.stack = nlIdx !== -1 ? `${e.name}: ${e.message}${e.stack.slice(nlIdx)}` : `${e.name}: ${e.message}`;
11
+ }
12
+ }
13
+ function rethrowWithPathSegment(e, segment) {
14
+ if (e instanceof Error) {
15
+ const part = typeof segment === "number" ? `[${segment}]` : `.${segment}`;
16
+ const needsSep = !e.message.startsWith("[") && !e.message.startsWith(".");
17
+ prefixError(e, part + (needsSep ? ": " : ""));
18
+ }
19
+ throw e;
20
+ }
6
21
  var TransformKind;
7
22
  (function(TransformKind) {
8
23
  TransformKind[TransformKind["Key"] = 0] = "Key";
@@ -34,7 +49,13 @@ function array(schema) {
34
49
  return {
35
50
  kind: TransformKind.Array,
36
51
  itemSchema: schema,
37
- extract: from => from?.map(item => schema.extract(item))
52
+ extract: from => from?.map((item, i) => {
53
+ try {
54
+ return schema.extract(item);
55
+ } catch (e) {
56
+ rethrowWithPathSegment(e, i);
57
+ }
58
+ })
38
59
  };
39
60
  }
40
61
  function object(schema, options) {
@@ -49,7 +70,11 @@ function object(schema, options) {
49
70
  }
50
71
  const result = Object.create(null);
51
72
  for (const [key, transform] of entries) {
52
- result[key] = transform.extract(from);
73
+ try {
74
+ result[key] = transform.extract(from);
75
+ } catch (e) {
76
+ rethrowWithPathSegment(e, key);
77
+ }
53
78
  }
54
79
  return result;
55
80
  }
@@ -152,7 +177,15 @@ class ObjectMutationLog {
152
177
  }
153
178
  const entries = [];
154
179
  const path = [];
155
- this._diff(this._transform, path, this._previous, currentValue, entries);
180
+ try {
181
+ this._diff(this._transform, path, this._previous, currentValue, entries);
182
+ } catch (e) {
183
+ if (e instanceof Error) {
184
+ const pathStr = ( path.map(s => typeof s === "number" ? `[${s}]` : `.${s}`)).join("") || "<root>";
185
+ prefixError(e, `error diffing at ${pathStr}: `);
186
+ }
187
+ throw e;
188
+ }
156
189
  if (entries.length === 0) {
157
190
  return {
158
191
  op: "append",
@@ -3,11 +3,11 @@ import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event"
3
3
  import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
4
4
  import { IProgress } from "@codingame/monaco-vscode-api/vscode/vs/platform/progress/common/progress";
5
5
  import { IChatMessage } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels";
6
- import { IChatFollowup, IChatProgress, IChatResponseProgressFileTreeData } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
6
+ import { IChatFollowup, IChatProgress, IChatResponseProgressFileTreeData, IChatSendRequestOptions } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
7
7
  import { IExtensionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service";
8
8
  import { ChatAgentLocation, ChatModeKind } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
9
9
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
10
- import { Target } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService";
10
+ import { Target } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes";
11
11
  import { IChatSlashCommandService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatSlashCommands.service";
12
12
  export interface IChatSlashData {
13
13
  command: string;
@@ -36,7 +36,7 @@ export interface IChatSlashFragment {
36
36
  };
37
37
  }
38
38
  export type IChatSlashCallback = {
39
- (prompt: string, progress: IProgress<IChatProgress>, history: IChatMessage[], location: ChatAgentLocation, sessionResource: URI, token: CancellationToken): Promise<{
39
+ (prompt: string, progress: IProgress<IChatProgress>, history: IChatMessage[], location: ChatAgentLocation, sessionResource: URI, token: CancellationToken, options?: IChatSendRequestOptions): Promise<{
40
40
  followUp: IChatFollowup[];
41
41
  } | void>;
42
42
  };
@@ -51,7 +51,7 @@ export declare class ChatSlashCommandService extends Disposable implements IChat
51
51
  registerSlashCommand(data: IChatSlashData, command: IChatSlashCallback): IDisposable;
52
52
  getCommands(location: ChatAgentLocation, mode: ChatModeKind): Array<IChatSlashData>;
53
53
  hasCommand(id: string): boolean;
54
- executeCommand(id: string, prompt: string, progress: IProgress<IChatProgress>, history: IChatMessage[], location: ChatAgentLocation, sessionResource: URI, token: CancellationToken): Promise<{
54
+ executeCommand(id: string, prompt: string, progress: IProgress<IChatProgress>, history: IChatMessage[], location: ChatAgentLocation, sessionResource: URI, token: CancellationToken, options?: IChatSendRequestOptions): Promise<{
55
55
  followUp: IChatFollowup[];
56
56
  } | void>;
57
57
  }
@@ -39,7 +39,7 @@ let ChatSlashCommandService = class ChatSlashCommandService extends Disposable {
39
39
  hasCommand(id) {
40
40
  return ( this._commands.has(id));
41
41
  }
42
- async executeCommand(id, prompt, progress, history, location, sessionResource, token) {
42
+ async executeCommand(id, prompt, progress, history, location, sessionResource, token, options) {
43
43
  const data = this._commands.get(id);
44
44
  if (!data) {
45
45
  throw ( new Error("No command with id ${id} NOT registered"));
@@ -50,7 +50,7 @@ let ChatSlashCommandService = class ChatSlashCommandService extends Disposable {
50
50
  if (!data.command) {
51
51
  throw ( new Error(`No command with id ${id} NOT resolved`));
52
52
  }
53
- return await data.command(prompt, progress, history, location, sessionResource, token);
53
+ return await data.command(prompt, progress, history, location, sessionResource, token, options);
54
54
  }
55
55
  };
56
56
  ChatSlashCommandService = ( __decorate([( __param(0, IExtensionService))], ChatSlashCommandService));
@@ -3,7 +3,8 @@ import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/
3
3
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
4
4
  import { SyncDescriptor0 } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/descriptors";
5
5
  import { IMcpServerConfiguration } from "@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpPlatformTypes";
6
- import { HookType, IHookCommand } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema";
6
+ import { IHookCommand } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema";
7
+ import { HookType } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookTypes";
7
8
  import { IMarketplacePlugin } from "./pluginMarketplaceService.js";
8
9
  export interface IAgentPluginHook {
9
10
  readonly type: HookType;
@@ -28,8 +29,12 @@ export interface IAgentPluginMcpServerDefinition {
28
29
  }
29
30
  export interface IAgentPlugin {
30
31
  readonly uri: URI;
32
+ /** Human-readable display name for the plugin. */
33
+ readonly label: string;
31
34
  readonly enabled: IObservable<boolean>;
32
35
  setEnabled(enabled: boolean): void;
36
+ /** Removes this plugin from its discovery source (config or installed storage). */
37
+ remove(): void;
33
38
  readonly hooks: IObservable<readonly IAgentPluginHook[]>;
34
39
  readonly commands: IObservable<readonly IAgentPluginCommand[]>;
35
40
  readonly skills: IObservable<readonly IAgentPluginSkill[]>;