@codingame/monaco-vscode-chat-service-override 23.2.2 → 24.1.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 (273) hide show
  1. package/index.js +13 -10
  2. package/package.json +5 -41
  3. package/vscode/src/vs/platform/domWidget/browser/domWidget.d.ts +52 -0
  4. package/vscode/src/vs/platform/domWidget/browser/domWidget.js +53 -0
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +10 -10
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +61 -50
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.d.ts +18 -0
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +152 -0
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +14 -14
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +37 -28
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +9 -9
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +3 -5
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +7 -11
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +10 -10
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +12 -14
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +21 -18
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +27 -18
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.d.ts +1 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +11 -11
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +6 -27
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +44 -208
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -17
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +17 -17
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +1 -1
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +23 -24
  30. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -0
  31. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +140 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +85 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +358 -0
  34. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +55 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +222 -0
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +37 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +241 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.d.ts +13 -0
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +27 -0
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +11 -19
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +67 -230
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +65 -33
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +186 -62
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +23 -0
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +140 -0
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +2 -7
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +115 -29
  48. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +389 -166
  49. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +9 -6
  50. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +22 -16
  51. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.d.ts +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +8 -8
  53. package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.d.ts +10 -3
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.js +63 -3
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +7 -3
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +14 -5
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +173 -32
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +1 -0
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +66 -17
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +32 -29
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +12 -12
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -2
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +9 -6
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +2 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +6 -4
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +4 -4
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +8 -18
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +1 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +12 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +5 -6
  72. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +15 -24
  73. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +13 -11
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +66 -50
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +3 -2
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +6 -5
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +3 -1
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +7 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +2 -2
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +6 -7
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.d.ts +3 -3
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +4 -4
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +2 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +1 -1
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +15 -4
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +3 -4
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +30 -37
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +13 -10
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -32
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -9
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +20 -19
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +47 -15
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +270 -143
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +3 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +310 -170
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +10 -10
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +12 -2
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +1 -1
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +42 -42
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +3 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +35 -25
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +4 -4
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +1 -4
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +22 -26
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +18 -14
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +80 -72
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +2 -8
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +48 -77
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +16 -17
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +257 -77
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.d.ts +55 -0
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +34 -0
  119. package/vscode/src/vs/workbench/contrib/chat/browser/{chatSetup.d.ts → chatSetup/chatSetupContributions.d.ts} +4 -11
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +622 -0
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +53 -0
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +359 -0
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +89 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +667 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +37 -0
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +260 -0
  127. package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/chatSetup.css +4 -6
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +4 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +21 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +55 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatus.js → chatStatus/chatStatusDashboard.js} +193 -325
  132. package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatus.d.ts → chatStatus/chatStatusEntry.d.ts} +1 -1
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +190 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusItemService.d.ts → chatStatus/chatStatusItemService.d.ts} +1 -1
  135. package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatStatus/media}/chatStatus.css +22 -1
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusWidget.d.ts +25 -0
  137. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusWidget.js +108 -0
  138. package/vscode/src/vs/workbench/contrib/chat/browser/chatTerminalOutputAccessibleView.d.ts +10 -0
  139. package/vscode/src/vs/workbench/contrib/chat/browser/chatTerminalOutputAccessibleView.js +34 -0
  140. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +1 -1
  141. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +57 -18
  142. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +478 -146
  143. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewTitleControl.d.ts +43 -0
  144. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewTitleControl.js +204 -0
  145. package/vscode/src/vs/workbench/contrib/chat/browser/chatWidgetService.d.ts +44 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/chatWidgetService.js +187 -0
  147. package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
  148. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +108 -62
  149. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
  150. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
  151. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.d.ts +1 -1
  152. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.js +37 -32
  153. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +37 -20
  154. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +232 -97
  155. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatusWidget.css +57 -0
  156. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewPane.css +142 -0
  157. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewTitleControl.css +39 -0
  158. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +51 -35
  159. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +1 -1
  160. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +5 -4
  161. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -2
  162. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +5 -5
  163. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +12 -12
  164. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +19 -21
  165. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.d.ts +1 -1
  166. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +8 -8
  167. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
  168. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +6 -6
  169. package/vscode/src/vs/workbench/contrib/chat/common/chatCodeMapperService.d.ts +1 -1
  170. package/vscode/src/vs/workbench/contrib/chat/common/chatModelStore.d.ts +49 -0
  171. package/vscode/src/vs/workbench/contrib/chat/common/chatModelStore.js +100 -0
  172. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +1 -0
  173. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +2 -1
  174. package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +3 -4
  175. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +41 -15
  176. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +208 -162
  177. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +3 -3
  178. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +15 -7
  179. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +61 -7
  180. package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.d.ts +3 -2
  181. package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +2 -2
  182. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +1 -1
  183. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +10 -10
  184. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +2 -2
  185. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +3 -3
  186. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +5 -1
  187. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +60 -43
  188. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +1 -1
  189. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +27 -4
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +37 -47
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -3
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +120 -87
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +49 -42
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +293 -187
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +17 -5
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +43 -9
  198. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +2 -0
  199. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +48 -29
  200. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
  201. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
  202. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +8 -13
  203. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
  204. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +2 -2
  205. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +3 -3
  206. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +36 -41
  207. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +3 -3
  208. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +2 -2
  209. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
  210. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  211. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +1 -1
  212. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +18 -18
  213. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
  214. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +142 -38
  215. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +1 -1
  216. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +3 -7
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +19 -2
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +78 -6
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +7 -11
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +26 -44
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +3 -3
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +1 -1
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +9 -0
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +0 -1
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +23 -17
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +1 -1
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +4 -2
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +2 -0
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +26 -5
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +3 -1
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +32 -4
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +15 -29
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +10 -7
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +12 -0
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +3 -1
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +38 -19
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +1 -0
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +32 -7
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +5 -4
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +4 -3
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +4 -3
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +1 -0
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +128 -62
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +2 -2
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +12 -2
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +5 -2
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +68 -22
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +20 -22
  250. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +13 -12
  251. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +20 -19
  252. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +1 -1
  253. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  254. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +12 -0
  255. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +72 -0
  256. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +1 -2
  257. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +5 -17
  258. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.d.ts +0 -53
  259. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.js +0 -154
  260. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.d.ts +0 -7
  261. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.js +0 -13
  262. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.d.ts +0 -25
  263. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.js +0 -135
  264. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.d.ts +0 -35
  265. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.js +0 -216
  266. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +0 -1617
  267. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.d.ts +0 -44
  268. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +0 -313
  269. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/apple-dark.svg +0 -0
  270. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/apple-light.svg +0 -0
  271. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/github.svg +0 -0
  272. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/google.svg +0 -0
  273. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusItemService.js → chatStatus/chatStatusItemService.js} +0 -0
@@ -3,17 +3,18 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
3
3
  import { DeferredPromise } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
4
4
  import { CancellationToken, CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
5
5
  import { toErrorMessage } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errorMessage';
6
- import { ErrorNoTelemetry } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
6
+ import { ErrorNoTelemetry, BugIndicatingError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
7
7
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
8
8
  import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
9
9
  import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
10
- import { Disposable, DisposableMap, DisposableStore, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
10
+ import { Disposable, DisposableResourceMap, DisposableStore, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
11
11
  import { revive } from '@codingame/monaco-vscode-api/vscode/vs/base/common/marshalling';
12
12
  import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
13
13
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
14
14
  import { StopWatch } from '@codingame/monaco-vscode-api/vscode/vs/base/common/stopwatch';
15
15
  import { isDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
16
16
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
17
+ import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
17
18
  import { OffsetRange } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/ranges/offsetRange';
18
19
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
19
20
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
@@ -24,12 +25,16 @@ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode
24
25
  import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
25
26
  import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
26
27
  import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
28
+ import { InlineChatConfigKeys } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/inlineChat/common/inlineChat';
27
29
  import { IMcpService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
30
+ import { awaitStatsForSession } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chat';
28
31
  import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
29
- import { normalizeSerializableChatData, ChatModel, ChatRequestRemovalReason, updateRanges, toChatHistoryContent, ChatRequestModel } from '@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/common/chatModel';
30
- import { ChatRequestTextPart, ChatRequestAgentPart, ChatRequestAgentSubcommandPart, chatSubcommandLeader, chatAgentLeader, ChatRequestSlashCommandPart, getPromptText } from '@codingame/monaco-vscode-aac7027b-326c-513a-95a9-e4eedd151b38-common/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
31
- import { ChatRequestParser } from '@codingame/monaco-vscode-bc6f260d-ec63-5c95-9446-1ca7d0872719-common/vscode/vs/workbench/contrib/chat/common/chatRequestParser';
32
- import { ChatMcpServersStarting } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService';
32
+ import { chatEditingSessionIsReady } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService';
33
+ import { normalizeSerializableChatData, ChatModel, ChatRequestRemovalReason, updateRanges, toChatHistoryContent, ChatRequestModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModel';
34
+ import { ChatModelStore } from './chatModelStore.js';
35
+ import { ChatRequestTextPart, ChatRequestAgentPart, ChatRequestAgentSubcommandPart, chatSubcommandLeader, chatAgentLeader, ChatRequestSlashCommandPart, getPromptText } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
36
+ import { ChatRequestParser } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatRequestParser';
37
+ import { ResponseModelState, ChatMcpServersStarting } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService';
33
38
  import { ChatServiceTelemetry, ChatRequestTelemetry } from './chatServiceTelemetry.js';
34
39
  import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service';
35
40
  import { ChatSessionStore } from './chatSessionStore.js';
@@ -41,7 +46,6 @@ import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbenc
41
46
  import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
42
47
  import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
43
48
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
44
- import { ObservableMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/map';
45
49
 
46
50
  const serializedChatKey = 'interactive.sessions';
47
51
  const TransferredGlobalChatKey = 'chat.workspaceTransfer';
@@ -65,60 +69,16 @@ let CancellableRequest = class CancellableRequest {
65
69
  CancellableRequest = ( __decorate([
66
70
  ( __param(2, ILanguageModelToolsService))
67
71
  ], CancellableRequest));
68
- class ChatModelStore {
69
- constructor() {
70
- this._models = ( new ObservableMap());
71
- }
72
- get observable() {
73
- return this._models.observable;
74
- }
75
- values() {
76
- return ( this._models.values());
77
- }
78
- get(uri) {
79
- return this._models.get(this.toKey(uri));
80
- }
81
- has(uri) {
82
- return ( this._models.has(this.toKey(uri)));
83
- }
84
- set(uri, value) {
85
- this._models.set(this.toKey(uri), value);
86
- }
87
- delete(uri) {
88
- return this._models.delete(this.toKey(uri));
89
- }
90
- toKey(uri) {
91
- return ( uri.toString());
92
- }
93
- }
94
- class DisposableResourceMap extends Disposable {
95
- constructor() {
96
- super(...arguments);
97
- this._map = this._register(( new DisposableMap()));
98
- }
99
- get(sessionResource) {
100
- return this._map.get(this.toKey(sessionResource));
101
- }
102
- set(sessionResource, value) {
103
- this._map.set(this.toKey(sessionResource), value);
104
- }
105
- has(sessionResource) {
106
- return ( this._map.has(this.toKey(sessionResource)));
107
- }
108
- deleteAndLeak(sessionResource) {
109
- return this._map.deleteAndLeak(this.toKey(sessionResource));
110
- }
111
- deleteAndDispose(sessionResource) {
112
- this._map.deleteAndDispose(this.toKey(sessionResource));
113
- }
114
- toKey(uri) {
115
- return ( uri.toString());
116
- }
117
- }
118
72
  let ChatService = class ChatService extends Disposable {
119
73
  get transferredSessionData() {
120
74
  return this._transferredSessionData;
121
75
  }
76
+ setSaveModelsEnabled(enabled) {
77
+ this._saveModelsEnabled = enabled;
78
+ }
79
+ waitForModelDisposals() {
80
+ return this._sessionModels.waitForModelDisposals();
81
+ }
122
82
  get edits2Enabled() {
123
83
  return this.configurationService.getValue(ChatConfiguration.Edits2Enabled);
124
84
  }
@@ -139,9 +99,8 @@ let ChatService = class ChatService extends Disposable {
139
99
  this.chatTransferService = chatTransferService;
140
100
  this.chatSessionService = chatSessionService;
141
101
  this.mcpService = mcpService;
142
- this._sessionModels = ( new ChatModelStore());
143
- this._contentProviderSessionModels = this._register(( new DisposableResourceMap()));
144
102
  this._pendingRequests = this._register(( new DisposableResourceMap()));
103
+ this._saveModelsEnabled = true;
145
104
  this._onDidSubmitRequest = this._register(( new Emitter()));
146
105
  this.onDidSubmitRequest = this._onDidSubmitRequest.event;
147
106
  this._onDidPerformUserAction = this._register(( new Emitter()));
@@ -149,6 +108,26 @@ let ChatService = class ChatService extends Disposable {
149
108
  this._onDidDisposeSession = this._register(( new Emitter()));
150
109
  this.onDidDisposeSession = this._onDidDisposeSession.event;
151
110
  this._sessionFollowupCancelTokens = this._register(( new DisposableResourceMap()));
111
+ this._sessionModels = this._register(instantiationService.createInstance(ChatModelStore, {
112
+ createModel: (props) => this._startSession(props),
113
+ willDisposeModel: async (model) => {
114
+ const localSessionId = LocalChatSessionUri.parseLocalSessionId(model.sessionResource);
115
+ if (localSessionId && this.shouldStoreSession(model)) {
116
+ if (model.getRequests().length === 0 && !model.customTitle) {
117
+ await this._chatSessionStore.deleteSession(localSessionId);
118
+ }
119
+ else if (this._saveModelsEnabled) {
120
+ await this._chatSessionStore.storeSessions([model]);
121
+ }
122
+ }
123
+ else if (!localSessionId && model.getRequests().length > 0) {
124
+ await this._chatSessionStore.storeSessionsMetadataOnly([model]);
125
+ }
126
+ }
127
+ }));
128
+ this._register(this._sessionModels.onDidDisposeModel(model => {
129
+ this._onDidDisposeSession.fire({ sessionResource: model.sessionResource, reason: 'cleared' });
130
+ }));
152
131
  this._chatServiceTelemetry = this.instantiationService.createInstance(ChatServiceTelemetry);
153
132
  const sessionData = storageService.get(serializedChatKey, this.isEmptyWindow ? StorageScope.APPLICATION : StorageScope.WORKSPACE, '');
154
133
  if (sessionData) {
@@ -168,18 +147,20 @@ let ChatService = class ChatService extends Disposable {
168
147
  this._persistedSessions[transferredChat.sessionId] = transferredChat;
169
148
  this._transferredSessionData = {
170
149
  sessionId: transferredChat.sessionId,
171
- inputValue: transferredData.inputValue,
172
150
  location: transferredData.location,
173
- mode: transferredData.mode,
151
+ inputState: transferredData.inputState
174
152
  };
175
153
  }
176
154
  this._chatSessionStore = this._register(this.instantiationService.createInstance(ChatSessionStore));
177
155
  this._chatSessionStore.migrateDataIfNeeded(() => this._persistedSessions);
178
- this.initializePersistedSessionsFromFileStorage();
156
+ this.initializePersistedSessionsFromFileStorage().then(() => {
157
+ this.reviveSessionsWithEdits();
158
+ });
179
159
  this._register(storageService.onWillSaveState(() => this.saveState()));
160
+ this.chatModels = derived(this, reader => [...( this._sessionModels.observable.read(reader).values())]);
180
161
  this.requestInProgressObs = derived(reader => {
181
162
  const models = ( this._sessionModels.observable.read(reader).values());
182
- return ( Array.from(models).some(model => model.requestInProgressObs.read(reader)));
163
+ return ( Iterable.some(models, model => model.requestInProgress.read(reader)));
183
164
  });
184
165
  }
185
166
  get editingSessions() {
@@ -189,14 +170,21 @@ let ChatService = class ChatService extends Disposable {
189
170
  return this.chatAgentService.getContributedDefaultAgent(location) !== undefined;
190
171
  }
191
172
  saveState() {
192
- const liveChats = Array.from(( this._sessionModels.values()))
193
- .filter(session => {
194
- if (!LocalChatSessionUri.parseLocalSessionId(session.sessionResource)) {
195
- return false;
196
- }
197
- return session.initialLocation === ChatAgentLocation.Chat;
198
- });
199
- this._chatSessionStore.storeSessions(liveChats);
173
+ if (!this._saveModelsEnabled) {
174
+ return;
175
+ }
176
+ const liveLocalChats = Array.from(( this._sessionModels.values()))
177
+ .filter(session => this.shouldStoreSession(session));
178
+ this._chatSessionStore.storeSessions(liveLocalChats);
179
+ const liveNonLocalChats = Array.from(( this._sessionModels.values()))
180
+ .filter(session => !LocalChatSessionUri.parseLocalSessionId(session.sessionResource));
181
+ this._chatSessionStore.storeSessionsMetadataOnly(liveNonLocalChats);
182
+ }
183
+ shouldStoreSession(session) {
184
+ if (!LocalChatSessionUri.parseLocalSessionId(session.sessionResource)) {
185
+ return false;
186
+ }
187
+ return session.initialLocation === ChatAgentLocation.Chat && !session.isImported;
200
188
  }
201
189
  notifyUserAction(action) {
202
190
  this._chatServiceTelemetry.notifyUserAction(action);
@@ -209,13 +197,15 @@ let ChatService = class ChatService extends Disposable {
209
197
  }
210
198
  }
211
199
  async setChatSessionTitle(sessionResource, title) {
212
- const sessionId = this.toLocalSessionId(sessionResource);
213
200
  const model = this._sessionModels.get(sessionResource);
214
201
  if (model) {
215
202
  model.setCustomTitle(title);
216
203
  }
217
- await this._chatSessionStore.setSessionTitle(sessionId, title);
218
- this.saveState();
204
+ const localSessionId = LocalChatSessionUri.parseLocalSessionId(sessionResource);
205
+ if (localSessionId) {
206
+ await this._chatSessionStore.setSessionTitle(localSessionId, title);
207
+ this.saveState();
208
+ }
219
209
  }
220
210
  trace(method, message) {
221
211
  if (message) {
@@ -271,6 +261,19 @@ let ChatService = class ChatService extends Disposable {
271
261
  this.storageService.store(TransferredGlobalChatKey, JSON.stringify(filtered), StorageScope.PROFILE, StorageTarget.MACHINE);
272
262
  return transferred;
273
263
  }
264
+ async reviveSessionsWithEdits() {
265
+ await Promise.all(( ( Object.values(this._persistedSessions)).map(async (session) => {
266
+ if (!session.hasPendingEdits) {
267
+ return;
268
+ }
269
+ const sessionResource = LocalChatSessionUri.forSession(session.sessionId);
270
+ const sessionRef = await this.getOrRestoreSession(sessionResource);
271
+ if (sessionRef?.object.editingSession) {
272
+ await chatEditingSessionIsReady(sessionRef.object.editingSession);
273
+ sessionRef.dispose();
274
+ }
275
+ })));
276
+ }
274
277
  async initializePersistedSessionsFromFileStorage() {
275
278
  const index = await this._chatSessionStore.getIndex();
276
279
  const sessionIds = ( Object.keys(index));
@@ -283,48 +286,69 @@ let ChatService = class ChatService extends Disposable {
283
286
  customTitle: metadata.title,
284
287
  creationDate: Date.now(),
285
288
  lastMessageDate: metadata.lastMessageDate,
286
- isImported: metadata.isImported || false,
287
289
  initialLocation: metadata.initialLocation,
288
290
  requests: [],
289
- requesterUsername: '',
290
291
  responderUsername: '',
291
- requesterAvatarIconUri: undefined,
292
292
  responderAvatarIconUri: undefined,
293
+ hasPendingEdits: metadata.hasPendingEdits,
293
294
  };
294
295
  this._persistedSessions[sessionId] = minimalSession;
295
296
  }
296
297
  }
297
298
  }
298
299
  async getLocalSessionHistory() {
299
- const liveSessionItems = ( Array.from(( this._sessionModels.values()))
300
+ const liveSessionItems = await this.getLiveSessionItems();
301
+ const historySessionItems = await this.getHistorySessionItems();
302
+ return [...liveSessionItems, ...historySessionItems];
303
+ }
304
+ async getLiveSessionItems() {
305
+ return await Promise.all(( Array.from(( this._sessionModels.values()))
300
306
  .filter(session => this.shouldBeInHistory(session))
301
- .map((session) => {
302
- const title = session.title || ( localize(5826, "New Chat"));
307
+ .map(async (session) => {
308
+ const title = session.title || ( localize(5945, "New Chat"));
303
309
  return {
304
310
  sessionResource: session.sessionResource,
305
311
  title,
306
312
  lastMessageDate: session.lastMessageDate,
313
+ timing: session.timing,
307
314
  isActive: true,
315
+ stats: await awaitStatsForSession(session),
316
+ lastResponseState: session.lastRequest?.response?.state ?? ResponseModelState.Pending,
308
317
  };
309
- }));
318
+ })));
319
+ }
320
+ async getHistorySessionItems() {
310
321
  const index = await this._chatSessionStore.getIndex();
311
- const entries = ( ( Object.values(index))
312
- .filter(entry => !( this._sessionModels.has(LocalChatSessionUri.forSession(entry.sessionId))) && this.shouldBeInHistory(entry) && !entry.isEmpty)
322
+ return ( ( Object.values(index))
323
+ .filter(entry => !entry.isExternal)
324
+ .filter(entry => !( this._sessionModels.has(LocalChatSessionUri.forSession(entry.sessionId))) && entry.initialLocation === ChatAgentLocation.Chat && !entry.isEmpty)
313
325
  .map((entry) => {
314
326
  const sessionResource = LocalChatSessionUri.forSession(entry.sessionId);
315
327
  return ({
316
328
  ...entry,
317
329
  sessionResource,
318
- isActive: ( this._sessionModels.has(sessionResource))
330
+ timing: entry.timing ?? { startTime: entry.lastMessageDate },
331
+ isActive: ( this._sessionModels.has(sessionResource)),
332
+ lastResponseState: entry.lastResponseState ?? ResponseModelState.Complete
319
333
  });
320
334
  }));
321
- return [...liveSessionItems, ...entries];
322
335
  }
323
- shouldBeInHistory(entry) {
324
- if (entry.sessionResource) {
325
- return !entry.isImported && LocalChatSessionUri.parseLocalSessionId(entry.sessionResource) && entry.initialLocation !== ChatAgentLocation.EditorInline;
336
+ async getMetadataForSession(sessionResource) {
337
+ const index = await this._chatSessionStore.getIndex();
338
+ const metadata = index[( sessionResource.toString())];
339
+ if (metadata) {
340
+ return {
341
+ ...metadata,
342
+ sessionResource,
343
+ timing: metadata.timing ?? { startTime: metadata.lastMessageDate },
344
+ isActive: ( this._sessionModels.has(sessionResource)),
345
+ lastResponseState: metadata.lastResponseState ?? ResponseModelState.Complete,
346
+ };
326
347
  }
327
- return !entry.isImported && entry.initialLocation !== ChatAgentLocation.EditorInline;
348
+ return undefined;
349
+ }
350
+ shouldBeInHistory(entry) {
351
+ return !entry.isImported && !!LocalChatSessionUri.parseLocalSessionId(entry.sessionResource) && entry.initialLocation === ChatAgentLocation.Chat;
328
352
  }
329
353
  async removeHistoryEntry(sessionResource) {
330
354
  await this._chatSessionStore.deleteSession(this.toLocalSessionId(sessionResource));
@@ -332,21 +356,30 @@ let ChatService = class ChatService extends Disposable {
332
356
  async clearAllHistoryEntries() {
333
357
  await this._chatSessionStore.clearAllSessions();
334
358
  }
335
- startSession(location, token, isGlobalEditingSession = true, options) {
359
+ startSession(location, options) {
336
360
  this.trace('startSession');
337
- return this._startSession(undefined, location, isGlobalEditingSession, token, options);
361
+ const sessionId = generateUuid();
362
+ const sessionResource = LocalChatSessionUri.forSession(sessionId);
363
+ return this._sessionModels.acquireOrCreate({
364
+ initialData: undefined,
365
+ location,
366
+ sessionResource,
367
+ sessionId,
368
+ canUseTools: options?.canUseTools ?? true,
369
+ disableBackgroundKeepAlive: options?.disableBackgroundKeepAlive
370
+ });
338
371
  }
339
- _startSession(someSessionHistory, location, isGlobalEditingSession, token, options, transferEditingSession) {
340
- const model = this.instantiationService.createInstance(ChatModel, someSessionHistory, { initialLocation: location, canUseTools: options?.canUseTools ?? true, resource: options?.sessionResource });
372
+ _startSession(props) {
373
+ const { initialData, location, sessionResource, sessionId, canUseTools, transferEditingSession, disableBackgroundKeepAlive, inputState } = props;
374
+ const model = this.instantiationService.createInstance(ChatModel, initialData, { initialLocation: location, canUseTools, resource: sessionResource, sessionId, disableBackgroundKeepAlive, inputState });
341
375
  if (location === ChatAgentLocation.Chat) {
342
- model.startEditingSession(isGlobalEditingSession, transferEditingSession);
376
+ model.startEditingSession(true, transferEditingSession);
343
377
  }
344
- this._sessionModels.set(model.sessionResource, model);
345
- this.initializeSession(model, token);
378
+ this.initializeSession(model);
346
379
  return model;
347
380
  }
348
- initializeSession(model, token) {
349
- this.trace('initializeSession', `Initialize session ${model.sessionId}`);
381
+ initializeSession(model) {
382
+ this.trace('initializeSession', `Initialize session ${model.sessionResource}`);
350
383
  this.activateDefaultAgent(model.initialLocation).catch(e => this.logService.error(e));
351
384
  }
352
385
  async activateDefaultAgent(location) {
@@ -370,14 +403,14 @@ let ChatService = class ChatService extends Disposable {
370
403
  getSession(sessionResource) {
371
404
  return this._sessionModels.get(sessionResource);
372
405
  }
373
- getSessionByLegacyId(sessionId) {
374
- return Array.from(( this._sessionModels.values())).find(session => session.sessionId === sessionId);
406
+ getActiveSessionReference(sessionResource) {
407
+ return this._sessionModels.acquireExisting(sessionResource);
375
408
  }
376
409
  async getOrRestoreSession(sessionResource) {
377
410
  this.trace('getOrRestoreSession', `${sessionResource}`);
378
- const model = this._sessionModels.get(sessionResource);
379
- if (model) {
380
- return model;
411
+ const existingRef = this._sessionModels.acquireExisting(sessionResource);
412
+ if (existingRef) {
413
+ return existingRef;
381
414
  }
382
415
  const sessionId = LocalChatSessionUri.parseLocalSessionId(sessionResource);
383
416
  if (!sessionId) {
@@ -393,12 +426,18 @@ let ChatService = class ChatService extends Disposable {
393
426
  if (!sessionData) {
394
427
  return undefined;
395
428
  }
396
- const session = this._startSession(sessionData, sessionData.initialLocation ?? ChatAgentLocation.Chat, true, CancellationToken.None, { canUseTools: true, sessionResource });
429
+ const sessionRef = this._sessionModels.acquireOrCreate({
430
+ initialData: sessionData,
431
+ location: sessionData.initialLocation ?? ChatAgentLocation.Chat,
432
+ sessionResource,
433
+ sessionId,
434
+ canUseTools: true,
435
+ });
397
436
  const isTransferred = this.transferredSessionData?.sessionId === sessionId;
398
437
  if (isTransferred) {
399
438
  this._transferredSessionData = undefined;
400
439
  }
401
- return session;
440
+ return sessionRef;
402
441
  }
403
442
  isPersistedSessionEmpty(sessionResource) {
404
443
  const sessionId = LocalChatSessionUri.parseLocalSessionId(sessionResource);
@@ -432,35 +471,50 @@ let ChatService = class ChatService extends Disposable {
432
471
  return undefined;
433
472
  }
434
473
  loadSessionFromContent(data) {
435
- return this._startSession(data, data.initialLocation ?? ChatAgentLocation.Chat, true, CancellationToken.None);
474
+ const sessionId = 'sessionId' in data && data.sessionId ? data.sessionId : generateUuid();
475
+ const sessionResource = LocalChatSessionUri.forSession(sessionId);
476
+ return this._sessionModels.acquireOrCreate({
477
+ initialData: data,
478
+ location: data.initialLocation ?? ChatAgentLocation.Chat,
479
+ sessionResource,
480
+ sessionId,
481
+ canUseTools: true,
482
+ });
436
483
  }
437
484
  async loadSessionForResource(chatSessionResource, location, token) {
438
485
  if (chatSessionResource.scheme === Schemas.vscodeLocalChatSession) {
439
486
  return this.getOrRestoreSession(chatSessionResource);
440
487
  }
441
- const existing = this._contentProviderSessionModels.get(chatSessionResource);
442
- if (existing) {
443
- return existing.model;
488
+ const existingRef = this._sessionModels.acquireExisting(chatSessionResource);
489
+ if (existingRef) {
490
+ return existingRef;
444
491
  }
445
492
  const providedSession = await this.chatSessionService.getOrCreateChatSession(chatSessionResource, CancellationToken.None);
446
493
  const chatSessionType = chatSessionResource.scheme;
447
- const model = this._startSession(undefined, location, true, CancellationToken.None, { sessionResource: chatSessionResource, canUseTools: false }, providedSession.initialEditingSession);
448
- model.setContributedChatSession({
494
+ const modelRef = this._sessionModels.acquireOrCreate({
495
+ initialData: undefined,
496
+ location,
497
+ sessionResource: chatSessionResource,
498
+ canUseTools: false,
499
+ transferEditingSession: providedSession.transferredState?.editingSession,
500
+ inputState: providedSession.transferredState?.inputState,
501
+ });
502
+ modelRef.object.setContributedChatSession({
449
503
  chatSessionResource,
450
504
  chatSessionType,
451
505
  isUntitled: chatSessionResource.path.startsWith('/untitled-')
452
506
  });
507
+ const model = modelRef.object;
453
508
  const disposables = ( new DisposableStore());
454
- this._contentProviderSessionModels.set(chatSessionResource, { model, dispose: () => disposables.dispose() });
455
- disposables.add(model.onDidDispose(() => {
456
- this._contentProviderSessionModels.deleteAndDispose(chatSessionResource);
509
+ disposables.add(modelRef.object.onDidDispose(() => {
510
+ disposables.dispose();
457
511
  providedSession.dispose();
458
512
  }));
459
513
  let lastRequest;
460
514
  for (const message of providedSession.history) {
461
515
  if (message.type === 'request') {
462
516
  if (lastRequest) {
463
- model.completeResponse(lastRequest);
517
+ lastRequest.response?.completeResponseIfNeeded();
464
518
  }
465
519
  const requestText = message.prompt;
466
520
  const parsedRequest = {
@@ -475,8 +529,8 @@ let ChatService = class ChatService extends Disposable {
475
529
  undefined,
476
530
  undefined,
477
531
  undefined,
478
- true
479
- );
532
+ false,
533
+ undefined, undefined, message.id);
480
534
  }
481
535
  else {
482
536
  if (lastRequest) {
@@ -486,6 +540,9 @@ let ChatService = class ChatService extends Disposable {
486
540
  }
487
541
  }
488
542
  }
543
+ if (providedSession.isCompleteObs?.get()) {
544
+ lastRequest?.response?.completeResponseIfNeeded();
545
+ }
489
546
  if (providedSession.progressObs && lastRequest && providedSession.interruptActiveResponseCallback) {
490
547
  const initialCancellationRequest = this.instantiationService.createInstance(CancellableRequest, ( new CancellationTokenSource()), undefined);
491
548
  this._pendingRequests.set(model.sessionResource, initialCancellationRequest);
@@ -514,17 +571,18 @@ let ChatService = class ChatService extends Disposable {
514
571
  lastProgressLength = progressArray.length;
515
572
  }
516
573
  if (isComplete) {
517
- model?.completeResponse(lastRequest);
574
+ lastRequest.response?.completeResponseIfNeeded();
518
575
  cancellationListener.clear();
519
576
  }
520
577
  }));
521
578
  }
522
579
  else {
523
- if (lastRequest) {
524
- model.completeResponse(lastRequest);
580
+ if (lastRequest && model.editingSession) {
581
+ await chatEditingSessionIsReady(model.editingSession);
582
+ lastRequest.response?.completeResponseIfNeeded();
525
583
  }
526
584
  }
527
- return model;
585
+ return modelRef;
528
586
  }
529
587
  getChatSessionFromInternalUri(sessionResource) {
530
588
  const model = this._sessionModels.get(sessionResource);
@@ -654,7 +712,7 @@ let ChatService = class ChatService extends Disposable {
654
712
  const isLast = i === progress.length - 1;
655
713
  const progressItem = progress[i];
656
714
  if (progressItem.kind === 'markdownContent') {
657
- this.trace('sendRequest', `Provider returned progress for session ${model.sessionId}, ${progressItem.content.value.length} chars`);
715
+ this.trace('sendRequest', `Provider returned progress for session ${model.sessionResource}, ${progressItem.content.value.length} chars`);
658
716
  }
659
717
  else {
660
718
  this.trace('sendRequest', `Provider returned progress: ${JSON.stringify(progressItem)}`);
@@ -667,7 +725,7 @@ let ChatService = class ChatService extends Disposable {
667
725
  let detectedCommand;
668
726
  const stopWatch = ( new StopWatch(false));
669
727
  store.add(token.onCancellationRequested(() => {
670
- this.trace('sendRequest', `Request for session ${model.sessionId} was cancelled`);
728
+ this.trace('sendRequest', `Request for session ${model.sessionResource} was cancelled`);
671
729
  if (!request) {
672
730
  return;
673
731
  }
@@ -703,7 +761,7 @@ let ChatService = class ChatService extends Disposable {
703
761
  message = promptTextResult.message;
704
762
  }
705
763
  const agentRequest = {
706
- sessionId: model.sessionId,
764
+ sessionResource: model.sessionResource,
707
765
  requestId: request.id,
708
766
  agentId: agent.id,
709
767
  message,
@@ -720,7 +778,6 @@ let ChatService = class ChatService extends Disposable {
720
778
  userSelectedTools: options?.userSelectedTools?.get(),
721
779
  modeInstructions: options?.modeInfo?.modeInstructions,
722
780
  editedFileEvents: request.editedFileEvents,
723
- chatSummary: options?.chatSummary
724
781
  };
725
782
  let isInitialTools = true;
726
783
  store.add(autorun(reader => {
@@ -742,10 +799,11 @@ let ChatService = class ChatService extends Disposable {
742
799
  !commandPart &&
743
800
  !agentSlashCommandPart &&
744
801
  enableCommandDetection &&
802
+ (location !== ChatAgentLocation.EditorInline || !this.configurationService.getValue(InlineChatConfigKeys.EnableV2)) &&
745
803
  options?.modeInfo?.kind !== ChatModeKind.Agent &&
746
804
  options?.modeInfo?.kind !== ChatModeKind.Edit &&
747
805
  !options?.agentIdSilent) {
748
- const defaultAgentHistory = this.getHistoryEntriesFromModel(requests, model.sessionId, location, defaultAgent.id);
806
+ const defaultAgentHistory = this.getHistoryEntriesFromModel(requests, location, defaultAgent.id);
749
807
  const chatAgentRequest = prepareChatAgentRequest(defaultAgent, undefined, enableCommandDetection, undefined, false);
750
808
  const result = await this.chatAgentService.detectAgentOrCommand(chatAgentRequest, defaultAgentHistory, { location }, token);
751
809
  if (result && this.chatAgentService.getAgent(result.agent.id)?.locations?.includes(location)) {
@@ -757,7 +815,7 @@ let ChatService = class ChatService extends Disposable {
757
815
  const agent = (detectedAgent ?? agentPart?.agent ?? defaultAgent);
758
816
  const command = detectedCommand ?? agentSlashCommandPart?.command;
759
817
  await this.extensionService.activateByEvent(`onChatParticipant:${agent.id}`);
760
- const history = this.getHistoryEntriesFromModel(requests, model.sessionId, location, agent.id);
818
+ const history = this.getHistoryEntriesFromModel(requests, location, agent.id);
761
819
  const requestProps = prepareChatAgentRequest(agent, command, enableCommandDetection, request , !!detectedAgent);
762
820
  const pendingRequest = this._pendingRequests.get(sessionResource);
763
821
  if (pendingRequest && !pendingRequest.requestId) {
@@ -775,7 +833,7 @@ let ChatService = class ChatService extends Disposable {
775
833
  rawResult = agentResult;
776
834
  agentOrCommandFollowups = this.chatAgentService.getFollowups(agent.id, requestProps, agentResult, history, followupsCancelToken);
777
835
  if (model.getRequests().length === 1 && !model.customTitle) {
778
- const chatHistory = this.getHistoryEntriesFromModel(model.getRequests(), model.sessionId, location, agent.id);
836
+ const chatHistory = this.getHistoryEntriesFromModel(model.getRequests(), location, agent.id);
779
837
  chatTitlePromise = this.chatAgentService.getChatTitle(agent.id, chatHistory, CancellationToken.None).then((title) => {
780
838
  if (title === undefined) {
781
839
  const defaultAgentForTitle = this.chatAgentService.getDefaultAgent(location);
@@ -803,7 +861,7 @@ let ChatService = class ChatService extends Disposable {
803
861
  const message = parsedRequest.text;
804
862
  const commandResult = await this.chatSlashCommandService.executeCommand(commandPart.slashCommand.command, message.substring(commandPart.slashCommand.command.length + 1).trimStart(), ( new Progress(p => {
805
863
  progressCallback([p]);
806
- })), history, location, token);
864
+ })), history, location, model.sessionResource, token);
807
865
  agentOrCommandFollowups = Promise.resolve(commandResult?.followUp);
808
866
  rawResult = {};
809
867
  }
@@ -815,8 +873,8 @@ let ChatService = class ChatService extends Disposable {
815
873
  }
816
874
  else {
817
875
  if (!rawResult) {
818
- this.trace('sendRequest', `Provider returned no response for session ${model.sessionId}`);
819
- rawResult = { errorDetails: { message: ( localize(5827, "Provider returned null response")) } };
876
+ this.trace('sendRequest', `Provider returned no response for session ${model.sessionResource}`);
877
+ rawResult = { errorDetails: { message: ( localize(5946, "Provider returned null response")) } };
820
878
  }
821
879
  const result = rawResult.errorDetails?.responseIsFiltered ? 'filtered' :
822
880
  rawResult.errorDetails && gotProgress ? 'errorWithOutput' :
@@ -832,8 +890,8 @@ let ChatService = class ChatService extends Disposable {
832
890
  });
833
891
  model.setResponse(request, rawResult);
834
892
  completeResponseCreated();
835
- this.trace('sendRequest', `Provider returned response for session ${model.sessionId}`);
836
- model.completeResponse(request);
893
+ this.trace('sendRequest', `Provider returned response for session ${model.sessionResource}`);
894
+ request.response?.complete();
837
895
  if (agentOrCommandFollowups) {
838
896
  agentOrCommandFollowups.then(followups => {
839
897
  model.setFollowups(request, followups);
@@ -862,7 +920,7 @@ let ChatService = class ChatService extends Disposable {
862
920
  const rawResult = { errorDetails: { message: err.message } };
863
921
  model.setResponse(request, rawResult);
864
922
  completeResponseCreated();
865
- model.completeResponse(request);
923
+ request.response?.complete();
866
924
  }
867
925
  }
868
926
  finally {
@@ -896,14 +954,14 @@ let ChatService = class ChatService extends Disposable {
896
954
  });
897
955
  return attachedContextVariables;
898
956
  }
899
- getHistoryEntriesFromModel(requests, sessionId, location, forAgentId) {
957
+ getHistoryEntriesFromModel(requests, location, forAgentId) {
900
958
  const history = [];
901
959
  const agent = this.chatAgentService.getAgent(forAgentId);
902
960
  for (const request of requests) {
903
961
  if (!request.response) {
904
962
  continue;
905
963
  }
906
- if (forAgentId !== request.response.agent?.id && !agent?.isDefault) {
964
+ if (forAgentId !== request.response.agent?.id && !agent?.isDefault && !agent?.canAccessPreviousChatHistory) {
907
965
  continue;
908
966
  }
909
967
  if (location === ChatAgentLocation.EditorInline) {
@@ -911,7 +969,7 @@ let ChatService = class ChatService extends Disposable {
911
969
  }
912
970
  const promptTextResult = getPromptText(request.message);
913
971
  const historyRequest = {
914
- sessionId: sessionId,
972
+ sessionResource: request.session.sessionResource,
915
973
  requestId: request.id,
916
974
  agentId: request.response.agent?.id ?? '',
917
975
  message: promptTextResult.message,
@@ -976,34 +1034,13 @@ let ChatService = class ChatService extends Disposable {
976
1034
  if (response.followups !== undefined) {
977
1035
  model.setFollowups(request, response.followups);
978
1036
  }
979
- model.completeResponse(request);
1037
+ request.response?.complete();
980
1038
  }
981
1039
  cancelCurrentRequestForSession(sessionResource) {
982
1040
  this.trace('cancelCurrentRequestForSession', `session: ${sessionResource}`);
983
1041
  this._pendingRequests.get(sessionResource)?.cancel();
984
1042
  this._pendingRequests.deleteAndDispose(sessionResource);
985
1043
  }
986
- async clearSession(sessionResource) {
987
- this.trace('clearSession', `session: ${sessionResource}`);
988
- const model = this._sessionModels.get(sessionResource);
989
- if (!model) {
990
- throw ( new Error(`Unknown session: ${sessionResource}`));
991
- }
992
- const localSessionId = LocalChatSessionUri.parseLocalSessionId(sessionResource);
993
- if (localSessionId && (model.initialLocation === ChatAgentLocation.Chat)) {
994
- if (model.getRequests().length === 0 && !model.customTitle) {
995
- await this._chatSessionStore.deleteSession(localSessionId);
996
- }
997
- else {
998
- await this._chatSessionStore.storeSessions([model]);
999
- }
1000
- }
1001
- this._sessionModels.delete(sessionResource);
1002
- model.dispose();
1003
- this._pendingRequests.get(sessionResource)?.cancel();
1004
- this._pendingRequests.deleteAndDispose(sessionResource);
1005
- this._onDidDisposeSession.fire({ sessionResource, reason: 'cleared' });
1006
- }
1007
1044
  hasSessions() {
1008
1045
  return this._chatSessionStore.hasSessions();
1009
1046
  }
@@ -1019,13 +1056,12 @@ let ChatService = class ChatService extends Disposable {
1019
1056
  chat: model.toJSON(),
1020
1057
  timestampInMilliseconds: Date.now(),
1021
1058
  toWorkspace: toWorkspace,
1022
- inputValue: transferredSessionData.inputValue,
1059
+ inputState: transferredSessionData.inputState,
1023
1060
  location: transferredSessionData.location,
1024
- mode: transferredSessionData.mode,
1025
1061
  });
1026
1062
  this.storageService.store(TransferredGlobalChatKey, JSON.stringify(existingRaw), StorageScope.PROFILE, StorageTarget.MACHINE);
1027
1063
  this.chatTransferService.addWorkspaceToTransferred(toWorkspace);
1028
- this.trace('transferChatSession', `Transferred session ${model.sessionId} to workspace ${( toWorkspace.toString())}`);
1064
+ this.trace('transferChatSession', `Transferred session ${model.sessionResource} to workspace ${( toWorkspace.toString())}`);
1029
1065
  }
1030
1066
  getChatStorageFolder() {
1031
1067
  return this._chatSessionStore.getChatStorageFolder();
@@ -1033,6 +1069,16 @@ let ChatService = class ChatService extends Disposable {
1033
1069
  logChatIndex() {
1034
1070
  this._chatSessionStore.logIndex();
1035
1071
  }
1072
+ setTitle(sessionResource, title) {
1073
+ this._sessionModels.get(sessionResource)?.setCustomTitle(title);
1074
+ }
1075
+ appendProgress(request, progress) {
1076
+ const model = this._sessionModels.get(request.session.sessionResource);
1077
+ if (!(request instanceof ChatRequestModel)) {
1078
+ throw ( new BugIndicatingError('Can only append progress to requests of type ChatRequestModel'));
1079
+ }
1080
+ model?.acceptResponseProgress(request, progress);
1081
+ }
1036
1082
  toLocalSessionId(sessionResource) {
1037
1083
  const localSessionId = LocalChatSessionUri.parseLocalSessionId(sessionResource);
1038
1084
  if (!localSessionId) {