@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
@@ -0,0 +1,951 @@
1
+
2
+ import { registerCss } from '@codingame/monaco-vscode-api/css';
3
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
+ import * as agenttitlebarstatuswidget from './media/agenttitlebarstatuswidget.css';
5
+ import { getWindow, isHTMLElement, reset, $, addDisposableListener, EventType } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
6
+ import { renderIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/iconLabel/iconLabels';
7
+ import { DisposableStore, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
8
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
9
+ import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
10
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
11
+ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
12
+ import { getDefaultHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
13
+ import { AgentStatusMode } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusService';
14
+ import { IAgentTitleBarStatusService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusService.service';
15
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
16
+ import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
17
+ import { ExitAgentSessionProjectionAction, EnterAgentSessionProjectionAction } from './agentSessionProjectionActions.js';
18
+ import { UNIFIED_QUICK_ACCESS_ACTION_ID } from './unifiedQuickAccessActions.js';
19
+ import { IAgentSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.service';
20
+ import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel';
21
+ import { BaseActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionViewItems';
22
+ import { SubmenuAction, Separator, toAction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
23
+ import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
24
+ import { WorkbenchState } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace';
25
+ import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
26
+ import { IBrowserWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/browser/environmentService.service';
27
+ import { IEditorGroupsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService.service';
28
+ import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
29
+ import { Verbosity } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
30
+ import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
31
+ import { renderAsPlaintext } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/markdownRenderer';
32
+ import { openSession } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener';
33
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
34
+ import { MenuId, MenuItemAction, SubmenuItemAction } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
35
+ import { IMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions.service';
36
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
37
+ import { WorkbenchToolBar, HiddenItemStrategy } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/toolbar';
38
+ import { DropdownWithPrimaryActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/dropdownWithPrimaryActionViewItem';
39
+ import { createActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
40
+ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
41
+ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
42
+ import { FocusAgentSessionsAction } from '../agentSessionsActions.js';
43
+ import { IActionViewItemService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/actionViewItemService.service';
44
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
45
+ import { mainWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/window';
46
+ import { LayoutSettings } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService';
47
+ import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
48
+ import { ChatEntitlement } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService';
49
+ import { IChatEntitlementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService.service';
50
+ import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
51
+ import { isSessionInProgressStatus, ChatSessionStatus } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
52
+
53
+ registerCss(agenttitlebarstatuswidget);
54
+ const TOGGLE_CHAT_ACTION_ID = "workbench.action.chat.toggle";
55
+ const CHAT_SETUP_ACTION_ID = "workbench.action.chat.triggerSetup";
56
+ const OPEN_CHAT_QUOTA_EXCEEDED_DIALOG = "workbench.action.chat.openQuotaExceededDialog";
57
+ const QUICK_OPEN_ACTION_ID = "workbench.action.quickOpenWithModes";
58
+ const FILTER_STORAGE_KEY = "agentSessions.filterExcludes.agentsessionsviewerfiltersubmenu";
59
+ const PREVIOUS_FILTER_STORAGE_KEY = "agentSessions.filterExcludes.previousUserFilter";
60
+ const NLS_EXTENSION_HOST = ( localize(5010, "[Extension Development Host]"));
61
+ const TITLE_DIRTY = "● ";
62
+ let AgentTitleBarStatusWidget = class AgentTitleBarStatusWidget extends BaseActionViewItem {
63
+ constructor(
64
+ action,
65
+ options,
66
+ instantiationService,
67
+ agentTitleBarStatusService,
68
+ hoverService,
69
+ commandService,
70
+ keybindingService,
71
+ agentSessionsService,
72
+ labelService,
73
+ workspaceContextService,
74
+ environmentService,
75
+ editorGroupsService,
76
+ editorService,
77
+ menuService,
78
+ contextKeyService,
79
+ storageService,
80
+ configurationService,
81
+ chatEntitlementService,
82
+ chatWidgetService
83
+ ) {
84
+ super(undefined, action, options);
85
+ this.instantiationService = instantiationService;
86
+ this.agentTitleBarStatusService = agentTitleBarStatusService;
87
+ this.hoverService = hoverService;
88
+ this.commandService = commandService;
89
+ this.keybindingService = keybindingService;
90
+ this.agentSessionsService = agentSessionsService;
91
+ this.labelService = labelService;
92
+ this.workspaceContextService = workspaceContextService;
93
+ this.environmentService = environmentService;
94
+ this.editorGroupsService = editorGroupsService;
95
+ this.editorService = editorService;
96
+ this.menuService = menuService;
97
+ this.contextKeyService = contextKeyService;
98
+ this.storageService = storageService;
99
+ this.configurationService = configurationService;
100
+ this.chatEntitlementService = chatEntitlementService;
101
+ this.chatWidgetService = chatWidgetService;
102
+ this._dynamicDisposables = this._register(( new DisposableStore()));
103
+ this._isRendering = false;
104
+ this._badgeFilterAppliedByThisWindow = null;
105
+ this._commandCenterMenu = this._register(
106
+ this.menuService.createMenu(MenuId.CommandCenterCenter, this.contextKeyService)
107
+ );
108
+ this._chatTitleBarMenu = this._register(
109
+ this.menuService.createMenu(MenuId.ChatTitleBarMenu, this.contextKeyService)
110
+ );
111
+ this._register(this.agentTitleBarStatusService.onDidChangeMode(() => {
112
+ this._render();
113
+ }));
114
+ this._register(this.agentTitleBarStatusService.onDidChangeSessionInfo(() => {
115
+ this._render();
116
+ }));
117
+ this._register(this.agentSessionsService.model.onDidChangeSessions(() => {
118
+ this._render();
119
+ }));
120
+ this._register(this.editorService.onDidActiveEditorChange(() => {
121
+ this._render();
122
+ }));
123
+ this._register(this.editorGroupsService.onDidChangeEditorPartOptions((
124
+ {
125
+ newPartOptions,
126
+ oldPartOptions
127
+ }
128
+ ) => {
129
+ if (newPartOptions.showTabs !== oldPartOptions.showTabs) {
130
+ this._render();
131
+ }
132
+ }));
133
+ this._register(this._commandCenterMenu.onDidChange(() => {
134
+ this._lastRenderState = undefined;
135
+ this._render();
136
+ }));
137
+ this._register(this.storageService.onDidChangeValue(
138
+ StorageScope.PROFILE,
139
+ "agentSessions.filterExcludes.agentsessionsviewerfiltersubmenu",
140
+ this._store
141
+ )(() => {
142
+ this._render();
143
+ }));
144
+ this._register(this.configurationService.onDidChangeConfiguration(e => {
145
+ if (e.affectsConfiguration(ChatConfiguration.UnifiedAgentsBar) || e.affectsConfiguration(ChatConfiguration.AgentStatusEnabled) || e.affectsConfiguration(ChatConfiguration.ChatViewSessionsEnabled)) {
146
+ this._lastRenderState = undefined;
147
+ this._render();
148
+ }
149
+ }));
150
+ this._register(Event.any(
151
+ this.chatEntitlementService.onDidChangeSentiment,
152
+ this.chatEntitlementService.onDidChangeQuotaExceeded,
153
+ this.chatEntitlementService.onDidChangeEntitlement,
154
+ this.chatEntitlementService.onDidChangeAnonymous
155
+ )(() => {
156
+ this._lastRenderState = undefined;
157
+ this._render();
158
+ }));
159
+ this._register(this.chatWidgetService.onDidAddWidget(() => {
160
+ this._render();
161
+ }));
162
+ this._register(this.chatWidgetService.onDidBackgroundSession(() => {
163
+ this._render();
164
+ }));
165
+ }
166
+ render(container) {
167
+ super.render(container);
168
+ this._container = container;
169
+ container.classList.add("agent-status-container");
170
+ container.tabIndex = -1;
171
+ this._render();
172
+ }
173
+ setFocusable(_focusable) {}
174
+ focus() {
175
+ this._firstFocusableElement?.focus();
176
+ }
177
+ blur() {
178
+ if (!this._container) {
179
+ return;
180
+ }
181
+ const activeElement = getWindow(this._container).document.activeElement;
182
+ if (isHTMLElement(activeElement) && this._container.contains(activeElement)) {
183
+ activeElement.blur();
184
+ }
185
+ }
186
+ _render() {
187
+ if (!this._container) {
188
+ return;
189
+ }
190
+ if (this._isRendering) {
191
+ return;
192
+ }
193
+ this._isRendering = true;
194
+ try {
195
+ const mode = this.agentTitleBarStatusService.mode;
196
+ const sessionInfo = this.agentTitleBarStatusService.sessionInfo;
197
+ const {
198
+ activeSessions,
199
+ unreadSessions,
200
+ attentionNeededSessions
201
+ } = this._getSessionStats();
202
+ const attentionSession = attentionNeededSessions.length > 0 ? [...attentionNeededSessions].sort((a, b) => {
203
+ const timeA = a.timing.lastRequestStarted ?? a.timing.created;
204
+ const timeB = b.timing.lastRequestStarted ?? b.timing.created;
205
+ return timeB - timeA;
206
+ })[0] : undefined;
207
+ const attentionText = attentionSession?.description ? (typeof attentionSession.description === "string" ? attentionSession.description : renderAsPlaintext(attentionSession.description)) : attentionSession?.label;
208
+ const label = this._getLabel();
209
+ const {
210
+ isFilteredToUnread,
211
+ isFilteredToInProgress
212
+ } = this._getCurrentFilterState();
213
+ const unifiedAgentsBarEnabled = this.configurationService.getValue(ChatConfiguration.UnifiedAgentsBar) === true;
214
+ const agentStatusEnabled = this.configurationService.getValue(ChatConfiguration.AgentStatusEnabled) === true;
215
+ const viewSessionsEnabled = this.configurationService.getValue(ChatConfiguration.ChatViewSessionsEnabled) !== false;
216
+ const stateKey = JSON.stringify({
217
+ mode,
218
+ sessionTitle: sessionInfo?.title,
219
+ activeCount: activeSessions.length,
220
+ unreadCount: unreadSessions.length,
221
+ attentionCount: attentionNeededSessions.length,
222
+ attentionText,
223
+ label,
224
+ isFilteredToUnread,
225
+ isFilteredToInProgress,
226
+ unifiedAgentsBarEnabled,
227
+ agentStatusEnabled,
228
+ viewSessionsEnabled
229
+ });
230
+ if (this._lastRenderState === stateKey) {
231
+ return;
232
+ }
233
+ this._lastRenderState = stateKey;
234
+ reset(this._container);
235
+ this._dynamicDisposables.clear();
236
+ this._firstFocusableElement = undefined;
237
+ if (this.agentTitleBarStatusService.mode === AgentStatusMode.Session) {
238
+ this._renderSessionMode(this._dynamicDisposables);
239
+ } else if (this.agentTitleBarStatusService.mode === AgentStatusMode.SessionReady) {
240
+ this._renderSessionReadyMode(this._dynamicDisposables);
241
+ } else if (unifiedAgentsBarEnabled) {
242
+ this._renderChatInputMode(this._dynamicDisposables);
243
+ } else if (agentStatusEnabled) {
244
+ this._renderBadgeOnlyMode(this._dynamicDisposables);
245
+ }
246
+ } finally {
247
+ this._isRendering = false;
248
+ }
249
+ }
250
+ _getSessionStats() {
251
+ const sessions = this.agentSessionsService.model.sessions;
252
+ const currentFilter = this._getStoredFilter();
253
+ const excludedProviders = currentFilter?.providers ?? [];
254
+ const filteredSessions = excludedProviders.length > 0 ? sessions.filter(s => !excludedProviders.includes(s.providerType)) : sessions;
255
+ const activeSessions = filteredSessions.filter(s => isSessionInProgressStatus(s.status) && !s.isArchived());
256
+ const unreadSessions = filteredSessions.filter(s => !s.isRead());
257
+ const attentionNeededSessions = filteredSessions.filter(
258
+ s => s.status === ChatSessionStatus.NeedsInput && !this.chatWidgetService.getWidgetBySessionResource(s.resource)
259
+ );
260
+ return {
261
+ activeSessions,
262
+ unreadSessions,
263
+ attentionNeededSessions,
264
+ hasActiveSessions: activeSessions.length > 0,
265
+ hasUnreadSessions: unreadSessions.length > 0,
266
+ hasAttentionNeeded: attentionNeededSessions.length > 0
267
+ };
268
+ }
269
+ _renderChatInputMode(disposables) {
270
+ if (!this._container) {
271
+ return;
272
+ }
273
+ const {
274
+ activeSessions,
275
+ unreadSessions,
276
+ attentionNeededSessions,
277
+ hasAttentionNeeded
278
+ } = this._getSessionStats();
279
+ this._renderCommandCenterToolbar(disposables);
280
+ const pill = $("div.agent-status-pill.chat-input-mode");
281
+ if (hasAttentionNeeded) {
282
+ pill.classList.add("needs-attention");
283
+ }
284
+ pill.setAttribute("role", "button");
285
+ pill.setAttribute("aria-label", ( localize(5011, "Open Quick Access")));
286
+ pill.tabIndex = 0;
287
+ this._firstFocusableElement = pill;
288
+ this._container.appendChild(pill);
289
+ const leftIcon = $("span.agent-status-left-icon");
290
+ if (hasAttentionNeeded) {
291
+ const reportIcon = renderIcon(Codicon.report);
292
+ const countSpan = $("span.agent-status-attention-count");
293
+ countSpan.textContent = String(attentionNeededSessions.length);
294
+ reset(leftIcon, reportIcon, countSpan);
295
+ leftIcon.classList.add("has-attention");
296
+ } else {
297
+ reset(leftIcon, renderIcon(Codicon.searchSparkle));
298
+ }
299
+ pill.appendChild(leftIcon);
300
+ const label = $("span.agent-status-label");
301
+ const {
302
+ session: attentionSession,
303
+ progress: progressText
304
+ } = this._getSessionNeedingAttention(attentionNeededSessions);
305
+ this._displayedSession = attentionSession;
306
+ const defaultLabel = progressText ?? this._getLabel();
307
+ if (progressText) {
308
+ label.classList.add("has-progress");
309
+ }
310
+ const hoverLabel = ( localize(5012, "Ask anything or describe what to build next"));
311
+ label.textContent = defaultLabel;
312
+ pill.appendChild(label);
313
+ const sendIcon = $("span.agent-status-send");
314
+ reset(sendIcon, renderIcon(Codicon.send));
315
+ sendIcon.classList.add("hidden");
316
+ pill.appendChild(sendIcon);
317
+ if (!progressText) {
318
+ disposables.add(addDisposableListener(pill, EventType.MOUSE_ENTER, () => {
319
+ reset(leftIcon, renderIcon(Codicon.searchSparkle));
320
+ leftIcon.classList.remove("has-attention");
321
+ label.textContent = hoverLabel;
322
+ label.classList.remove("has-progress");
323
+ sendIcon.classList.remove("hidden");
324
+ }));
325
+ disposables.add(addDisposableListener(pill, EventType.MOUSE_LEAVE, () => {
326
+ reset(leftIcon, renderIcon(Codicon.searchSparkle));
327
+ label.textContent = defaultLabel;
328
+ sendIcon.classList.add("hidden");
329
+ }));
330
+ }
331
+ const hoverDelegate = getDefaultHoverDelegate("mouse");
332
+ disposables.add(this.hoverService.setupManagedHover(hoverDelegate, pill, () => {
333
+ if (this._displayedSession) {
334
+ return localize(5013, "Open session: {0}", this._displayedSession.label);
335
+ }
336
+ const kbForTooltip = this.keybindingService.lookupKeybinding(UNIFIED_QUICK_ACCESS_ACTION_ID)?.getLabel();
337
+ return kbForTooltip ? ( localize(5014, "Open Quick Access ({0})", kbForTooltip)) : ( localize(5015, "Open Quick Access"));
338
+ }));
339
+ disposables.add(addDisposableListener(pill, EventType.CLICK, e => {
340
+ e.preventDefault();
341
+ e.stopPropagation();
342
+ this._handlePillClick();
343
+ }));
344
+ disposables.add(addDisposableListener(pill, EventType.KEY_DOWN, e => {
345
+ if (e.key === "Enter" || e.key === " ") {
346
+ e.preventDefault();
347
+ e.stopPropagation();
348
+ this._handlePillClick();
349
+ }
350
+ }));
351
+ if (this.configurationService.getValue(ChatConfiguration.AgentStatusEnabled) === true) {
352
+ this._renderStatusBadge(disposables, activeSessions, unreadSessions, attentionNeededSessions);
353
+ }
354
+ }
355
+ _renderSessionMode(disposables) {
356
+ if (!this._container) {
357
+ return;
358
+ }
359
+ const {
360
+ activeSessions,
361
+ unreadSessions,
362
+ attentionNeededSessions
363
+ } = this._getSessionStats();
364
+ this._renderCommandCenterToolbar(disposables);
365
+ const pill = $("div.agent-status-pill.session-mode");
366
+ this._container.appendChild(pill);
367
+ this._renderSearchButton(disposables, pill);
368
+ const titleLabel = $("span.agent-status-title");
369
+ const sessionInfo = this.agentTitleBarStatusService.sessionInfo;
370
+ titleLabel.textContent = sessionInfo?.title ?? ( localize(5016, "Agent Session Projection"));
371
+ pill.appendChild(titleLabel);
372
+ this._renderEscapeButton(disposables, pill);
373
+ const hoverDelegate = getDefaultHoverDelegate("mouse");
374
+ disposables.add(this.hoverService.setupManagedHover(hoverDelegate, pill, () => {
375
+ const sessionInfo = this.agentTitleBarStatusService.sessionInfo;
376
+ return sessionInfo ? ( localize(5017, "Agent Session Projection: {0}", sessionInfo.title)) : ( localize(5016, "Agent Session Projection"));
377
+ }));
378
+ const exitHandler = e => {
379
+ e.preventDefault();
380
+ e.stopPropagation();
381
+ this.commandService.executeCommand(ExitAgentSessionProjectionAction.ID);
382
+ };
383
+ disposables.add(addDisposableListener(pill, EventType.CLICK, exitHandler));
384
+ disposables.add(addDisposableListener(pill, EventType.MOUSE_DOWN, exitHandler));
385
+ if (this.configurationService.getValue(ChatConfiguration.AgentStatusEnabled) === true) {
386
+ this._renderStatusBadge(disposables, activeSessions, unreadSessions, attentionNeededSessions);
387
+ }
388
+ }
389
+ _renderSessionReadyMode(disposables) {
390
+ if (!this._container) {
391
+ return;
392
+ }
393
+ const {
394
+ activeSessions,
395
+ unreadSessions,
396
+ attentionNeededSessions
397
+ } = this._getSessionStats();
398
+ const pill = $("div.agent-status-pill.session-ready-mode");
399
+ this._container.appendChild(pill);
400
+ const titleLabel = $("span.agent-status-title");
401
+ const sessionInfo = this.agentTitleBarStatusService.sessionInfo;
402
+ titleLabel.textContent = sessionInfo?.title ?? ( localize(5018, "Review Changes"));
403
+ pill.appendChild(titleLabel);
404
+ this._renderEnterButton(disposables, pill);
405
+ const hoverDelegate = getDefaultHoverDelegate("mouse");
406
+ disposables.add(this.hoverService.setupManagedHover(hoverDelegate, pill, () => {
407
+ const sessionInfo = this.agentTitleBarStatusService.sessionInfo;
408
+ return sessionInfo ? ( localize(5019, "Review changes from: {0}", sessionInfo.title)) : ( localize(5020, "Review agent session changes"));
409
+ }));
410
+ const enterHandler = e => {
411
+ e.preventDefault();
412
+ e.stopPropagation();
413
+ const sessionInfo = this.agentTitleBarStatusService.sessionInfo;
414
+ if (sessionInfo) {
415
+ const session = this.agentSessionsService.getSession(sessionInfo.sessionResource);
416
+ if (session) {
417
+ this.commandService.executeCommand(EnterAgentSessionProjectionAction.ID, session);
418
+ }
419
+ }
420
+ };
421
+ disposables.add(addDisposableListener(pill, EventType.CLICK, enterHandler));
422
+ disposables.add(addDisposableListener(pill, EventType.MOUSE_DOWN, enterHandler));
423
+ if (this.configurationService.getValue(ChatConfiguration.AgentStatusEnabled) === true) {
424
+ this._renderStatusBadge(disposables, activeSessions, unreadSessions, attentionNeededSessions);
425
+ }
426
+ }
427
+ _renderBadgeOnlyMode(disposables) {
428
+ if (!this._container) {
429
+ return;
430
+ }
431
+ const {
432
+ activeSessions,
433
+ unreadSessions,
434
+ attentionNeededSessions
435
+ } = this._getSessionStats();
436
+ this._renderStatusBadge(disposables, activeSessions, unreadSessions, attentionNeededSessions);
437
+ }
438
+ _renderCommandCenterToolbar(disposables) {
439
+ if (!this._container) {
440
+ return;
441
+ }
442
+ const allActions = [];
443
+ for (const [, actions] of this._commandCenterMenu.getActions({
444
+ shouldForwardArgs: true
445
+ })) {
446
+ for (const action of actions) {
447
+ if (action.id === QUICK_OPEN_ACTION_ID) {
448
+ continue;
449
+ }
450
+ if (action instanceof SubmenuAction) {
451
+ allActions.push(...action.actions);
452
+ } else {
453
+ allActions.push(action);
454
+ }
455
+ }
456
+ }
457
+ if (allActions.length === 0) {
458
+ return;
459
+ }
460
+ const hoverDelegate = getDefaultHoverDelegate("mouse");
461
+ const toolbarContainer = $("div.agent-status-command-center-toolbar");
462
+ this._container.appendChild(toolbarContainer);
463
+ const toolbar = this.instantiationService.createInstance(WorkbenchToolBar, toolbarContainer, {
464
+ hiddenItemStrategy: HiddenItemStrategy.NoHide,
465
+ telemetrySource: "agentStatusCommandCenter",
466
+ actionViewItemProvider: (action, options) => {
467
+ return createActionViewItem(this.instantiationService, action, {
468
+ ...options,
469
+ hoverDelegate
470
+ });
471
+ }
472
+ });
473
+ disposables.add(toolbar);
474
+ toolbar.setActions(allActions);
475
+ const separator = renderIcon(Codicon.circleSmallFilled);
476
+ separator.classList.add("agent-status-separator");
477
+ this._container.appendChild(separator);
478
+ }
479
+ _renderSearchButton(disposables, parent) {
480
+ const container = parent ?? this._container;
481
+ if (!container) {
482
+ return;
483
+ }
484
+ const searchButton = $("span.agent-status-search");
485
+ reset(searchButton, renderIcon(Codicon.searchSparkle));
486
+ searchButton.setAttribute("role", "button");
487
+ searchButton.setAttribute("aria-label", ( localize(5021, "Open Quick Open")));
488
+ searchButton.tabIndex = 0;
489
+ if (!this._firstFocusableElement) {
490
+ this._firstFocusableElement = searchButton;
491
+ }
492
+ container.appendChild(searchButton);
493
+ const hoverDelegate = getDefaultHoverDelegate("mouse");
494
+ const searchKb = this.keybindingService.lookupKeybinding(QUICK_OPEN_ACTION_ID)?.getLabel();
495
+ const searchTooltip = searchKb ? ( localize(5022, "Go to File ({0})", searchKb)) : ( localize(5023, "Go to File"));
496
+ disposables.add(
497
+ this.hoverService.setupManagedHover(hoverDelegate, searchButton, searchTooltip)
498
+ );
499
+ disposables.add(addDisposableListener(searchButton, EventType.CLICK, e => {
500
+ e.preventDefault();
501
+ e.stopPropagation();
502
+ this.commandService.executeCommand(QUICK_OPEN_ACTION_ID);
503
+ }));
504
+ disposables.add(addDisposableListener(searchButton, EventType.KEY_DOWN, e => {
505
+ if (e.key === "Enter" || e.key === " ") {
506
+ e.preventDefault();
507
+ e.stopPropagation();
508
+ this.commandService.executeCommand(QUICK_OPEN_ACTION_ID);
509
+ }
510
+ }));
511
+ }
512
+ _renderStatusBadge(disposables, activeSessions, unreadSessions, attentionNeededSessions) {
513
+ if (!this._container) {
514
+ return;
515
+ }
516
+ const hasActiveSessions = activeSessions.length > 0;
517
+ const hasUnreadSessions = unreadSessions.length > 0;
518
+ const hasAttentionNeeded = attentionNeededSessions.length > 0;
519
+ this._clearFilterIfCategoryEmpty(hasUnreadSessions, hasActiveSessions);
520
+ const badge = $("div.agent-status-badge");
521
+ this._container.appendChild(badge);
522
+ const sparkleContainer = $("span.agent-status-badge-section.sparkle");
523
+ sparkleContainer.tabIndex = 0;
524
+ if (!this._firstFocusableElement) {
525
+ this._firstFocusableElement = sparkleContainer;
526
+ }
527
+ badge.appendChild(sparkleContainer);
528
+ const menuActions = Separator.join(...( this._chatTitleBarMenu.getActions({
529
+ shouldForwardArgs: true
530
+ }).map(([, actions]) => actions)));
531
+ const chatSentiment = this.chatEntitlementService.sentiment;
532
+ const chatQuotaExceeded = this.chatEntitlementService.quotas.chat?.percentRemaining === 0;
533
+ const signedOut = this.chatEntitlementService.entitlement === ChatEntitlement.Unknown;
534
+ const anonymous = this.chatEntitlementService.anonymous;
535
+ const free = this.chatEntitlementService.entitlement === ChatEntitlement.Free;
536
+ let primaryActionId = TOGGLE_CHAT_ACTION_ID;
537
+ let primaryActionTitle = ( localize(5024, "Toggle Chat"));
538
+ let primaryActionIcon = Codicon.chatSparkle;
539
+ if (chatSentiment.installed && !chatSentiment.disabled) {
540
+ if (signedOut && !anonymous) {
541
+ primaryActionId = CHAT_SETUP_ACTION_ID;
542
+ primaryActionTitle = ( localize(5025, "Sign in to use AI features..."));
543
+ primaryActionIcon = Codicon.chatSparkleError;
544
+ } else if (chatQuotaExceeded && free) {
545
+ primaryActionId = OPEN_CHAT_QUOTA_EXCEEDED_DIALOG;
546
+ primaryActionTitle = ( localize(
547
+ 5026,
548
+ "GitHub Copilot Free plan chat messages quota reached. Click for details."
549
+ ));
550
+ primaryActionIcon = Codicon.chatSparkleWarning;
551
+ }
552
+ }
553
+ const primaryAction = this.instantiationService.createInstance(MenuItemAction, {
554
+ id: primaryActionId,
555
+ title: primaryActionTitle,
556
+ icon: primaryActionIcon
557
+ }, undefined, undefined, undefined, undefined);
558
+ const dropdownAction = toAction({
559
+ id: "agentStatus.sparkle.dropdown",
560
+ label: "",
561
+ run() {}
562
+ });
563
+ const sparkleDropdown = this.instantiationService.createInstance(
564
+ DropdownWithPrimaryActionViewItem,
565
+ primaryAction,
566
+ dropdownAction,
567
+ menuActions,
568
+ "agent-status-sparkle-dropdown",
569
+ {
570
+ skipTelemetry: true
571
+ }
572
+ );
573
+ sparkleDropdown.render(sparkleContainer);
574
+ disposables.add(sparkleDropdown);
575
+ disposables.add(addDisposableListener(sparkleContainer, EventType.KEY_DOWN, e => {
576
+ if (e.key === "Enter" || e.key === " ") {
577
+ e.preventDefault();
578
+ e.stopPropagation();
579
+ this.commandService.executeCommand(primaryActionId);
580
+ } else if (e.key === "ArrowDown" || e.key === "ArrowUp") {
581
+ e.preventDefault();
582
+ e.stopPropagation();
583
+ sparkleDropdown.showDropdown();
584
+ }
585
+ }));
586
+ const hoverDelegate = getDefaultHoverDelegate("mouse");
587
+ const viewSessionsEnabled = this.configurationService.getValue(ChatConfiguration.ChatViewSessionsEnabled) !== false;
588
+ if (viewSessionsEnabled && hasUnreadSessions && this.workspaceContextService.getWorkbenchState() !== WorkbenchState.EMPTY) {
589
+ const {
590
+ isFilteredToUnread
591
+ } = this._getCurrentFilterState();
592
+ const unreadSection = $("span.agent-status-badge-section.unread");
593
+ if (isFilteredToUnread) {
594
+ unreadSection.classList.add("filtered");
595
+ }
596
+ unreadSection.setAttribute("role", "button");
597
+ unreadSection.tabIndex = 0;
598
+ const unreadIcon = $("span.agent-status-icon");
599
+ reset(unreadIcon, renderIcon(Codicon.circleFilled));
600
+ unreadSection.appendChild(unreadIcon);
601
+ const unreadCount = $("span.agent-status-text");
602
+ unreadCount.textContent = String(unreadSessions.length);
603
+ unreadSection.appendChild(unreadCount);
604
+ badge.appendChild(unreadSection);
605
+ disposables.add(addDisposableListener(unreadSection, EventType.CLICK, e => {
606
+ e.preventDefault();
607
+ e.stopPropagation();
608
+ this._openSessionsWithFilter("unread");
609
+ }));
610
+ disposables.add(addDisposableListener(unreadSection, EventType.KEY_DOWN, e => {
611
+ if (e.key === "Enter" || e.key === " ") {
612
+ e.preventDefault();
613
+ e.stopPropagation();
614
+ this._openSessionsWithFilter("unread");
615
+ }
616
+ }));
617
+ const unreadTooltip = unreadSessions.length === 1 ? ( localize(5027, "{0} unread session", unreadSessions.length)) : ( localize(5028, "{0} unread sessions", unreadSessions.length));
618
+ disposables.add(
619
+ this.hoverService.setupManagedHover(hoverDelegate, unreadSection, unreadTooltip)
620
+ );
621
+ }
622
+ if (viewSessionsEnabled && hasActiveSessions) {
623
+ const {
624
+ isFilteredToInProgress
625
+ } = this._getCurrentFilterState();
626
+ const activeSection = $("span.agent-status-badge-section.active");
627
+ if (hasAttentionNeeded) {
628
+ activeSection.classList.add("needs-input");
629
+ }
630
+ if (isFilteredToInProgress) {
631
+ activeSection.classList.add("filtered");
632
+ }
633
+ activeSection.setAttribute("role", "button");
634
+ activeSection.tabIndex = 0;
635
+ const statusIcon = $("span.agent-status-icon");
636
+ reset(
637
+ statusIcon,
638
+ renderIcon(hasAttentionNeeded ? Codicon.report : Codicon.sessionInProgress)
639
+ );
640
+ activeSection.appendChild(statusIcon);
641
+ const statusCount = $("span.agent-status-text");
642
+ statusCount.textContent = String(
643
+ hasAttentionNeeded ? attentionNeededSessions.length : activeSessions.length
644
+ );
645
+ activeSection.appendChild(statusCount);
646
+ badge.appendChild(activeSection);
647
+ disposables.add(addDisposableListener(activeSection, EventType.CLICK, e => {
648
+ e.preventDefault();
649
+ e.stopPropagation();
650
+ this._openSessionsWithFilter("inProgress");
651
+ }));
652
+ disposables.add(addDisposableListener(activeSection, EventType.KEY_DOWN, e => {
653
+ if (e.key === "Enter" || e.key === " ") {
654
+ e.preventDefault();
655
+ e.stopPropagation();
656
+ this._openSessionsWithFilter("inProgress");
657
+ }
658
+ }));
659
+ const activeTooltip = hasAttentionNeeded ? (attentionNeededSessions.length === 1 ? ( localize(5029, "{0} session needs input", attentionNeededSessions.length)) : ( localize(5030, "{0} sessions need input", attentionNeededSessions.length))) : (activeSessions.length === 1 ? ( localize(5031, "{0} session in progress", activeSessions.length)) : ( localize(5032, "{0} sessions in progress", activeSessions.length)));
660
+ disposables.add(
661
+ this.hoverService.setupManagedHover(hoverDelegate, activeSection, activeTooltip)
662
+ );
663
+ }
664
+ }
665
+ _clearFilterIfCategoryEmpty(hasUnreadSessions, hasActiveSessions) {
666
+ if (this._badgeFilterAppliedByThisWindow === "unread" && !hasUnreadSessions) {
667
+ this._restoreUserFilter();
668
+ } else if (this._badgeFilterAppliedByThisWindow === "inProgress" && !hasActiveSessions) {
669
+ this._restoreUserFilter();
670
+ }
671
+ }
672
+ _getCurrentFilterState() {
673
+ const filter = this._getStoredFilter();
674
+ if (!filter) {
675
+ return {
676
+ isFilteredToUnread: false,
677
+ isFilteredToInProgress: false
678
+ };
679
+ }
680
+ const isFilteredToUnread = filter.read === true && filter.states.length === 0;
681
+ const isFilteredToInProgress = filter.states?.length === 2 && filter.read === false;
682
+ return {
683
+ isFilteredToUnread,
684
+ isFilteredToInProgress
685
+ };
686
+ }
687
+ _getStoredFilter() {
688
+ const filterStr = this.storageService.get(FILTER_STORAGE_KEY, StorageScope.PROFILE);
689
+ if (!filterStr) {
690
+ return undefined;
691
+ }
692
+ try {
693
+ return JSON.parse(filterStr);
694
+ } catch {
695
+ return undefined;
696
+ }
697
+ }
698
+ _storeFilter(filter) {
699
+ this.storageService.store(
700
+ FILTER_STORAGE_KEY,
701
+ JSON.stringify(filter),
702
+ StorageScope.PROFILE,
703
+ StorageTarget.USER
704
+ );
705
+ }
706
+ _clearFilter() {
707
+ this._storeFilter({
708
+ providers: [],
709
+ states: [],
710
+ archived: true,
711
+ read: false
712
+ });
713
+ }
714
+ _saveUserFilter() {
715
+ const {
716
+ isFilteredToUnread,
717
+ isFilteredToInProgress
718
+ } = this._getCurrentFilterState();
719
+ if (isFilteredToUnread || isFilteredToInProgress) {
720
+ return;
721
+ }
722
+ const currentFilter = this._getStoredFilter();
723
+ if (currentFilter) {
724
+ this.storageService.store(
725
+ PREVIOUS_FILTER_STORAGE_KEY,
726
+ JSON.stringify(currentFilter),
727
+ StorageScope.PROFILE,
728
+ StorageTarget.USER
729
+ );
730
+ }
731
+ }
732
+ _restoreUserFilter() {
733
+ const previousFilterStr = this.storageService.get(PREVIOUS_FILTER_STORAGE_KEY, StorageScope.PROFILE);
734
+ if (previousFilterStr) {
735
+ try {
736
+ const previousFilter = JSON.parse(previousFilterStr);
737
+ this._storeFilter(previousFilter);
738
+ } catch {
739
+ this._clearFilter();
740
+ }
741
+ } else {
742
+ this._clearFilter();
743
+ }
744
+ this.storageService.remove(PREVIOUS_FILTER_STORAGE_KEY, StorageScope.PROFILE);
745
+ this._badgeFilterAppliedByThisWindow = null;
746
+ }
747
+ _openSessionsWithFilter(filterType) {
748
+ const {
749
+ isFilteredToUnread,
750
+ isFilteredToInProgress
751
+ } = this._getCurrentFilterState();
752
+ const currentFilter = this._getStoredFilter();
753
+ const preservedProviders = currentFilter?.providers ?? [];
754
+ if (filterType === "unread") {
755
+ if (isFilteredToUnread) {
756
+ this._restoreUserFilter();
757
+ } else {
758
+ this._saveUserFilter();
759
+ this._storeFilter({
760
+ providers: preservedProviders,
761
+ states: [],
762
+ archived: true,
763
+ read: true
764
+ });
765
+ this._badgeFilterAppliedByThisWindow = "unread";
766
+ }
767
+ } else {
768
+ if (isFilteredToInProgress) {
769
+ this._restoreUserFilter();
770
+ } else {
771
+ this._saveUserFilter();
772
+ this._storeFilter({
773
+ providers: preservedProviders,
774
+ states: [ChatSessionStatus.Completed, ChatSessionStatus.Failed],
775
+ archived: true,
776
+ read: false
777
+ });
778
+ this._badgeFilterAppliedByThisWindow = "inProgress";
779
+ }
780
+ }
781
+ this.commandService.executeCommand(FocusAgentSessionsAction.id);
782
+ }
783
+ _renderEscapeButton(disposables, parent) {
784
+ const escButton = $("span.agent-status-esc-button");
785
+ escButton.textContent = "Esc";
786
+ escButton.setAttribute("role", "button");
787
+ escButton.setAttribute("aria-label", ( localize(5033, "Exit Agent Session Projection")));
788
+ escButton.tabIndex = 0;
789
+ parent.appendChild(escButton);
790
+ const hoverDelegate = getDefaultHoverDelegate("mouse");
791
+ disposables.add(
792
+ this.hoverService.setupManagedHover(hoverDelegate, escButton, ( localize(5034, "Exit Agent Session Projection (Escape)")))
793
+ );
794
+ disposables.add(addDisposableListener(escButton, EventType.MOUSE_DOWN, e => {
795
+ e.preventDefault();
796
+ e.stopPropagation();
797
+ this.commandService.executeCommand(ExitAgentSessionProjectionAction.ID);
798
+ }));
799
+ disposables.add(addDisposableListener(escButton, EventType.CLICK, e => {
800
+ e.preventDefault();
801
+ e.stopPropagation();
802
+ this.commandService.executeCommand(ExitAgentSessionProjectionAction.ID);
803
+ }));
804
+ disposables.add(addDisposableListener(escButton, EventType.KEY_DOWN, e => {
805
+ if (e.key === "Enter" || e.key === " ") {
806
+ e.preventDefault();
807
+ e.stopPropagation();
808
+ this.commandService.executeCommand(ExitAgentSessionProjectionAction.ID);
809
+ }
810
+ }));
811
+ }
812
+ _renderEnterButton(disposables, parent) {
813
+ const enterButton = $("span.agent-status-enter-button");
814
+ const keybinding = this.keybindingService.lookupKeybinding(EnterAgentSessionProjectionAction.ID);
815
+ enterButton.textContent = keybinding?.getLabel() ?? ( localize(5035, "Review"));
816
+ enterButton.setAttribute("role", "button");
817
+ enterButton.setAttribute("aria-label", ( localize(5036, "Enter Agent Session Projection")));
818
+ enterButton.tabIndex = 0;
819
+ if (!this._firstFocusableElement) {
820
+ this._firstFocusableElement = enterButton;
821
+ }
822
+ parent.appendChild(enterButton);
823
+ const hoverDelegate = getDefaultHoverDelegate("mouse");
824
+ const hoverText = keybinding ? ( localize(5037, "Review Changes ({0})", keybinding.getLabel())) : ( localize(5038, "Review Changes"));
825
+ disposables.add(this.hoverService.setupManagedHover(hoverDelegate, enterButton, hoverText));
826
+ const enterProjection = e => {
827
+ e.preventDefault();
828
+ e.stopPropagation();
829
+ const sessionInfo = this.agentTitleBarStatusService.sessionInfo;
830
+ if (sessionInfo) {
831
+ const session = this.agentSessionsService.getSession(sessionInfo.sessionResource);
832
+ if (session) {
833
+ this.commandService.executeCommand(EnterAgentSessionProjectionAction.ID, session);
834
+ }
835
+ }
836
+ };
837
+ disposables.add(addDisposableListener(enterButton, EventType.MOUSE_DOWN, enterProjection));
838
+ disposables.add(addDisposableListener(enterButton, EventType.CLICK, enterProjection));
839
+ disposables.add(addDisposableListener(enterButton, EventType.KEY_DOWN, e => {
840
+ if (e.key === "Enter" || e.key === " ") {
841
+ enterProjection(e);
842
+ }
843
+ }));
844
+ }
845
+ _handlePillClick() {
846
+ if (this._displayedSession) {
847
+ this.instantiationService.invokeFunction(openSession, this._displayedSession);
848
+ } else {
849
+ this.commandService.executeCommand(UNIFIED_QUICK_ACCESS_ACTION_ID);
850
+ }
851
+ }
852
+ _getSessionNeedingAttention(attentionNeededSessions) {
853
+ if (attentionNeededSessions.length === 0) {
854
+ return {
855
+ session: undefined,
856
+ progress: undefined
857
+ };
858
+ }
859
+ const sorted = [...attentionNeededSessions].sort((a, b) => {
860
+ const timeA = a.timing.lastRequestStarted ?? a.timing.created;
861
+ const timeB = b.timing.lastRequestStarted ?? b.timing.created;
862
+ return timeB - timeA;
863
+ });
864
+ const mostRecent = sorted[0];
865
+ if (!mostRecent.description) {
866
+ return {
867
+ session: mostRecent,
868
+ progress: mostRecent.label
869
+ };
870
+ }
871
+ const progress = typeof mostRecent.description === "string" ? mostRecent.description : renderAsPlaintext(mostRecent.description);
872
+ return {
873
+ session: mostRecent,
874
+ progress
875
+ };
876
+ }
877
+ _getLabel() {
878
+ const {
879
+ prefix,
880
+ suffix
881
+ } = this._getTitleDecorations();
882
+ let label = this.labelService.getWorkspaceLabel(this.workspaceContextService.getWorkspace());
883
+ if (this.editorGroupsService.partOptions.showTabs === "none") {
884
+ const activeEditor = this.editorService.activeEditor;
885
+ if (activeEditor) {
886
+ const dirty = activeEditor.isDirty() && !activeEditor.isSaving() ? TITLE_DIRTY : "";
887
+ label = `${dirty}${activeEditor.getTitle(Verbosity.SHORT)}`;
888
+ }
889
+ }
890
+ if (!label) {
891
+ label = ( localize(5039, "Ask anything..."));
892
+ }
893
+ if (prefix) {
894
+ label = ( localize(5040, "{0} {1}", prefix, label));
895
+ }
896
+ if (suffix) {
897
+ label = ( localize(5041, "{0} {1}", label, suffix));
898
+ }
899
+ return label.replaceAll(/\r\n|\r|\n/g, "⏎");
900
+ }
901
+ _getTitleDecorations() {
902
+ let prefix;
903
+ const suffix = undefined;
904
+ if (this.environmentService.remoteAuthority) {
905
+ prefix = this.labelService.getHostLabel(Schemas.vscodeRemote, this.environmentService.remoteAuthority);
906
+ }
907
+ if (this.environmentService.isExtensionDevelopment) {
908
+ prefix = !prefix ? NLS_EXTENSION_HOST : `${NLS_EXTENSION_HOST} - ${prefix}`;
909
+ }
910
+ return {
911
+ prefix,
912
+ suffix
913
+ };
914
+ }
915
+ };
916
+ AgentTitleBarStatusWidget = ( __decorate([( __param(2, IInstantiationService)), ( __param(3, IAgentTitleBarStatusService)), ( __param(4, IHoverService)), ( __param(5, ICommandService)), ( __param(6, IKeybindingService)), ( __param(7, IAgentSessionsService)), ( __param(8, ILabelService)), ( __param(9, IWorkspaceContextService)), ( __param(10, IBrowserWorkbenchEnvironmentService)), ( __param(11, IEditorGroupsService)), ( __param(12, IEditorService)), ( __param(13, IMenuService)), ( __param(14, IContextKeyService)), ( __param(15, IStorageService)), ( __param(16, IConfigurationService)), ( __param(17, IChatEntitlementService)), ( __param(18, IChatWidgetService))], AgentTitleBarStatusWidget));
917
+ let AgentTitleBarStatusRendering = class AgentTitleBarStatusRendering extends Disposable {
918
+ static {
919
+ this.ID = "workbench.contrib.agentStatus.rendering";
920
+ }
921
+ constructor(actionViewItemService, instantiationService, configurationService) {
922
+ super();
923
+ this._register(actionViewItemService.register(
924
+ MenuId.CommandCenter,
925
+ MenuId.AgentsTitleBarControlMenu,
926
+ (action, options) => {
927
+ if (!(action instanceof SubmenuItemAction)) {
928
+ return undefined;
929
+ }
930
+ return instantiationService.createInstance(AgentTitleBarStatusWidget, action, options);
931
+ },
932
+ undefined
933
+ ));
934
+ const updateClass = () => {
935
+ const commandCenterEnabled = configurationService.getValue(LayoutSettings.COMMAND_CENTER) === true;
936
+ const enabled = configurationService.getValue(ChatConfiguration.AgentStatusEnabled) === true && commandCenterEnabled;
937
+ const enhanced = configurationService.getValue(ChatConfiguration.UnifiedAgentsBar) === true && commandCenterEnabled;
938
+ mainWindow.document.body.classList.toggle("agent-status-enabled", enabled);
939
+ mainWindow.document.body.classList.toggle("unified-agents-bar", enhanced);
940
+ };
941
+ updateClass();
942
+ this._register(configurationService.onDidChangeConfiguration(e => {
943
+ if (e.affectsConfiguration(ChatConfiguration.AgentStatusEnabled) || e.affectsConfiguration(ChatConfiguration.UnifiedAgentsBar) || e.affectsConfiguration(LayoutSettings.COMMAND_CENTER)) {
944
+ updateClass();
945
+ }
946
+ }));
947
+ }
948
+ };
949
+ AgentTitleBarStatusRendering = ( __decorate([( __param(0, IActionViewItemService)), ( __param(1, IInstantiationService)), ( __param(2, IConfigurationService))], AgentTitleBarStatusRendering));
950
+
951
+ export { AgentTitleBarStatusRendering, AgentTitleBarStatusWidget };