@codingame/monaco-vscode-chat-service-override 22.1.8 → 23.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 (276) hide show
  1. package/index.js +16 -7
  2. package/package.json +43 -41
  3. package/vscode/src/vs/editor/common/diff/documentDiffProvider.d.ts +1 -1
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +6 -6
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +57 -48
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +18 -18
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.d.ts +1 -1
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +26 -17
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +51 -5
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +2 -2
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +7 -7
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +19 -19
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/{chatClearActions.d.ts → chatNewActions.d.ts} +2 -1
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/{chatClearActions.js → chatNewActions.js} +32 -32
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +9 -9
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +101 -98
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +35 -24
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +43 -25
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +1 -1
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +33 -32
  27. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.d.ts +53 -0
  28. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.js +154 -0
  29. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.d.ts +7 -0
  30. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.js +13 -0
  31. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +44 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +347 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +85 -0
  34. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +250 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +24 -0
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +97 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +290 -231
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +2 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +7 -10
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.d.ts +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +6 -6
  42. package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.d.ts +24 -0
  44. package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.js +113 -0
  45. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +31 -0
  46. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +102 -0
  47. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +646 -0
  48. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +2 -3
  49. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +46 -26
  50. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +17 -4
  51. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +44 -34
  52. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +14 -14
  53. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +25 -6
  54. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +46 -10
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +45 -6
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +30 -10
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +10 -3
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +60 -9
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +117 -0
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +12 -0
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +6 -4
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +60 -55
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +29 -16
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +365 -143
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +2 -3
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +3 -30
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +7 -3
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +58 -22
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +1 -1
  70. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +5 -4
  71. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.d.ts +3 -3
  72. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +3 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +5 -5
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +6 -18
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.d.ts +1 -3
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +7 -11
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +13 -1
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +38 -33
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +11 -6
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +83 -24
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.d.ts +1 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +91 -0
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +64 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +370 -0
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.d.ts +25 -0
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +56 -0
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +61 -0
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +349 -0
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +43 -0
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +787 -0
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.d.ts +17 -0
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +109 -0
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatManagementEditor.css +122 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +211 -0
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatUsageWidget.css +69 -0
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +21 -20
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +54 -54
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +31 -22
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +16 -6
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.d.ts +6 -3
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.js +29 -21
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.d.ts +5 -2
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.js +37 -33
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +15 -12
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +96 -131
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +12 -7
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +66 -34
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +5 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +77 -71
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +91 -18
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +458 -138
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +3 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +212 -150
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +96 -89
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +3 -2
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +5 -5
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +3 -4
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +15 -16
  124. package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
  125. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +33 -17
  126. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
  127. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
  128. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.d.ts +27 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.js +688 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +15 -10
  131. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +126 -135
  132. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +6 -1
  133. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditorController.css +2 -1
  134. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +38 -1
  135. package/vscode/src/vs/workbench/contrib/chat/browser/media/simpleBrowserOverlay.css +14 -14
  136. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.d.ts +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +28 -26
  138. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +1 -1
  139. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +3 -3
  140. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +9 -6
  141. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +24 -13
  142. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +15 -14
  143. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +25 -23
  144. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.d.ts +21 -0
  145. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +89 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
  147. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +30 -29
  148. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +10 -19
  149. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +61 -43
  150. package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +7 -4
  151. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +28 -28
  152. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +254 -165
  153. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +4 -4
  154. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +2 -2
  155. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +1 -1
  156. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +4 -6
  157. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +10 -6
  158. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +20 -12
  159. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +13 -17
  160. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +9 -8
  161. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +1 -0
  162. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +51 -21
  163. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +7 -3
  164. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +74 -20
  165. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +11 -6
  166. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -2
  167. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +83 -53
  168. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +2 -1
  169. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +136 -78
  170. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +4 -4
  171. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +18 -10
  172. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +357 -157
  173. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
  174. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +55 -28
  175. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +235 -108
  176. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +12 -2
  177. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +50 -4
  178. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +27 -27
  179. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
  180. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
  181. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +3 -1
  182. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +11 -7
  183. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +12 -14
  184. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
  185. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +1 -1
  186. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +18 -30
  187. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +62 -139
  188. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.d.ts +1 -1
  189. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +16 -15
  190. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  191. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
  192. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +3 -0
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +119 -15
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +6 -4
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +47 -0
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +192 -0
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +7 -5
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +21 -16
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +8 -3
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +2 -2
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +18 -27
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +5 -2
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +3 -1
  206. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +1 -1
  207. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -25
  208. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +2 -2
  209. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +18 -27
  210. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +12 -0
  211. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +31 -0
  212. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +3 -0
  213. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +24 -8
  214. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +8 -0
  215. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +1 -1
  216. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +33 -4
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +42 -13
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +14 -21
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +23 -0
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +18 -0
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +227 -0
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +17 -0
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +133 -0
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +5 -0
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +36 -0
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +8 -0
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +33 -0
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +17 -0
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +4 -4
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +5 -1
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +75 -37
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +1 -0
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +8 -0
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +71 -0
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +28 -15
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +366 -363
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +18 -18
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +9 -9
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +16 -16
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +19 -0
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +123 -0
  245. package/vscode/src/vs/base/common/yaml.d.ts +0 -74
  246. package/vscode/src/vs/base/common/yaml.js +0 -597
  247. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.d.ts +0 -8
  248. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +0 -239
  249. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +0 -102
  250. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +0 -435
  251. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.d.ts +0 -14
  252. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.js +0 -67
  253. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.d.ts +0 -49
  254. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +0 -380
  255. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/common.d.ts +0 -37
  256. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/common.js +0 -137
  257. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.d.ts +0 -44
  258. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +0 -176
  259. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.d.ts +0 -4
  260. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +0 -206
  261. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.d.ts +0 -7
  262. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +0 -79
  263. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.d.ts +0 -8
  264. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +0 -145
  265. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.d.ts +0 -65
  266. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +0 -306
  267. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.d.ts +0 -12
  268. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +0 -102
  269. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/newPromptsParser.d.ts +0 -97
  270. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/newPromptsParser.js +0 -247
  271. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.d.ts +0 -118
  272. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.js +0 -10
  273. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.d.ts +0 -10
  274. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.js +0 -55
  275. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +0 -2
  276. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +0 -66
@@ -1,81 +1,189 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { sep } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
4
+ import { raceCancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
3
5
  import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
4
6
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
5
7
  import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
6
- import { DisposableStore, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
8
+ import { Disposable, DisposableMap, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
9
+ import { ResourceMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
10
+ import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
11
+ import { joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
12
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
13
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
7
14
  import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
8
15
  import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
9
- import { MenuRegistry, MenuId, registerAction2, Action2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
16
+ import { MenuId, MenuItemAction, MenuRegistry, registerAction2, Action2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
17
+ import { IMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions.service';
10
18
  import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
11
19
  import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
12
20
  import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/extensions';
21
+ import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
13
22
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
23
+ import { isDark } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/theme';
24
+ import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
14
25
  import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
15
26
  import { isProposedApiEnabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions';
16
27
  import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
17
28
  import { ExtensionsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionsRegistry';
18
- import { ChatEditorInput } from '@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/browser/chatEditorInput';
29
+ import { ChatEditorInput } from '@codingame/monaco-vscode-aac7027b-326c-513a-95a9-e4eedd151b38-common/vscode/vs/workbench/contrib/chat/browser/chatEditorInput';
19
30
  import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
20
31
  import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatContextKeys';
21
- import { ChatSessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
32
+ import { localChatSessionType, ChatSessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
22
33
  import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
23
- import { ChatSessionUri } from '@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/common/chatUri';
24
- import { VIEWLET_ID, ChatModeKind, ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
25
- import { CHAT_CATEGORY } from '@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
26
- import { NEW_CHAT_SESSION_ACTION_ID } from './chatSessions/common.js';
34
+ import { AGENT_SESSIONS_VIEWLET_ID, ChatModeKind, ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
35
+ import { CHAT_CATEGORY } from '@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
36
+ import { NEW_CHAT_SESSION_ACTION_ID } from '@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/browser/chatSessions/common';
27
37
 
28
38
  const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
29
39
  extensionPoint: 'chatSessions',
30
40
  jsonSchema: {
31
- description: ( localize(5221, 'Contributes chat session integrations to the chat widget.')),
41
+ description: ( localize(5366, 'Contributes chat session integrations to the chat widget.')),
32
42
  type: 'array',
33
43
  items: {
34
44
  type: 'object',
45
+ additionalProperties: false,
35
46
  properties: {
36
47
  type: {
37
- description: ( localize(5222, 'Unique identifier for the type of chat session.')),
48
+ description: ( localize(5367, 'Unique identifier for the type of chat session.')),
38
49
  type: 'string',
39
50
  },
40
51
  name: {
41
- description: ( localize(5223, 'Name shown in the chat widget. (eg: @agent)')),
52
+ description: ( localize(
53
+ 5368,
54
+ 'Name of the dynamically registered chat participant (eg: @agent). Must not contain whitespace.'
55
+ )),
42
56
  type: 'string',
57
+ pattern: '^[\\w-]+$'
43
58
  },
44
59
  displayName: {
45
- description: ( localize(5224, 'A longer name for this item which is used for display in menus.')),
60
+ description: ( localize(5369, 'A longer name for this item which is used for display in menus.')),
46
61
  type: 'string',
47
62
  },
48
63
  description: {
49
- description: ( localize(5225, 'Description of the chat session for use in menus and tooltips.')),
64
+ description: ( localize(5370, 'Description of the chat session for use in menus and tooltips.')),
50
65
  type: 'string'
51
66
  },
52
67
  when: {
53
- description: ( localize(5226, 'Condition which must be true to show this item.')),
68
+ description: ( localize(5371, 'Condition which must be true to show this item.')),
69
+ type: 'string'
70
+ },
71
+ icon: {
72
+ description: ( localize(
73
+ 5372,
74
+ 'Icon identifier (codicon ID) for the chat session editor tab. For example, "$(github)" or "$(cloud)".'
75
+ )),
76
+ anyOf: [{
77
+ type: 'string'
78
+ },
79
+ {
80
+ type: 'object',
81
+ properties: {
82
+ light: {
83
+ description: ( localize(5373, 'Icon path when a light theme is used')),
84
+ type: 'string'
85
+ },
86
+ dark: {
87
+ description: ( localize(5374, 'Icon path when a dark theme is used')),
88
+ type: 'string'
89
+ }
90
+ }
91
+ }]
92
+ },
93
+ order: {
94
+ description: ( localize(5375, 'Order in which this item should be displayed.')),
95
+ type: 'integer'
96
+ },
97
+ alternativeIds: {
98
+ description: ( localize(5376, 'Alternative identifiers for backward compatibility.')),
99
+ type: 'array',
100
+ items: {
101
+ type: 'string'
102
+ }
103
+ },
104
+ welcomeTitle: {
105
+ description: ( localize(
106
+ 5377,
107
+ 'Title text to display in the chat welcome view for this session type.'
108
+ )),
109
+ type: 'string'
110
+ },
111
+ welcomeMessage: {
112
+ description: ( localize(
113
+ 5378,
114
+ 'Message text (supports markdown) to display in the chat welcome view for this session type.'
115
+ )),
116
+ type: 'string'
117
+ },
118
+ welcomeTips: {
119
+ description: ( localize(
120
+ 5379,
121
+ 'Tips text (supports markdown and theme icons) to display in the chat welcome view for this session type.'
122
+ )),
123
+ type: 'string'
124
+ },
125
+ inputPlaceholder: {
126
+ description: ( localize(
127
+ 5380,
128
+ 'Placeholder text to display in the chat input box for this session type.'
129
+ )),
54
130
  type: 'string'
55
131
  },
56
132
  capabilities: {
57
- description: ( localize(5227, 'Optional capabilities for this chat session.')),
133
+ description: ( localize(5381, 'Optional capabilities for this chat session.')),
58
134
  type: 'object',
135
+ additionalProperties: false,
59
136
  properties: {
60
137
  supportsFileAttachments: {
61
138
  description: ( localize(
62
- 5228,
139
+ 5382,
63
140
  'Whether this chat session supports attaching files or file references.'
64
141
  )),
65
142
  type: 'boolean'
66
143
  },
67
144
  supportsToolAttachments: {
68
145
  description: ( localize(
69
- 5229,
146
+ 5383,
70
147
  'Whether this chat session supports attaching tools or tool references.'
71
148
  )),
72
149
  type: 'boolean'
150
+ },
151
+ supportsMCPAttachments: {
152
+ description: ( localize(5384, 'Whether this chat session supports attaching MCP resources.')),
153
+ type: 'boolean'
154
+ },
155
+ supportsImageAttachments: {
156
+ description: ( localize(5385, 'Whether this chat session supports attaching images.')),
157
+ type: 'boolean'
158
+ },
159
+ supportsSearchResultAttachments: {
160
+ description: ( localize(5386, 'Whether this chat session supports attaching search results.')),
161
+ type: 'boolean'
162
+ },
163
+ supportsInstructionAttachments: {
164
+ description: ( localize(5387, 'Whether this chat session supports attaching instructions.')),
165
+ type: 'boolean'
166
+ },
167
+ supportsSourceControlAttachments: {
168
+ description: ( localize(
169
+ 5388,
170
+ 'Whether this chat session supports attaching source control changes.'
171
+ )),
172
+ type: 'boolean'
173
+ },
174
+ supportsProblemAttachments: {
175
+ description: ( localize(5389, 'Whether this chat session supports attaching problems.')),
176
+ type: 'boolean'
177
+ },
178
+ supportsSymbolAttachments: {
179
+ description: ( localize(5390, 'Whether this chat session supports attaching symbols.')),
180
+ type: 'boolean'
73
181
  }
74
182
  }
75
183
  },
76
184
  commands: {
77
185
  markdownDescription: ( localize(
78
- 5230,
186
+ 5391,
79
187
  "Commands available for this chat session, which the user can invoke with a `/`."
80
188
  )),
81
189
  type: 'array',
@@ -87,17 +195,17 @@ const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
87
195
  properties: {
88
196
  name: {
89
197
  description: ( localize(
90
- 5231,
198
+ 5392,
91
199
  "A short name by which this command is referred to in the UI, e.g. `fix` or `explain` for commands that fix an issue or explain code. The name should be unique among the commands provided by this participant."
92
200
  )),
93
201
  type: 'string'
94
202
  },
95
203
  description: {
96
- description: ( localize(5232, "A description of this command.")),
204
+ description: ( localize(5393, "A description of this command.")),
97
205
  type: 'string'
98
206
  },
99
207
  when: {
100
- description: ( localize(5233, "A condition which must be true to enable this command.")),
208
+ description: ( localize(5394, "A condition which must be true to enable this command.")),
101
209
  type: 'string'
102
210
  },
103
211
  }
@@ -113,44 +221,66 @@ const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
113
221
  }
114
222
  }
115
223
  });
116
- class ContributedChatSessionData {
117
- constructor(session, chatSessionType, id, onWillDispose) {
224
+ class ContributedChatSessionData extends Disposable {
225
+ getOption(optionId) {
226
+ return this._optionsCache.get(optionId);
227
+ }
228
+ setOption(optionId, value) {
229
+ this._optionsCache.set(optionId, value);
230
+ }
231
+ constructor(session, chatSessionType, resource, options, onWillDispose) {
232
+ super();
118
233
  this.session = session;
119
234
  this.chatSessionType = chatSessionType;
120
- this.id = id;
235
+ this.resource = resource;
236
+ this.options = options;
121
237
  this.onWillDispose = onWillDispose;
122
- this._disposableStore = ( new DisposableStore());
123
- this._disposableStore.add(this.session.onWillDispose(() => {
124
- this.onWillDispose(this.session, this.chatSessionType, this.id);
238
+ this._optionsCache = ( new Map());
239
+ if (options) {
240
+ for (const [key, value] of Object.entries(options)) {
241
+ this._optionsCache.set(key, value);
242
+ }
243
+ }
244
+ this._register(this.session.onWillDispose(() => {
245
+ this.onWillDispose(this.resource);
125
246
  }));
126
247
  }
127
- dispose() {
128
- this._disposableStore.dispose();
129
- }
130
248
  }
131
249
  let ChatSessionsService = class ChatSessionsService extends Disposable {
132
250
  get onDidChangeInProgress() { return this._onDidChangeInProgress.event; }
133
- constructor(_logService, _chatAgentService, _extensionService, _contextKeyService) {
251
+ get onDidChangeContentProviderSchemes() { return this._onDidChangeContentProviderSchemes.event; }
252
+ constructor(_logService, _chatAgentService, _extensionService, _contextKeyService, _menuService, _themeService, _labelService) {
134
253
  super();
135
254
  this._logService = _logService;
136
255
  this._chatAgentService = _chatAgentService;
137
256
  this._extensionService = _extensionService;
138
257
  this._contextKeyService = _contextKeyService;
258
+ this._menuService = _menuService;
259
+ this._themeService = _themeService;
260
+ this._labelService = _labelService;
139
261
  this._itemsProviders = ( new Map());
140
- this._onDidChangeItemsProviders = this._register(( new Emitter()));
141
- this.onDidChangeItemsProviders = this._onDidChangeItemsProviders.event;
142
- this._contentProviders = ( new Map());
143
262
  this._contributions = ( new Map());
144
- this._disposableStores = ( new Map());
263
+ this._contributionDisposables = this._register(( new DisposableMap()));
264
+ this._contentProviders = ( new Map());
265
+ this._alternativeIdMap = ( new Map());
145
266
  this._contextKeys = ( new Set());
267
+ this._onDidChangeItemsProviders = this._register(( new Emitter()));
268
+ this.onDidChangeItemsProviders = this._onDidChangeItemsProviders.event;
146
269
  this._onDidChangeSessionItems = this._register(( new Emitter()));
147
270
  this.onDidChangeSessionItems = this._onDidChangeSessionItems.event;
148
271
  this._onDidChangeAvailability = this._register(( new Emitter()));
149
272
  this.onDidChangeAvailability = this._onDidChangeAvailability.event;
150
273
  this._onDidChangeInProgress = this._register(( new Emitter()));
274
+ this._onDidChangeContentProviderSchemes = this._register(( new Emitter()));
151
275
  this.inProgressMap = ( new Map());
152
- this._sessions = ( new Map());
153
- this._editableSessions = ( new Map());
276
+ this._sessionTypeOptions = ( new Map());
277
+ this._sessionTypeIcons = ( new Map());
278
+ this._sessionTypeWelcomeTitles = ( new Map());
279
+ this._sessionTypeWelcomeMessages = ( new Map());
280
+ this._sessionTypeWelcomeTips = ( new Map());
281
+ this._sessionTypeInputPlaceholders = ( new Map());
282
+ this._sessions = ( new ResourceMap());
283
+ this._editableSessions = ( new ResourceMap());
154
284
  this._register(extensionPoint.setHandler(extensions => {
155
285
  for (const ext of extensions) {
156
286
  if (!isProposedApiEnabled(ext.description, 'chatSessionsProvider')) {
@@ -160,17 +290,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
160
290
  continue;
161
291
  }
162
292
  for (const contribution of ext.value) {
163
- const c = {
164
- type: contribution.type,
165
- name: contribution.name,
166
- displayName: contribution.displayName,
167
- description: contribution.description,
168
- when: contribution.when,
169
- capabilities: contribution.capabilities,
170
- extensionDescription: ext.description,
171
- commands: contribution.commands
172
- };
173
- this._register(this.registerContribution(c));
293
+ this._register(this.registerContribution(contribution, ext.description));
174
294
  }
175
295
  }
176
296
  }));
@@ -182,14 +302,22 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
182
302
  this._logService.warn(`Failed to update progress status for '${chatSessionType}':`, error);
183
303
  });
184
304
  }));
305
+ this._register(this._labelService.registerFormatter({
306
+ scheme: Schemas.copilotPr,
307
+ formatting: {
308
+ label: '${authority}${path}',
309
+ separator: sep,
310
+ stripPathStartingSeparator: true,
311
+ }
312
+ }));
185
313
  }
186
314
  reportInProgress(chatSessionType, count) {
187
315
  let displayName;
188
- if (chatSessionType === 'local') {
189
- displayName = 'Local Chat Sessions';
316
+ if (chatSessionType === localChatSessionType) {
317
+ displayName = 'Local Chat Agent';
190
318
  }
191
319
  else {
192
- displayName = this._contributions.get(chatSessionType)?.displayName;
320
+ displayName = this._contributions.get(chatSessionType)?.contribution.displayName;
193
321
  }
194
322
  if (displayName) {
195
323
  this.inProgressMap.set(displayName, count);
@@ -201,7 +329,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
201
329
  }
202
330
  async updateInProgressStatus(chatSessionType) {
203
331
  try {
204
- const items = await this.provideChatSessionItems(chatSessionType, CancellationToken.None);
332
+ const items = await this.getChatSessionItems(chatSessionType, CancellationToken.None);
205
333
  const inProgress = items.filter(item => item.status === ChatSessionStatus.InProgress);
206
334
  this.reportInProgress(chatSessionType, inProgress.length);
207
335
  }
@@ -209,7 +337,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
209
337
  this._logService.warn(`Failed to update in-progress status for chat session type '${chatSessionType}':`, error);
210
338
  }
211
339
  }
212
- registerContribution(contribution) {
340
+ registerContribution(contribution, ext) {
213
341
  if (( this._contributions.has(contribution.type))) {
214
342
  this._logService.warn(`Chat session contribution with id '${contribution.type}' is already registered.`);
215
343
  return { dispose: () => { } };
@@ -222,16 +350,61 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
222
350
  }
223
351
  }
224
352
  }
225
- this._contributions.set(contribution.type, contribution);
353
+ this._contributions.set(contribution.type, { contribution, extension: ext });
354
+ if (contribution.alternativeIds) {
355
+ for (const altId of contribution.alternativeIds) {
356
+ if (( this._alternativeIdMap.has(altId))) {
357
+ this._logService.warn(`Alternative ID '${altId}' is already mapped to '${this._alternativeIdMap.get(altId)}'. Remapping to '${contribution.type}'.`);
358
+ }
359
+ this._alternativeIdMap.set(altId, contribution.type);
360
+ }
361
+ }
362
+ let icon;
363
+ if (contribution.icon) {
364
+ if (typeof contribution.icon === 'string') {
365
+ icon = contribution.icon.startsWith('$(') && contribution.icon.endsWith(')')
366
+ ? ThemeIcon.fromString(contribution.icon)
367
+ : ThemeIcon.fromId(contribution.icon);
368
+ }
369
+ else {
370
+ icon = {
371
+ dark: joinPath(ext.extensionLocation, contribution.icon.dark),
372
+ light: joinPath(ext.extensionLocation, contribution.icon.light)
373
+ };
374
+ }
375
+ }
376
+ if (icon) {
377
+ this._sessionTypeIcons.set(contribution.type, icon);
378
+ }
379
+ if (contribution.welcomeTitle) {
380
+ this._sessionTypeWelcomeTitles.set(contribution.type, contribution.welcomeTitle);
381
+ }
382
+ if (contribution.welcomeMessage) {
383
+ this._sessionTypeWelcomeMessages.set(contribution.type, contribution.welcomeMessage);
384
+ }
385
+ if (contribution.welcomeTips) {
386
+ this._sessionTypeWelcomeTips.set(contribution.type, contribution.welcomeTips);
387
+ }
388
+ if (contribution.inputPlaceholder) {
389
+ this._sessionTypeInputPlaceholders.set(contribution.type, contribution.inputPlaceholder);
390
+ }
226
391
  this._evaluateAvailability();
227
392
  return {
228
393
  dispose: () => {
229
394
  this._contributions.delete(contribution.type);
230
- const store = this._disposableStores.get(contribution.type);
231
- if (store) {
232
- store.dispose();
233
- this._disposableStores.delete(contribution.type);
395
+ if (contribution.alternativeIds) {
396
+ for (const altId of contribution.alternativeIds) {
397
+ if (this._alternativeIdMap.get(altId) === contribution.type) {
398
+ this._alternativeIdMap.delete(altId);
399
+ }
400
+ }
234
401
  }
402
+ this._sessionTypeIcons.delete(contribution.type);
403
+ this._sessionTypeWelcomeTitles.delete(contribution.type);
404
+ this._sessionTypeWelcomeMessages.delete(contribution.type);
405
+ this._sessionTypeWelcomeTips.delete(contribution.type);
406
+ this._sessionTypeInputPlaceholders.delete(contribution.type);
407
+ this._contributionDisposables.deleteAndDispose(contribution.type);
235
408
  }
236
409
  };
237
410
  }
@@ -242,28 +415,77 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
242
415
  const whenExpr = ContextKeyExpr.deserialize(contribution.when);
243
416
  return !whenExpr || this._contextKeyService.contextMatchesRules(whenExpr);
244
417
  }
245
- _registerMenuItems(contribution) {
246
- return MenuRegistry.appendMenuItem(MenuId.ViewTitle, {
247
- command: {
248
- id: `${NEW_CHAT_SESSION_ACTION_ID}.${contribution.type}`,
249
- title: ( localize(5234, "New {0} Chat Editor", contribution.displayName)),
418
+ _resolveToPrimaryType(sessionType) {
419
+ const contribution = this._contributions.get(sessionType)?.contribution;
420
+ if (contribution) {
421
+ if (this._isContributionAvailable(contribution)) {
422
+ return sessionType;
423
+ }
424
+ }
425
+ const primaryType = this._alternativeIdMap.get(sessionType);
426
+ if (primaryType) {
427
+ const altContribution = this._contributions.get(primaryType)?.contribution;
428
+ if (altContribution && this._isContributionAvailable(altContribution)) {
429
+ this._logService.info(`Resolving chat session type '${sessionType}' to alternative type '${primaryType}'`);
430
+ return primaryType;
431
+ }
432
+ }
433
+ return undefined;
434
+ }
435
+ _registerMenuItems(contribution, extensionDescription) {
436
+ const contextKeyService = this._contextKeyService.createOverlay([
437
+ ['chatSessionType', contribution.type]
438
+ ]);
439
+ const rawMenuActions = this._menuService.getMenuActions(MenuId.ChatSessionsCreateSubMenu, contextKeyService);
440
+ const menuActions = ( rawMenuActions.map(value => value[1])).flat();
441
+ const whenClause = ( ContextKeyExpr.and(( ContextKeyExpr.equals('view', `${AGENT_SESSIONS_VIEWLET_ID}.${contribution.type}`))));
442
+ if (menuActions.length === 1) {
443
+ const first = menuActions[0];
444
+ if (first instanceof MenuItemAction) {
445
+ return MenuRegistry.appendMenuItem(MenuId.ViewTitle, {
446
+ group: 'navigation',
447
+ title: first.label,
448
+ icon: Codicon.plus,
449
+ order: 1,
450
+ when: whenClause,
451
+ command: first.item,
452
+ });
453
+ }
454
+ }
455
+ if (menuActions.length) {
456
+ return MenuRegistry.appendMenuItem(MenuId.ViewTitle, {
457
+ group: 'navigation',
458
+ title: ( localize(5395, "Create chat session")),
250
459
  icon: Codicon.plus,
251
- source: {
252
- id: contribution.extensionDescription.identifier.value,
253
- title: contribution.extensionDescription.displayName || contribution.extensionDescription.name,
254
- }
255
- },
256
- group: 'navigation',
257
- order: 1,
258
- when: ( ContextKeyExpr.and(( ContextKeyExpr.equals('view', `${VIEWLET_ID}.${contribution.type}`)))),
259
- });
460
+ order: 1,
461
+ when: whenClause,
462
+ submenu: MenuId.ChatSessionsCreateSubMenu,
463
+ isSplitButton: menuActions.length > 1
464
+ });
465
+ }
466
+ else {
467
+ return MenuRegistry.appendMenuItem(MenuId.ViewTitle, {
468
+ command: {
469
+ id: `${NEW_CHAT_SESSION_ACTION_ID}.${contribution.type}`,
470
+ title: ( localize(5396, "New {0}", contribution.displayName)),
471
+ icon: Codicon.plus,
472
+ source: {
473
+ id: extensionDescription.identifier.value,
474
+ title: extensionDescription.displayName || extensionDescription.name,
475
+ }
476
+ },
477
+ group: 'navigation',
478
+ order: 1,
479
+ when: whenClause,
480
+ });
481
+ }
260
482
  }
261
483
  _registerCommands(contribution) {
262
484
  return registerAction2(class OpenNewChatSessionEditorAction extends Action2 {
263
485
  constructor() {
264
486
  super({
265
487
  id: `workbench.action.chat.openNewSessionEditor.${contribution.type}`,
266
- title: ( localize2(5234, "New {0} Chat Editor", contribution.displayName)),
488
+ title: ( localize2(5396, "New {0}", contribution.displayName)),
267
489
  category: CHAT_CATEGORY,
268
490
  icon: Codicon.plus,
269
491
  f1: true,
@@ -278,12 +500,15 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
278
500
  const options = {
279
501
  override: ChatEditorInput.EditorID,
280
502
  pinned: true,
503
+ title: {
504
+ fallback: ( localize(5397, "{0}", contribution.displayName)),
505
+ }
281
506
  };
282
- const untitledId = `untitled-${generateUuid()}`;
283
- await editorService.openEditor({
284
- resource: ChatSessionUri.forSession(type, untitledId),
285
- options,
286
- });
507
+ const resource = ( URI.from({
508
+ scheme: type,
509
+ path: `/untitled-${generateUuid()}`,
510
+ }));
511
+ await editorService.openEditor({ resource, options });
287
512
  }
288
513
  catch (e) {
289
514
  logService.error(`Failed to open new '${type}' chat session editor`, e);
@@ -293,20 +518,16 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
293
518
  }
294
519
  _evaluateAvailability() {
295
520
  let hasChanges = false;
296
- for (const contribution of ( this._contributions.values())) {
297
- const isCurrentlyRegistered = ( this._disposableStores.has(contribution.type));
521
+ for (const { contribution, extension } of ( this._contributions.values())) {
522
+ const isCurrentlyRegistered = ( this._contributionDisposables.has(contribution.type));
298
523
  const shouldBeRegistered = this._isContributionAvailable(contribution);
299
524
  if (isCurrentlyRegistered && !shouldBeRegistered) {
300
- const store = this._disposableStores.get(contribution.type);
301
- if (store) {
302
- store.dispose();
303
- this._disposableStores.delete(contribution.type);
304
- }
525
+ this._contributionDisposables.deleteAndDispose(contribution.type);
305
526
  this._disposeSessionsForContribution(contribution.type);
306
527
  hasChanges = true;
307
528
  }
308
529
  else if (!isCurrentlyRegistered && shouldBeRegistered) {
309
- this._enableContribution(contribution);
530
+ this._enableContribution(contribution, extension);
310
531
  hasChanges = true;
311
532
  }
312
533
  }
@@ -315,23 +536,23 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
315
536
  for (const provider of ( this._itemsProviders.values())) {
316
537
  this._onDidChangeItemsProviders.fire(provider);
317
538
  }
318
- for (const contribution of ( this._contributions.values())) {
539
+ for (const { contribution } of ( this._contributions.values())) {
319
540
  this._onDidChangeSessionItems.fire(contribution.type);
320
541
  }
321
542
  }
322
543
  }
323
- _enableContribution(contribution) {
544
+ _enableContribution(contribution, ext) {
324
545
  const disposableStore = ( new DisposableStore());
325
- this._disposableStores.set(contribution.type, disposableStore);
326
- disposableStore.add(this._registerAgent(contribution));
546
+ this._contributionDisposables.set(contribution.type, disposableStore);
547
+ disposableStore.add(this._registerAgent(contribution, ext));
327
548
  disposableStore.add(this._registerCommands(contribution));
328
- disposableStore.add(this._registerMenuItems(contribution));
549
+ disposableStore.add(this._registerMenuItems(contribution, ext));
329
550
  }
330
551
  _disposeSessionsForContribution(contributionId) {
331
552
  const sessionsToDispose = [];
332
- for (const [sessionKey, sessionData] of this._sessions) {
553
+ for (const [sessionResource, sessionData] of this._sessions) {
333
554
  if (sessionData.chatSessionType === contributionId) {
334
- sessionsToDispose.push(sessionKey);
555
+ sessionsToDispose.push(sessionResource);
335
556
  }
336
557
  }
337
558
  if (sessionsToDispose.length > 0) {
@@ -344,9 +565,8 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
344
565
  }
345
566
  }
346
567
  }
347
- _registerAgent(contribution) {
348
- const { type: id, name, displayName, description, extensionDescription } = contribution;
349
- const { identifier: extensionId, name: extensionName, displayName: extensionDisplayName, publisher: extensionPublisherId } = extensionDescription;
568
+ _registerAgent(contribution, ext) {
569
+ const { type: id, name, displayName, description } = contribution;
350
570
  const agentData = {
351
571
  id,
352
572
  name,
@@ -364,25 +584,30 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
364
584
  isSticky: false,
365
585
  },
366
586
  capabilities: contribution.capabilities,
367
- extensionId,
368
- extensionVersion: extensionDescription.version,
369
- extensionDisplayName: extensionDisplayName || extensionName,
370
- extensionPublisherId,
587
+ extensionId: ext.identifier,
588
+ extensionVersion: ext.version,
589
+ extensionDisplayName: ext.displayName || ext.name,
590
+ extensionPublisherId: ext.publisher,
371
591
  };
372
592
  return this._chatAgentService.registerAgent(id, agentData);
373
593
  }
374
594
  getAllChatSessionContributions() {
375
- return Array.from(( this._contributions.values())).filter(contribution => this._isContributionAvailable(contribution));
595
+ return Array.from(( this._contributions.values()), x => x.contribution)
596
+ .filter(contribution => this._isContributionAvailable(contribution));
376
597
  }
377
598
  getAllChatSessionItemProviders() {
378
599
  return [...( this._itemsProviders.values())].filter(provider => {
379
- const contribution = this._contributions.get(provider.chatSessionType);
600
+ const contribution = this._contributions.get(provider.chatSessionType)?.contribution;
380
601
  return !contribution || this._isContributionAvailable(contribution);
381
602
  });
382
603
  }
383
- async canResolveItemProvider(chatViewType) {
604
+ async hasChatSessionItemProvider(chatViewType) {
384
605
  await this._extensionService.whenInstalledExtensionsRegistered();
385
- const contribution = this._contributions.get(chatViewType);
606
+ const resolvedType = this._resolveToPrimaryType(chatViewType);
607
+ if (resolvedType) {
608
+ chatViewType = resolvedType;
609
+ }
610
+ const contribution = this._contributions.get(chatViewType)?.contribution;
386
611
  if (contribution && !this._isContributionAvailable(contribution)) {
387
612
  return false;
388
613
  }
@@ -392,22 +617,35 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
392
617
  await this._extensionService.activateByEvent(`onChatSession:${chatViewType}`);
393
618
  return ( this._itemsProviders.has(chatViewType));
394
619
  }
395
- async canResolveContentProvider(chatViewType) {
620
+ async canResolveChatSession(chatSessionResource) {
396
621
  await this._extensionService.whenInstalledExtensionsRegistered();
397
- const contribution = this._contributions.get(chatViewType);
622
+ const resolvedType = this._resolveToPrimaryType(chatSessionResource.scheme) || chatSessionResource.scheme;
623
+ const contribution = this._contributions.get(resolvedType)?.contribution;
398
624
  if (contribution && !this._isContributionAvailable(contribution)) {
399
625
  return false;
400
626
  }
401
- if (( this._contentProviders.has(chatViewType))) {
627
+ if (( this._contentProviders.has(chatSessionResource.scheme))) {
402
628
  return true;
403
629
  }
404
- await this._extensionService.activateByEvent(`onChatSession:${chatViewType}`);
405
- return ( this._contentProviders.has(chatViewType));
630
+ await this._extensionService.activateByEvent(`onChatSession:${chatSessionResource.scheme}`);
631
+ return ( this._contentProviders.has(chatSessionResource.scheme));
406
632
  }
407
- async provideChatSessionItems(chatSessionType, token) {
408
- if (!(await this.canResolveItemProvider(chatSessionType))) {
633
+ async getAllChatSessionItems(token) {
634
+ return Promise.all(Array.from(this.getAllChatSessionContributions(), async (contrib) => {
635
+ return {
636
+ chatSessionType: contrib.type,
637
+ items: await this.getChatSessionItems(contrib.type, token)
638
+ };
639
+ }));
640
+ }
641
+ async getChatSessionItems(chatSessionType, token) {
642
+ if (!(await this.hasChatSessionItemProvider(chatSessionType))) {
409
643
  return [];
410
644
  }
645
+ const resolvedType = this._resolveToPrimaryType(chatSessionType);
646
+ if (resolvedType) {
647
+ chatSessionType = resolvedType;
648
+ }
411
649
  const provider = this._itemsProviders.get(chatSessionType);
412
650
  if (provider?.provideChatSessionItems) {
413
651
  const sessions = await provider.provideChatSessionItems(token);
@@ -438,10 +676,15 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
438
676
  };
439
677
  }
440
678
  registerChatSessionContentProvider(chatSessionType, provider) {
679
+ if (( this._contentProviders.has(chatSessionType))) {
680
+ throw ( new Error(`Content provider for ${chatSessionType} is already registered.`));
681
+ }
441
682
  this._contentProviders.set(chatSessionType, provider);
683
+ this._onDidChangeContentProviderSchemes.fire({ added: [chatSessionType], removed: [] });
442
684
  return {
443
685
  dispose: () => {
444
686
  this._contentProviders.delete(chatSessionType);
687
+ this._onDidChangeContentProviderSchemes.fire({ added: [], removed: [chatSessionType] });
445
688
  for (const [key, session] of this._sessions) {
446
689
  if (session.chatSessionType === chatSessionType) {
447
690
  session.dispose();
@@ -451,10 +694,14 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
451
694
  }
452
695
  };
453
696
  }
454
- async provideNewChatSessionItem(chatSessionType, options, token) {
455
- if (!(await this.canResolveItemProvider(chatSessionType))) {
697
+ async getNewChatSessionItem(chatSessionType, options, token) {
698
+ if (!(await this.hasChatSessionItemProvider(chatSessionType))) {
456
699
  throw Error(`Cannot find provider for ${chatSessionType}`);
457
700
  }
701
+ const resolvedType = this._resolveToPrimaryType(chatSessionType);
702
+ if (resolvedType) {
703
+ chatSessionType = resolvedType;
704
+ }
458
705
  const provider = this._itemsProviders.get(chatSessionType);
459
706
  if (!provider?.provideNewChatSessionItem) {
460
707
  throw Error(`Provider for ${chatSessionType} does not support creating sessions`);
@@ -463,52 +710,125 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
463
710
  this._onDidChangeSessionItems.fire(chatSessionType);
464
711
  return chatSessionItem;
465
712
  }
466
- async provideChatSessionContent(chatSessionType, id, token) {
467
- if (!(await this.canResolveContentProvider(chatSessionType))) {
468
- throw Error(`Can not find provider for ${chatSessionType}`);
469
- }
470
- const provider = this._contentProviders.get(chatSessionType);
471
- if (!provider) {
472
- throw Error(`Can not find provider for ${chatSessionType}`);
473
- }
474
- const sessionKey = `${chatSessionType}_${id}`;
475
- const existingSessionData = this._sessions.get(sessionKey);
713
+ async getOrCreateChatSession(sessionResource, token) {
714
+ const existingSessionData = this._sessions.get(sessionResource);
476
715
  if (existingSessionData) {
477
716
  return existingSessionData.session;
478
717
  }
479
- const session = await provider.provideChatSessionContent(id, token);
480
- const sessionData = ( new ContributedChatSessionData(session, chatSessionType, id, this._onWillDisposeSession.bind(this)));
481
- this._sessions.set(sessionKey, sessionData);
718
+ if (!(await raceCancellationError(this.canResolveChatSession(sessionResource), token))) {
719
+ throw Error(`Can not find provider for ${sessionResource}`);
720
+ }
721
+ const resolvedType = this._resolveToPrimaryType(sessionResource.scheme) || sessionResource.scheme;
722
+ const provider = this._contentProviders.get(resolvedType);
723
+ if (!provider) {
724
+ throw Error(`Can not find provider for ${sessionResource}`);
725
+ }
726
+ const session = await raceCancellationError(provider.provideChatSessionContent(sessionResource, token), token);
727
+ const sessionData = ( new ContributedChatSessionData(
728
+ session,
729
+ sessionResource.scheme,
730
+ sessionResource,
731
+ session.options,
732
+ resource => {
733
+ sessionData.dispose();
734
+ this._sessions.delete(resource);
735
+ }
736
+ ));
737
+ this._sessions.set(sessionResource, sessionData);
482
738
  return session;
483
739
  }
484
- _onWillDisposeSession(session, chatSessionType, id) {
485
- const sessionKey = `${chatSessionType}_${id}`;
486
- this._sessions.delete(sessionKey);
740
+ hasAnySessionOptions(sessionResource) {
741
+ const session = this._sessions.get(sessionResource);
742
+ return !!session && !!session.options && ( Object.keys(session.options)).length > 0;
743
+ }
744
+ getSessionOption(sessionResource, optionId) {
745
+ const session = this._sessions.get(sessionResource);
746
+ return session?.getOption(optionId);
487
747
  }
488
- async setEditableSession(sessionId, data) {
748
+ setSessionOption(sessionResource, optionId, value) {
749
+ const session = this._sessions.get(sessionResource);
750
+ return !!session?.setOption(optionId, value);
751
+ }
752
+ async setEditableSession(sessionResource, data) {
489
753
  if (!data) {
490
- this._editableSessions.delete(sessionId);
754
+ this._editableSessions.delete(sessionResource);
491
755
  }
492
756
  else {
493
- this._editableSessions.set(sessionId, data);
757
+ this._editableSessions.set(sessionResource, data);
494
758
  }
495
- this._onDidChangeSessionItems.fire('local');
759
+ this._onDidChangeSessionItems.fire(localChatSessionType);
496
760
  }
497
- getEditableData(sessionId) {
498
- return this._editableSessions.get(sessionId);
761
+ getEditableData(sessionResource) {
762
+ return this._editableSessions.get(sessionResource);
499
763
  }
500
- isEditable(sessionId) {
501
- return ( this._editableSessions.has(sessionId));
764
+ isEditable(sessionResource) {
765
+ return ( this._editableSessions.has(sessionResource));
502
766
  }
503
767
  notifySessionItemsChanged(chatSessionType) {
504
768
  this._onDidChangeSessionItems.fire(chatSessionType);
505
769
  }
770
+ setOptionGroupsForSessionType(chatSessionType, handle, optionGroups) {
771
+ if (optionGroups) {
772
+ this._sessionTypeOptions.set(chatSessionType, optionGroups);
773
+ }
774
+ else {
775
+ this._sessionTypeOptions.delete(chatSessionType);
776
+ }
777
+ }
778
+ getOptionGroupsForSessionType(chatSessionType) {
779
+ return this._sessionTypeOptions.get(chatSessionType);
780
+ }
781
+ setOptionsChangeCallback(callback) {
782
+ this._optionsChangeCallback = callback;
783
+ }
784
+ async notifySessionOptionsChange(sessionResource, updates) {
785
+ if (!updates.length) {
786
+ return;
787
+ }
788
+ if (this._optionsChangeCallback) {
789
+ await this._optionsChangeCallback(sessionResource, updates);
790
+ }
791
+ for (const u of updates) {
792
+ this.setSessionOption(sessionResource, u.optionId, u.value);
793
+ }
794
+ }
795
+ getIconForSessionType(chatSessionType) {
796
+ const sessionTypeIcon = this._sessionTypeIcons.get(chatSessionType);
797
+ if (ThemeIcon.isThemeIcon(sessionTypeIcon)) {
798
+ return sessionTypeIcon;
799
+ }
800
+ if (isDark(this._themeService.getColorTheme().type)) {
801
+ return sessionTypeIcon?.dark;
802
+ }
803
+ else {
804
+ return sessionTypeIcon?.light;
805
+ }
806
+ }
807
+ getWelcomeTitleForSessionType(chatSessionType) {
808
+ return this._sessionTypeWelcomeTitles.get(chatSessionType);
809
+ }
810
+ getWelcomeMessageForSessionType(chatSessionType) {
811
+ return this._sessionTypeWelcomeMessages.get(chatSessionType);
812
+ }
813
+ getInputPlaceholderForSessionType(chatSessionType) {
814
+ return this._sessionTypeInputPlaceholders.get(chatSessionType);
815
+ }
816
+ getCapabilitiesForSessionType(chatSessionType) {
817
+ const contribution = this._contributions.get(chatSessionType)?.contribution;
818
+ return contribution?.capabilities;
819
+ }
820
+ getContentProviderSchemes() {
821
+ return Array.from(( this._contentProviders.keys()));
822
+ }
506
823
  };
507
824
  ChatSessionsService = ( __decorate([
508
825
  ( __param(0, ILogService)),
509
826
  ( __param(1, IChatAgentService)),
510
827
  ( __param(2, IExtensionService)),
511
- ( __param(3, IContextKeyService))
828
+ ( __param(3, IContextKeyService)),
829
+ ( __param(4, IMenuService)),
830
+ ( __param(5, IThemeService)),
831
+ ( __param(6, ILabelService))
512
832
  ], ChatSessionsService));
513
833
 
514
834
  export { ChatSessionsService };