@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
@@ -1,961 +0,0 @@
1
-
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';
5
- import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
6
- import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
7
- import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
8
- import { Disposable, DisposableMap, DisposableStore, combinedDisposable, toDisposable } 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';
14
- import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
15
- import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
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';
18
- import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
19
- import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
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';
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';
25
- import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
26
- import { isProposedApiEnabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions';
27
- import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
28
- import { ExtensionsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionsRegistry';
29
- import { ChatEditorInput } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditorInput';
30
- import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatAgents.service';
31
- import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
32
- import { localChatSessionType, isSessionInProgressStatus } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
33
- import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
34
- import { ChatAgentLocation, ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
35
- import { CHAT_CATEGORY } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
36
- import { IChatToolInvocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
37
- import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
38
- import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
39
- import { renderAsPlaintext } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/markdownRenderer';
40
- import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
41
- import { ChatViewId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat';
42
- import { autorunIterableDelta, autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
43
- import { observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableSignalFromEvent';
44
-
45
- const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
46
- extensionPoint: 'chatSessions',
47
- jsonSchema: {
48
- description: ( localize(5293, 'Contributes chat session integrations to the chat widget.')),
49
- type: 'array',
50
- items: {
51
- type: 'object',
52
- additionalProperties: false,
53
- properties: {
54
- type: {
55
- description: ( localize(5294, 'Unique identifier for the type of chat session.')),
56
- type: 'string',
57
- },
58
- name: {
59
- description: ( localize(
60
- 5295,
61
- 'Name of the dynamically registered chat participant (eg: @agent). Must not contain whitespace.'
62
- )),
63
- type: 'string',
64
- pattern: '^[\\w-]+$'
65
- },
66
- displayName: {
67
- description: ( localize(5296, 'A longer name for this item which is used for display in menus.')),
68
- type: 'string',
69
- },
70
- description: {
71
- description: ( localize(5297, 'Description of the chat session for use in menus and tooltips.')),
72
- type: 'string'
73
- },
74
- when: {
75
- description: ( localize(5298, 'Condition which must be true to show this item.')),
76
- type: 'string'
77
- },
78
- icon: {
79
- description: ( localize(
80
- 5299,
81
- 'Icon identifier (codicon ID) for the chat session editor tab. For example, "$(github)" or "$(cloud)".'
82
- )),
83
- anyOf: [{
84
- type: 'string'
85
- },
86
- {
87
- type: 'object',
88
- properties: {
89
- light: {
90
- description: ( localize(5300, 'Icon path when a light theme is used')),
91
- type: 'string'
92
- },
93
- dark: {
94
- description: ( localize(5301, 'Icon path when a dark theme is used')),
95
- type: 'string'
96
- }
97
- }
98
- }]
99
- },
100
- order: {
101
- description: ( localize(5302, 'Order in which this item should be displayed.')),
102
- type: 'integer'
103
- },
104
- alternativeIds: {
105
- description: ( localize(5303, 'Alternative identifiers for backward compatibility.')),
106
- type: 'array',
107
- items: {
108
- type: 'string'
109
- }
110
- },
111
- welcomeTitle: {
112
- description: ( localize(
113
- 5304,
114
- 'Title text to display in the chat welcome view for this session type.'
115
- )),
116
- type: 'string'
117
- },
118
- welcomeMessage: {
119
- description: ( localize(
120
- 5305,
121
- 'Message text (supports markdown) to display in the chat welcome view for this session type.'
122
- )),
123
- type: 'string'
124
- },
125
- welcomeTips: {
126
- description: ( localize(
127
- 5306,
128
- 'Tips text (supports markdown and theme icons) to display in the chat welcome view for this session type.'
129
- )),
130
- type: 'string'
131
- },
132
- inputPlaceholder: {
133
- description: ( localize(
134
- 5307,
135
- 'Placeholder text to display in the chat input box for this session type.'
136
- )),
137
- type: 'string'
138
- },
139
- capabilities: {
140
- description: ( localize(5308, 'Optional capabilities for this chat session.')),
141
- type: 'object',
142
- additionalProperties: false,
143
- properties: {
144
- supportsFileAttachments: {
145
- description: ( localize(
146
- 5309,
147
- 'Whether this chat session supports attaching files or file references.'
148
- )),
149
- type: 'boolean'
150
- },
151
- supportsToolAttachments: {
152
- description: ( localize(
153
- 5310,
154
- 'Whether this chat session supports attaching tools or tool references.'
155
- )),
156
- type: 'boolean'
157
- },
158
- supportsMCPAttachments: {
159
- description: ( localize(5311, 'Whether this chat session supports attaching MCP resources.')),
160
- type: 'boolean'
161
- },
162
- supportsImageAttachments: {
163
- description: ( localize(5312, 'Whether this chat session supports attaching images.')),
164
- type: 'boolean'
165
- },
166
- supportsSearchResultAttachments: {
167
- description: ( localize(5313, 'Whether this chat session supports attaching search results.')),
168
- type: 'boolean'
169
- },
170
- supportsInstructionAttachments: {
171
- description: ( localize(5314, 'Whether this chat session supports attaching instructions.')),
172
- type: 'boolean'
173
- },
174
- supportsSourceControlAttachments: {
175
- description: ( localize(
176
- 5315,
177
- 'Whether this chat session supports attaching source control changes.'
178
- )),
179
- type: 'boolean'
180
- },
181
- supportsProblemAttachments: {
182
- description: ( localize(5316, 'Whether this chat session supports attaching problems.')),
183
- type: 'boolean'
184
- },
185
- supportsSymbolAttachments: {
186
- description: ( localize(5317, 'Whether this chat session supports attaching symbols.')),
187
- type: 'boolean'
188
- }
189
- }
190
- },
191
- commands: {
192
- markdownDescription: ( localize(
193
- 5318,
194
- "Commands available for this chat session, which the user can invoke with a `/`."
195
- )),
196
- type: 'array',
197
- items: {
198
- additionalProperties: false,
199
- type: 'object',
200
- defaultSnippets: [{ body: { name: '', description: '' } }],
201
- required: ['name'],
202
- properties: {
203
- name: {
204
- description: ( localize(
205
- 5319,
206
- "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."
207
- )),
208
- type: 'string'
209
- },
210
- description: {
211
- description: ( localize(5320, "A description of this command.")),
212
- type: 'string'
213
- },
214
- when: {
215
- description: ( localize(5321, "A condition which must be true to enable this command.")),
216
- type: 'string'
217
- },
218
- }
219
- }
220
- },
221
- canDelegate: {
222
- description: ( localize(
223
- 5322,
224
- 'Whether delegation is supported. Default is false. Note that enabling this is experimental and may not be respected at all times.'
225
- )),
226
- type: 'boolean',
227
- default: false
228
- }
229
- },
230
- required: ['type', 'name', 'displayName', 'description'],
231
- }
232
- },
233
- activationEventsGenerator: function* (contribs) {
234
- for (const contrib of contribs) {
235
- yield `onChatSession:${contrib.type}`;
236
- }
237
- }
238
- });
239
- class ContributedChatSessionData extends Disposable {
240
- getOption(optionId) {
241
- return this._optionsCache.get(optionId);
242
- }
243
- setOption(optionId, value) {
244
- this._optionsCache.set(optionId, value);
245
- }
246
- constructor(session, chatSessionType, resource, options, onWillDispose) {
247
- super();
248
- this.session = session;
249
- this.chatSessionType = chatSessionType;
250
- this.resource = resource;
251
- this.options = options;
252
- this.onWillDispose = onWillDispose;
253
- this._optionsCache = ( new Map());
254
- if (options) {
255
- for (const [key, value] of Object.entries(options)) {
256
- this._optionsCache.set(key, value);
257
- }
258
- }
259
- this._register(this.session.onWillDispose(() => {
260
- this.onWillDispose(this.resource);
261
- }));
262
- }
263
- }
264
- let ChatSessionsService = class ChatSessionsService extends Disposable {
265
- get onDidChangeInProgress() { return this._onDidChangeInProgress.event; }
266
- get onDidChangeContentProviderSchemes() { return this._onDidChangeContentProviderSchemes.event; }
267
- get onDidChangeSessionOptions() { return this._onDidChangeSessionOptions.event; }
268
- get onDidChangeOptionGroups() { return this._onDidChangeOptionGroups.event; }
269
- constructor(_logService, _chatAgentService, _extensionService, _contextKeyService, _menuService, _themeService, _labelService) {
270
- super();
271
- this._logService = _logService;
272
- this._chatAgentService = _chatAgentService;
273
- this._extensionService = _extensionService;
274
- this._contextKeyService = _contextKeyService;
275
- this._menuService = _menuService;
276
- this._themeService = _themeService;
277
- this._labelService = _labelService;
278
- this._itemsProviders = ( new Map());
279
- this._contributions = ( new Map());
280
- this._contributionDisposables = this._register(( new DisposableMap()));
281
- this._contentProviders = ( new Map());
282
- this._alternativeIdMap = ( new Map());
283
- this._contextKeys = ( new Set());
284
- this._onDidChangeItemsProviders = this._register(( new Emitter()));
285
- this.onDidChangeItemsProviders = this._onDidChangeItemsProviders.event;
286
- this._onDidChangeSessionItems = this._register(( new Emitter()));
287
- this.onDidChangeSessionItems = this._onDidChangeSessionItems.event;
288
- this._onDidChangeAvailability = this._register(( new Emitter()));
289
- this.onDidChangeAvailability = this._onDidChangeAvailability.event;
290
- this._onDidChangeInProgress = this._register(( new Emitter()));
291
- this._onDidChangeContentProviderSchemes = this._register(( new Emitter()));
292
- this._onDidChangeSessionOptions = this._register(( new Emitter()));
293
- this._onDidChangeOptionGroups = this._register(( new Emitter()));
294
- this.inProgressMap = ( new Map());
295
- this._sessionTypeOptions = ( new Map());
296
- this._sessionTypeIcons = ( new Map());
297
- this._sessionTypeWelcomeTitles = ( new Map());
298
- this._sessionTypeWelcomeMessages = ( new Map());
299
- this._sessionTypeWelcomeTips = ( new Map());
300
- this._sessionTypeInputPlaceholders = ( new Map());
301
- this._sessions = ( new ResourceMap());
302
- this._hasCanDelegateProvidersKey = ChatContextKeys.hasCanDelegateProviders.bindTo(this._contextKeyService);
303
- this._register(extensionPoint.setHandler(extensions => {
304
- for (const ext of extensions) {
305
- if (!isProposedApiEnabled(ext.description, 'chatSessionsProvider')) {
306
- continue;
307
- }
308
- if (!Array.isArray(ext.value)) {
309
- continue;
310
- }
311
- for (const contribution of ext.value) {
312
- this._register(this.registerContribution(contribution, ext.description));
313
- }
314
- }
315
- }));
316
- this._register(Event.filter(this._contextKeyService.onDidChangeContext, e => e.affectsSome(this._contextKeys))(() => {
317
- this._evaluateAvailability();
318
- }));
319
- this._register(this.onDidChangeSessionItems(chatSessionType => {
320
- this.updateInProgressStatus(chatSessionType).catch(error => {
321
- this._logService.warn(`Failed to update progress status for '${chatSessionType}':`, error);
322
- });
323
- }));
324
- this._register(this._labelService.registerFormatter({
325
- scheme: Schemas.copilotPr,
326
- formatting: {
327
- label: '${authority}${path}',
328
- separator: sep,
329
- stripPathStartingSeparator: true,
330
- }
331
- }));
332
- }
333
- reportInProgress(chatSessionType, count) {
334
- let displayName;
335
- if (chatSessionType === localChatSessionType) {
336
- displayName = 'Local Chat Agent';
337
- }
338
- else {
339
- displayName = this._contributions.get(chatSessionType)?.contribution.displayName;
340
- }
341
- if (displayName) {
342
- this.inProgressMap.set(displayName, count);
343
- }
344
- this._onDidChangeInProgress.fire();
345
- }
346
- getInProgress() {
347
- return ( Array.from(this.inProgressMap.entries()).map(([displayName, count]) => ({ displayName, count })));
348
- }
349
- async updateInProgressStatus(chatSessionType) {
350
- try {
351
- const items = await this.getChatSessionItems(chatSessionType, CancellationToken.None);
352
- const inProgress = items.filter(item => item.status && isSessionInProgressStatus(item.status));
353
- this.reportInProgress(chatSessionType, inProgress.length);
354
- }
355
- catch (error) {
356
- this._logService.warn(`Failed to update in-progress status for chat session type '${chatSessionType}':`, error);
357
- }
358
- }
359
- registerContribution(contribution, ext) {
360
- if (( this._contributions.has(contribution.type))) {
361
- return { dispose: () => { } };
362
- }
363
- if (contribution.when) {
364
- const whenExpr = ContextKeyExpr.deserialize(contribution.when);
365
- if (whenExpr) {
366
- for (const key of ( whenExpr.keys())) {
367
- this._contextKeys.add(key);
368
- }
369
- }
370
- }
371
- this._contributions.set(contribution.type, { contribution, extension: ext });
372
- if (contribution.alternativeIds) {
373
- for (const altId of contribution.alternativeIds) {
374
- if (( this._alternativeIdMap.has(altId))) {
375
- this._logService.warn(`Alternative ID '${altId}' is already mapped to '${this._alternativeIdMap.get(altId)}'. Remapping to '${contribution.type}'.`);
376
- }
377
- this._alternativeIdMap.set(altId, contribution.type);
378
- }
379
- }
380
- let icon;
381
- if (contribution.icon) {
382
- if (typeof contribution.icon === 'string') {
383
- icon = contribution.icon.startsWith('$(') && contribution.icon.endsWith(')')
384
- ? ThemeIcon.fromString(contribution.icon)
385
- : ThemeIcon.fromId(contribution.icon);
386
- }
387
- else {
388
- icon = {
389
- dark: joinPath(ext.extensionLocation, contribution.icon.dark),
390
- light: joinPath(ext.extensionLocation, contribution.icon.light)
391
- };
392
- }
393
- }
394
- if (icon) {
395
- this._sessionTypeIcons.set(contribution.type, icon);
396
- }
397
- if (contribution.welcomeTitle) {
398
- this._sessionTypeWelcomeTitles.set(contribution.type, contribution.welcomeTitle);
399
- }
400
- if (contribution.welcomeMessage) {
401
- this._sessionTypeWelcomeMessages.set(contribution.type, contribution.welcomeMessage);
402
- }
403
- if (contribution.welcomeTips) {
404
- this._sessionTypeWelcomeTips.set(contribution.type, contribution.welcomeTips);
405
- }
406
- if (contribution.inputPlaceholder) {
407
- this._sessionTypeInputPlaceholders.set(contribution.type, contribution.inputPlaceholder);
408
- }
409
- this._evaluateAvailability();
410
- return {
411
- dispose: () => {
412
- this._contributions.delete(contribution.type);
413
- if (contribution.alternativeIds) {
414
- for (const altId of contribution.alternativeIds) {
415
- if (this._alternativeIdMap.get(altId) === contribution.type) {
416
- this._alternativeIdMap.delete(altId);
417
- }
418
- }
419
- }
420
- this._sessionTypeIcons.delete(contribution.type);
421
- this._sessionTypeWelcomeTitles.delete(contribution.type);
422
- this._sessionTypeWelcomeMessages.delete(contribution.type);
423
- this._sessionTypeWelcomeTips.delete(contribution.type);
424
- this._sessionTypeInputPlaceholders.delete(contribution.type);
425
- this._contributionDisposables.deleteAndDispose(contribution.type);
426
- this._updateHasCanDelegateProvidersContextKey();
427
- }
428
- };
429
- }
430
- _isContributionAvailable(contribution) {
431
- if (!contribution.when) {
432
- return true;
433
- }
434
- const whenExpr = ContextKeyExpr.deserialize(contribution.when);
435
- return !whenExpr || this._contextKeyService.contextMatchesRules(whenExpr);
436
- }
437
- _resolveToPrimaryType(sessionType) {
438
- const contribution = this._contributions.get(sessionType)?.contribution;
439
- if (contribution) {
440
- if (this._isContributionAvailable(contribution)) {
441
- return sessionType;
442
- }
443
- }
444
- const primaryType = this._alternativeIdMap.get(sessionType);
445
- if (primaryType) {
446
- const altContribution = this._contributions.get(primaryType)?.contribution;
447
- if (altContribution && this._isContributionAvailable(altContribution)) {
448
- return primaryType;
449
- }
450
- }
451
- return undefined;
452
- }
453
- _registerMenuItems(contribution, extensionDescription) {
454
- const contextKeyService = this._contextKeyService.createOverlay([
455
- ['chatSessionType', contribution.type]
456
- ]);
457
- const rawMenuActions = this._menuService.getMenuActions(MenuId.AgentSessionsCreateSubMenu, contextKeyService);
458
- const menuActions = ( rawMenuActions.map(value => value[1])).flat();
459
- const disposables = ( new DisposableStore());
460
- for (const action of menuActions) {
461
- if (action instanceof MenuItemAction) {
462
- disposables.add(MenuRegistry.appendMenuItem(MenuId.ChatNewMenu, {
463
- command: action.item,
464
- group: '4_externally_contributed',
465
- }));
466
- }
467
- }
468
- return {
469
- dispose: () => disposables.dispose()
470
- };
471
- }
472
- _registerCommands(contribution) {
473
- return combinedDisposable(registerAction2(class OpenChatSessionAction extends Action2 {
474
- constructor() {
475
- super({
476
- id: `workbench.action.chat.openSessionWithPrompt.${contribution.type}`,
477
- title: ( localize2(5323, "New {0} with Prompt", contribution.displayName)),
478
- category: CHAT_CATEGORY,
479
- icon: Codicon.plus,
480
- f1: false,
481
- precondition: ChatContextKeys.enabled
482
- });
483
- }
484
- async run(accessor, chatOptions) {
485
- const chatService = accessor.get(IChatService);
486
- const { type } = contribution;
487
- if (chatOptions) {
488
- const resource = URI.revive(chatOptions.resource);
489
- const ref = await chatService.loadSessionForResource(resource, ChatAgentLocation.Chat, CancellationToken.None);
490
- await chatService.sendRequest(resource, chatOptions.prompt, { agentIdSilent: type, attachedContext: chatOptions.attachedContext });
491
- ref?.dispose();
492
- }
493
- }
494
- }),
495
- registerAction2(class OpenNewChatSessionEditorAction extends Action2 {
496
- constructor() {
497
- super({
498
- id: `workbench.action.chat.openNewSessionEditor.${contribution.type}`,
499
- title: ( localize2(5324, "New {0}", contribution.displayName)),
500
- category: CHAT_CATEGORY,
501
- icon: Codicon.plus,
502
- f1: true,
503
- precondition: ChatContextKeys.enabled,
504
- });
505
- }
506
- async run(accessor, chatOptions) {
507
- const editorService = accessor.get(IEditorService);
508
- const logService = accessor.get(ILogService);
509
- const chatService = accessor.get(IChatService);
510
- const { type } = contribution;
511
- try {
512
- const options = {
513
- override: ChatEditorInput.EditorID,
514
- pinned: true,
515
- title: {
516
- fallback: ( localize(5325, "{0}", contribution.displayName)),
517
- }
518
- };
519
- const resource = ( URI.from({
520
- scheme: type,
521
- path: `/untitled-${generateUuid()}`,
522
- }));
523
- await editorService.openEditor({ resource, options });
524
- if (chatOptions?.prompt) {
525
- await chatService.sendRequest(resource, chatOptions.prompt, { agentIdSilent: type, attachedContext: chatOptions.attachedContext });
526
- }
527
- }
528
- catch (e) {
529
- logService.error(`Failed to open new '${type}' chat session editor`, e);
530
- }
531
- }
532
- }),
533
- registerAction2(class OpenNewChatSessionSidebarAction extends Action2 {
534
- constructor() {
535
- super({
536
- id: `workbench.action.chat.openNewSessionSidebar.${contribution.type}`,
537
- title: ( localize2(5326, "New {0}", contribution.displayName)),
538
- category: CHAT_CATEGORY,
539
- icon: Codicon.plus,
540
- f1: false,
541
- precondition: ChatContextKeys.enabled,
542
- menu: {
543
- id: MenuId.ChatNewMenu,
544
- group: '3_new_special',
545
- }
546
- });
547
- }
548
- async run(accessor, chatOptions) {
549
- const viewsService = accessor.get(IViewsService);
550
- const logService = accessor.get(ILogService);
551
- const chatService = accessor.get(IChatService);
552
- const { type } = contribution;
553
- try {
554
- const resource = ( URI.from({
555
- scheme: type,
556
- path: `/untitled-${generateUuid()}`,
557
- }));
558
- const view = await viewsService.openView(ChatViewId);
559
- await view.loadSession(resource);
560
- if (chatOptions?.prompt) {
561
- await chatService.sendRequest(resource, chatOptions.prompt, { agentIdSilent: type, attachedContext: chatOptions.attachedContext });
562
- }
563
- view.focus();
564
- }
565
- catch (e) {
566
- logService.error(`Failed to open new '${type}' chat session in sidebar`, e);
567
- }
568
- }
569
- }));
570
- }
571
- _evaluateAvailability() {
572
- let hasChanges = false;
573
- for (const { contribution, extension } of ( this._contributions.values())) {
574
- const isCurrentlyRegistered = ( this._contributionDisposables.has(contribution.type));
575
- const shouldBeRegistered = this._isContributionAvailable(contribution);
576
- if (isCurrentlyRegistered && !shouldBeRegistered) {
577
- this._contributionDisposables.deleteAndDispose(contribution.type);
578
- this._disposeSessionsForContribution(contribution.type);
579
- hasChanges = true;
580
- }
581
- else if (!isCurrentlyRegistered && shouldBeRegistered) {
582
- this._enableContribution(contribution, extension);
583
- hasChanges = true;
584
- }
585
- }
586
- if (hasChanges) {
587
- this._onDidChangeAvailability.fire();
588
- for (const provider of ( this._itemsProviders.values())) {
589
- this._onDidChangeItemsProviders.fire(provider);
590
- }
591
- for (const { contribution } of ( this._contributions.values())) {
592
- this._onDidChangeSessionItems.fire(contribution.type);
593
- }
594
- }
595
- this._updateHasCanDelegateProvidersContextKey();
596
- }
597
- _enableContribution(contribution, ext) {
598
- const disposableStore = ( new DisposableStore());
599
- this._contributionDisposables.set(contribution.type, disposableStore);
600
- if (contribution.canDelegate) {
601
- disposableStore.add(this._registerAgent(contribution, ext));
602
- disposableStore.add(this._registerCommands(contribution));
603
- }
604
- disposableStore.add(this._registerMenuItems(contribution, ext));
605
- }
606
- _disposeSessionsForContribution(contributionId) {
607
- const sessionsToDispose = [];
608
- for (const [sessionResource, sessionData] of this._sessions) {
609
- if (sessionData.chatSessionType === contributionId) {
610
- sessionsToDispose.push(sessionResource);
611
- }
612
- }
613
- if (sessionsToDispose.length > 0) {
614
- this._logService.info(`Disposing ${sessionsToDispose.length} cached sessions for contribution '${contributionId}' due to when clause change`);
615
- }
616
- for (const sessionKey of sessionsToDispose) {
617
- const sessionData = this._sessions.get(sessionKey);
618
- if (sessionData) {
619
- sessionData.dispose();
620
- }
621
- }
622
- }
623
- _registerAgent(contribution, ext) {
624
- const { type: id, name, displayName, description } = contribution;
625
- const storedIcon = this._sessionTypeIcons.get(id);
626
- const icons = ThemeIcon.isThemeIcon(storedIcon)
627
- ? { themeIcon: storedIcon, icon: undefined, iconDark: undefined }
628
- : storedIcon
629
- ? { icon: storedIcon.light, iconDark: storedIcon.dark }
630
- : { themeIcon: Codicon.sendToRemoteAgent };
631
- const agentData = {
632
- id,
633
- name,
634
- fullName: displayName,
635
- description: description,
636
- isDefault: false,
637
- isCore: false,
638
- isDynamic: true,
639
- slashCommands: contribution.commands ?? [],
640
- locations: [ChatAgentLocation.Chat],
641
- modes: [ChatModeKind.Agent, ChatModeKind.Ask],
642
- disambiguation: [],
643
- metadata: {
644
- ...icons,
645
- },
646
- capabilities: contribution.capabilities,
647
- canAccessPreviousChatHistory: true,
648
- extensionId: ext.identifier,
649
- extensionVersion: ext.version,
650
- extensionDisplayName: ext.displayName || ext.name,
651
- extensionPublisherId: ext.publisher,
652
- };
653
- return this._chatAgentService.registerAgent(id, agentData);
654
- }
655
- getAllChatSessionContributions() {
656
- return Array.from(( this._contributions.values()), x => x.contribution)
657
- .filter(contribution => this._isContributionAvailable(contribution));
658
- }
659
- _updateHasCanDelegateProvidersContextKey() {
660
- const hasCanDelegate = this.getAllChatSessionContributions().filter(c => c.canDelegate);
661
- const canDelegateEnabled = hasCanDelegate.length > 0;
662
- this._logService.trace(`[ChatSessionsService] hasCanDelegateProvidersAvailable=${canDelegateEnabled} (${( hasCanDelegate.map(c => c.type)).join(', ')})`);
663
- this._hasCanDelegateProvidersKey.set(canDelegateEnabled);
664
- }
665
- getChatSessionContribution(chatSessionType) {
666
- const contribution = this._contributions.get(chatSessionType)?.contribution;
667
- if (!contribution) {
668
- return undefined;
669
- }
670
- return this._isContributionAvailable(contribution) ? contribution : undefined;
671
- }
672
- getAllChatSessionItemProviders() {
673
- return [...( this._itemsProviders.values())].filter(provider => {
674
- const contribution = this._contributions.get(provider.chatSessionType)?.contribution;
675
- return !contribution || this._isContributionAvailable(contribution);
676
- });
677
- }
678
- async activateChatSessionItemProvider(chatViewType) {
679
- await this._extensionService.whenInstalledExtensionsRegistered();
680
- const resolvedType = this._resolveToPrimaryType(chatViewType);
681
- if (resolvedType) {
682
- chatViewType = resolvedType;
683
- }
684
- const contribution = this._contributions.get(chatViewType)?.contribution;
685
- if (contribution && !this._isContributionAvailable(contribution)) {
686
- return undefined;
687
- }
688
- if (( this._itemsProviders.has(chatViewType))) {
689
- return this._itemsProviders.get(chatViewType);
690
- }
691
- await this._extensionService.activateByEvent(`onChatSession:${chatViewType}`);
692
- return this._itemsProviders.get(chatViewType);
693
- }
694
- async canResolveChatSession(chatSessionResource) {
695
- await this._extensionService.whenInstalledExtensionsRegistered();
696
- const resolvedType = this._resolveToPrimaryType(chatSessionResource.scheme) || chatSessionResource.scheme;
697
- const contribution = this._contributions.get(resolvedType)?.contribution;
698
- if (contribution && !this._isContributionAvailable(contribution)) {
699
- return false;
700
- }
701
- if (( this._contentProviders.has(chatSessionResource.scheme))) {
702
- return true;
703
- }
704
- await this._extensionService.activateByEvent(`onChatSession:${chatSessionResource.scheme}`);
705
- return ( this._contentProviders.has(chatSessionResource.scheme));
706
- }
707
- async getAllChatSessionItems(token) {
708
- return Promise.all(Array.from(this.getAllChatSessionContributions(), async (contrib) => {
709
- return {
710
- chatSessionType: contrib.type,
711
- items: await this.getChatSessionItems(contrib.type, token)
712
- };
713
- }));
714
- }
715
- async getChatSessionItems(chatSessionType, token) {
716
- if (!(await this.activateChatSessionItemProvider(chatSessionType))) {
717
- return [];
718
- }
719
- const resolvedType = this._resolveToPrimaryType(chatSessionType);
720
- if (resolvedType) {
721
- chatSessionType = resolvedType;
722
- }
723
- const provider = this._itemsProviders.get(chatSessionType);
724
- if (provider?.provideChatSessionItems) {
725
- const sessions = await provider.provideChatSessionItems(token);
726
- return sessions;
727
- }
728
- return [];
729
- }
730
- registerChatSessionItemProvider(provider) {
731
- const chatSessionType = provider.chatSessionType;
732
- this._itemsProviders.set(chatSessionType, provider);
733
- this._onDidChangeItemsProviders.fire(provider);
734
- const disposables = ( new DisposableStore());
735
- disposables.add(provider.onDidChangeChatSessionItems(() => {
736
- this._onDidChangeSessionItems.fire(chatSessionType);
737
- }));
738
- this.updateInProgressStatus(chatSessionType).catch(error => {
739
- this._logService.warn(`Failed to update initial progress status for '${chatSessionType}':`, error);
740
- });
741
- return {
742
- dispose: () => {
743
- disposables.dispose();
744
- const provider = this._itemsProviders.get(chatSessionType);
745
- if (provider) {
746
- this._itemsProviders.delete(chatSessionType);
747
- this._onDidChangeItemsProviders.fire(provider);
748
- }
749
- }
750
- };
751
- }
752
- registerChatSessionContentProvider(chatSessionType, provider) {
753
- if (( this._contentProviders.has(chatSessionType))) {
754
- throw ( new Error(`Content provider for ${chatSessionType} is already registered.`));
755
- }
756
- this._contentProviders.set(chatSessionType, provider);
757
- this._onDidChangeContentProviderSchemes.fire({ added: [chatSessionType], removed: [] });
758
- return {
759
- dispose: () => {
760
- this._contentProviders.delete(chatSessionType);
761
- this._onDidChangeContentProviderSchemes.fire({ added: [], removed: [chatSessionType] });
762
- for (const [key, session] of this._sessions) {
763
- if (session.chatSessionType === chatSessionType) {
764
- session.dispose();
765
- this._sessions.delete(key);
766
- }
767
- }
768
- }
769
- };
770
- }
771
- registerChatModelChangeListeners(chatService, chatSessionType, onChange) {
772
- const disposableStore = ( new DisposableStore());
773
- const chatModelsICareAbout = ( chatService.chatModels.map(
774
- models => Array.from(models).filter((model) => model.sessionResource.scheme === chatSessionType)
775
- ));
776
- const listeners = ( new ResourceMap());
777
- const autoRunDisposable = autorunIterableDelta(reader => chatModelsICareAbout.read(reader), ({ addedValues, removedValues }) => {
778
- removedValues.forEach((removed) => {
779
- const listener = listeners.get(removed.sessionResource);
780
- if (listener) {
781
- listeners.delete(removed.sessionResource);
782
- listener.dispose();
783
- }
784
- });
785
- addedValues.forEach((added) => {
786
- const requestChangeListener = ( added.lastRequestObs.map(
787
- last => last?.response && observableSignalFromEvent('chatSessions.modelRequestChangeListener', last.response.onDidChange)
788
- ));
789
- const modelChangeListener = observableSignalFromEvent('chatSessions.modelChangeListener', added.onDidChange);
790
- listeners.set(added.sessionResource, autorun(reader => {
791
- requestChangeListener.read(reader)?.read(reader);
792
- modelChangeListener.read(reader);
793
- onChange();
794
- }));
795
- });
796
- });
797
- disposableStore.add(toDisposable(() => {
798
- for (const listener of ( listeners.values())) {
799
- listener.dispose();
800
- }
801
- }));
802
- disposableStore.add(autoRunDisposable);
803
- return disposableStore;
804
- }
805
- getInProgressSessionDescription(chatModel) {
806
- const requests = chatModel.getRequests();
807
- if (requests.length === 0) {
808
- return undefined;
809
- }
810
- const lastRequest = requests.at(-1);
811
- const response = lastRequest?.response;
812
- if (!response) {
813
- return undefined;
814
- }
815
- if (response.isComplete) {
816
- return undefined;
817
- }
818
- const responseParts = response.response.value;
819
- let description = '';
820
- for (let i = responseParts.length - 1; i >= 0; i--) {
821
- const part = responseParts[i];
822
- if (description) {
823
- break;
824
- }
825
- if (part.kind === 'confirmation' && typeof part.message === 'string') {
826
- description = part.message;
827
- }
828
- else if (part.kind === 'toolInvocation') {
829
- const toolInvocation = part;
830
- const state = toolInvocation.state.get();
831
- description = toolInvocation.generatedTitle || toolInvocation.pastTenseMessage || toolInvocation.invocationMessage;
832
- if (state.type === IChatToolInvocation.StateKind.WaitingForConfirmation) {
833
- const confirmationTitle = toolInvocation.confirmationMessages?.title;
834
- const titleMessage = confirmationTitle && (typeof confirmationTitle === 'string'
835
- ? confirmationTitle
836
- : confirmationTitle.value);
837
- const descriptionValue = typeof description === 'string' ? description : description.value;
838
- description = titleMessage ?? ( localize(5327, "Waiting for confirmation: {0}", descriptionValue));
839
- }
840
- }
841
- else if (part.kind === 'toolInvocationSerialized') {
842
- description = part.invocationMessage;
843
- }
844
- else if (part.kind === 'progressMessage') {
845
- description = part.content;
846
- }
847
- else if (part.kind === 'thinking') {
848
- description = ( localize(5328, 'Thinking...'));
849
- }
850
- }
851
- return renderAsPlaintext(description, { useLinkFormatter: true });
852
- }
853
- async getOrCreateChatSession(sessionResource, token) {
854
- const existingSessionData = this._sessions.get(sessionResource);
855
- if (existingSessionData) {
856
- return existingSessionData.session;
857
- }
858
- if (!(await raceCancellationError(this.canResolveChatSession(sessionResource), token))) {
859
- throw Error(`Can not find provider for ${sessionResource}`);
860
- }
861
- const resolvedType = this._resolveToPrimaryType(sessionResource.scheme) || sessionResource.scheme;
862
- const provider = this._contentProviders.get(resolvedType);
863
- if (!provider) {
864
- throw Error(`Can not find provider for ${sessionResource}`);
865
- }
866
- const session = await raceCancellationError(provider.provideChatSessionContent(sessionResource, token), token);
867
- const sessionData = ( new ContributedChatSessionData(
868
- session,
869
- sessionResource.scheme,
870
- sessionResource,
871
- session.options,
872
- resource => {
873
- sessionData.dispose();
874
- this._sessions.delete(resource);
875
- }
876
- ));
877
- this._sessions.set(sessionResource, sessionData);
878
- return session;
879
- }
880
- hasAnySessionOptions(sessionResource) {
881
- const session = this._sessions.get(sessionResource);
882
- return !!session && !!session.options && ( Object.keys(session.options)).length > 0;
883
- }
884
- getSessionOption(sessionResource, optionId) {
885
- const session = this._sessions.get(sessionResource);
886
- return session?.getOption(optionId);
887
- }
888
- setSessionOption(sessionResource, optionId, value) {
889
- const session = this._sessions.get(sessionResource);
890
- return !!session?.setOption(optionId, value);
891
- }
892
- notifySessionItemsChanged(chatSessionType) {
893
- this._onDidChangeSessionItems.fire(chatSessionType);
894
- }
895
- setOptionGroupsForSessionType(chatSessionType, handle, optionGroups) {
896
- if (optionGroups) {
897
- this._sessionTypeOptions.set(chatSessionType, optionGroups);
898
- }
899
- else {
900
- this._sessionTypeOptions.delete(chatSessionType);
901
- }
902
- this._onDidChangeOptionGroups.fire(chatSessionType);
903
- }
904
- getOptionGroupsForSessionType(chatSessionType) {
905
- return this._sessionTypeOptions.get(chatSessionType);
906
- }
907
- setOptionsChangeCallback(callback) {
908
- this._optionsChangeCallback = callback;
909
- }
910
- async notifySessionOptionsChange(sessionResource, updates) {
911
- if (!updates.length) {
912
- return;
913
- }
914
- if (this._optionsChangeCallback) {
915
- await this._optionsChangeCallback(sessionResource, updates);
916
- }
917
- for (const u of updates) {
918
- this.setSessionOption(sessionResource, u.optionId, u.value);
919
- }
920
- this._onDidChangeSessionOptions.fire(sessionResource);
921
- }
922
- getIconForSessionType(chatSessionType) {
923
- const sessionTypeIcon = this._sessionTypeIcons.get(chatSessionType);
924
- if (ThemeIcon.isThemeIcon(sessionTypeIcon)) {
925
- return sessionTypeIcon;
926
- }
927
- if (isDark(this._themeService.getColorTheme().type)) {
928
- return sessionTypeIcon?.dark;
929
- }
930
- else {
931
- return sessionTypeIcon?.light;
932
- }
933
- }
934
- getWelcomeTitleForSessionType(chatSessionType) {
935
- return this._sessionTypeWelcomeTitles.get(chatSessionType);
936
- }
937
- getWelcomeMessageForSessionType(chatSessionType) {
938
- return this._sessionTypeWelcomeMessages.get(chatSessionType);
939
- }
940
- getInputPlaceholderForSessionType(chatSessionType) {
941
- return this._sessionTypeInputPlaceholders.get(chatSessionType);
942
- }
943
- getCapabilitiesForSessionType(chatSessionType) {
944
- const contribution = this._contributions.get(chatSessionType)?.contribution;
945
- return contribution?.capabilities;
946
- }
947
- getContentProviderSchemes() {
948
- return Array.from(( this._contentProviders.keys()));
949
- }
950
- };
951
- ChatSessionsService = ( __decorate([
952
- ( __param(0, ILogService)),
953
- ( __param(1, IChatAgentService)),
954
- ( __param(2, IExtensionService)),
955
- ( __param(3, IContextKeyService)),
956
- ( __param(4, IMenuService)),
957
- ( __param(5, IThemeService)),
958
- ( __param(6, ILabelService))
959
- ], ChatSessionsService));
960
-
961
- export { ChatSessionsService };