@codingame/monaco-vscode-api 1.83.16 → 1.85.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/api.js +13 -7
  2. package/assets/clear.mp3 +0 -0
  3. package/assets/format.mp3 +0 -0
  4. package/assets/save.mp3 +0 -0
  5. package/extensions.d.ts +13 -3
  6. package/external/{xterm-addon-image/typings/xterm-addon-image.d.ts → @xterm/addon-image/typings/addon-image.d.ts} +1 -1
  7. package/external/{xterm-addon-serialize/typings/xterm-addon-serialize.d.ts → @xterm/addon-serialize/typings/addon-serialize.d.ts} +20 -3
  8. package/external/{xterm → @xterm/xterm}/typings/xterm.d.ts +13 -1
  9. package/lifecycle.js +2 -2
  10. package/localExtensionHost.js +3 -1
  11. package/missing-services.js +160 -25
  12. package/monaco-editor-treemending.patch +6884 -18018
  13. package/monaco-treemending.js +2 -2
  14. package/package.json +7 -7
  15. package/service-override/tools/editor.d.ts +8 -8
  16. package/service-override/tools/editor.js +44 -19
  17. package/services.d.ts +2 -2
  18. package/services.js +3 -3
  19. package/vscode/src/vs/base/browser/broadcast.js +6 -5
  20. package/vscode/src/vs/base/browser/dnd.d.ts +6 -0
  21. package/vscode/src/vs/base/browser/mouseEvent.d.ts +1 -1
  22. package/vscode/src/vs/base/browser/touch.d.ts +10 -0
  23. package/vscode/src/vs/base/browser/ui/actionbar/actionbar.d.ts +1 -0
  24. package/vscode/src/vs/base/browser/ui/iconLabel/iconHoverDelegate.d.ts +22 -15
  25. package/vscode/src/vs/base/browser/ui/menu/menubar.js +4 -3
  26. package/vscode/src/vs/base/browser/ui/splitview/paneview.css.js +1 -1
  27. package/vscode/src/vs/base/browser/ui/splitview/paneview.d.ts +3 -0
  28. package/vscode/src/vs/base/browser/ui/splitview/paneview.js +34 -11
  29. package/vscode/src/vs/base/common/actions.d.ts +1 -15
  30. package/vscode/src/vs/base/common/async.d.ts +1 -31
  31. package/vscode/src/vs/base/common/event.d.ts +2 -1
  32. package/vscode/src/vs/base/common/observableInternal/base.d.ts +23 -10
  33. package/vscode/src/vs/base/common/prefixTree.js +21 -11
  34. package/vscode/src/vs/base/common/product.d.ts +16 -2
  35. package/vscode/src/vs/base/common/resourceTree.js +135 -0
  36. package/vscode/src/vs/base/common/skipList.js +1 -0
  37. package/vscode/src/vs/base/common/tfIdf.js +137 -0
  38. package/vscode/src/vs/base/common/types.d.ts +13 -1
  39. package/vscode/src/vs/base/common/verifier.js +62 -0
  40. package/vscode/src/vs/editor/browser/editorBrowser.d.ts +4 -2
  41. package/vscode/src/vs/editor/common/config/editorOptions.d.ts +23 -4
  42. package/vscode/src/vs/editor/common/core/lineRange.d.ts +1 -0
  43. package/vscode/src/vs/editor/common/core/offsetRange.d.ts +3 -0
  44. package/vscode/src/vs/editor/common/core/position.d.ts +1 -0
  45. package/vscode/src/vs/editor/common/editorCommon.d.ts +2 -1
  46. package/vscode/src/vs/editor/common/languages.d.ts +23 -1
  47. package/vscode/src/vs/editor/common/services/languageFeatures.d.ts +2 -1
  48. package/vscode/src/vs/editor/common/services/resolverService.d.ts +11 -2
  49. package/vscode/src/vs/platform/accessibility/common/accessibility.d.ts +16 -1
  50. package/vscode/src/vs/platform/action/common/action.d.ts +8 -0
  51. package/vscode/src/vs/platform/actions/browser/dropdownWithPrimaryActionViewItem.js +4 -0
  52. package/vscode/src/vs/platform/actions/common/actions.d.ts +8 -0
  53. package/vscode/src/vs/platform/audioCues/browser/audioCueService.d.ts +6 -0
  54. package/vscode/src/vs/platform/commands/common/commands.d.ts +13 -5
  55. package/vscode/src/vs/platform/dialogs/common/dialogs.d.ts +9 -3
  56. package/vscode/src/vs/platform/dialogs/common/dialogs.js +5 -2
  57. package/vscode/src/vs/platform/editor/common/editor.d.ts +3 -15
  58. package/vscode/src/vs/platform/extensionManagement/common/extensionManagement.d.ts +1 -0
  59. package/vscode/src/vs/platform/extensionManagement/common/extensionManagement.js +3 -15
  60. package/vscode/src/vs/platform/extensionManagement/common/implicitActivationEvents.js +5 -0
  61. package/vscode/src/vs/platform/extensions/common/extensions.d.ts +0 -1
  62. package/vscode/src/vs/platform/files/common/files.d.ts +72 -8
  63. package/vscode/src/vs/platform/files/common/watcher.js +77 -0
  64. package/vscode/src/vs/platform/keybinding/common/keybindingsRegistry.d.ts +2 -2
  65. package/vscode/src/vs/platform/layout/browser/layoutService.d.ts +52 -21
  66. package/vscode/src/vs/platform/request/browser/requestService.js +3 -0
  67. package/vscode/src/vs/platform/request/common/requestIpc.js +17 -0
  68. package/vscode/src/vs/platform/storage/common/storage.js +2 -2
  69. package/vscode/src/vs/platform/telemetry/common/telemetry.d.ts +1 -0
  70. package/vscode/src/vs/platform/terminal/common/capabilities/capabilities.d.ts +12 -7
  71. package/vscode/src/vs/platform/terminal/common/capabilities/{commandDetectionCapability.d.ts → commandDetection/terminalCommand.d.ts} +3 -2
  72. package/vscode/src/vs/platform/terminal/common/capabilities/commandDetection/terminalCommand.js +257 -0
  73. package/vscode/src/vs/platform/terminal/common/capabilities/commandDetectionCapability.js +439 -354
  74. package/vscode/src/vs/platform/window/common/window.d.ts +9 -2
  75. package/vscode/src/vs/platform/window/common/window.js +6 -1
  76. package/vscode/src/vs/platform/workspaces/common/workspaces.d.ts +2 -43
  77. package/vscode/src/vs/workbench/api/common/extHost.api.impl.js +113 -81
  78. package/vscode/src/vs/workbench/api/common/extHost.protocol.js +5 -4
  79. package/vscode/src/vs/workbench/api/common/extHostApiCommands.js +25 -3
  80. package/vscode/src/vs/workbench/api/common/extHostChat.js +13 -163
  81. package/vscode/src/vs/workbench/api/common/extHostChatAgents2.js +412 -0
  82. package/vscode/src/vs/workbench/api/common/extHostChatProvider.js +79 -11
  83. package/vscode/src/vs/workbench/api/common/extHostCommands.js +13 -12
  84. package/vscode/src/vs/workbench/api/common/extHostComments.js +1 -1
  85. package/vscode/src/vs/workbench/api/common/extHostEditorTabs.js +8 -6
  86. package/vscode/src/vs/workbench/api/common/extHostExtensionService.js +1 -1
  87. package/vscode/src/vs/workbench/api/common/extHostFileSystemEventService.js +36 -19
  88. package/vscode/src/vs/workbench/api/common/extHostInlineChat.js +52 -31
  89. package/vscode/src/vs/workbench/api/common/extHostIssueReporter.js +38 -0
  90. package/vscode/src/vs/workbench/api/common/extHostLanguageFeatures.js +28 -3
  91. package/vscode/src/vs/workbench/api/common/extHostLanguages.js +10 -0
  92. package/vscode/src/vs/workbench/api/common/extHostNotebook.js +117 -2
  93. package/vscode/src/vs/workbench/api/common/extHostNotebookKernels.js +32 -4
  94. package/vscode/src/vs/workbench/api/common/extHostSCM.js +85 -23
  95. package/vscode/src/vs/workbench/api/common/extHostSearch.js +3 -0
  96. package/vscode/src/vs/workbench/api/common/extHostSpeech.js +42 -0
  97. package/vscode/src/vs/workbench/api/common/extHostTask.js +2 -1
  98. package/vscode/src/vs/workbench/api/common/extHostTelemetry.js +1 -0
  99. package/vscode/src/vs/workbench/api/common/extHostTerminalService.js +3 -3
  100. package/vscode/src/vs/workbench/api/common/extHostTesting.js +97 -47
  101. package/vscode/src/vs/workbench/api/common/extHostTypeConverters.js +115 -16
  102. package/vscode/src/vs/workbench/api/common/extHostTypes.js +66 -36
  103. package/vscode/src/vs/workbench/api/common/extHostWorkspace.js +6 -1
  104. package/vscode/src/vs/workbench/browser/actions/layoutActions.js +182 -75
  105. package/vscode/src/vs/workbench/browser/actions/windowActions.js +176 -4
  106. package/vscode/src/vs/workbench/browser/actions/workspaceActions.js +143 -2
  107. package/vscode/src/vs/workbench/browser/actions/workspaceCommands.js +237 -0
  108. package/vscode/src/vs/workbench/browser/composite.d.ts +0 -4
  109. package/vscode/src/vs/workbench/browser/composite.js +5 -4
  110. package/vscode/src/vs/workbench/browser/dnd.js +72 -23
  111. package/vscode/src/vs/workbench/browser/labels.js +7 -3
  112. package/vscode/src/vs/workbench/browser/media/part.css.js +1 -1
  113. package/vscode/src/vs/workbench/browser/panecomposite.d.ts +2 -2
  114. package/vscode/src/vs/workbench/browser/panecomposite.js +2 -0
  115. package/vscode/src/vs/workbench/browser/part.js +33 -2
  116. package/vscode/src/vs/workbench/browser/parts/compositeBarActions.js +99 -117
  117. package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +173 -33
  118. package/vscode/src/vs/workbench/browser/parts/editor/editor.js +102 -6
  119. package/vscode/src/vs/workbench/browser/parts/editor/editorActions.js +256 -17
  120. package/vscode/src/vs/workbench/browser/parts/editor/editorAutoSave.js +4 -0
  121. package/vscode/src/vs/workbench/browser/parts/editor/editorCommands.js +68 -35
  122. package/vscode/src/vs/workbench/browser/parts/editor/editorPlaceholder.js +5 -5
  123. package/vscode/src/vs/workbench/browser/parts/editor/editorStatus.js +35 -16
  124. package/vscode/src/vs/workbench/browser/parts/editor/editorTabsControl.js +348 -0
  125. package/vscode/src/vs/workbench/browser/parts/editor/editorsObserver.js +43 -31
  126. package/vscode/src/vs/workbench/browser/parts/editor/media/editortabscontrol.css.js +4 -0
  127. package/vscode/src/vs/workbench/browser/parts/editor/sideBySideEditor.js +1 -0
  128. package/vscode/src/vs/workbench/browser/parts/editor/textCodeEditor.js +1 -0
  129. package/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor.js +14 -2
  130. package/vscode/src/vs/workbench/browser/parts/editor/textEditor.js +4 -4
  131. package/vscode/src/vs/workbench/browser/parts/globalCompositeBar.js +277 -0
  132. package/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands.js +5 -2
  133. package/vscode/src/vs/workbench/browser/parts/panel/media/panelpart.css.js +1 -1
  134. package/vscode/src/vs/workbench/browser/parts/panel/panelActions.js +3 -38
  135. package/vscode/src/vs/workbench/browser/parts/statusbar/statusbarPart.d.ts +54 -52
  136. package/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl.js +2 -1
  137. package/vscode/src/vs/workbench/browser/parts/titlebar/titlebarPart.d.ts +25 -0
  138. package/vscode/src/vs/workbench/browser/parts/titlebar/windowTitle.js +258 -0
  139. package/vscode/src/vs/workbench/browser/parts/views/media/paneviewlet.css.js +1 -1
  140. package/vscode/src/vs/workbench/browser/parts/views/viewPane.d.ts +2 -5
  141. package/vscode/src/vs/workbench/browser/parts/views/viewPane.js +157 -117
  142. package/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer.js +50 -23
  143. package/vscode/src/vs/workbench/browser/parts/views/viewsService.js +26 -11
  144. package/vscode/src/vs/workbench/browser/parts/views/viewsViewlet.js +10 -6
  145. package/vscode/src/vs/workbench/browser/style.js +2 -1
  146. package/vscode/src/vs/workbench/browser/web.api.d.ts +39 -2
  147. package/vscode/src/vs/workbench/browser/window.js +55 -0
  148. package/vscode/src/vs/workbench/browser/workbench.contribution.js +220 -40
  149. package/vscode/src/vs/workbench/common/activity.js +3 -0
  150. package/vscode/src/vs/workbench/common/contextkeys.js +35 -5
  151. package/vscode/src/vs/workbench/common/contributions.js +4 -3
  152. package/vscode/src/vs/workbench/common/editor/diffEditorInput.js +14 -4
  153. package/vscode/src/vs/workbench/common/editor/diffEditorModel.js +1 -1
  154. package/vscode/src/vs/workbench/common/editor/editorGroupModel.js +22 -19
  155. package/vscode/src/vs/workbench/common/editor/editorInput.d.ts +4 -3
  156. package/vscode/src/vs/workbench/common/editor/editorModel.d.ts +1 -2
  157. package/vscode/src/vs/workbench/common/editor/sideBySideEditorInput.js +22 -4
  158. package/vscode/src/vs/workbench/common/editor/textResourceEditorInput.js +3 -3
  159. package/vscode/src/vs/workbench/common/editor.d.ts +60 -30
  160. package/vscode/src/vs/workbench/common/editor.js +11 -3
  161. package/vscode/src/vs/workbench/common/theme.js +2 -2
  162. package/vscode/src/vs/workbench/common/views.d.ts +4 -4
  163. package/vscode/src/vs/workbench/common/views.js +3 -1
  164. package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration.js +97 -8
  165. package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityContributions.js +17 -99
  166. package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibleView.js +103 -37
  167. package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibleViewActions.js +2 -3
  168. package/vscode/src/vs/workbench/contrib/accessibility/browser/editorAccessibilityHelp.js +127 -0
  169. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatActions.js +71 -0
  170. package/vscode/src/vs/workbench/contrib/chat/browser/chat.js +2 -1
  171. package/vscode/src/vs/workbench/contrib/chat/common/chatAgents.js +33 -110
  172. package/vscode/src/vs/workbench/contrib/chat/common/chatContextKeys.js +64 -0
  173. package/vscode/src/vs/workbench/contrib/chat/common/chatParserTypes.js +94 -0
  174. package/vscode/src/vs/workbench/contrib/chat/common/chatService.js +6 -1
  175. package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +1 -88
  176. package/vscode/src/vs/workbench/contrib/codeActions/browser/codeActionsContribution.js +4 -4
  177. package/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js +3 -2
  178. package/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js +3 -1
  179. package/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.js +15 -16
  180. package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js +9 -3
  181. package/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.js +3 -1
  182. package/vscode/src/vs/workbench/contrib/comments/browser/simpleCommentEditor.js +2 -3
  183. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInput.js +1 -0
  184. package/vscode/src/vs/workbench/contrib/debug/common/debug.d.ts +9 -1
  185. package/vscode/src/vs/workbench/contrib/debug/common/debug.js +10 -1
  186. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.js +114 -22
  187. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionActions.css.js +1 -1
  188. package/vscode/src/vs/workbench/contrib/extensions/common/extensions.js +4 -1
  189. package/vscode/src/vs/workbench/contrib/files/browser/explorerFileContrib.js +19 -0
  190. package/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.js +10 -8
  191. package/vscode/src/vs/workbench/contrib/files/browser/fileActions.js +62 -10
  192. package/vscode/src/vs/workbench/contrib/files/browser/fileConstants.js +2 -1
  193. package/vscode/src/vs/workbench/contrib/files/browser/fileImportExport.js +9 -8
  194. package/vscode/src/vs/workbench/contrib/files/browser/files.contribution.js +10 -1
  195. package/vscode/src/vs/workbench/contrib/files/browser/files.d.ts +1 -0
  196. package/vscode/src/vs/workbench/contrib/files/browser/files.js +7 -3
  197. package/vscode/src/vs/workbench/contrib/files/browser/views/emptyView.js +4 -4
  198. package/vscode/src/vs/workbench/contrib/files/browser/views/explorerView.js +64 -36
  199. package/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer.js +42 -17
  200. package/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView.js +145 -25
  201. package/vscode/src/vs/workbench/contrib/format/browser/formatActionsMultiple.js +1 -1
  202. package/vscode/src/vs/workbench/contrib/format/browser/formatModified.js +1 -1
  203. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +36 -0
  204. package/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon.js +3 -1
  205. package/vscode/src/vs/workbench/contrib/preferences/common/preferences.js +24 -3
  206. package/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js +11 -6
  207. package/vscode/src/vs/workbench/contrib/scm/common/scm.js +1 -2
  208. package/vscode/src/vs/workbench/contrib/search/browser/notebookSearch/searchNotebookHelpers.js +31 -0
  209. package/vscode/src/vs/workbench/contrib/search/browser/searchModel.js +61 -41
  210. package/vscode/src/vs/workbench/contrib/search/{browser/searchNotebookHelpers.js → common/cellSearchModel.js} +4 -63
  211. package/vscode/src/vs/workbench/contrib/search/common/searchNotebookHelpers.js +40 -0
  212. package/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile.js +2 -2
  213. package/vscode/src/vs/workbench/{services/editor/browser/editorDropService.js → contrib/speech/common/speechService.js} +2 -2
  214. package/vscode/src/vs/workbench/contrib/terminal/browser/detachedTerminal.js +29 -4
  215. package/vscode/src/vs/workbench/contrib/terminal/browser/terminal.d.ts +100 -79
  216. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.d.ts +3 -3
  217. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEditorInput.js +1 -1
  218. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalIcon.js +7 -4
  219. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/decorationAddon.js +5 -3
  220. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/markNavigationAddon.js +143 -41
  221. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.d.ts +17 -11
  222. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.js +41 -26
  223. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm-private.d.ts +5 -2
  224. package/vscode/src/vs/workbench/contrib/terminal/common/terminal.d.ts +2 -8
  225. package/vscode/src/vs/workbench/contrib/terminal/common/terminal.js +2 -0
  226. package/vscode/src/vs/workbench/contrib/testing/common/testCoverage.js +115 -0
  227. package/vscode/src/vs/workbench/contrib/testing/common/testCoverageService.js +74 -0
  228. package/vscode/src/vs/workbench/contrib/testing/common/testResult.js +3 -3
  229. package/vscode/src/vs/workbench/contrib/testing/common/testTypes.js +64 -1
  230. package/vscode/src/vs/workbench/contrib/testing/common/testingContextKeys.js +9 -0
  231. package/vscode/src/vs/workbench/contrib/webview/browser/webviewWindowDragMonitor.js +4 -3
  232. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewEditor.js +8 -9
  233. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewEditorInput.js +1 -1
  234. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewIconManager.js +5 -2
  235. package/vscode/src/vs/workbench/services/activity/browser/activityService.d.ts +16 -10
  236. package/vscode/src/vs/workbench/services/activity/common/activity.d.ts +14 -1
  237. package/vscode/src/vs/workbench/services/activity/common/activity.js +1 -7
  238. package/vscode/src/vs/workbench/services/authentication/browser/authenticationService.js +9 -28
  239. package/vscode/src/vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService.js +273 -0
  240. package/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolver.js +1 -0
  241. package/vscode/src/vs/workbench/services/configurationResolver/common/variableResolver.js +2 -0
  242. package/vscode/src/vs/workbench/services/decorations/browser/decorationsService.js +2 -3
  243. package/vscode/src/vs/workbench/services/editor/browser/editorService.d.ts +7 -5
  244. package/vscode/src/vs/workbench/services/editor/browser/editorService.js +59 -37
  245. package/vscode/src/vs/workbench/services/editor/common/editorGroupsService.d.ts +193 -94
  246. package/vscode/src/vs/workbench/services/editor/common/editorGroupsService.js +2 -2
  247. package/vscode/src/vs/workbench/services/editor/common/editorResolverService.d.ts +8 -2
  248. package/vscode/src/vs/workbench/services/editor/common/editorService.d.ts +8 -1
  249. package/vscode/src/vs/workbench/services/extensionRecommendations/common/workspaceExtensionsConfig.js +62 -16
  250. package/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler.js +5 -3
  251. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.d.ts +3 -2
  252. package/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.js +4 -9
  253. package/vscode/src/vs/workbench/services/extensions/common/{extensionHostManager.d.ts → extensionHostManagers.d.ts} +2 -0
  254. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.d.ts +1 -1
  255. package/vscode/src/vs/workbench/services/extensions/common/extensions.d.ts +9 -0
  256. package/vscode/src/vs/workbench/services/extensions/common/extensions.js +22 -0
  257. package/vscode/src/vs/workbench/services/extensions/common/extensionsApiProposals.js +14 -3
  258. package/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.js +9 -0
  259. package/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js +3 -3
  260. package/vscode/src/vs/workbench/services/history/common/history.d.ts +2 -2
  261. package/vscode/src/vs/workbench/services/host/browser/browserHostService.js +49 -18
  262. package/vscode/src/vs/workbench/services/host/browser/host.d.ts +29 -7
  263. package/vscode/src/vs/workbench/services/hover/browser/hover.d.ts +51 -28
  264. package/vscode/src/vs/workbench/services/hover/browser/hoverService.d.ts +5 -2
  265. package/vscode/src/vs/workbench/services/keybinding/browser/unboundCommands.js +2 -2
  266. package/vscode/src/vs/workbench/services/languageStatus/common/languageStatusService.d.ts +4 -1
  267. package/vscode/src/vs/workbench/services/layout/browser/layoutService.d.ts +40 -36
  268. package/vscode/src/vs/workbench/services/panecomposite/browser/panecomposite.d.ts +0 -6
  269. package/vscode/src/vs/workbench/services/preferences/common/preferences.d.ts +3 -0
  270. package/vscode/src/vs/workbench/services/progress/browser/progressIndicator.js +2 -2
  271. package/vscode/src/vs/workbench/services/remote/common/remoteExplorerService.d.ts +18 -3
  272. package/vscode/src/vs/workbench/services/request/browser/requestService.js +48 -0
  273. package/vscode/src/vs/workbench/services/search/common/searchHelpers.js +4 -4
  274. package/vscode/src/vs/workbench/services/statusbar/browser/statusbar.d.ts +10 -51
  275. package/vscode/src/vs/workbench/services/suggest/browser/simpleSuggestWidget.js +2 -2
  276. package/vscode/src/vs/workbench/services/textfile/browser/textFileService.js +32 -1
  277. package/vscode/src/vs/workbench/services/textfile/common/textEditorService.js +1 -5
  278. package/vscode/src/vs/workbench/services/themes/browser/browserHostColorSchemeService.js +4 -3
  279. package/vscode/src/vs/workbench/services/themes/common/iconExtensionPoint.js +9 -3
  280. package/vscode/src/vs/workbench/services/title/browser/titleService.d.ts +18 -0
  281. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorInput.js +18 -3
  282. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorModel.js +16 -7
  283. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService.d.ts +6 -0
  284. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService.js +13 -0
  285. package/vscode/src/vs/workbench/services/url/browser/urlService.js +2 -1
  286. package/vscode/src/vs/workbench/services/userActivity/common/userActivityService.js +2 -2
  287. package/vscode/src/vs/workbench/services/userDataProfile/common/userDataProfileIcons.js +9 -0
  288. package/vscode-dts/vscode.proposed.chatAgents2.d.ts +375 -0
  289. package/vscode-dts/vscode.proposed.chatAgents2Additions.d.ts +80 -0
  290. package/vscode-dts/vscode.proposed.chatProvider.d.ts +5 -1
  291. package/vscode-dts/vscode.proposed.chatRequestAccess.d.ts +68 -10
  292. package/vscode-dts/vscode.proposed.chatTab.d.ts +21 -0
  293. package/vscode-dts/vscode.proposed.chatVariables.d.ts +5 -1
  294. package/vscode-dts/vscode.proposed.codeActionAI.d.ts +16 -0
  295. package/vscode-dts/vscode.proposed.contribSourceControlInputBoxMenu.d.ts +7 -0
  296. package/vscode-dts/vscode.proposed.createFileSystemWatcher.d.ts +51 -0
  297. package/vscode-dts/vscode.proposed.defaultChatAgent.d.ts +30 -0
  298. package/vscode-dts/vscode.proposed.handleIssueUri.d.ts +26 -0
  299. package/vscode-dts/vscode.proposed.interactive.d.ts +26 -100
  300. package/vscode-dts/vscode.proposed.interactiveUserActions.d.ts +14 -7
  301. package/vscode-dts/vscode.proposed.languageStatusText.d.ts +12 -0
  302. package/vscode-dts/vscode.proposed.multiDocumentHighlightProvider.d.ts +63 -0
  303. package/vscode-dts/vscode.proposed.notebookVariableProvider.d.ts +43 -0
  304. package/vscode-dts/vscode.proposed.resolvers.d.ts +100 -1
  305. package/vscode-dts/vscode.proposed.scmHistoryProvider.d.ts +9 -1
  306. package/vscode-dts/vscode.proposed.scmInputBoxActionButton.d.ts +19 -0
  307. package/vscode-dts/vscode.proposed.scmInputBoxValueProvider.d.ts +25 -0
  308. package/vscode-dts/vscode.proposed.speech.d.ts +35 -0
  309. package/vscode-dts/vscode.proposed.terminalQuickFixProvider.d.ts +11 -7
  310. package/vscode-dts/vscode.proposed.testCoverage.d.ts +6 -1
  311. package/vscode-dts/vscode.proposed.testingActiveProfile.d.ts +21 -0
  312. package/external/xterm-headless/typings/xterm-headless.d.ts +0 -49
  313. package/vscode/src/vs/platform/backup/common/backup.d.ts +0 -14
  314. package/vscode/src/vs/platform/update/common/update.d.ts +0 -112
  315. package/vscode/src/vs/workbench/api/common/extHostChatAgents.js +0 -62
  316. package/vscode/src/vs/workbench/api/common/extHostChatSlashCommand.js +0 -62
  317. package/vscode/src/vs/workbench/browser/parts/paneCompositePart.d.ts +0 -56
  318. package/vscode/src/vs/workbench/services/files/common/files.js +0 -4
  319. package/vscode/src/vs/workbench/services/host/browser/browserHostService.d.ts +0 -41
  320. package/vscode/src/vs/workbench/services/title/common/titleService.d.ts +0 -31
  321. package/vscode-dts/vscode.proposed.chatAgents.d.ts +0 -39
  322. package/vscode-dts/vscode.proposed.chatSlashCommands.d.ts +0 -47
  323. package/vscode-dts/vscode.proposed.testMessageContextValue.d.ts +0 -45
  324. /package/external/{xterm-addon-canvas/typings/xterm-addon-canvas.d.ts → @xterm/addon-canvas/typings/addon-canvas.d.ts} +0 -0
  325. /package/external/{xterm-addon-search/typings/xterm-addon-search.d.ts → @xterm/addon-search/typings/addon-search.d.ts} +0 -0
  326. /package/external/{xterm-addon-unicode11/typings/xterm-addon-unicode11.d.ts → @xterm/addon-unicode11/typings/addon-unicode11.d.ts} +0 -0
  327. /package/external/{xterm-addon-webgl/typings/xterm-addon-webgl.d.ts → @xterm/addon-webgl/typings/addon-webgl.d.ts} +0 -0
  328. /package/vscode/src/vs/workbench/services/title/{common → browser}/titleService.js +0 -0
@@ -1,8 +1,65 @@
1
+ import { CancellationTokenSource } from 'monaco-editor/esm/vs/base/common/cancellation.js';
1
2
  import { toDisposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
2
3
  import { MainContext } from './extHost.protocol.js';
3
4
  import { ChatMessage } from './extHostTypeConverters.js';
4
5
  import { Progress } from 'monaco-editor/esm/vs/platform/progress/common/progress.js';
5
6
  import { ExtensionIdentifierMap } from 'monaco-editor/esm/vs/platform/extensions/common/extensions.js';
7
+ import { AsyncIterableSource } from 'monaco-editor/esm/vs/base/common/async.js';
8
+ import { Emitter } from 'monaco-editor/esm/vs/base/common/event.js';
9
+ class ChatResponseStream {
10
+ constructor(option, stream) {
11
+ this.stream = ( new AsyncIterableSource());
12
+ this.stream = stream ?? ( new AsyncIterableSource());
13
+ const that = this;
14
+ this.apiObj = {
15
+ option: option,
16
+ response: that.stream.asyncIterable
17
+ };
18
+ }
19
+ }
20
+ class ChatRequest {
21
+ constructor(promise, cts) {
22
+ this._onDidStart = ( new Emitter());
23
+ this._responseStreams = ( new Map());
24
+ this._defaultStream = ( new AsyncIterableSource());
25
+ this._isDone = false;
26
+ const that = this;
27
+ this.apiObject = {
28
+ result: promise,
29
+ response: that._defaultStream.asyncIterable,
30
+ onDidStartResponseStream: that._onDidStart.event,
31
+ cancel() { cts.cancel(); },
32
+ };
33
+ promise.finally(() => {
34
+ this._isDone = true;
35
+ if (this._responseStreams.size > 0) {
36
+ for (const [, value] of this._responseStreams) {
37
+ value.stream.resolve();
38
+ }
39
+ }
40
+ else {
41
+ this._defaultStream.resolve();
42
+ }
43
+ });
44
+ }
45
+ handleFragment(fragment) {
46
+ if (this._isDone) {
47
+ return;
48
+ }
49
+ let res = this._responseStreams.get(fragment.index);
50
+ if (!res) {
51
+ if (this._responseStreams.size === 0) {
52
+ res = ( new ChatResponseStream(fragment.index, this._defaultStream));
53
+ }
54
+ else {
55
+ res = ( new ChatResponseStream(fragment.index));
56
+ }
57
+ this._responseStreams.set(fragment.index, res);
58
+ this._onDidStart.fire(res.apiObj);
59
+ }
60
+ res.stream.emitOne(fragment.part);
61
+ }
62
+ }
6
63
  class ExtHostChatProvider {
7
64
  static { this._idPool = 1; }
8
65
  constructor(mainContext, _logService) {
@@ -15,7 +72,7 @@ class ExtHostChatProvider {
15
72
  registerProvider(extension, identifier, provider, metadata) {
16
73
  const handle = ExtHostChatProvider._idPool++;
17
74
  this._providers.set(handle, { extension, provider });
18
- this._proxy.$registerProvider(handle, identifier, { extension, displayName: metadata.name ?? extension.value });
75
+ this._proxy.$registerProvider(handle, identifier, { extension, model: metadata.name ?? '' });
19
76
  return toDisposable(() => {
20
77
  this._proxy.$unregisterProvider(handle);
21
78
  this._providers.delete(handle);
@@ -31,8 +88,8 @@ class ExtHostChatProvider {
31
88
  this._logService.warn(`[CHAT](${data.extension.value}) CANNOT send progress because the REQUEST IS CANCELLED`);
32
89
  return;
33
90
  }
34
- await this._proxy.$handleProgressChunk(requestId, { index: fragment.index, part: fragment.part });
35
- }, { async: true }));
91
+ this._proxy.$handleProgressChunk(requestId, { index: fragment.index, part: fragment.part });
92
+ }));
36
93
  return data.provider.provideChatResponse(( messages.map(ChatMessage.to)), options, progress, token);
37
94
  }
38
95
  allowListExtensionWhile(extension, promise) {
@@ -43,28 +100,39 @@ class ExtHostChatProvider {
43
100
  if (!( this._chatAccessAllowList.has(from))) {
44
101
  throw new Error('Extension is NOT allowed to make chat requests');
45
102
  }
103
+ const metadata = await this._proxy.$prepareChatAccess(identifier);
104
+ if (!metadata) {
105
+ throw new Error(`ChatAccess '${identifier}' NOT found`);
106
+ }
46
107
  const that = this;
47
108
  return {
109
+ get model() {
110
+ return metadata.model;
111
+ },
48
112
  get isRevoked() {
49
113
  return !( that._chatAccessAllowList.has(from));
50
114
  },
51
- async makeRequest(messages, options, progress, token) {
115
+ makeRequest(messages, options, token) {
52
116
  if (!( that._chatAccessAllowList.has(from))) {
53
117
  throw new Error('Access to chat has been revoked');
54
118
  }
119
+ const cts = ( new CancellationTokenSource(token));
55
120
  const requestId = (Math.random() * 1e6) | 0;
56
- that._pendingRequest.set(requestId, progress);
57
- try {
58
- await that._proxy.$fetchResponse(from, identifier, requestId, ( messages.map(ChatMessage.from)), options, token);
59
- }
60
- finally {
121
+ const requestPromise = that._proxy.$fetchResponse(from, identifier, requestId, ( messages.map(ChatMessage.from)), options ?? {}, cts.token);
122
+ const res = ( new ChatRequest(requestPromise, cts));
123
+ that._pendingRequest.set(requestId, { res });
124
+ requestPromise.finally(() => {
61
125
  that._pendingRequest.delete(requestId);
62
- }
126
+ });
127
+ return res.apiObject;
63
128
  },
64
129
  };
65
130
  }
66
131
  async $handleResponseFragment(requestId, chunk) {
67
- this._pendingRequest.get(requestId)?.report(chunk);
132
+ const data = this._pendingRequest.get(requestId);
133
+ if (data) {
134
+ data.res.handleFragment(chunk);
135
+ }
68
136
  }
69
137
  }
70
138
  export { ExtHostChatProvider };
@@ -20,6 +20,7 @@ import { toErrorMessage } from 'monaco-editor/esm/vs/base/common/errorMessage.js
20
20
  import { StopWatch } from 'monaco-editor/esm/vs/base/common/stopwatch.js';
21
21
  import { TelemetryTrustedValue } from '../../../platform/telemetry/common/telemetryUtils.js';
22
22
  import { IExtHostTelemetry } from './extHostTelemetry.js';
23
+ import { generateUuid } from 'monaco-editor/esm/vs/base/common/uuid.js';
23
24
  let ExtHostCommands = class ExtHostCommands {
24
25
  #proxy;
25
26
  #telemetry;
@@ -89,7 +90,7 @@ let ExtHostCommands = class ExtHostCommands {
89
90
  this._apiCommands.delete(apiCommand.id);
90
91
  });
91
92
  }
92
- registerCommand(global, id, callback, thisArg, description, extension) {
93
+ registerCommand(global, id, callback, thisArg, metadata, extension) {
93
94
  this._logService.trace('ExtHostCommands#registerCommand', id);
94
95
  if (!id.trim().length) {
95
96
  throw new Error('invalid id');
@@ -97,7 +98,7 @@ let ExtHostCommands = class ExtHostCommands {
97
98
  if (( this._commands.has(id))) {
98
99
  throw new Error(`command '${id}' already exists`);
99
100
  }
100
- this._commands.set(id, { callback, thisArg, description, extension });
101
+ this._commands.set(id, { callback, thisArg, metadata, extension });
101
102
  if (global) {
102
103
  this.#proxy.$registerCommand(id);
103
104
  }
@@ -168,14 +169,14 @@ let ExtHostCommands = class ExtHostCommands {
168
169
  if (!command) {
169
170
  throw new Error('Unknown command');
170
171
  }
171
- const { callback, thisArg, description } = command;
172
- if (description) {
173
- for (let i = 0; i < description.args.length; i++) {
172
+ const { callback, thisArg, metadata } = command;
173
+ if (metadata?.args) {
174
+ for (let i = 0; i < metadata.args.length; i++) {
174
175
  try {
175
- validateConstraint(args[i], description.args[i].constraint);
176
+ validateConstraint(args[i], metadata.args[i].constraint);
176
177
  }
177
178
  catch (err) {
178
- throw new Error(`Running the contributed command: '${id}' failed.Illegal argument '${description.args[i].name}' - ${description.args[i].description} `);
179
+ throw new Error(`Running the contributed command: '${id}' failed. Illegal argument '${metadata.args[i].name}' - ${metadata.args[i].description}`);
179
180
  }
180
181
  }
181
182
  }
@@ -242,12 +243,12 @@ let ExtHostCommands = class ExtHostCommands {
242
243
  return result;
243
244
  });
244
245
  }
245
- $getContributedCommandHandlerDescriptions() {
246
+ $getContributedCommandMetadata() {
246
247
  const result = Object.create(null);
247
248
  for (const [id, command] of this._commands) {
248
- const { description } = command;
249
- if (description) {
250
- result[id] = description;
249
+ const { metadata } = command;
250
+ if (metadata) {
251
+ result[id] = metadata;
251
252
  }
252
253
  }
253
254
  return Promise.resolve(result);
@@ -264,7 +265,7 @@ class CommandsConverter {
264
265
  this._commands = _commands;
265
266
  this._lookupApiCommand = _lookupApiCommand;
266
267
  this._logService = _logService;
267
- this.delegatingCommandId = `__vsc${( Date.now().toString(36))} `;
268
+ this.delegatingCommandId = `__vsc${generateUuid()}`;
268
269
  this._cache = ( new Map());
269
270
  this._cachIdPool = 0;
270
271
  this._commands.registerCommand(true, this.delegatingCommandId, this._executeConvertedCommand, this);
@@ -106,7 +106,7 @@ function createExtHostComments(mainContext, commands, documents) {
106
106
  this._commentControllersByExtension.set(extension.identifier, commentControllers);
107
107
  return commentController.value;
108
108
  }
109
- $createCommentThreadTemplate(commentControllerHandle, uriComponents, range) {
109
+ async $createCommentThreadTemplate(commentControllerHandle, uriComponents, range) {
110
110
  const commentController = this._commentControllers.get(commentControllerHandle);
111
111
  if (!commentController) {
112
112
  return;
@@ -1,13 +1,13 @@
1
1
  import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
- import { ViewColumn } from './extHostTypeConverters.js';
3
- import { MainContext } from './extHost.protocol.js';
4
- import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
2
+ import { diffSets } from 'monaco-editor/esm/vs/base/common/collections.js';
5
3
  import { Emitter } from 'monaco-editor/esm/vs/base/common/event.js';
4
+ import { assertIsDefined } from 'monaco-editor/esm/vs/base/common/types.js';
5
+ import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
6
6
  import { createDecorator } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
7
- import { InteractiveWindowInput, TerminalEditorTabInput, NotebookDiffEditorTabInput, NotebookEditorTabInput, WebviewEditorTabInput, CustomEditorTabInput, TextMergeTabInput, TextDiffTabInput, TextTabInput } from './extHostTypes.js';
7
+ import { MainContext } from './extHost.protocol.js';
8
8
  import { IExtHostRpcService } from './extHostRpcService.js';
9
- import { assertIsDefined } from 'monaco-editor/esm/vs/base/common/types.js';
10
- import { diffSets } from 'monaco-editor/esm/vs/base/common/collections.js';
9
+ import { ViewColumn } from './extHostTypeConverters.js';
10
+ import { ChatEditorTabInput, InteractiveWindowInput, TerminalEditorTabInput, NotebookDiffEditorTabInput, NotebookEditorTabInput, WebviewEditorTabInput, CustomEditorTabInput, TextMergeTabInput, TextDiffTabInput, TextTabInput } from './extHostTypes.js';
11
11
  const IExtHostEditorTabs = ( createDecorator('IExtHostEditorTabs'));
12
12
  class ExtHostEditorTab {
13
13
  constructor(dto, parentGroup, activeTabIdGetter) {
@@ -81,6 +81,8 @@ class ExtHostEditorTab {
81
81
  return ( new TerminalEditorTabInput());
82
82
  case 9 :
83
83
  return ( new InteractiveWindowInput(URI.revive(this._dto.input.uri), URI.revive(this._dto.input.inputBoxUri)));
84
+ case 10 :
85
+ return ( new ChatEditorTabInput(this._dto.input.providerId));
84
86
  default:
85
87
  return undefined;
86
88
  }
@@ -891,7 +891,7 @@ class SyncedActivationEventsReader {
891
891
  this.addActivationEvents(activationEvents);
892
892
  }
893
893
  readActivationEvents(extensionDescription) {
894
- return this._map.get(extensionDescription.identifier);
894
+ return this._map.get(extensionDescription.identifier) ?? [];
895
895
  }
896
896
  addActivationEvents(activationEvents) {
897
897
  for (const extensionId of ( Object.keys(activationEvents))) {
@@ -4,6 +4,7 @@ import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
4
4
  import { MainContext } from './extHost.protocol.js';
5
5
  import { GlobPattern, WorkspaceEdit as WorkspaceEdit$1 } from './extHostTypeConverters.js';
6
6
  import { WorkspaceEdit, Disposable } from './extHostTypes.js';
7
+ import { Lazy } from 'monaco-editor/esm/vs/base/common/lazy.js';
7
8
  class FileSystemWatcher {
8
9
  get ignoreCreateEvents() {
9
10
  return Boolean(this._config & 0b001);
@@ -14,25 +15,32 @@ class FileSystemWatcher {
14
15
  get ignoreDeleteEvents() {
15
16
  return Boolean(this._config & 0b100);
16
17
  }
17
- constructor(mainContext, workspace, extension, dispatcher, globPattern, ignoreCreateEvents, ignoreChangeEvents, ignoreDeleteEvents) {
18
+ constructor(mainContext, workspace, extension, dispatcher, globPattern, options) {
19
+ this.session = Math.random();
18
20
  this._onDidCreate = ( new Emitter());
19
21
  this._onDidChange = ( new Emitter());
20
22
  this._onDidDelete = ( new Emitter());
21
- const watcherDisposable = this.ensureWatching(mainContext, extension, globPattern);
22
23
  this._config = 0;
23
- if (ignoreCreateEvents) {
24
+ if (options?.ignoreCreateEvents) {
24
25
  this._config += 0b001;
25
26
  }
26
- if (ignoreChangeEvents) {
27
+ if (options?.ignoreChangeEvents) {
27
28
  this._config += 0b010;
28
29
  }
29
- if (ignoreDeleteEvents) {
30
+ if (options?.ignoreDeleteEvents) {
30
31
  this._config += 0b100;
31
32
  }
32
33
  const parsedPattern = parse(globPattern);
33
34
  const excludeOutOfWorkspaceEvents = typeof globPattern === 'string';
35
+ const excludeUncorrelatedEvents = options?.correlate;
34
36
  const subscription = dispatcher(events => {
35
- if (!ignoreCreateEvents) {
37
+ if (typeof events.session === 'number' && events.session !== this.session) {
38
+ return;
39
+ }
40
+ if (excludeUncorrelatedEvents && typeof events.session === 'undefined') {
41
+ return;
42
+ }
43
+ if (!options?.ignoreCreateEvents) {
36
44
  for (const created of events.created) {
37
45
  const uri = URI.revive(created);
38
46
  if (parsedPattern(uri.fsPath) && (!excludeOutOfWorkspaceEvents || workspace.getWorkspaceFolder(uri))) {
@@ -40,7 +48,7 @@ class FileSystemWatcher {
40
48
  }
41
49
  }
42
50
  }
43
- if (!ignoreChangeEvents) {
51
+ if (!options?.ignoreChangeEvents) {
44
52
  for (const changed of events.changed) {
45
53
  const uri = URI.revive(changed);
46
54
  if (parsedPattern(uri.fsPath) && (!excludeOutOfWorkspaceEvents || workspace.getWorkspaceFolder(uri))) {
@@ -48,7 +56,7 @@ class FileSystemWatcher {
48
56
  }
49
57
  }
50
58
  }
51
- if (!ignoreDeleteEvents) {
59
+ if (!options?.ignoreDeleteEvents) {
52
60
  for (const deleted of events.deleted) {
53
61
  const uri = URI.revive(deleted);
54
62
  if (parsedPattern(uri.fsPath) && (!excludeOutOfWorkspaceEvents || workspace.getWorkspaceFolder(uri))) {
@@ -57,21 +65,20 @@ class FileSystemWatcher {
57
65
  }
58
66
  }
59
67
  });
60
- this._disposable = Disposable.from(watcherDisposable, this._onDidCreate, this._onDidChange, this._onDidDelete, subscription);
68
+ this._disposable = Disposable.from(this.ensureWatching(mainContext, extension, globPattern, options, options?.correlate), this._onDidCreate, this._onDidChange, this._onDidDelete, subscription);
61
69
  }
62
- ensureWatching(mainContext, extension, globPattern) {
70
+ ensureWatching(mainContext, extension, globPattern, options, correlate) {
63
71
  const disposable = Disposable.from();
64
72
  if (typeof globPattern === 'string') {
65
73
  return disposable;
66
74
  }
67
- const proxy = ( mainContext.getProxy(MainContext.MainThreadFileSystem));
75
+ const proxy = ( mainContext.getProxy(MainContext.MainThreadFileSystemEventService));
68
76
  let recursive = false;
69
77
  if (globPattern.pattern.includes(GLOBSTAR) || globPattern.pattern.includes(GLOB_SPLIT)) {
70
78
  recursive = true;
71
79
  }
72
- const session = Math.random();
73
- proxy.$watch(extension.identifier.value, session, globPattern.baseUri, { recursive, excludes: [] });
74
- return Disposable.from({ dispose: () => proxy.$unwatch(session) });
80
+ proxy.$watch(extension.identifier.value, this.session, globPattern.baseUri, { recursive, excludes: options?.excludes ?? [] }, Boolean(correlate));
81
+ return Disposable.from({ dispose: () => proxy.$unwatch(this.session) });
75
82
  }
76
83
  dispose() {
77
84
  this._disposable.dispose();
@@ -86,6 +93,18 @@ class FileSystemWatcher {
86
93
  return this._onDidDelete.event;
87
94
  }
88
95
  }
96
+ class LazyRevivedFileSystemEvents {
97
+ constructor(_events) {
98
+ this._events = _events;
99
+ this.session = this._events.session;
100
+ this._created = ( new Lazy(() => ( this._events.created.map(URI.revive))));
101
+ this._changed = ( new Lazy(() => ( this._events.changed.map(URI.revive))));
102
+ this._deleted = ( new Lazy(() => ( this._events.deleted.map(URI.revive))));
103
+ }
104
+ get created() { return this._created.value; }
105
+ get changed() { return this._changed.value; }
106
+ get deleted() { return this._deleted.value; }
107
+ }
89
108
  class ExtHostFileSystemEventService {
90
109
  constructor(_mainContext, _logService, _extHostDocumentsAndEditors) {
91
110
  this._mainContext = _mainContext;
@@ -102,20 +121,18 @@ class ExtHostFileSystemEventService {
102
121
  this.onDidCreateFile = this._onDidCreateFile.event;
103
122
  this.onDidDeleteFile = this._onDidDeleteFile.event;
104
123
  }
105
- createFileSystemWatcher(workspace, extension, globPattern, ignoreCreateEvents, ignoreChangeEvents, ignoreDeleteEvents) {
124
+ createFileSystemWatcher(workspace, extension, globPattern, options) {
106
125
  return ( new FileSystemWatcher(
107
126
  this._mainContext,
108
127
  workspace,
109
128
  extension,
110
129
  this._onFileSystemEvent.event,
111
130
  GlobPattern.from(globPattern),
112
- ignoreCreateEvents,
113
- ignoreChangeEvents,
114
- ignoreDeleteEvents
131
+ options
115
132
  ));
116
133
  }
117
134
  $onFileEvent(events) {
118
- this._onFileSystemEvent.fire(events);
135
+ this._onFileSystemEvent.fire(( new LazyRevivedFileSystemEvents(events)));
119
136
  }
120
137
  $onDidRunFileOperation(operation, files) {
121
138
  switch (operation) {
@@ -1,9 +1,10 @@
1
1
  import { toDisposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
2
2
  import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
3
3
  import { MainContext } from './extHost.protocol.js';
4
- import { Range, Selection, Position, MarkdownString, WorkspaceEdit as WorkspaceEdit$1, TextEdit, InteractiveEditorResponseFeedbackKind } from './extHostTypeConverters.js';
5
- import { WorkspaceEdit } from './extHostTypes.js';
4
+ import { Range, Selection, Position, MarkdownString, WorkspaceEdit as WorkspaceEdit$1, TextEdit, ChatReplyFollowup, InteractiveEditorResponseFeedbackKind } from './extHostTypeConverters.js';
5
+ import { WorkspaceEdit, MarkdownString as MarkdownString$1 } from './extHostTypes.js';
6
6
  import { ApiCommand, ApiCommandArgument, ApiCommandResult } from './extHostCommands.js';
7
+ import { raceCancellation } from 'monaco-editor/esm/vs/base/common/async.js';
7
8
  class ProviderWrapper {
8
9
  static { this._pool = 0; }
9
10
  constructor(extension, provider) {
@@ -48,7 +49,7 @@ class ExtHostInteractiveEditor {
48
49
  registerProvider(extension, provider, metadata) {
49
50
  const wrapper = ( new ProviderWrapper(extension, provider));
50
51
  this._inputProvider.set(wrapper.handle, wrapper);
51
- this._proxy.$registerInteractiveEditorProvider(wrapper.handle, metadata.label, extension.identifier.value, typeof provider.handleInteractiveEditorResponseFeedback === 'function');
52
+ this._proxy.$registerInteractiveEditorProvider(wrapper.handle, metadata?.label ?? extension.displayName ?? extension.name, extension.identifier.value, typeof provider.handleInteractiveEditorResponseFeedback === 'function', typeof provider.provideFollowups === 'function', metadata?.supportReportIssue ?? false);
52
53
  return toDisposable(() => {
53
54
  this._proxy.$unregisterInteractiveEditorProvider(wrapper.handle);
54
55
  this._inputProvider.delete(wrapper.handle);
@@ -74,6 +75,7 @@ class ExtHostInteractiveEditor {
74
75
  return {
75
76
  id,
76
77
  placeholder: session.placeholder,
78
+ input: session.input,
77
79
  slashCommands: session.slashCommands?.map(c => ({ command: c.command, detail: c.detail, refer: c.refer, executeImmediately: c.executeImmediately })),
78
80
  wholeRange: Range.from(session.wholeRange),
79
81
  message: session.message
@@ -97,57 +99,76 @@ class ExtHostInteractiveEditor {
97
99
  };
98
100
  let done = false;
99
101
  const progress = {
100
- report: value => {
101
- if (!request.live) {
102
+ report: async (value) => {
103
+ if (!request.live && value.edits?.length) {
102
104
  throw new Error('Progress reporting is only supported for live sessions');
103
105
  }
104
106
  if (done || token.isCancellationRequested) {
105
107
  return;
106
108
  }
107
- if (!value.message && !value.edits) {
108
- return;
109
- }
110
- this._proxy.$handleProgressChunk(request.requestId, {
109
+ await this._proxy.$handleProgressChunk(request.requestId, {
111
110
  message: value.message,
112
- edits: value.edits?.map(TextEdit.from)
111
+ edits: value.edits?.map(TextEdit.from),
112
+ editsShouldBeInstant: value.editsShouldBeInstant,
113
+ slashCommand: value.slashCommand?.command,
114
+ markdownFragment: MarkdownString$1.isMarkdownString(value.content) ? value.content.value : value.content
113
115
  });
114
116
  }
115
117
  };
116
- const task = entry.provider.provideInteractiveEditorResponse(sessionData.session, apiRequest, progress, token);
117
- Promise.resolve(task).finally(() => done = true);
118
- const res = await task;
119
- if (res) {
120
- const id = sessionData.responses.push(res) - 1;
121
- const stub = {
122
- wholeRange: Range.from(res.wholeRange),
123
- placeholder: res.placeholder,
124
- };
125
- if (ExtHostInteractiveEditor._isMessageResponse(res)) {
126
- return {
127
- ...stub,
128
- id,
129
- type: "message" ,
130
- message: MarkdownString.from(res.contents),
131
- };
132
- }
133
- const { edits } = res;
118
+ const task = Promise.resolve(entry.provider.provideInteractiveEditorResponse(sessionData.session, apiRequest, progress, token));
119
+ let res;
120
+ try {
121
+ res = await raceCancellation(task, token);
122
+ }
123
+ finally {
124
+ done = true;
125
+ }
126
+ if (!res) {
127
+ return undefined;
128
+ }
129
+ const id = sessionData.responses.push(res) - 1;
130
+ const stub = {
131
+ wholeRange: Range.from(res.wholeRange),
132
+ placeholder: res.placeholder,
133
+ };
134
+ if (ExtHostInteractiveEditor._isEditResponse(res)) {
135
+ const { edits, contents } = res;
136
+ const message = contents !== undefined ? MarkdownString.from(contents) : undefined;
134
137
  if (edits instanceof WorkspaceEdit) {
135
138
  return {
136
139
  ...stub,
137
140
  id,
138
141
  type: "bulkEdit" ,
139
142
  edits: WorkspaceEdit$1.from(edits),
143
+ message
140
144
  };
141
145
  }
142
- else if (Array.isArray(edits)) {
146
+ else {
143
147
  return {
144
148
  ...stub,
145
149
  id,
146
150
  type: "editorEdit" ,
147
151
  edits: ( edits.map(TextEdit.from)),
152
+ message
148
153
  };
149
154
  }
150
155
  }
156
+ return {
157
+ ...stub,
158
+ id,
159
+ type: "message" ,
160
+ message: MarkdownString.from(res.contents),
161
+ };
162
+ }
163
+ async $provideFollowups(handle, sessionId, responseId, token) {
164
+ const entry = this._inputProvider.get(handle);
165
+ const sessionData = this._inputSessions.get(sessionId);
166
+ const response = sessionData?.responses[responseId];
167
+ if (entry && response && entry.provider.provideFollowups) {
168
+ const task = Promise.resolve(entry.provider.provideFollowups(sessionData.session, response, token));
169
+ const followups = await raceCancellation(task, token);
170
+ return followups?.map(ChatReplyFollowup.from);
171
+ }
151
172
  return undefined;
152
173
  }
153
174
  $handleFeedback(handle, sessionId, responseId, kind) {
@@ -161,8 +182,8 @@ class ExtHostInteractiveEditor {
161
182
  }
162
183
  $releaseSession(handle, sessionId) {
163
184
  }
164
- static _isMessageResponse(thing) {
165
- return typeof thing === 'object' && typeof thing.contents === 'object';
185
+ static _isEditResponse(thing) {
186
+ return typeof thing === 'object' && typeof thing.edits === 'object';
166
187
  }
167
188
  }
168
189
  export { ExtHostInteractiveEditor };
@@ -3,6 +3,7 @@ import { Disposable } from './extHostTypes.js';
3
3
  class ExtHostIssueReporter {
4
4
  constructor(mainContext) {
5
5
  this._IssueUriRequestHandlers = ( new Map());
6
+ this._IssueDataProviders = ( new Map());
6
7
  this._proxy = ( mainContext.getProxy(MainContext.MainThreadIssueReporter));
7
8
  }
8
9
  async $getIssueReporterUri(extensionId, token) {
@@ -19,6 +20,34 @@ class ExtHostIssueReporter {
19
20
  }
20
21
  return result;
21
22
  }
23
+ async $getIssueReporterData(extensionId, token) {
24
+ if (this._IssueDataProviders.size === 0) {
25
+ throw new Error('No issue request handlers registered');
26
+ }
27
+ const provider = this._IssueDataProviders.get(extensionId);
28
+ if (!provider) {
29
+ throw new Error('Issue data provider not found');
30
+ }
31
+ const result = await provider.provideIssueData(token);
32
+ if (!result) {
33
+ throw new Error('Issue data provider returned no result');
34
+ }
35
+ return result;
36
+ }
37
+ async $getIssueReporterTemplate(extensionId, token) {
38
+ if (this._IssueDataProviders.size === 0) {
39
+ throw new Error('No issue request handlers registered');
40
+ }
41
+ const provider = this._IssueDataProviders.get(extensionId);
42
+ if (!provider) {
43
+ throw new Error('Issue data provider not found');
44
+ }
45
+ const result = await provider.provideIssueTemplate(token);
46
+ if (!result) {
47
+ throw new Error('Issue template provider returned no result');
48
+ }
49
+ return result;
50
+ }
22
51
  registerIssueUriRequestHandler(extension, provider) {
23
52
  const extensionId = extension.identifier.value;
24
53
  this._IssueUriRequestHandlers.set(extensionId, provider);
@@ -28,5 +57,14 @@ class ExtHostIssueReporter {
28
57
  this._IssueUriRequestHandlers.delete(extensionId);
29
58
  }));
30
59
  }
60
+ registerIssueDataProvider(extension, provider) {
61
+ const extensionId = extension.identifier.value;
62
+ this._IssueDataProviders.set(extensionId, provider);
63
+ this._proxy.$registerIssueDataProvider(extensionId);
64
+ return ( new Disposable(() => {
65
+ this._proxy.$unregisterIssueDataProvider(extensionId);
66
+ this._IssueDataProviders.delete(extensionId);
67
+ }));
68
+ }
31
69
  }
32
70
  export { ExtHostIssueReporter };