@codingame/monaco-vscode-chat-service-override 29.1.0 → 30.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 (258) hide show
  1. package/index.js +5 -2
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +37 -39
  4. package/vscode/src/vs/platform/agentHost/common/agentService.js +3 -1
  5. package/vscode/src/vs/platform/agentHost/common/agentService.service.d.ts +11 -1
  6. package/vscode/src/vs/platform/agentHost/common/state/protocol/action-origin.generated.d.ts +4 -4
  7. package/vscode/src/vs/platform/agentHost/common/state/protocol/actions.d.ts +132 -42
  8. package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.d.ts +54 -0
  9. package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.d.ts +15 -0
  10. package/vscode/src/vs/platform/agentHost/common/state/protocol/messages.d.ts +5 -1
  11. package/vscode/src/vs/platform/agentHost/common/state/protocol/state.d.ts +188 -51
  12. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +7 -6
  13. package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.d.ts +1 -1
  14. package/vscode/src/vs/platform/agentHost/common/state/sessionState.d.ts +7 -2
  15. package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.d.ts +6 -0
  16. package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.js +14 -0
  17. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +18 -0
  18. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +13 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  20. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +37 -16
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +10 -8
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +37 -3
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +6 -6
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +20 -11
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +14 -14
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +18 -13
  36. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  37. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +10 -10
  38. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  39. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +19 -19
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.d.ts +36 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +482 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +8 -8
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +2 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +10 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +43 -10
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +74 -76
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +27 -35
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.d.ts +5 -8
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +86 -80
  61. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +3 -2
  62. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +38 -4
  63. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +14 -14
  64. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +38 -18
  65. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +427 -167
  66. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +37 -37
  67. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +15 -0
  68. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +108 -37
  69. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +8 -1
  70. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +28 -2
  71. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +2 -0
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +11 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +1 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +3 -20
  75. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +4 -0
  76. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +65 -68
  77. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +2 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +1 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +64 -51
  80. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +288 -195
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +21 -21
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +19 -19
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +21 -21
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +12 -12
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +21 -21
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +28 -28
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +1 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +3 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +1 -0
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +5 -2
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +1 -0
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +10 -3
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +4 -2
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +19 -7
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +3 -2
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +54 -12
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +9 -8
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +14 -14
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +50 -50
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +3 -1
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +86 -17
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -26
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +12 -12
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +19 -19
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +65 -65
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +24 -16
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +17 -17
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -6
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
  137. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  138. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  139. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
  140. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  141. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
  142. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +3 -6
  143. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +54 -39
  144. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +16 -16
  145. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +24 -3
  146. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +72 -14
  147. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  148. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +26 -26
  149. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
  150. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  151. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileContributions.js +181 -0
  152. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +3 -3
  153. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  154. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  155. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  156. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  157. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +8 -6
  158. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +37 -37
  159. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +28 -23
  160. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +6 -6
  161. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +7 -7
  162. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.d.ts +12 -0
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +62 -0
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +1 -10
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +148 -88
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +1 -1
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  172. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +1 -1
  173. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +1 -0
  174. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +16 -9
  175. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  176. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.d.ts +8 -0
  177. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.js +158 -0
  178. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +8 -3
  179. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +155 -76
  180. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +1 -2
  181. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +5 -4
  182. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +5 -1
  183. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +7 -6
  184. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +31 -1
  185. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +228 -1
  186. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +66 -0
  187. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +190 -0
  188. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +25 -3
  189. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +130 -107
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +1 -0
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +19 -18
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +2 -18
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +169 -266
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +12 -10
  198. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +149 -206
  199. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +3 -3
  200. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +27 -22
  201. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.d.ts +20 -8
  202. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.js +183 -43
  203. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  204. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +1 -1
  205. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +2 -3
  206. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
  207. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +21 -21
  208. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  209. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +11 -11
  210. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  211. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  212. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +11 -11
  213. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +6 -6
  214. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  215. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  216. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +2 -2
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +3 -1
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -2
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +3 -2
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +1 -0
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +1 -0
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +1 -3
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +26 -23
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +4 -9
  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 +16 -6
  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.js +9 -9
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +150 -50
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +2 -2
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +66 -5
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +239 -48
  248. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +0 -14
  249. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +0 -208
  250. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +0 -22
  251. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +0 -637
  252. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +0 -24
  253. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +0 -384
  254. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.d.ts +0 -33
  255. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalCustomizations.js +0 -47
  256. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalSkill.d.ts +0 -30
  257. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +0 -55
  258. /package/vscode/src/vs/workbench/contrib/chat/{common → browser}/promptSyntax/promptFileContributions.d.ts +0 -0
@@ -0,0 +1,158 @@
1
+
2
+ import { match } from '@codingame/monaco-vscode-api/vscode/vs/base/common/glob';
3
+ import { getExtensionForMimeType } from '@codingame/monaco-vscode-api/vscode/vs/base/common/mime';
4
+ import { basename } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
5
+ import { basename as basename$1 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
6
+ import { IChatToolInvocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
7
+ import { ChatResponseResource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel';
8
+ import { isToolResultInputOutputDetails } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
9
+
10
+ function matchMimeType(pattern, mimeType) {
11
+ if (pattern === mimeType) {
12
+ return true;
13
+ }
14
+ const [patternType, patternSubtype] = pattern.split("/");
15
+ const [type] = mimeType.split("/");
16
+ return patternSubtype === "*" && patternType === type;
17
+ }
18
+ function findFilePathRule(filePath, byFilePath) {
19
+ const fileBasename = basename(filePath);
20
+ for (const [pattern, config] of Object.entries(byFilePath)) {
21
+ if (match(pattern, filePath) || match(pattern, fileBasename)) {
22
+ return config;
23
+ }
24
+ }
25
+ return undefined;
26
+ }
27
+ function findMimeTypeRule(mimeType, byMimeType) {
28
+ for (const [pattern, config] of Object.entries(byMimeType)) {
29
+ if (matchMimeType(pattern, mimeType)) {
30
+ return config;
31
+ }
32
+ }
33
+ return undefined;
34
+ }
35
+ function isToolResultOutputDetailsSerialized(obj) {
36
+ return typeof obj === "object" && obj !== null && "output" in obj && typeof obj.output === "object" && obj.output?.type === "data" && typeof obj.output?.mimeType === "string";
37
+ }
38
+ function extractArtifactsFromResponse(response, sessionResource, byMimeType, byFilePath) {
39
+ const artifacts = [];
40
+ const seenUris = ( new Set());
41
+ for (const part of response.value) {
42
+ if (part.kind === "codeblockUri") {
43
+ const uri = part.uri;
44
+ const uriStr = ( uri.toString());
45
+ if (( seenUris.has(uriStr))) {
46
+ continue;
47
+ }
48
+ const rule = findFilePathRule(uri.path, byFilePath);
49
+ if (rule) {
50
+ seenUris.add(uriStr);
51
+ artifacts.push({
52
+ label: basename$1(uri),
53
+ uri: uriStr,
54
+ type: "plan",
55
+ groupName: rule.groupName,
56
+ onlyShowGroup: rule.onlyShowGroup
57
+ });
58
+ }
59
+ }
60
+ if (part.kind === "textEditGroup") {
61
+ const uri = part.uri;
62
+ const uriStr = ( uri.toString());
63
+ if (( seenUris.has(uriStr))) {
64
+ continue;
65
+ }
66
+ const rule = findFilePathRule(uri.path, byFilePath);
67
+ if (rule) {
68
+ seenUris.add(uriStr);
69
+ artifacts.push({
70
+ label: basename$1(uri),
71
+ uri: uriStr,
72
+ type: "plan",
73
+ groupName: rule.groupName,
74
+ onlyShowGroup: rule.onlyShowGroup
75
+ });
76
+ }
77
+ }
78
+ if (part.kind === "workspaceEdit") {
79
+ for (const edit of part.edits) {
80
+ const uri = edit.newResource ?? edit.oldResource;
81
+ if (!uri) {
82
+ continue;
83
+ }
84
+ const uriStr = ( uri.toString());
85
+ if (( seenUris.has(uriStr))) {
86
+ continue;
87
+ }
88
+ const rule = findFilePathRule(uri.path, byFilePath);
89
+ if (rule) {
90
+ seenUris.add(uriStr);
91
+ artifacts.push({
92
+ label: basename$1(uri),
93
+ uri: uriStr,
94
+ type: "plan",
95
+ groupName: rule.groupName,
96
+ onlyShowGroup: rule.onlyShowGroup
97
+ });
98
+ }
99
+ }
100
+ }
101
+ if (part.kind === "toolInvocation" || part.kind === "toolInvocationSerialized") {
102
+ const details = IChatToolInvocation.resultDetails(part);
103
+ if (!details) {
104
+ continue;
105
+ }
106
+ if (isToolResultInputOutputDetails(details)) {
107
+ for (let i = 0; i < details.output.length; i++) {
108
+ const outputPart = details.output[i];
109
+ if (outputPart.type === "embed" && !outputPart.isText && outputPart.mimeType) {
110
+ const rule = findMimeTypeRule(outputPart.mimeType, byMimeType);
111
+ if (rule) {
112
+ const key = `${part.toolCallId}:${i}`;
113
+ if (!( seenUris.has(key))) {
114
+ seenUris.add(key);
115
+ const ext = getExtensionForMimeType(outputPart.mimeType);
116
+ const permalinkBasename = ext ? `file${ext}` : "file.bin";
117
+ const artifactUri = ChatResponseResource.createUri(sessionResource, part.toolCallId, i, permalinkBasename);
118
+ artifacts.push({
119
+ label: outputPart.uri?.path.split("/").pop() ?? `${rule.groupName} ${i + 1}`,
120
+ uri: ( artifactUri.toString()),
121
+ toolCallId: part.toolCallId,
122
+ dataPartIndex: i,
123
+ type: "screenshot",
124
+ groupName: rule.groupName,
125
+ onlyShowGroup: rule.onlyShowGroup
126
+ });
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+ if (isToolResultOutputDetailsSerialized(details)) {
133
+ const rule = findMimeTypeRule(details.output.mimeType, byMimeType);
134
+ if (rule) {
135
+ const key = `${part.toolCallId}:0`;
136
+ if (!( seenUris.has(key))) {
137
+ seenUris.add(key);
138
+ const ext = getExtensionForMimeType(details.output.mimeType);
139
+ const permalinkBasename = ext ? `file${ext}` : "file.bin";
140
+ const artifactUri = ChatResponseResource.createUri(sessionResource, part.toolCallId, 0, permalinkBasename);
141
+ artifacts.push({
142
+ label: `${rule.groupName}`,
143
+ uri: ( artifactUri.toString()),
144
+ toolCallId: part.toolCallId,
145
+ dataPartIndex: 0,
146
+ type: "screenshot",
147
+ groupName: rule.groupName,
148
+ onlyShowGroup: rule.onlyShowGroup
149
+ });
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ return artifacts;
156
+ }
157
+
158
+ export { extractArtifactsFromResponse };
@@ -1,6 +1,6 @@
1
1
  import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
2
  import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
3
- import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
4
4
  import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
5
5
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
6
6
  import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
@@ -64,7 +64,7 @@ export declare class ChatService extends Disposable implements IChatService {
64
64
  }>;
65
65
  private readonly _onDidDisposeSession;
66
66
  readonly onDidDisposeSession: Event<{
67
- readonly sessionResource: URI[];
67
+ readonly sessionResources: URI[];
68
68
  reason: "cleared";
69
69
  }>;
70
70
  private readonly _sessionFollowupCancelTokens;
@@ -140,6 +140,11 @@ export declare class ChatService extends Disposable implements IChatService {
140
140
  private refreshFollowupsCancellationToken;
141
141
  private _sendRequestAsync;
142
142
  processPendingRequests(sessionResource: URI): void;
143
+ /**
144
+ * Returns true if the session is backed by an agent host server, which
145
+ * controls queued-message dequeuing on the server side.
146
+ */
147
+ private _isServerManagedQueue;
143
148
  /**
144
149
  * Process the next pending request from the model's queue, if any.
145
150
  * Called after a request completes to continue processing queued requests.
@@ -167,5 +172,5 @@ export declare class ChatService extends Disposable implements IChatService {
167
172
  setSessionTitle(sessionResource: URI, title: string): void;
168
173
  appendProgress(request: IChatRequestModel, progress: IChatProgress): void;
169
174
  private toLocalSessionId;
170
- registerChatModelChangeListeners(chatSessionType: string, onChange: (chatSessionResource: URI) => void): IDisposable;
171
175
  }
176
+ export declare function chatModelToChatDetail(model: IChatModel): Promise<IChatDetail>;
@@ -7,7 +7,7 @@ import { ErrorNoTelemetry, BugIndicatingError } from '@codingame/monaco-vscode-a
7
7
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
8
8
  import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
9
9
  import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
10
- import { Disposable, DisposableResourceMap, DisposableStore, MutableDisposable, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
10
+ import { Disposable, DisposableResourceMap, DisposableStore, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
11
11
  import { revive } from '@codingame/monaco-vscode-api/vscode/vs/base/common/marshalling';
12
12
  import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
13
13
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
@@ -32,13 +32,14 @@ import { IChatDebugService } from '@codingame/monaco-vscode-api/vscode/vs/workbe
32
32
  import { InlineChatConfigKeys } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/inlineChat/common/inlineChat';
33
33
  import { IMcpService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
34
34
  import { awaitStatsForSession } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chat';
35
+ import { clearChatMarks, markChat, ChatPerfMark } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatPerf';
35
36
  import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatAgents.service';
36
37
  import { chatEditingSessionIsReady } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService';
37
38
  import { normalizeSerializableChatData, ChatModel, ChatRequestRemovalReason, ChatRequestModel, updateRanges, toChatHistoryContent } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel';
38
39
  import { ChatModelStore } from '../model/chatModelStore.js';
39
40
  import { ChatRequestTextPart, ChatRequestSlashCommandPart, getPromptText, ChatRequestAgentPart, ChatRequestAgentSubcommandPart, chatSubcommandLeader, chatAgentLeader } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/requestParser/chatParserTypes';
40
41
  import { ChatRequestParser } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/requestParser/chatRequestParser';
41
- import { ResponseModelState, ChatPendingRequestChangeEventName, ChatRequestQueueKind, ChatMcpServersStarting, ChatStopCancellationNoopEventName } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
42
+ import { ChatPendingRequestChangeEventName, ChatRequestQueueKind, ChatMcpServersStarting, ChatStopCancellationNoopEventName, ResponseModelState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
42
43
  import { ChatServiceTelemetry, ChatRequestTelemetry } from './chatServiceTelemetry.js';
43
44
  import { localChatSessionType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
44
45
  import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service';
@@ -55,10 +56,10 @@ import { ChatSessionOperationLog } from '../model/chatSessionOperationLog.js';
55
56
  import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
56
57
  import { AGENT_DEBUG_LOG_ENABLED_SETTING, AGENT_DEBUG_LOG_FILE_LOGGING_ENABLED_SETTING, TROUBLESHOOT_COMMAND_NAME, COPILOT_SKILL_URI_SCHEME, TROUBLESHOOT_SKILL_PATH } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
57
58
  import { mergeHooks } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
58
- import { ResourceMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
59
+ import { findLast } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arraysFind';
60
+ import { ChatMode } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes';
59
61
  import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
60
- import { autorun, autorunIterableDelta } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
61
- import { observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableSignalFromEvent';
62
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
62
63
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
63
64
 
64
65
  const serializedChatKey = "interactive.sessions";
@@ -180,9 +181,10 @@ let ChatService = class ChatService extends Disposable {
180
181
  }
181
182
  }));
182
183
  this._register(this._sessionModels.onDidDisposeModel(model => {
184
+ clearChatMarks(model.sessionResource);
183
185
  this.chatDebugService.endSession(model.sessionResource);
184
186
  this._onDidDisposeSession.fire({
185
- sessionResource: [model.sessionResource],
187
+ sessionResources: [model.sessionResource],
186
188
  reason: "cleared"
187
189
  });
188
190
  }));
@@ -343,18 +345,7 @@ let ChatService = class ChatService extends Disposable {
343
345
  return [...liveSessionItems, ...historySessionItems];
344
346
  }
345
347
  async getLiveSessionItems() {
346
- return await Promise.all(( Array.from(( this._sessionModels.values())).filter(session => this.shouldBeInHistory(session)).map(async session => {
347
- const title = session.title || ( localize(7200, "New Chat"));
348
- return {
349
- sessionResource: session.sessionResource,
350
- title,
351
- lastMessageDate: session.lastMessageDate,
352
- timing: session.timing,
353
- isActive: true,
354
- stats: await awaitStatsForSession(session),
355
- lastResponseState: session.lastRequest?.response?.state ?? ResponseModelState.Pending
356
- };
357
- })));
348
+ return await Promise.all(( Array.from(( this._sessionModels.values())).filter(session => this.shouldBeInHistory(session)).map(chatModelToChatDetail)));
358
349
  }
359
350
  async getHistorySessionItems() {
360
351
  const index = await this._chatSessionStore.getIndex();
@@ -385,7 +376,7 @@ let ChatService = class ChatService extends Disposable {
385
376
  async removeHistoryEntry(sessionResource) {
386
377
  await this._chatSessionStore.deleteSession(this.toLocalSessionId(sessionResource));
387
378
  this._onDidDisposeSession.fire({
388
- sessionResource: [sessionResource],
379
+ sessionResources: [sessionResource],
389
380
  reason: "cleared"
390
381
  });
391
382
  }
@@ -527,14 +518,68 @@ let ChatService = class ChatService extends Disposable {
527
518
  }
528
519
  }
529
520
  const chatSessionType = getChatSessionType(sessionResource);
521
+ const contribution = this.chatSessionService.getChatSessionContribution(chatSessionType);
522
+ const modelId = findLast(
523
+ providedSession.history.filter(m => m.type === "request"),
524
+ req => req.modelId
525
+ )?.modelId;
526
+ const agentUri = findLast(
527
+ providedSession.history.filter(m => m.type === "request"),
528
+ req => req.modeInstructions?.uri
529
+ )?.modeInstructions?.uri;
530
+ const storedPermissionLevel = this._chatSessionStore.getMetadataForSessionSync(sessionResource)?.permissionLevel;
531
+ let initialData = undefined;
532
+ if ((modelId || agentUri) && contribution?.useRequestToPopulateBuiltInPickers) {
533
+ const mode = agentUri ? {
534
+ kind: ChatModeKind.Agent,
535
+ id: ( agentUri.toString())
536
+ } : {
537
+ kind: ChatModeKind.Agent,
538
+ id: ChatMode.Agent.id
539
+ };
540
+ const modelMetadata = modelId ? this.languageModelsService.lookupLanguageModel(modelId) : undefined;
541
+ const selectedModel = modelId && modelMetadata ? {
542
+ identifier: modelId,
543
+ metadata: modelMetadata
544
+ } : undefined;
545
+ initialData = {
546
+ serializer: ( new ChatSessionOperationLog()),
547
+ value: {
548
+ creationDate: Date.now(),
549
+ initialLocation: undefined,
550
+ customTitle: undefined,
551
+ requests: [],
552
+ responderUsername: "",
553
+ sessionId: "",
554
+ version: 3,
555
+ hasPendingEdits: undefined,
556
+ inputState: {
557
+ attachments: [],
558
+ contrib: {},
559
+ inputText: "",
560
+ mode,
561
+ selectedModel: selectedModel,
562
+ selections: [],
563
+ permissionLevel: storedPermissionLevel
564
+ },
565
+ pendingRequests: undefined,
566
+ repoData: undefined
567
+ }
568
+ };
569
+ }
530
570
  const modelRef = this._sessionModels.acquireOrCreate({
531
- initialData: undefined,
571
+ initialData,
532
572
  location,
533
573
  sessionResource: sessionResource,
534
574
  canUseTools: false,
535
575
  transferEditingSession: providedSession.transferredState?.editingSession,
536
576
  inputState: providedSession.transferredState?.inputState
537
577
  });
578
+ if (storedPermissionLevel && !initialData) {
579
+ modelRef.object.inputModel.setState({
580
+ permissionLevel: storedPermissionLevel
581
+ });
582
+ }
538
583
  modelRef.object.setContributedChatSession({
539
584
  chatSessionResource: sessionResource
540
585
  });
@@ -565,10 +610,17 @@ let ChatService = class ChatService extends Disposable {
565
610
  };
566
611
  const agent = message.participant ?
567
612
  this.chatAgentService.getAgent(message.participant) : this.chatAgentService.getAgent(chatSessionType);
613
+ const modeInfo = message.modeInstructions ? {
614
+ kind: ChatModeKind.Agent,
615
+ isBuiltin: message.modeInstructions.isBuiltin ?? false,
616
+ modeInstructions: message.modeInstructions,
617
+ modeId: "custom",
618
+ applyCodeBlockSuggestionId: undefined
619
+ } : undefined;
568
620
  lastRequest = model.addRequest(parsedRequest, message.variableData ?? {
569
621
  variables: []
570
622
  }, 0,
571
- undefined, agent, undefined,
623
+ modeInfo, agent, undefined,
572
624
  undefined,
573
625
  undefined,
574
626
  undefined,
@@ -585,14 +637,9 @@ let ChatService = class ChatService extends Disposable {
585
637
  if (providedSession.isCompleteObs?.get()) {
586
638
  lastRequest?.response?.complete();
587
639
  }
588
- if (providedSession.progressObs && lastRequest && providedSession.interruptActiveResponseCallback) {
589
- const initialCancellationRequest = this.instantiationService.createInstance(CancellableRequest, ( new CancellationTokenSource()), undefined, undefined, undefined);
590
- this._pendingRequests.set(model.sessionResource, initialCancellationRequest);
591
- this.telemetryService.publicLog2(ChatPendingRequestChangeEventName, {
592
- action: "add",
593
- source: "remoteSession",
594
- chatSessionId: chatSessionResourceToId(model.sessionResource)
595
- });
640
+ const hasProgressStreaming = providedSession.progressObs && providedSession.interruptActiveResponseCallback;
641
+ if (hasProgressStreaming) {
642
+ let lastProgressLength = 0;
596
643
  const cancellationListener = disposables.add(( new MutableDisposable()));
597
644
  const createCancellationListener = token => {
598
645
  return token.onCancellationRequested(() => {
@@ -610,19 +657,66 @@ let ChatService = class ChatService extends Disposable {
610
657
  });
611
658
  });
612
659
  };
613
- cancellationListener.value = createCancellationListener(initialCancellationRequest.cancellationTokenSource.token);
614
- let lastProgressLength = 0;
660
+ const ensureCancellationTracking = () => {
661
+ if (!( this._pendingRequests.has(model.sessionResource))) {
662
+ const cts = this.instantiationService.createInstance(CancellableRequest, ( new CancellationTokenSource()), undefined, undefined, undefined);
663
+ this._pendingRequests.set(model.sessionResource, cts);
664
+ this.telemetryService.publicLog2(ChatPendingRequestChangeEventName, {
665
+ action: "add",
666
+ source: "remoteSession",
667
+ chatSessionId: chatSessionResourceToId(model.sessionResource)
668
+ });
669
+ cancellationListener.value = createCancellationListener(cts.cancellationTokenSource.token);
670
+ }
671
+ };
672
+ if (lastRequest) {
673
+ const initialCancellationRequest = this.instantiationService.createInstance(CancellableRequest, ( new CancellationTokenSource()), undefined, undefined, undefined);
674
+ this._pendingRequests.set(model.sessionResource, initialCancellationRequest);
675
+ this.telemetryService.publicLog2(ChatPendingRequestChangeEventName, {
676
+ action: "add",
677
+ source: "remoteSession",
678
+ chatSessionId: chatSessionResourceToId(model.sessionResource)
679
+ });
680
+ cancellationListener.value = createCancellationListener(initialCancellationRequest.cancellationTokenSource.token);
681
+ }
682
+ if (providedSession.onDidStartServerRequest) {
683
+ disposables.add(providedSession.onDidStartServerRequest((
684
+ {
685
+ prompt
686
+ }
687
+ ) => {
688
+ if (lastRequest?.response && !lastRequest.response.isComplete) {
689
+ lastRequest.response.complete();
690
+ }
691
+ const requestText = prompt;
692
+ const parsedRequest = {
693
+ text: requestText,
694
+ parts: [( new ChatRequestTextPart(( new OffsetRange(0, requestText.length)), {
695
+ startLineNumber: 1,
696
+ startColumn: 1,
697
+ endLineNumber: 1,
698
+ endColumn: requestText.length + 1
699
+ }, requestText))]
700
+ };
701
+ const agent = this.chatAgentService.getAgent(chatSessionType);
702
+ lastRequest = model.addRequest(parsedRequest, {
703
+ variables: []
704
+ }, 0, undefined, agent);
705
+ lastProgressLength = 0;
706
+ ensureCancellationTracking();
707
+ }));
708
+ }
615
709
  disposables.add(autorun(reader => {
616
710
  const progressArray = providedSession.progressObs?.read(reader) ?? [];
617
711
  const isComplete = providedSession.isCompleteObs?.read(reader) ?? false;
618
- if (progressArray.length > lastProgressLength) {
712
+ if (lastRequest && progressArray.length > lastProgressLength) {
619
713
  const newProgress = progressArray.slice(lastProgressLength);
620
714
  for (const progress of newProgress) {
621
715
  model?.acceptResponseProgress(lastRequest, progress);
622
716
  }
623
717
  lastProgressLength = progressArray.length;
624
718
  }
625
- if (isComplete) {
719
+ if (isComplete && lastRequest) {
626
720
  lastRequest.response?.complete();
627
721
  cancellationListener.clear();
628
722
  }
@@ -883,6 +977,9 @@ let ChatService = class ChatService extends Disposable {
883
977
  if (token.isCancellationRequested) {
884
978
  return;
885
979
  }
980
+ if (!gotProgress) {
981
+ markChat(sessionResource, ChatPerfMark.FirstToken);
982
+ }
886
983
  gotProgress = true;
887
984
  for (let i = 0; i < progress.length; i++) {
888
985
  const isLast = i === progress.length - 1;
@@ -932,7 +1029,7 @@ let ChatService = class ChatService extends Disposable {
932
1029
  model.acceptResponseProgress(request, {
933
1030
  kind: "markdownContent",
934
1031
  content: ( new MarkdownString(( localize(
935
- 7201,
1032
+ 7257,
936
1033
  "The `{0}` skill requires the following settings to be enabled: {1}. After enabling, reload the window to apply. [Enable in Settings](command:workbench.action.openSettings?{2})",
937
1034
  TROUBLESHOOT_COMMAND_NAME,
938
1035
  missingSettings.join(", "),
@@ -1192,7 +1289,7 @@ let ChatService = class ChatService extends Disposable {
1192
1289
  );
1193
1290
  rawResult = {
1194
1291
  errorDetails: {
1195
- message: ( localize(7202, "Provider returned null response"))
1292
+ message: ( localize(7258, "Provider returned null response"))
1196
1293
  }
1197
1294
  };
1198
1295
  }
@@ -1258,6 +1355,8 @@ let ChatService = class ChatService extends Disposable {
1258
1355
  chatSessionId: chatSessionResourceToId(model.sessionResource)
1259
1356
  });
1260
1357
  rawResponsePromise.finally(() => {
1358
+ markChat(sessionResource, ChatPerfMark.RequestComplete);
1359
+ clearChatMarks(sessionResource);
1261
1360
  if (this._pendingRequests.get(model.sessionResource) === cancellableRequest) {
1262
1361
  this._pendingRequests.deleteAndDispose(model.sessionResource);
1263
1362
  this.telemetryService.publicLog2(ChatPendingRequestChangeEventName, {
@@ -1289,7 +1388,13 @@ let ChatService = class ChatService extends Disposable {
1289
1388
  this.processNextPendingRequest(model);
1290
1389
  }
1291
1390
  }
1391
+ _isServerManagedQueue(sessionResource) {
1392
+ return sessionResource.scheme.startsWith("agent-host-");
1393
+ }
1292
1394
  processNextPendingRequest(model) {
1395
+ if (this._isServerManagedQueue(model.sessionResource)) {
1396
+ return;
1397
+ }
1293
1398
  const steeringRequests = model.dequeueAllSteeringRequests();
1294
1399
  const nextQueued = steeringRequests.length === 0 ? model.dequeuePendingRequest() : undefined;
1295
1400
  const allRequests = steeringRequests.length > 0 ? steeringRequests : (nextQueued ? [nextQueued] : []);
@@ -1428,7 +1533,8 @@ let ChatService = class ChatService extends Disposable {
1428
1533
  command: request.response.slashCommand?.name,
1429
1534
  variables: updateRanges(request.variableData, promptTextResult.diff),
1430
1535
  location: ChatAgentLocation.Chat,
1431
- editedFileEvents: request.editedFileEvents
1536
+ editedFileEvents: request.editedFileEvents,
1537
+ modeInstructions: request.modeInfo?.modeInstructions
1432
1538
  };
1433
1539
  history.push({
1434
1540
  request: historyRequest,
@@ -1652,46 +1758,19 @@ let ChatService = class ChatService extends Disposable {
1652
1758
  }
1653
1759
  return localSessionId;
1654
1760
  }
1655
- registerChatModelChangeListeners(chatSessionType, onChange) {
1656
- const disposableStore = ( new DisposableStore());
1657
- const chatModelsICareAbout = ( this.chatModels.map(
1658
- models => Array.from(models).filter(model => model.sessionResource.scheme === chatSessionType)
1659
- ));
1660
- const listeners = ( new ResourceMap());
1661
- const autoRunDisposable = autorunIterableDelta(reader => chatModelsICareAbout.read(reader), (
1662
- {
1663
- addedValues,
1664
- removedValues
1665
- }
1666
- ) => {
1667
- removedValues.forEach(removed => {
1668
- const listener = listeners.get(removed.sessionResource);
1669
- if (listener) {
1670
- listeners.delete(removed.sessionResource);
1671
- listener.dispose();
1672
- }
1673
- });
1674
- addedValues.forEach(added => {
1675
- const requestChangeListener = ( added.lastRequestObs.map(
1676
- last => last?.response && observableSignalFromEvent("chatSessions.modelRequestChangeListener", last.response.onDidChange)
1677
- ));
1678
- const modelChangeListener = observableSignalFromEvent("chatSessions.modelChangeListener", added.onDidChange);
1679
- listeners.set(added.sessionResource, autorun(reader => {
1680
- requestChangeListener.read(reader)?.read(reader);
1681
- modelChangeListener.read(reader);
1682
- onChange(added.sessionResource);
1683
- }));
1684
- });
1685
- });
1686
- disposableStore.add(toDisposable(() => {
1687
- for (const listener of ( listeners.values())) {
1688
- listener.dispose();
1689
- }
1690
- }));
1691
- disposableStore.add(autoRunDisposable);
1692
- return disposableStore;
1693
- }
1694
1761
  };
1695
1762
  ChatService = ( __decorate([( __param(0, IStorageService)), ( __param(1, ILogService)), ( __param(2, ITelemetryService)), ( __param(3, IExtensionService)), ( __param(4, IInstantiationService)), ( __param(5, IWorkspaceContextService)), ( __param(6, IChatSlashCommandService)), ( __param(7, IChatAgentService)), ( __param(8, IConfigurationService)), ( __param(9, IChatTransferService)), ( __param(10, IChatSessionsService)), ( __param(11, IMcpService)), ( __param(12, IPromptsService)), ( __param(13, IChatEntitlementService)), ( __param(14, ILanguageModelsService)), ( __param(15, IChatDebugService))], ChatService));
1763
+ async function chatModelToChatDetail(model) {
1764
+ const title = model.title || ( localize(7259, "New Chat"));
1765
+ return {
1766
+ sessionResource: model.sessionResource,
1767
+ title,
1768
+ lastMessageDate: model.lastMessageDate,
1769
+ timing: model.timing,
1770
+ isActive: true,
1771
+ stats: await awaitStatsForSession(model),
1772
+ lastResponseState: model.lastRequest?.response?.state ?? ResponseModelState.Pending
1773
+ };
1774
+ }
1696
1775
 
1697
- export { ChatService };
1776
+ export { ChatService, chatModelToChatDetail };
@@ -18,8 +18,7 @@ let ChatServiceTelemetry = class ChatServiceTelemetry {
18
18
  this.telemetryService.publicLog2("interactiveSessionVote", {
19
19
  direction: action.action.direction === ChatAgentVoteDirection.Up ? "up" : "down",
20
20
  agentId: action.agentId ?? "",
21
- command: action.command,
22
- reason: action.action.reason
21
+ command: action.command
23
22
  });
24
23
  } else if (action.action.kind === "copy") {
25
24
  this.telemetryService.publicLog2("interactiveSessionCopy", {
@@ -5,6 +5,7 @@ import { equals } from '@codingame/monaco-vscode-api/vscode/vs/base/common/objec
5
5
  import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
6
6
  import { hasKey } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
7
7
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
8
+ import { IChatRequestVariableEntry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/attachments/chatVariableEntries';
8
9
  import { ResponseModelState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
9
10
  import { ModifiedFileEntryState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService';
10
11
  import { serializeSendOptions } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel';
@@ -37,6 +38,7 @@ const responsePartSchema = v(
37
38
  case "textEditGroup":
38
39
  case "multiDiffData":
39
40
  case "mcpServersStarting":
41
+ case "thinking":
40
42
  return equals(a, b);
41
43
  case "clearToPreviousToolInvocation":
42
44
  case "codeblockUri":
@@ -50,7 +52,6 @@ const responsePartSchema = v(
50
52
  case "progressMessage":
51
53
  case "pullRequest":
52
54
  case "questionCarousel":
53
- case "thinking":
54
55
  case "undoStop":
55
56
  case "warning":
56
57
  case "treeData":
@@ -81,7 +82,7 @@ const agentEditedFileEventSchema = object({
81
82
  eventKind: v(e => e.eventKind)
82
83
  });
83
84
  const chatVariableSchema = object({
84
- variables: t(v => v.variables, array(value((a, b) => a.name === b.name)))
85
+ variables: t(v => ( v.variables.map(IChatRequestVariableEntry.toExport)), array(value((a, b) => a.name === b.name)))
85
86
  });
86
87
  const requestSchema = object({
87
88
  requestId: t(m => m.id, key()),
@@ -104,7 +105,6 @@ const requestSchema = object({
104
105
  followups: v(m => m.response?.followups, equals),
105
106
  modelState: v(m => m.response?.stateT, equals),
106
107
  vote: v(m => m.response?.vote),
107
- voteDownReason: v(m => m.response?.voteDownReason),
108
108
  slashCommand: t(m => m.response?.slashCommand, value((a, b) => a?.name === b?.name)),
109
109
  usedContext: v(m => m.response?.usedContext, equals),
110
110
  contentReferences: v(m => m.response?.contentReferences, equals),
@@ -115,11 +115,12 @@ const requestSchema = object({
115
115
  sealed: o => o.modelState?.value === ResponseModelState.Cancelled || o.modelState?.value === ResponseModelState.Failed || o.modelState?.value === ResponseModelState.Complete
116
116
  });
117
117
  const inputStateSchema = object({
118
- attachments: v(i => i.attachments, equals),
118
+ attachments: v(i => ( i.attachments.map(IChatRequestVariableEntry.toExport)), equals),
119
119
  mode: v(i => i.mode, (a, b) => a.id === b.id),
120
120
  selectedModel: v(i => i.selectedModel, (a, b) => a?.identifier === b?.identifier),
121
121
  inputText: v(i => i.inputText),
122
122
  selections: v(i => i.selections, equals),
123
+ permissionLevel: v(i => i.permissionLevel),
123
124
  contrib: v(i => i.contrib, equals)
124
125
  });
125
126
  const pendingRequestSchema = object({
@@ -13,7 +13,7 @@ import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs
13
13
  import { ILifecycleService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service";
14
14
  import { IWorkspaceEditingService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/workspaces/common/workspaceEditing.service";
15
15
  import { IChatSessionStats, IChatSessionTiming, ResponseModelState } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
16
- import { ChatAgentLocation } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
16
+ import { ChatAgentLocation, ChatPermissionLevel } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
17
17
  import { ChatModel, ISerializableChatData, ISerializableChatsData, ISerializedChatDataReference } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel";
18
18
  export declare class ChatSessionStore extends Disposable {
19
19
  private readonly fileService;
@@ -92,6 +92,10 @@ export interface IChatSessionEntryMetadata {
92
92
  * Whether this session was loaded from an external provider (eg background/cloud sessions).
93
93
  */
94
94
  isExternal?: boolean;
95
+ /**
96
+ * The permission level for tool auto-approval, if not default.
97
+ */
98
+ permissionLevel?: ChatPermissionLevel;
95
99
  }
96
100
  export type IChatSessionIndex = Record<string, IChatSessionEntryMetadata>;
97
101
  export interface IChatTransfer {