@codingame/monaco-vscode-chat-service-override 25.1.2 → 26.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 (334) hide show
  1. package/index.js +24 -3
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +23 -3
  4. package/vscode/src/vs/platform/browserElements/common/browserElements.js +13 -6
  5. package/vscode/src/vs/platform/domWidget/browser/domWidget.js +4 -4
  6. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +1 -1
  7. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +42 -27
  8. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +14 -0
  9. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +218 -74
  10. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatTerminalOutputAccessibleView.js +6 -8
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +14 -9
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +165 -168
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +27 -25
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +141 -140
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +189 -121
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +14 -15
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.d.ts +60 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.js +435 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +28 -12
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +10 -12
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +3 -1
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +37 -16
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.d.ts +11 -0
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +54 -24
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +73 -34
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +71 -30
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +151 -89
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +12 -15
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +39 -40
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +90 -125
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +5 -2
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +263 -143
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +4 -4
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +188 -126
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -1
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +37 -28
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +21 -9
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +392 -226
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +31 -27
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +25 -23
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +1 -3
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.d.ts +2 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +13 -0
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +20 -0
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +83 -0
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +68 -0
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +319 -0
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.d.ts +1 -0
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +215 -0
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +179 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +951 -0
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agentsessionprojection.css +20 -0
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +388 -0
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/unifiedQuickAccess.css +195 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.d.ts +120 -0
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +394 -0
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.d.ts +38 -0
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +95 -0
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +3 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +31 -29
  61. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +49 -47
  62. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +4 -6
  63. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/media/simpleBrowserOverlay.css +0 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +188 -151
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +1012 -639
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +256 -151
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +8 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +182 -101
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +79 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +193 -0
  71. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +9 -7
  72. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.d.ts +68 -0
  73. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +253 -0
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -5
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +69 -50
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -4
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +52 -33
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +5 -6
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +274 -155
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +2 -10
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +130 -104
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +12 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +385 -160
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +53 -36
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +112 -75
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +19 -10
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +31 -11
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +39 -17
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNewNotebookContentEdits.js +10 -14
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +0 -2
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +25 -16
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +265 -203
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +29 -26
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/helpers.js +114 -60
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.js +16 -19
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +44 -30
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +119 -45
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +152 -136
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +12 -8
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +51 -31
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +323 -217
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +4 -3
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +653 -401
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +52 -40
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -3
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +5 -2
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +43 -28
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +182 -136
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +33 -0
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +548 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +0 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +222 -138
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +3 -3
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +151 -113
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +6 -4
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +453 -217
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +1 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +162 -88
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/chatSetup.css +2 -1
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +0 -2
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +1 -13
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +309 -233
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +55 -53
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.js +3 -1
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +37 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +109 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +35 -23
  132. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.d.ts +9 -4
  133. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +73 -33
  134. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +47 -0
  135. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +333 -0
  136. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +39 -25
  137. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +9 -5
  138. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +23 -20
  139. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -0
  140. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +20 -16
  141. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +65 -57
  142. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +48 -36
  143. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +20 -12
  144. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.d.ts +4 -0
  145. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +52 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +155 -159
  147. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +24 -14
  148. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +521 -246
  149. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +107 -76
  150. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +28 -24
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.js +10 -6
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.d.ts +16 -0
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.js +57 -0
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatLayoutService.js +4 -6
  155. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +56 -44
  156. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.d.ts +0 -3
  157. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +37 -47
  158. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatEditorInputContentProvider.js +5 -7
  159. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +10 -0
  160. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +1284 -0
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +179 -125
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +9 -11
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/editorHoverWrapper.js +7 -6
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +96 -78
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +58 -53
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +25 -11
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +484 -292
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.d.ts +1 -6
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +65 -92
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +16 -19
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +1 -0
  172. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +9 -1
  173. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +331 -189
  174. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +81 -93
  175. package/vscode/src/vs/workbench/contrib/chat/common/ignoredFiles.js +1 -3
  176. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -3
  177. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +6 -7
  178. package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.d.ts +36 -8
  179. package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.js +169 -31
  180. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.d.ts +6 -0
  181. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +141 -0
  182. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -4
  183. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +218 -144
  184. package/vscode/src/vs/workbench/contrib/chat/common/model/chatTransferService.js +20 -10
  185. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +109 -0
  186. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +349 -0
  187. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +9 -8
  188. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +9 -0
  189. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +139 -36
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +3 -6
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +64 -51
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +49 -34
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +21 -13
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -1
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +125 -97
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +91 -131
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +8 -5
  198. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -0
  199. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +488 -222
  200. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +32 -12
  201. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +58 -13
  202. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +717 -200
  203. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +79 -18
  204. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +371 -130
  205. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.d.ts +0 -1
  206. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.js +3 -7
  207. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +79 -61
  208. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +27 -21
  209. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +7 -10
  210. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.d.ts +1 -1
  211. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +26 -32
  212. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +2 -2
  213. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +8 -60
  214. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +115 -426
  215. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.d.ts +15 -0
  216. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +127 -0
  217. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -37
  218. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +16 -0
  219. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +21 -0
  220. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +51 -0
  221. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +334 -0
  222. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.d.ts +41 -0
  223. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +424 -0
  224. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.d.ts +4 -0
  225. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +58 -0
  226. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.d.ts +7 -0
  227. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +195 -0
  228. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.d.ts +8 -0
  229. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +368 -0
  230. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.d.ts +2 -0
  231. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +7 -0
  232. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  233. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +1 -1
  234. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +23 -25
  235. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/common/remoteCodingAgentsService.js +7 -8
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +34 -38
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +8 -12
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +103 -95
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +28 -16
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +4 -5
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +12 -8
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +65 -54
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +86 -60
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +13 -26
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +24 -0
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +26 -0
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +142 -0
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +2 -1
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +56 -46
  250. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +2 -2
  251. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +63 -31
  252. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +2 -1
  253. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +35 -30
  254. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +2 -1
  255. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +44 -37
  256. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +3 -4
  257. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +3 -3
  258. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +11 -0
  259. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +70 -50
  260. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +26 -394
  261. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +85 -49
  262. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +68 -27
  263. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +1 -0
  264. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +67 -45
  265. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.d.ts +12 -0
  266. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +106 -0
  267. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +2 -2
  268. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +177 -97
  269. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +136 -49
  270. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +2 -1
  271. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +128 -112
  272. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +51 -49
  273. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +8 -0
  274. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +25 -0
  275. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +41 -0
  276. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +19 -0
  277. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +37 -0
  278. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +19 -0
  279. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +37 -0
  280. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +19 -0
  281. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +44 -0
  282. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +12 -0
  283. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +21 -0
  284. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +5 -14
  285. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +2 -4
  286. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +1 -0
  287. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -0
  288. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +29 -0
  289. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +30 -31
  290. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +16 -17
  291. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +19 -20
  292. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.d.ts +11 -0
  293. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +58 -0
  294. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +31 -3
  295. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +325 -199
  296. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +1 -1
  297. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +1 -1
  298. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +33 -38
  299. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +45 -5
  300. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +746 -456
  301. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +145 -98
  302. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +88 -37
  303. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +120 -51
  304. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +25 -28
  305. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +5 -0
  306. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +58 -12
  307. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +12 -0
  308. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.js +17 -0
  309. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +8 -1
  310. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +47 -28
  311. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +37 -0
  312. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +171 -0
  313. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +0 -58
  314. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +0 -213
  315. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +0 -39
  316. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +0 -243
  317. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.d.ts +0 -7
  318. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +0 -41
  319. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +0 -166
  320. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +0 -607
  321. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +0 -255
  322. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +0 -46
  323. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +0 -396
  324. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +0 -9
  325. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +0 -379
  326. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +0 -117
  327. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +0 -141
  328. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -961
  329. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +0 -36
  330. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +0 -447
  331. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.d.ts +0 -6
  332. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.js +0 -251
  333. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.d.ts +0 -10
  334. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +0 -42
@@ -9,6 +9,7 @@ import { revive } from '@codingame/monaco-vscode-api/vscode/vs/base/common/marsh
9
9
  import { joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
10
10
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
11
11
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
12
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
12
13
  import { IEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service';
13
14
  import { toFileOperationResult, FileOperationResult } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
14
15
  import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
@@ -20,18 +21,31 @@ import { IUserDataProfilesService } from '@codingame/monaco-vscode-api/vscode/vs
20
21
  import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
21
22
  import { ILifecycleService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service';
22
23
  import { awaitStatsForSession } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chat';
23
- import { ModifiedFileEntryState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService';
24
- import { normalizeSerializableChatData, ChatModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel';
25
24
  import { ResponseModelState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
25
+ import { ModifiedFileEntryState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService';
26
+ import { ChatModel, normalizeSerializableChatData } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel';
27
+ import { ChatSessionOperationLog } from './chatSessionOperationLog.js';
26
28
  import { LocalChatSessionUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
27
29
 
28
30
  var ChatSessionStore_1;
29
- const maxPersistedSessions = 25;
30
- const ChatIndexStorageKey = 'chat.ChatSessionStore.index';
31
- const ChatTransferIndexStorageKey = 'ChatSessionStore.transferIndex';
31
+ const maxPersistedSessions = 50;
32
+ const ChatIndexStorageKey = "chat.ChatSessionStore.index";
33
+ const ChatTransferIndexStorageKey = "ChatSessionStore.transferIndex";
32
34
  let ChatSessionStore = class ChatSessionStore extends Disposable {
33
- static { ChatSessionStore_1 = this; }
34
- constructor(fileService, environmentService, logService, workspaceContextService, telemetryService, storageService, lifecycleService, userDataProfilesService) {
35
+ static {
36
+ ChatSessionStore_1 = this;
37
+ }
38
+ constructor(
39
+ fileService,
40
+ environmentService,
41
+ logService,
42
+ workspaceContextService,
43
+ telemetryService,
44
+ storageService,
45
+ lifecycleService,
46
+ userDataProfilesService,
47
+ configurationService
48
+ ) {
35
49
  super();
36
50
  this.fileService = fileService;
37
51
  this.environmentService = environmentService;
@@ -41,26 +55,33 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
41
55
  this.storageService = storageService;
42
56
  this.lifecycleService = lifecycleService;
43
57
  this.userDataProfilesService = userDataProfilesService;
58
+ this.configurationService = configurationService;
44
59
  this.storeQueue = ( new Sequencer());
45
60
  this.shuttingDown = false;
46
61
  const workspace = this.workspaceContextService.getWorkspace();
47
62
  const isEmptyWindow = !workspace.configuration && workspace.folders.length === 0;
48
63
  const workspaceId = this.workspaceContextService.getWorkspace().id;
49
- this.storageRoot = isEmptyWindow ?
50
- joinPath(this.userDataProfilesService.defaultProfile.globalStorageHome, 'emptyWindowChatSessions') :
51
- joinPath(this.environmentService.workspaceStorageHome, workspaceId, 'chatSessions');
52
- this.previousEmptyWindowStorageRoot = isEmptyWindow ?
53
- joinPath(this.environmentService.workspaceStorageHome, 'no-workspace', 'chatSessions') :
54
- undefined;
55
- this.transferredSessionStorageRoot = joinPath(this.userDataProfilesService.defaultProfile.globalStorageHome, 'transferredChatSessions');
64
+ this.storageRoot = isEmptyWindow ? joinPath(
65
+ this.userDataProfilesService.defaultProfile.globalStorageHome,
66
+ "emptyWindowChatSessions"
67
+ ) : joinPath(this.environmentService.workspaceStorageHome, workspaceId, "chatSessions");
68
+ this.previousEmptyWindowStorageRoot = isEmptyWindow ? joinPath(
69
+ this.environmentService.workspaceStorageHome,
70
+ "no-workspace",
71
+ "chatSessions"
72
+ ) : undefined;
73
+ this.transferredSessionStorageRoot = joinPath(
74
+ this.userDataProfilesService.defaultProfile.globalStorageHome,
75
+ "transferredChatSessions"
76
+ );
56
77
  this._register(this.lifecycleService.onWillShutdown(e => {
57
78
  this.shuttingDown = true;
58
79
  if (!this.storeTask) {
59
80
  return;
60
81
  }
61
82
  e.join(this.storeTask, {
62
- id: 'join.chatSessionStore',
63
- label: ( localize(5966, "Saving chat history"))
83
+ id: "join.chatSessionStore",
84
+ label: ( localize(6253, "Saving chat history"))
64
85
  });
65
86
  }));
66
87
  }
@@ -74,14 +95,12 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
74
95
  await Promise.all(( sessions.map(session => this.writeSession(session))));
75
96
  await this.trimEntries();
76
97
  await this.flushIndex();
77
- }
78
- catch (e) {
79
- this.reportError('storeSessions', 'Error storing chat sessions', e);
98
+ } catch (e) {
99
+ this.reportError("storeSessions", "Error storing chat sessions", e);
80
100
  }
81
101
  });
82
102
  await this.storeTask;
83
- }
84
- finally {
103
+ } finally {
85
104
  this.storeTask = undefined;
86
105
  }
87
106
  }
@@ -94,14 +113,12 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
94
113
  try {
95
114
  await Promise.all(( sessions.map(session => this.writeSessionMetadataOnly(session))));
96
115
  await this.flushIndex();
97
- }
98
- catch (e) {
99
- this.reportError('storeSessions', 'Error storing chat sessions', e);
116
+ } catch (e) {
117
+ this.reportError("storeSessions", "Error storing chat sessions", e);
100
118
  }
101
119
  });
102
120
  await this.storeTask;
103
- }
104
- finally {
121
+ } finally {
105
122
  this.storeTask = undefined;
106
123
  }
107
124
  }
@@ -116,10 +133,9 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
116
133
  const existingStorageLocation = this.getTransferredSessionStorageLocation(existingSessionResource);
117
134
  await this.fileService.del(existingStorageLocation);
118
135
  }
119
- }
120
- catch (e) {
136
+ } catch (e) {
121
137
  if (toFileOperationResult(e) !== FileOperationResult.FILE_NOT_FOUND) {
122
- this.reportError('storeTransferSession', 'Error deleting old transferred session file', e);
138
+ this.reportError("storeTransferSession", "Error deleting old transferred session file", e);
123
139
  }
124
140
  }
125
141
  }
@@ -127,30 +143,34 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
127
143
  const content = JSON.stringify(session, undefined, 2);
128
144
  const storageLocation = this.getTransferredSessionStorageLocation(session.sessionResource);
129
145
  await this.fileService.writeFile(storageLocation, VSBuffer.fromString(content));
130
- }
131
- catch (e) {
132
- this.reportError('sessionWrite', 'Error writing chat session', e);
146
+ } catch (e) {
147
+ this.reportError("sessionWrite", "Error writing chat session", e);
133
148
  return;
134
149
  }
135
150
  index[workspaceKey] = transferData;
136
151
  try {
137
- this.storageService.store(ChatTransferIndexStorageKey, index, StorageScope.PROFILE, StorageTarget.MACHINE);
138
- }
139
- catch (e) {
140
- this.reportError('storeTransferSession', 'Error storing chat transfer session', e);
152
+ this.storageService.store(
153
+ ChatTransferIndexStorageKey,
154
+ index,
155
+ StorageScope.PROFILE,
156
+ StorageTarget.MACHINE
157
+ );
158
+ } catch (e) {
159
+ this.reportError("storeTransferSession", "Error storing chat transfer session", e);
141
160
  }
142
161
  }
143
162
  getTransferredSessionIndex() {
144
163
  try {
145
164
  const data = this.storageService.getObject(ChatTransferIndexStorageKey, StorageScope.PROFILE, {});
146
165
  return data;
147
- }
148
- catch (e) {
149
- this.reportError('getTransferredSessionIndex', 'Error reading chat transfer index', e);
166
+ } catch (e) {
167
+ this.reportError("getTransferredSessionIndex", "Error reading chat transfer index", e);
150
168
  return {};
151
169
  }
152
170
  }
153
- static { this.TRANSFER_EXPIRATION_MS = 60 * 1000 * 5; }
171
+ static {
172
+ this.TRANSFER_EXPIRATION_MS = 60 * 1000 * 5;
173
+ }
154
174
  getTransferredSessionData() {
155
175
  try {
156
176
  const index = this.getTransferredSessionIndex();
@@ -165,14 +185,13 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
165
185
  }
166
186
  const revivedTransferData = revive(transferredSessionForWorkspace);
167
187
  if (Date.now() - transferredSessionForWorkspace.timestampInMilliseconds > ChatSessionStore_1.TRANSFER_EXPIRATION_MS) {
168
- this.logService.info('ChatSessionStore: Transferred session has expired');
188
+ this.logService.info("ChatSessionStore: Transferred session has expired");
169
189
  this.cleanupTransferredSession(revivedTransferData.sessionResource);
170
190
  return undefined;
171
191
  }
172
192
  return !!LocalChatSessionUri.parseLocalSessionId(revivedTransferData.sessionResource) && revivedTransferData.sessionResource;
173
- }
174
- catch (e) {
175
- this.reportError('getTransferredSession', 'Error getting transferred chat session URI', e);
193
+ } catch (e) {
194
+ this.reportError("getTransferredSession", "Error getting transferred chat session URI", e);
176
195
  return undefined;
177
196
  }
178
197
  }
@@ -183,12 +202,11 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
183
202
  if (!sessionId) {
184
203
  return undefined;
185
204
  }
186
- const sessionData = await this.readSessionFromLocation(storageLocation, sessionId);
205
+ const sessionData = await this.readSessionFromLocation(storageLocation, undefined, sessionId);
187
206
  await this.cleanupTransferredSession(sessionResource);
188
207
  return sessionData;
189
- }
190
- catch (e) {
191
- this.reportError('getTransferredSession', 'Error getting transferred chat session', e);
208
+ } catch (e) {
209
+ this.reportError("getTransferredSession", "Error getting transferred chat session", e);
192
210
  return undefined;
193
211
  }
194
212
  }
@@ -199,14 +217,18 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
199
217
  if (workspaceFolders.length === 1) {
200
218
  const workspaceKey = ( workspaceFolders[0].uri.toString());
201
219
  delete index[workspaceKey];
202
- this.storageService.store(ChatTransferIndexStorageKey, index, StorageScope.PROFILE, StorageTarget.MACHINE);
220
+ this.storageService.store(
221
+ ChatTransferIndexStorageKey,
222
+ index,
223
+ StorageScope.PROFILE,
224
+ StorageTarget.MACHINE
225
+ );
203
226
  }
204
227
  const storageLocation = this.getTransferredSessionStorageLocation(sessionResource);
205
228
  await this.fileService.del(storageLocation);
206
- }
207
- catch (e) {
229
+ } catch (e) {
208
230
  if (toFileOperationResult(e) !== FileOperationResult.FILE_NOT_FOUND) {
209
- this.reportError('cleanupTransferredSession', 'Error cleaning up transferred session', e);
231
+ this.reportError("cleanupTransferredSession", "Error cleaning up transferred session", e);
210
232
  }
211
233
  }
212
234
  }
@@ -214,12 +236,30 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
214
236
  try {
215
237
  const index = this.internalGetIndex();
216
238
  const storageLocation = this.getStorageLocation(session.sessionId);
217
- const content = JSON.stringify(session, undefined, 2);
218
- await this.fileService.writeFile(storageLocation, VSBuffer.fromString(content));
239
+ if (storageLocation.log) {
240
+ if (session instanceof ChatModel) {
241
+ if (!session.dataSerializer) {
242
+ session.dataSerializer = ( new ChatSessionOperationLog());
243
+ }
244
+ const {
245
+ op,
246
+ data
247
+ } = session.dataSerializer.write(session);
248
+ if (data.byteLength > 0) {
249
+ await this.fileService.writeFile(storageLocation.log, data, {
250
+ append: op === "append"
251
+ });
252
+ }
253
+ } else {
254
+ const content = ( new ChatSessionOperationLog()).createInitialFromSerialized(session);
255
+ await this.fileService.writeFile(storageLocation.log, content);
256
+ }
257
+ } else {
258
+ await this.fileService.writeFile(storageLocation.flat, VSBuffer.fromString(JSON.stringify(session)));
259
+ }
219
260
  index.entries[session.sessionId] = await getSessionMetadata(session);
220
- }
221
- catch (e) {
222
- this.reportError('sessionWrite', 'Error writing chat session', e);
261
+ } catch (e) {
262
+ this.reportError("sessionWrite", "Error writing chat session", e);
223
263
  }
224
264
  }
225
265
  async writeSessionMetadataOnly(session) {
@@ -230,18 +270,21 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
230
270
  const index = this.internalGetIndex();
231
271
  const externalSessionId = ( session.sessionResource.toString());
232
272
  index.entries[externalSessionId] = await getSessionMetadata(session);
233
- }
234
- catch (e) {
235
- this.reportError('sessionMetadataWrite', 'Error writing chat session metadata', e);
273
+ } catch (e) {
274
+ this.reportError("sessionMetadataWrite", "Error writing chat session metadata", e);
236
275
  }
237
276
  }
238
277
  async flushIndex() {
239
278
  const index = this.internalGetIndex();
240
279
  try {
241
- this.storageService.store(ChatIndexStorageKey, index, this.getIndexStorageScope(), StorageTarget.MACHINE);
242
- }
243
- catch (e) {
244
- this.reportError('indexWrite', 'Error writing index', e);
280
+ this.storageService.store(
281
+ ChatIndexStorageKey,
282
+ index,
283
+ this.getIndexStorageScope(),
284
+ StorageTarget.MACHINE
285
+ );
286
+ } catch (e) {
287
+ this.reportError("indexWrite", "Error writing index", e);
245
288
  }
246
289
  }
247
290
  getIndexStorageScope() {
@@ -251,16 +294,15 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
251
294
  }
252
295
  async trimEntries() {
253
296
  const index = this.internalGetIndex();
254
- const entries = ( Object.entries(index.entries)
255
- .filter(([_id, entry]) => !entry.isExternal)
256
- .sort((a, b) => b[1].lastMessageDate - a[1].lastMessageDate)
257
- .map(([id]) => id));
297
+ const entries = ( Object.entries(index.entries).filter(([_id, entry]) => !entry.isExternal).sort((a, b) => b[1].lastMessageDate - a[1].lastMessageDate).map(([id]) => id));
258
298
  if (entries.length > maxPersistedSessions) {
259
299
  const entriesToDelete = entries.slice(maxPersistedSessions);
260
300
  for (const entry of entriesToDelete) {
261
301
  delete index.entries[entry];
262
302
  }
263
- this.logService.trace(`ChatSessionStore: Trimmed ${entriesToDelete.length} old chat sessions from index`);
303
+ this.logService.trace(
304
+ `ChatSessionStore: Trimmed ${entriesToDelete.length} old chat sessions from index`
305
+ );
264
306
  }
265
307
  }
266
308
  async internalDeleteSession(sessionId) {
@@ -269,15 +311,16 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
269
311
  return;
270
312
  }
271
313
  const storageLocation = this.getStorageLocation(sessionId);
272
- try {
273
- await this.fileService.del(storageLocation);
274
- }
275
- catch (e) {
276
- if (toFileOperationResult(e) !== FileOperationResult.FILE_NOT_FOUND) {
277
- this.reportError('sessionDelete', 'Error deleting chat session', e);
314
+ for (const uri of [storageLocation.flat, storageLocation.log]) {
315
+ try {
316
+ if (uri) {
317
+ await this.fileService.del(uri);
318
+ }
319
+ } catch (e) {
320
+ if (toFileOperationResult(e) !== FileOperationResult.FILE_NOT_FOUND) {
321
+ this.reportError("sessionDelete", "Error deleting chat session", e);
322
+ }
278
323
  }
279
- }
280
- finally {
281
324
  delete index.entries[sessionId];
282
325
  }
283
326
  }
@@ -312,9 +355,13 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
312
355
  });
313
356
  }
314
357
  reportError(reasonForTelemetry, message, error) {
315
- this.logService.error(`ChatSessionStore: ` + message, toErrorMessage(error));
316
358
  const fileOperationReason = error && toFileOperationResult(error);
317
- this.telemetryService.publicLog2('chatSessionStoreError', {
359
+ if (fileOperationReason === FileOperationResult.FILE_NOT_FOUND) {
360
+ this.logService.trace(`ChatSessionStore: ` + message, toErrorMessage(error));
361
+ } else {
362
+ this.logService.error(`ChatSessionStore: ` + message, toErrorMessage(error));
363
+ }
364
+ this.telemetryService.publicLog2("chatSessionStoreError", {
318
365
  reason: reasonForTelemetry,
319
366
  fileOperationReason: fileOperationReason ?? -1
320
367
  });
@@ -325,23 +372,30 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
325
372
  }
326
373
  const data = this.storageService.get(ChatIndexStorageKey, this.getIndexStorageScope(), undefined);
327
374
  if (!data) {
328
- this.indexCache = { version: 1, entries: {} };
375
+ this.indexCache = {
376
+ version: 1,
377
+ entries: {}
378
+ };
329
379
  return this.indexCache;
330
380
  }
331
381
  try {
332
382
  const index = JSON.parse(data);
333
383
  if (isChatSessionIndex(index)) {
334
384
  this.indexCache = index;
335
- }
336
- else {
337
- this.reportError('invalidIndexFormat', `Invalid index format: ${data}`);
338
- this.indexCache = { version: 1, entries: {} };
385
+ } else {
386
+ this.reportError("invalidIndexFormat", `Invalid index format: ${data}`);
387
+ this.indexCache = {
388
+ version: 1,
389
+ entries: {}
390
+ };
339
391
  }
340
392
  return this.indexCache;
341
- }
342
- catch (e) {
343
- this.reportError('invalidIndexJSON', `Index corrupt: ${data}`, e);
344
- this.indexCache = { version: 1, entries: {} };
393
+ } catch (e) {
394
+ this.reportError("invalidIndexJSON", `Index corrupt: ${data}`, e);
395
+ this.indexCache = {
396
+ version: 1,
397
+ entries: {}
398
+ };
345
399
  return this.indexCache;
346
400
  }
347
401
  }
@@ -360,7 +414,7 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
360
414
  }
361
415
  logIndex() {
362
416
  const data = this.storageService.get(ChatIndexStorageKey, this.getIndexStorageScope(), undefined);
363
- this.logService.info('ChatSessionStore index: ', data);
417
+ this.logService.info("ChatSessionStore index: ", data);
364
418
  }
365
419
  async migrateDataIfNeeded(getInitialData) {
366
420
  await this.storeQueue.queue(async () => {
@@ -376,8 +430,10 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
376
430
  }
377
431
  async migrate(initialData) {
378
432
  const numSessions = ( Object.keys(initialData)).length;
379
- this.logService.info(`ChatSessionStore: Migrating ${numSessions} chat sessions from storage service to file system`);
380
- await Promise.all(( ( Object.values(initialData)).map(async (session) => {
433
+ this.logService.info(
434
+ `ChatSessionStore: Migrating ${numSessions} chat sessions from storage service to file system`
435
+ );
436
+ await Promise.all(( ( Object.values(initialData)).map(async session => {
381
437
  await this.writeSession(session);
382
438
  })));
383
439
  await this.flushIndex();
@@ -385,42 +441,64 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
385
441
  async readSession(sessionId) {
386
442
  return await this.storeQueue.queue(async () => {
387
443
  const storageLocation = this.getStorageLocation(sessionId);
388
- return this.readSessionFromLocation(storageLocation, sessionId);
444
+ return this.readSessionFromLocation(storageLocation.flat, storageLocation.log, sessionId);
389
445
  });
390
446
  }
391
- async readSessionFromLocation(storageLocation, sessionId) {
447
+ async readSessionFromLocation(flatStorageLocation, logStorageLocation, sessionId) {
448
+ let fromLocation = flatStorageLocation;
392
449
  let rawData;
393
- try {
394
- rawData = ( (await this.fileService.readFile(storageLocation)).value.toString());
395
- }
396
- catch (e) {
397
- this.reportError('sessionReadFile', `Error reading chat session file ${sessionId}`, e);
398
- if (toFileOperationResult(e) === FileOperationResult.FILE_NOT_FOUND && this.previousEmptyWindowStorageRoot) {
399
- rawData = await this.readSessionFromPreviousLocation(sessionId);
450
+ if (logStorageLocation) {
451
+ try {
452
+ rawData = (await this.fileService.readFile(logStorageLocation)).value;
453
+ fromLocation = logStorageLocation;
454
+ } catch (e) {
455
+ this.reportError("sessionReadFile", `Error reading log chat session file ${sessionId}`, e);
400
456
  }
401
- if (!rawData) {
402
- return undefined;
457
+ }
458
+ if (!rawData) {
459
+ try {
460
+ rawData = (await this.fileService.readFile(flatStorageLocation)).value;
461
+ fromLocation = flatStorageLocation;
462
+ } catch (e) {
463
+ this.reportError("sessionReadFile", `Error reading flat chat session file ${sessionId}`, e);
464
+ if (toFileOperationResult(e) === FileOperationResult.FILE_NOT_FOUND && this.previousEmptyWindowStorageRoot) {
465
+ rawData = await this.readSessionFromPreviousLocation(sessionId);
466
+ }
403
467
  }
404
468
  }
469
+ if (!rawData) {
470
+ return undefined;
471
+ }
405
472
  try {
406
- const session = revive(JSON.parse(rawData));
473
+ let session;
474
+ const log = ( new ChatSessionOperationLog());
475
+ if (fromLocation === logStorageLocation) {
476
+ session = revive(log.read(rawData));
477
+ } else {
478
+ session = revive(JSON.parse(( rawData.toString())));
479
+ }
407
480
  for (const request of session.requests) {
408
481
  if (Array.isArray(request.response)) {
409
- request.response = ( request.response.map((response) => {
410
- if (typeof response === 'string') {
482
+ request.response = ( request.response.map(response => {
483
+ if (typeof response === "string") {
411
484
  return ( new MarkdownString(response));
412
485
  }
413
486
  return response;
414
487
  }));
415
- }
416
- else if (typeof request.response === 'string') {
488
+ } else if (typeof request.response === "string") {
417
489
  request.response = [( new MarkdownString(request.response))];
418
490
  }
419
491
  }
420
- return normalizeSerializableChatData(session);
421
- }
422
- catch (err) {
423
- this.reportError('malformedSession', `Malformed session data in ${storageLocation.fsPath}: [${rawData.substring(0, 20)}${rawData.length > 20 ? '...' : ''}]`, err);
492
+ return {
493
+ value: normalizeSerializableChatData(session),
494
+ serializer: log
495
+ };
496
+ } catch (err) {
497
+ this.reportError(
498
+ "malformedSession",
499
+ `Malformed session data in ${fromLocation.fsPath}: [${( rawData.slice(0, 20).toString())}${rawData.byteLength > 20 ? "..." : ""}]`,
500
+ err
501
+ );
424
502
  return undefined;
425
503
  }
426
504
  }
@@ -429,18 +507,24 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
429
507
  if (this.previousEmptyWindowStorageRoot) {
430
508
  const storageLocation2 = joinPath(this.previousEmptyWindowStorageRoot, `${sessionId}.json`);
431
509
  try {
432
- rawData = ( (await this.fileService.readFile(storageLocation2)).value.toString());
510
+ rawData = (await this.fileService.readFile(storageLocation2)).value;
433
511
  this.logService.info(`ChatSessionStore: Read chat session ${sessionId} from previous location`);
434
- }
435
- catch (e) {
436
- this.reportError('sessionReadFile', `Error reading chat session file ${sessionId} from previous location`, e);
512
+ } catch (e) {
513
+ this.reportError(
514
+ "sessionReadFile",
515
+ `Error reading chat session file ${sessionId} from previous location`,
516
+ e
517
+ );
437
518
  return undefined;
438
519
  }
439
520
  }
440
521
  return rawData;
441
522
  }
442
523
  getStorageLocation(chatSessionId) {
443
- return joinPath(this.storageRoot, `${chatSessionId}.json`);
524
+ return {
525
+ flat: joinPath(this.storageRoot, `${chatSessionId}.json`),
526
+ log: this.configurationService.getValue("chat.useLogSessionStorage") !== false ? joinPath(this.storageRoot, `${chatSessionId}.jsonl`) : undefined
527
+ };
444
528
  }
445
529
  getTransferredSessionStorageLocation(sessionResource) {
446
530
  const sessionId = LocalChatSessionUri.parseLocalSessionId(sessionResource);
@@ -450,32 +534,19 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
450
534
  return this.storageRoot;
451
535
  }
452
536
  };
453
- ChatSessionStore = ChatSessionStore_1 = ( __decorate([
454
- ( __param(0, IFileService)),
455
- ( __param(1, IEnvironmentService)),
456
- ( __param(2, ILogService)),
457
- ( __param(3, IWorkspaceContextService)),
458
- ( __param(4, ITelemetryService)),
459
- ( __param(5, IStorageService)),
460
- ( __param(6, ILifecycleService)),
461
- ( __param(7, IUserDataProfilesService))
462
- ], ChatSessionStore));
537
+ ChatSessionStore = ChatSessionStore_1 = ( __decorate([( __param(0, IFileService)), ( __param(1, IEnvironmentService)), ( __param(2, ILogService)), ( __param(3, IWorkspaceContextService)), ( __param(4, ITelemetryService)), ( __param(5, IStorageService)), ( __param(6, ILifecycleService)), ( __param(7, IUserDataProfilesService)), ( __param(8, IConfigurationService))], ChatSessionStore));
463
538
  function isChatSessionEntryMetadata(obj) {
464
- return (!!obj &&
465
- typeof obj === 'object' &&
466
- typeof obj.sessionId === 'string' &&
467
- typeof obj.title === 'string' &&
468
- typeof obj.lastMessageDate === 'number');
539
+ return (!!obj && typeof obj === "object" && typeof obj.sessionId === "string" && typeof obj.title === "string" && typeof obj.lastMessageDate === "number");
469
540
  }
470
541
  function isChatSessionIndex(data) {
471
- if (typeof data !== 'object' || data === null) {
542
+ if (typeof data !== "object" || data === null) {
472
543
  return false;
473
544
  }
474
545
  const index = data;
475
546
  if (index.version !== 1) {
476
547
  return false;
477
548
  }
478
- if (typeof index.entries !== 'object' || index.entries === null) {
549
+ if (typeof index.entries !== "object" || index.entries === null) {
479
550
  return false;
480
551
  }
481
552
  for (const key in index.entries) {
@@ -491,25 +562,28 @@ async function getSessionMetadata(session) {
491
562
  if (session instanceof ChatModel) {
492
563
  stats = await awaitStatsForSession(session);
493
564
  }
494
- const timing = session instanceof ChatModel ?
495
- session.timing :
496
- {
497
- startTime: session.creationDate,
498
- endTime: session.lastMessageDate
499
- };
565
+ const lastMessageDate = session instanceof ChatModel ? session.lastMessageDate : session.requests.at(-1)?.timestamp ?? session.creationDate;
566
+ const timing = session instanceof ChatModel ? session.timing :
567
+ {
568
+ created: session.creationDate,
569
+ lastRequestStarted: session.requests.at(-1)?.timestamp,
570
+ lastRequestEnded: lastMessageDate
571
+ };
572
+ let lastResponseState = session instanceof ChatModel ? (session.lastRequest?.response?.state ?? ResponseModelState.Complete) : ResponseModelState.Complete;
573
+ if (lastResponseState === ResponseModelState.Pending || lastResponseState === ResponseModelState.NeedsInput) {
574
+ lastResponseState = ResponseModelState.Cancelled;
575
+ }
500
576
  return {
501
577
  sessionId: session.sessionId,
502
- title: title || ( localize(5967, "New Chat")),
503
- lastMessageDate: session.lastMessageDate,
578
+ title: title || ( localize(6254, "New Chat")),
579
+ lastMessageDate,
504
580
  timing,
505
581
  initialLocation: session.initialLocation,
506
582
  hasPendingEdits: session instanceof ChatModel ? (session.editingSession?.entries.get().some(e => e.state.get() === ModifiedFileEntryState.Modified)) : false,
507
583
  isEmpty: session instanceof ChatModel ? session.getRequests().length === 0 : session.requests.length === 0,
508
584
  stats,
509
585
  isExternal: session instanceof ChatModel && !LocalChatSessionUri.parseLocalSessionId(session.sessionResource),
510
- lastResponseState: session instanceof ChatModel ?
511
- (session.lastRequest?.response?.state ?? ResponseModelState.Complete) :
512
- ResponseModelState.Complete
586
+ lastResponseState
513
587
  };
514
588
  }
515
589