@codingame/monaco-vscode-chat-service-override 19.1.4 → 20.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 (211) hide show
  1. package/index.js +20 -8
  2. package/package.json +36 -31
  3. package/vscode/src/vs/base/common/policy.d.ts +14 -0
  4. package/vscode/src/vs/base/common/policy.js +11 -0
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +53 -43
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +54 -24
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +14 -14
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +15 -15
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +37 -25
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +4 -4
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +1 -1
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +6 -6
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +23 -11
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +9 -9
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.d.ts +1 -1
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +11 -11
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +83 -14
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +421 -21
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +1 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +20 -20
  24. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +215 -104
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +3 -1
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +9 -3
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.d.ts +3 -1
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +18 -6
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +4 -4
  31. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +20 -20
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +14 -14
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +1 -1
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +6 -3
  35. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +4 -2
  36. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +9 -6
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +11 -8
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +5 -3
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +16 -11
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +7 -23
  42. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +58 -326
  43. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +0 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +33 -30
  45. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +12 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +39 -17
  47. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +55 -0
  48. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +380 -0
  49. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +3 -2
  50. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +5 -5
  53. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.js +4 -2
  54. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +1 -1
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +22 -22
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +9 -4
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +44 -10
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +38 -0
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +145 -0
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +34 -34
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +7 -7
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +3 -3
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +36 -11
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +49 -0
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +407 -0
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.d.ts +12 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.js +738 -0
  71. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +142 -151
  73. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +1 -1
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +54 -54
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +20 -0
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +4 -3
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +5 -4
  78. package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +23 -7
  80. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
  82. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +1 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +13 -8
  84. package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-dark.svg +3 -0
  85. package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-light.svg +3 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +28 -0
  87. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSetup.css +7 -7
  88. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.d.ts +2 -2
  89. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +14 -14
  90. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +8 -8
  91. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +10 -10
  92. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.d.ts +1 -1
  93. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +11 -11
  94. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.d.ts +1 -1
  95. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +19 -19
  96. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.d.ts +1 -1
  97. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +14 -14
  98. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +3 -3
  100. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +4 -4
  101. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +10 -10
  102. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +11 -11
  103. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.d.ts +1 -7
  104. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +52 -90
  105. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +15 -15
  106. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +6 -6
  107. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +2 -2
  108. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +6 -2
  109. package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +9 -6
  110. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +11 -6
  111. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +137 -30
  112. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +8 -0
  113. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +1 -1
  114. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +3 -3
  115. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +27 -0
  116. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +44 -0
  117. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/config/configMigration.js +1 -1
  118. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/filePromptContentsProvider.js +2 -2
  119. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/promptContentsProviderBase.d.ts +1 -1
  120. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/promptContentsProviderBase.js +1 -1
  121. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +1 -1
  122. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.js +3 -5
  123. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.js +14 -14
  124. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkDiagnosticsProvider.js +1 -1
  125. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.js +1 -1
  126. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/providerInstanceManagerBase.js +2 -2
  127. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/basePromptParser.js +1 -1
  128. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase.js +4 -4
  129. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/instructionsHeader.d.ts +1 -1
  130. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/applyTo.js +3 -3
  131. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.js +1 -1
  132. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.js +1 -1
  133. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/tools.js +4 -4
  134. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/modeHeader.d.ts +1 -1
  135. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.d.ts +1 -1
  136. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.js +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/topError.js +9 -9
  138. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +1 -1
  139. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +8 -8
  140. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +1 -1
  141. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +2 -2
  142. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +27 -27
  143. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
  144. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
  145. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +9 -9
  146. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
  147. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +4 -4
  148. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +104 -0
  149. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +667 -0
  150. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +14 -14
  151. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -1
  152. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  153. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
  154. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  155. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/media/terminalChatWidget.css +56 -0
  156. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.d.ts +1 -0
  157. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +14 -0
  158. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.d.ts +11 -0
  159. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +111 -0
  160. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.d.ts +10 -0
  161. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +52 -0
  162. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.d.ts +1 -0
  163. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +262 -0
  164. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +35 -0
  165. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +129 -0
  166. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatControllerHolder.d.ts +3 -0
  167. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatControllerHolder.js +8 -0
  168. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.d.ts +9 -0
  169. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +30 -0
  170. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +72 -0
  171. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +411 -0
  172. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +3 -0
  173. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +59 -0
  174. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.d.ts +51 -0
  175. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.js +163 -0
  176. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.d.ts +24 -0
  177. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +164 -0
  178. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +14 -0
  179. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +101 -0
  180. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +16 -0
  181. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +52 -0
  182. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +12 -0
  183. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +71 -0
  184. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +14 -0
  185. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +94 -0
  186. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/getTerminalOutputTool.d.ts +11 -0
  187. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/getTerminalOutputTool.js +44 -0
  188. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +3 -0
  189. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +18 -0
  190. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +3 -0
  191. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +13 -0
  192. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalTool.d.ts +55 -0
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalTool.js +603 -0
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +3 -0
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +113 -0
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/createAndRunTaskTool.d.ts +21 -0
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/createAndRunTaskTool.js +227 -0
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.d.ts +19 -0
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.js +88 -0
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/runTaskTool.d.ts +21 -0
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/runTaskTool.js +140 -0
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.d.ts +22 -0
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.js +80 -0
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.d.ts +1 -0
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.js +40 -0
  206. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +1 -0
  207. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +36 -0
  208. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +20 -0
  209. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +114 -0
  210. package/vscode/src/vs/workbench/contrib/chat/browser/media/google-mono-dark.svg +0 -3
  211. package/vscode/src/vs/workbench/contrib/chat/browser/media/google-mono-light.svg +0 -3
@@ -8,12 +8,12 @@ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log
8
8
  import { Registry } from '@codingame/monaco-vscode-api/vscode/vs/platform/registry/common/platform';
9
9
  import { checkProposedApiEnabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions';
10
10
  import { ExtensionsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionsRegistry';
11
- import { ChatViewsWelcomeExtensions } from '@codingame/monaco-vscode-c465110a-57c0-59d7-a6b2-be0a4db7e517-common/vscode/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcome';
11
+ import { ChatViewsWelcomeExtensions } from '@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcome';
12
12
 
13
13
  const chatViewsWelcomeExtensionPoint = ExtensionsRegistry.registerExtensionPoint({
14
14
  extensionPoint: 'chatViewsWelcome',
15
15
  jsonSchema: {
16
- description: ( localize(5224, 'Contributes a welcome message to a chat view')),
16
+ description: ( localize(5333, 'Contributes a welcome message to a chat view')),
17
17
  type: 'array',
18
18
  items: {
19
19
  additionalProperties: false,
@@ -21,22 +21,22 @@ const chatViewsWelcomeExtensionPoint = ExtensionsRegistry.registerExtensionPoint
21
21
  properties: {
22
22
  icon: {
23
23
  type: 'string',
24
- description: ( localize(5225, 'The icon for the welcome message.')),
24
+ description: ( localize(5334, 'The icon for the welcome message.')),
25
25
  },
26
26
  title: {
27
27
  type: 'string',
28
- description: ( localize(5226, 'The title of the welcome message.')),
28
+ description: ( localize(5335, 'The title of the welcome message.')),
29
29
  },
30
30
  content: {
31
31
  type: 'string',
32
32
  description: ( localize(
33
- 5227,
33
+ 5336,
34
34
  'The content of the welcome message. The first command link will be rendered as a button.'
35
35
  )),
36
36
  },
37
37
  when: {
38
38
  type: 'string',
39
- description: ( localize(5228, 'Condition when the welcome message is shown.')),
39
+ description: ( localize(5337, 'Condition when the welcome message is shown.')),
40
40
  }
41
41
  }
42
42
  },
@@ -1,6 +1,6 @@
1
1
  import { DeferredPromise } from "@codingame/monaco-vscode-api/vscode/vs/base/common/async";
2
2
  import { IMarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
3
- import { IChatExtensionsContent, IChatTerminalToolInvocationData, IChatToolInputInvocationData, IChatToolInvocation, IChatToolInvocationSerialized } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService";
3
+ import { IChatExtensionsContent, IChatToolInputInvocationData, IChatTodoListContent, IChatToolInvocation, IChatToolInvocationSerialized, type IChatTerminalToolInvocationData } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService";
4
4
  import { IPreparedToolInvocation, IToolConfirmationMessages, IToolData, IToolProgressStep, IToolResult } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
5
5
  export declare class ChatToolInvocation implements IChatToolInvocation {
6
6
  readonly toolCallId: string;
@@ -21,7 +21,7 @@ export declare class ChatToolInvocation implements IChatToolInvocation {
21
21
  private _confirmationMessages;
22
22
  readonly presentation: IPreparedToolInvocation["presentation"];
23
23
  readonly toolId: string;
24
- readonly toolSpecificData?: IChatTerminalToolInvocationData | IChatToolInputInvocationData | IChatExtensionsContent;
24
+ readonly toolSpecificData?: IChatTerminalToolInvocationData | IChatToolInputInvocationData | IChatExtensionsContent | IChatTodoListContent;
25
25
  readonly progress: import("@codingame/monaco-vscode-api/vscode/vs/base/common/observable").ISettableObservable<{
26
26
  message?: string | IMarkdownString;
27
27
  progress: number;
@@ -1,7 +1,9 @@
1
1
 
2
2
  import { DeferredPromise } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
3
+ import { encodeBase64 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
3
4
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
4
5
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
6
+ import { isToolResultOutputDetails } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
5
7
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
6
8
 
7
9
  class ChatToolInvocation {
@@ -27,7 +29,7 @@ class ChatToolInvocation {
27
29
  this._isCompleteDeferred = ( new DeferredPromise());
28
30
  this._confirmDeferred = ( new DeferredPromise());
29
31
  this.progress = observableValue(this, { progress: 0 });
30
- const defaultMessage = ( localize(5297, "Using {0}", `"${toolData.displayName}"`));
32
+ const defaultMessage = ( localize(5412, "Using {0}", `"${toolData.displayName}"`));
31
33
  const invocationMessage = preparedInvocation?.invocationMessage ?? defaultMessage;
32
34
  this.invocationMessage = invocationMessage;
33
35
  this.pastTenseMessage = preparedInvocation?.pastTenseMessage;
@@ -74,7 +76,9 @@ class ChatToolInvocation {
74
76
  originMessage: this.originMessage,
75
77
  isConfirmed: this._isConfirmed,
76
78
  isComplete: this._isComplete,
77
- resultDetails: this._resultDetails,
79
+ resultDetails: isToolResultOutputDetails(this._resultDetails)
80
+ ? { output: { type: 'data', mimeType: this._resultDetails.output.mimeType, base64Data: encodeBase64(this._resultDetails.output.value) } }
81
+ : this._resultDetails,
78
82
  toolSpecificData: this.toolSpecificData,
79
83
  toolCallId: this.toolCallId,
80
84
  toolId: this.toolId,
@@ -6,7 +6,7 @@ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/l
6
6
  import { newWriteableStream } from '@codingame/monaco-vscode-api/vscode/vs/base/common/stream';
7
7
  import { FileSystemProviderCapabilities, FileType, createFileSystemProviderError, FileSystemProviderErrorCode } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
8
8
  import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
9
- import { ChatResponseResource } from '@codingame/monaco-vscode-9911aec2-e4dd-5483-8369-9d695cc70d8a-common/vscode/vs/workbench/contrib/chat/common/chatModel';
9
+ import { ChatResponseResource } from '@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel';
10
10
  import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
11
11
  import { isToolResultInputOutputDetails } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
12
12
 
@@ -31,17 +31,17 @@ let ChatResponseResourceFileSystemProvider = class ChatResponseResourceFileSyste
31
31
  }
32
32
  readFileStream(resource) {
33
33
  const stream = newWriteableStream(data => VSBuffer.concat(( data.map(data => VSBuffer.wrap(data)))).buffer);
34
- stream.end(this.lookupURI(resource));
34
+ Promise.resolve(this.lookupURI(resource)).then(v => stream.end(v));
35
35
  return stream;
36
36
  }
37
- stat(resource) {
38
- const r = this.lookupURI(resource);
39
- return Promise.resolve({
37
+ async stat(resource) {
38
+ const r = await this.lookupURI(resource);
39
+ return {
40
40
  type: FileType.File,
41
41
  ctime: 0,
42
42
  mtime: 0,
43
43
  size: r.length,
44
- });
44
+ };
45
45
  }
46
46
  delete() {
47
47
  throw createFileSystemProviderError('fs is readonly', FileSystemProviderErrorCode.NoPermissions);
@@ -82,6 +82,9 @@ let ChatResponseResourceFileSystemProvider = class ChatResponseResourceFileSyste
82
82
  if (!part) {
83
83
  throw createFileSystemProviderError(`Tool does not have part`, FileSystemProviderErrorCode.FileNotFound);
84
84
  }
85
+ if (part.type === 'ref') {
86
+ return this._fileService.readFile(part.uri).then(r => r.value.buffer);
87
+ }
85
88
  return part.isText ? ( new TextEncoder()).encode(part.value) : decodeBase64(part.value).buffer;
86
89
  }
87
90
  };
@@ -1,6 +1,7 @@
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
3
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
4
+ import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
4
5
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
5
6
  import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
6
7
  import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
@@ -8,13 +9,14 @@ import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log
8
9
  import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
9
10
  import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
10
11
  import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
11
- import { IWorkbenchAssignmentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/assignment/common/assignmentService.service";
12
12
  import { IExtensionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service";
13
+ import { IMcpService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service";
13
14
  import { IChatAgentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatAgents.service";
14
- import { ChatModel, IChatModel, IChatRequestModel, IChatRequestVariableData, IExportableChatData, ISerializableChatData } from "@codingame/monaco-vscode-9911aec2-e4dd-5483-8369-9d695cc70d8a-common/vscode/vs/workbench/contrib/chat/common/chatModel";
15
- import { IParsedChatRequest } from "@codingame/monaco-vscode-9ebd6daf-8734-5a28-ad24-b238f5e5819d-common/vscode/vs/workbench/contrib/chat/common/chatParserTypes";
15
+ import { ChatModel, IChatModel, IChatRequestModel, IChatRequestVariableData, IExportableChatData, ISerializableChatData } from "@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel";
16
+ import { IParsedChatRequest } from "@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/common/chatParserTypes";
16
17
  import { IChatCompleteResponse, IChatDetail, IChatSendRequestData, IChatSendRequestOptions, IChatTransferredSessionData, IChatUserActionEvent } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService";
17
18
  import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service";
19
+ import { IChatSessionsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service";
18
20
  import { IChatSlashCommandService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSlashCommands.service";
19
21
  import { IChatTransferService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatTransferService.service";
20
22
  import { ChatAgentLocation } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
@@ -29,11 +31,13 @@ export declare class ChatService extends Disposable implements IChatService {
29
31
  private readonly chatSlashCommandService;
30
32
  private readonly chatAgentService;
31
33
  private readonly configurationService;
32
- private readonly experimentService;
33
34
  private readonly chatTransferService;
34
35
  private readonly languageModelsService;
36
+ private readonly chatSessionService;
37
+ private readonly mcpService;
35
38
  _serviceBrand: undefined;
36
39
  private readonly _sessionModels;
40
+ private readonly _contentProviderSessionModels;
37
41
  private readonly _pendingRequests;
38
42
  private _persistedSessions;
39
43
  private _deletedChatIds;
@@ -53,10 +57,11 @@ export declare class ChatService extends Disposable implements IChatService {
53
57
  private readonly _sessionFollowupCancelTokens;
54
58
  private readonly _chatServiceTelemetry;
55
59
  private readonly _chatSessionStore;
60
+ readonly requestInProgressObs: IObservable<boolean>;
56
61
  private get useFileStorage();
57
62
  get edits2Enabled(): boolean;
58
63
  private get isEmptyWindow();
59
- constructor(storageService: IStorageService, logService: ILogService, extensionService: IExtensionService, instantiationService: IInstantiationService, telemetryService: ITelemetryService, workspaceContextService: IWorkspaceContextService, chatSlashCommandService: IChatSlashCommandService, chatAgentService: IChatAgentService, configurationService: IConfigurationService, experimentService: IWorkbenchAssignmentService, chatTransferService: IChatTransferService, languageModelsService: ILanguageModelsService);
64
+ constructor(storageService: IStorageService, logService: ILogService, extensionService: IExtensionService, instantiationService: IInstantiationService, telemetryService: ITelemetryService, workspaceContextService: IWorkspaceContextService, chatSlashCommandService: IChatSlashCommandService, chatAgentService: IChatAgentService, configurationService: IConfigurationService, chatTransferService: IChatTransferService, languageModelsService: ILanguageModelsService, chatSessionService: IChatSessionsService, mcpService: IMcpService);
60
65
  isEnabled(location: ChatAgentLocation): boolean;
61
66
  private saveState;
62
67
  private syncEmptyWindowChats;
@@ -77,6 +82,7 @@ export declare class ChatService extends Disposable implements IChatService {
77
82
  getOrRestoreSession(sessionId: string): Promise<ChatModel | undefined>;
78
83
  isPersistedSessionEmpty(sessionId: string): boolean;
79
84
  loadSessionFromContent(data: IExportableChatData | ISerializableChatData): IChatModel | undefined;
85
+ loadSessionForResource(resource: URI, location: ChatAgentLocation, token: CancellationToken): Promise<IChatModel | undefined>;
80
86
  resendRequest(request: IChatRequestModel, options?: IChatSendRequestOptions): Promise<void>;
81
87
  sendRequest(sessionId: string, request: string, options?: IChatSendRequestOptions): Promise<IChatSendRequestData | undefined>;
82
88
  private parseChatRequest;
@@ -84,7 +90,6 @@ export declare class ChatService extends Disposable implements IChatService {
84
90
  private _sendRequestAsync;
85
91
  private resolveModelId;
86
92
  private prepareContext;
87
- private checkAgentAllowed;
88
93
  private attachmentKindsForTelemetry;
89
94
  private getHistoryEntriesFromModel;
90
95
  removeRequest(sessionId: string, requestId: string): Promise<void>;
@@ -8,10 +8,12 @@ import { ErrorNoTelemetry } from '@codingame/monaco-vscode-api/vscode/vs/base/co
8
8
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
9
9
  import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
10
10
  import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
11
- import { Disposable, DisposableMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
11
+ import { Disposable, DisposableMap, DisposableStore, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
12
12
  import { revive } from '@codingame/monaco-vscode-api/vscode/vs/base/common/marshalling';
13
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
13
14
  import { StopWatch } from '@codingame/monaco-vscode-api/vscode/vs/base/common/stopwatch';
14
15
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
16
+ import { OffsetRange } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/ranges/offsetRange';
15
17
  import { isLocation } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages';
16
18
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
17
19
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
@@ -22,21 +24,26 @@ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode
22
24
  import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
23
25
  import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
24
26
  import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
25
- import { IWorkbenchAssignmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/assignment/common/assignmentService.service';
26
27
  import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
28
+ import { IMcpService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
27
29
  import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
28
- import { normalizeSerializableChatData, ChatModel, ChatRequestRemovalReason, updateRanges, toChatHistoryContent, ChatRequestModel } from '@codingame/monaco-vscode-9911aec2-e4dd-5483-8369-9d695cc70d8a-common/vscode/vs/workbench/contrib/chat/common/chatModel';
29
- import { ChatRequestAgentPart, ChatRequestAgentSubcommandPart, chatSubcommandLeader, chatAgentLeader, ChatRequestSlashCommandPart, getPromptText } from '@codingame/monaco-vscode-9ebd6daf-8734-5a28-ad24-b238f5e5819d-common/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
30
- import { ChatRequestParser } from '@codingame/monaco-vscode-9ebd6daf-8734-5a28-ad24-b238f5e5819d-common/vscode/vs/workbench/contrib/chat/common/chatRequestParser';
30
+ import { normalizeSerializableChatData, ChatModel, ChatRequestRemovalReason, updateRanges, toChatHistoryContent, ChatRequestModel } from '@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel';
31
+ import { ChatRequestTextPart, ChatRequestAgentPart, ChatRequestAgentSubcommandPart, chatSubcommandLeader, chatAgentLeader, ChatRequestSlashCommandPart, getPromptText } from '@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
32
+ import { ChatRequestParser } from '@codingame/monaco-vscode-0af61f78-dfc5-57ba-8d32-66268c8de38d-common/vscode/vs/workbench/contrib/chat/common/chatRequestParser';
31
33
  import { ChatServiceTelemetry } from './chatServiceTelemetry.js';
34
+ import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service';
32
35
  import { ChatSessionStore } from './chatSessionStore.js';
33
36
  import { IChatSlashCommandService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSlashCommands.service';
34
37
  import { IChatTransferService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatTransferService.service';
38
+ import { ChatSessionUri } from '@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/common/chatUri';
35
39
  import { isImageVariableEntry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatVariableEntries';
36
40
  import { ChatConfiguration, ChatAgentLocation, ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
37
41
  import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
38
42
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
39
43
  import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
44
+ import { ObservableMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/map';
45
+ import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
46
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
40
47
 
41
48
  const serializedChatKey = 'interactive.sessions';
42
49
  const globalChatKey = 'chat.workspaceTransfer';
@@ -75,7 +82,7 @@ let ChatService = class ChatService extends Disposable {
75
82
  const workspace = this.workspaceContextService.getWorkspace();
76
83
  return !workspace.configuration && workspace.folders.length === 0;
77
84
  }
78
- constructor(storageService, logService, extensionService, instantiationService, telemetryService, workspaceContextService, chatSlashCommandService, chatAgentService, configurationService, experimentService, chatTransferService, languageModelsService) {
85
+ constructor(storageService, logService, extensionService, instantiationService, telemetryService, workspaceContextService, chatSlashCommandService, chatAgentService, configurationService, chatTransferService, languageModelsService, chatSessionService, mcpService) {
79
86
  super();
80
87
  this.storageService = storageService;
81
88
  this.logService = logService;
@@ -86,10 +93,12 @@ let ChatService = class ChatService extends Disposable {
86
93
  this.chatSlashCommandService = chatSlashCommandService;
87
94
  this.chatAgentService = chatAgentService;
88
95
  this.configurationService = configurationService;
89
- this.experimentService = experimentService;
90
96
  this.chatTransferService = chatTransferService;
91
97
  this.languageModelsService = languageModelsService;
92
- this._sessionModels = this._register(( new DisposableMap()));
98
+ this.chatSessionService = chatSessionService;
99
+ this.mcpService = mcpService;
100
+ this._sessionModels = ( new ObservableMap());
101
+ this._contentProviderSessionModels = ( new Map());
93
102
  this._pendingRequests = this._register(( new DisposableMap()));
94
103
  this._deletedChatIds = ( new Set());
95
104
  this._onDidSubmitRequest = this._register(( new Emitter()));
@@ -128,6 +137,10 @@ let ChatService = class ChatService extends Disposable {
128
137
  this._chatSessionStore.migrateDataIfNeeded(() => this._persistedSessions);
129
138
  }
130
139
  this._register(storageService.onWillSaveState(() => this.saveState()));
140
+ this.requestInProgressObs = derived(reader => {
141
+ const models = ( this._sessionModels.observable.read(reader).values());
142
+ return ( Array.from(models).some(model => model.requestInProgressObs.read(reader)));
143
+ });
131
144
  }
132
145
  isEnabled(location) {
133
146
  return this.chatAgentService.getContributedDefaultAgent(location) !== undefined;
@@ -281,7 +294,7 @@ let ChatService = class ChatService extends Disposable {
281
294
  const liveSessionItems = ( Array.from(( this._sessionModels.values()))
282
295
  .filter(session => !session.isImported)
283
296
  .map(session => {
284
- const title = session.title || ( localize(5298, "New Chat"));
297
+ const title = session.title || ( localize(5413, "New Chat"));
285
298
  return {
286
299
  sessionId: session.sessionId,
287
300
  title,
@@ -315,7 +328,7 @@ let ChatService = class ChatService extends Disposable {
315
328
  const liveSessionItems = ( Array.from(( this._sessionModels.values()))
316
329
  .filter(session => !session.isImported)
317
330
  .map(session => {
318
- const title = session.title || ( localize(5298, "New Chat"));
331
+ const title = session.title || ( localize(5413, "New Chat"));
319
332
  return {
320
333
  sessionId: session.sessionId,
321
334
  title,
@@ -416,6 +429,89 @@ let ChatService = class ChatService extends Disposable {
416
429
  loadSessionFromContent(data) {
417
430
  return this._startSession(data, data.initialLocation ?? ChatAgentLocation.Panel, true, CancellationToken.None);
418
431
  }
432
+ async loadSessionForResource(resource, location, token) {
433
+ const parsed = ChatSessionUri.parse(resource);
434
+ if (!parsed) {
435
+ throw ( new Error('Invalid chat session URI'));
436
+ }
437
+ const existing = this._contentProviderSessionModels.get(parsed.chatSessionType)?.get(parsed.sessionId);
438
+ if (existing) {
439
+ return existing.model;
440
+ }
441
+ const chatSessionType = parsed.chatSessionType;
442
+ const content = await this.chatSessionService.provideChatSessionContent(chatSessionType, parsed.sessionId, CancellationToken.None);
443
+ const model = this._startSession(undefined, location, true, CancellationToken.None);
444
+ if (!( this._contentProviderSessionModels.has(chatSessionType))) {
445
+ this._contentProviderSessionModels.set(chatSessionType, ( new Map()));
446
+ }
447
+ const disposables = ( new DisposableStore());
448
+ this._contentProviderSessionModels.get(chatSessionType).set(parsed.sessionId, { model, disposables });
449
+ disposables.add(model.onDidDispose(() => {
450
+ this._contentProviderSessionModels?.get(chatSessionType)?.delete(parsed.sessionId);
451
+ content.dispose();
452
+ }));
453
+ let lastRequest;
454
+ for (const message of content.history) {
455
+ if (message.type === 'request') {
456
+ const requestText = message.prompt;
457
+ const parsedRequest = {
458
+ text: requestText,
459
+ parts: [( new ChatRequestTextPart(( new OffsetRange(0, requestText.length)), { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: requestText.length + 1 }, requestText))]
460
+ };
461
+ lastRequest = model.addRequest(parsedRequest, { variables: [] },
462
+ 0,
463
+ undefined,
464
+ undefined,
465
+ undefined,
466
+ undefined,
467
+ undefined,
468
+ true
469
+ );
470
+ }
471
+ else {
472
+ if (lastRequest) {
473
+ for (const part of message.parts) {
474
+ model.acceptResponseProgress(lastRequest, part);
475
+ }
476
+ }
477
+ }
478
+ }
479
+ if (content.progressEvent && lastRequest) {
480
+ const initialCancellationRequest = this.instantiationService.createInstance(CancellableRequest, ( new CancellationTokenSource()), undefined);
481
+ this._pendingRequests.set(model.sessionId, initialCancellationRequest);
482
+ const cancellationListener = ( new MutableDisposable());
483
+ const createCancellationListener = (token) => {
484
+ return token.onCancellationRequested(() => {
485
+ content.interruptActiveResponseCallback?.().then(userConfirmedInterruption => {
486
+ if (!userConfirmedInterruption) {
487
+ const newCancellationRequest = this.instantiationService.createInstance(CancellableRequest, ( new CancellationTokenSource()), undefined);
488
+ this._pendingRequests.set(model.sessionId, newCancellationRequest);
489
+ cancellationListener.value = createCancellationListener(newCancellationRequest.cancellationTokenSource.token);
490
+ }
491
+ });
492
+ });
493
+ };
494
+ cancellationListener.value = createCancellationListener(initialCancellationRequest.cancellationTokenSource.token);
495
+ disposables.add(cancellationListener);
496
+ disposables.add(content.progressEvent(e => {
497
+ for (const progress of e) {
498
+ if (progress.kind === 'progressMessage' && progress.content.value === 'Session completed') {
499
+ model?.completeResponse(lastRequest);
500
+ cancellationListener.clear();
501
+ }
502
+ else {
503
+ model?.acceptResponseProgress(lastRequest, progress);
504
+ }
505
+ }
506
+ }));
507
+ }
508
+ else {
509
+ if (lastRequest) {
510
+ model.completeResponse(lastRequest);
511
+ }
512
+ }
513
+ return model;
514
+ }
419
515
  async resendRequest(request, options) {
420
516
  const model = this._sessionModels.get(request.session.sessionId);
421
517
  if (!model && model !== request.session) {
@@ -513,7 +609,8 @@ let ChatService = class ChatService extends Disposable {
513
609
  responseCreatedComplete = true;
514
610
  }
515
611
  }
516
- const source = ( new CancellationTokenSource());
612
+ const store = ( new DisposableStore());
613
+ const source = store.add(( new CancellationTokenSource()));
517
614
  const token = source.token;
518
615
  const sendRequestInternal = async () => {
519
616
  const progressCallback = (progress) => {
@@ -537,8 +634,11 @@ let ChatService = class ChatService extends Disposable {
537
634
  let detectedAgent;
538
635
  let detectedCommand;
539
636
  const stopWatch = ( new StopWatch(false));
540
- const listener = token.onCancellationRequested(() => {
637
+ store.add(token.onCancellationRequested(() => {
541
638
  this.trace('sendRequest', `Request for session ${model.sessionId} was cancelled`);
639
+ if (!request) {
640
+ return;
641
+ }
542
642
  this.telemetryService.publicLog2('interactiveSessionProviderInvoked', {
543
643
  timeToFirstProgress: undefined,
544
644
  totalTime: stopWatch.elapsed(),
@@ -557,7 +657,7 @@ let ChatService = class ChatService extends Disposable {
557
657
  model: this.resolveModelId(options?.userSelectedModelId),
558
658
  });
559
659
  model.cancelRequest(request);
560
- });
660
+ }));
561
661
  try {
562
662
  let rawResult;
563
663
  let agentOrCommandFollowups = undefined;
@@ -579,6 +679,17 @@ let ChatService = class ChatService extends Disposable {
579
679
  variableData = updateRanges(variableData, promptTextResult.diff);
580
680
  message = promptTextResult.message;
581
681
  }
682
+ let isInitialTools = true;
683
+ store.add(autorun(reader => {
684
+ const tools = options?.userSelectedTools?.read(reader);
685
+ if (isInitialTools) {
686
+ isInitialTools = false;
687
+ return;
688
+ }
689
+ if (tools) {
690
+ this.chatAgentService.setRequestTools(agent.id, request.id, { userSelectedTools: tools });
691
+ }
692
+ }));
582
693
  return {
583
694
  sessionId,
584
695
  requestId: request.id,
@@ -594,7 +705,7 @@ let ChatService = class ChatService extends Disposable {
594
705
  acceptedConfirmationData: options?.acceptedConfirmationData,
595
706
  rejectedConfirmationData: options?.rejectedConfirmationData,
596
707
  userSelectedModelId: options?.userSelectedModelId,
597
- userSelectedTools: options?.userSelectedTools,
708
+ userSelectedTools: options?.userSelectedTools?.get(),
598
709
  modeInstructions: options?.modeInstructions,
599
710
  editedFileEvents: request.editedFileEvents
600
711
  };
@@ -611,8 +722,10 @@ let ChatService = class ChatService extends Disposable {
611
722
  }
612
723
  const agent = (detectedAgent ?? agentPart?.agent ?? defaultAgent);
613
724
  const command = detectedCommand ?? agentSlashCommandPart?.command;
614
- await this.extensionService.activateByEvent(`onChatParticipant:${agent.id}`);
615
- await this.checkAgentAllowed(agent);
725
+ await Promise.all([
726
+ this.extensionService.activateByEvent(`onChatParticipant:${agent.id}`),
727
+ this.mcpService.autostart(token),
728
+ ]);
616
729
  const history = this.getHistoryEntriesFromModel(requests, model.sessionId, location, agent.id);
617
730
  const requestProps = prepareChatAgentRequest(agent, command, enableCommandDetection, request , !!detectedAgent);
618
731
  const pendingRequest = this._pendingRequests.get(sessionId);
@@ -654,7 +767,7 @@ let ChatService = class ChatService extends Disposable {
654
767
  else {
655
768
  if (!rawResult) {
656
769
  this.trace('sendRequest', `Provider returned no response for session ${model.sessionId}`);
657
- rawResult = { errorDetails: { message: ( localize(5299, "Provider returned null response")) } };
770
+ rawResult = { errorDetails: { message: ( localize(5414, "Provider returned null response")) } };
658
771
  }
659
772
  const result = rawResult.errorDetails?.responseIsFiltered ? 'filtered' :
660
773
  rawResult.errorDetails && gotProgress ? 'errorWithOutput' :
@@ -723,7 +836,7 @@ let ChatService = class ChatService extends Disposable {
723
836
  }
724
837
  }
725
838
  finally {
726
- listener.dispose();
839
+ store.dispose();
727
840
  }
728
841
  };
729
842
  const rawResponsePromise = sendRequestInternal();
@@ -756,14 +869,6 @@ let ChatService = class ChatService extends Disposable {
756
869
  });
757
870
  return attachedContextVariables;
758
871
  }
759
- async checkAgentAllowed(agent) {
760
- if (agent.modes.includes(ChatModeKind.Agent)) {
761
- const enabled = await this.experimentService.getTreatment('chatAgentEnabled');
762
- if (enabled === false) {
763
- throw ( new Error('Agent is currently disabled'));
764
- }
765
- }
766
- }
767
872
  attachmentKindsForTelemetry(variableData) {
768
873
  return ( variableData.variables.map(v => {
769
874
  if (v.kind === 'implicit') {
@@ -921,7 +1026,8 @@ let ChatService = class ChatService extends Disposable {
921
1026
  }
922
1027
  }
923
1028
  }
924
- this._sessionModels.deleteAndDispose(sessionId);
1029
+ this._sessionModels.delete(sessionId);
1030
+ model.dispose();
925
1031
  this._pendingRequests.get(sessionId)?.cancel();
926
1032
  this._pendingRequests.deleteAndDispose(sessionId);
927
1033
  this._onDidDisposeSession.fire({ sessionId, reason: 'cleared' });
@@ -974,9 +1080,10 @@ ChatService = ( __decorate([
974
1080
  ( __param(6, IChatSlashCommandService)),
975
1081
  ( __param(7, IChatAgentService)),
976
1082
  ( __param(8, IConfigurationService)),
977
- ( __param(9, IWorkbenchAssignmentService)),
978
- ( __param(10, IChatTransferService)),
979
- ( __param(11, ILanguageModelsService))
1083
+ ( __param(9, IChatTransferService)),
1084
+ ( __param(10, ILanguageModelsService)),
1085
+ ( __param(11, IChatSessionsService)),
1086
+ ( __param(12, IMcpService))
980
1087
  ], ChatService));
981
1088
  function getCodeBlocks(text) {
982
1089
  const lines = text.split('\n');
@@ -52,6 +52,14 @@ let ChatServiceTelemetry = class ChatServiceTelemetry {
52
52
  command: action.command,
53
53
  });
54
54
  }
55
+ else if (action.action.kind === 'chatEditingHunkAction') {
56
+ this.telemetryService.publicLog2('chatEditHunk', {
57
+ agentId: action.agentId ?? '',
58
+ outcome: action.action.outcome,
59
+ lineCount: action.action.lineCount,
60
+ hasRemainingEdits: action.action.hasRemainingEdits,
61
+ });
62
+ }
55
63
  }
56
64
  retrievedFollowups(agentId, command, numFollowups) {
57
65
  this.telemetryService.publicLog2('chatFollowupsRetrieved', {
@@ -8,7 +8,7 @@ import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platfo
8
8
  import { IUserDataProfilesService } from "@codingame/monaco-vscode-api/vscode/vs/platform/userDataProfile/common/userDataProfile.service";
9
9
  import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
10
10
  import { ILifecycleService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service";
11
- import { ChatModel, ISerializableChatData, ISerializableChatsData } from "@codingame/monaco-vscode-9911aec2-e4dd-5483-8369-9d695cc70d8a-common/vscode/vs/workbench/contrib/chat/common/chatModel";
11
+ import { ChatModel, ISerializableChatData, ISerializableChatsData } from "@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel";
12
12
  import { ChatAgentLocation, ChatModeKind } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
13
13
  export declare class ChatSessionStore extends Disposable {
14
14
  private readonly fileService;
@@ -18,7 +18,7 @@ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platfo
18
18
  import { IUserDataProfilesService } from '@codingame/monaco-vscode-api/vscode/vs/platform/userDataProfile/common/userDataProfile.service';
19
19
  import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
20
20
  import { ILifecycleService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service';
21
- import { normalizeSerializableChatData, ChatModel } from '@codingame/monaco-vscode-9911aec2-e4dd-5483-8369-9d695cc70d8a-common/vscode/vs/workbench/contrib/chat/common/chatModel';
21
+ import { normalizeSerializableChatData, ChatModel } from '@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel';
22
22
 
23
23
  const maxPersistedSessions = 25;
24
24
  const ChatIndexStorageKey = 'chat.ChatSessionStore.index';
@@ -51,7 +51,7 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
51
51
  }
52
52
  e.join(this.storeTask, {
53
53
  id: 'join.chatSessionStore',
54
- label: ( localize(5300, "Saving chat history"))
54
+ label: ( localize(5415, "Saving chat history"))
55
55
  });
56
56
  }));
57
57
  }
@@ -324,7 +324,7 @@ function isChatSessionIndex(data) {
324
324
  }
325
325
  function getSessionMetadata(session) {
326
326
  const title = session instanceof ChatModel ?
327
- (session.title || ( localize(5301, "New Chat"))) :
327
+ (session.title || ( localize(5416, "New Chat"))) :
328
328
  session.customTitle ?? ChatModel.getDefaultTitle(session.requests);
329
329
  return {
330
330
  sessionId: session.sessionId,
@@ -0,0 +1,27 @@
1
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
+ import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
3
+ import { IChatTodoListService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatTodoListService.service";
4
+ export interface IChatTodo {
5
+ id: number;
6
+ title: string;
7
+ description?: string;
8
+ status: "not-started" | "in-progress" | "completed";
9
+ }
10
+ export interface IChatTodoListStorage {
11
+ getTodoList(sessionId: string): IChatTodo[];
12
+ setTodoList(sessionId: string, todoList: IChatTodo[]): void;
13
+ }
14
+ export declare class ChatTodoListStorage implements IChatTodoListStorage {
15
+ private memento;
16
+ constructor(storageService: IStorageService);
17
+ private getSessionData;
18
+ private setSessionData;
19
+ getTodoList(sessionId: string): IChatTodo[];
20
+ setTodoList(sessionId: string, todoList: IChatTodo[]): void;
21
+ }
22
+ export declare class ChatTodoListService extends Disposable implements IChatTodoListService {
23
+ readonly _serviceBrand: undefined;
24
+ private todoListStorage;
25
+ constructor(storageService: IStorageService);
26
+ getChatTodoListStorage(): IChatTodoListStorage;
27
+ }