@codingame/monaco-vscode-chat-service-override 36.2.6 → 37.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 (725) hide show
  1. package/index.d.ts +1 -0
  2. package/index.js +92 -10
  3. package/package.json +5 -5
  4. package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.d.ts +10 -3
  5. package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.js +54 -17
  6. package/vscode/src/vs/platform/agentHost/browser/agentHostEnablementService.d.ts +14 -0
  7. package/vscode/src/vs/platform/agentHost/browser/agentHostEnablementService.js +46 -0
  8. package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.d.ts +7 -2
  9. package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.js +34 -2
  10. package/vscode/src/vs/platform/agentHost/browser/{remoteAgentHostProtocolClient.d.ts → agentHostProtocolClient.d.ts} +240 -60
  11. package/vscode/src/vs/platform/agentHost/browser/agentHostProtocolClient.js +1911 -0
  12. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +30 -33
  13. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +381 -315
  14. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.d.ts +3 -1
  15. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.js +2 -0
  16. package/vscode/src/vs/platform/agentHost/common/agentHostClientInfo.d.ts +9 -0
  17. package/vscode/src/vs/platform/agentHost/common/agentHostClientInfo.js +20 -0
  18. package/vscode/src/vs/platform/agentHost/common/agentHostExtensionProtocol.d.ts +144 -0
  19. package/vscode/src/vs/platform/agentHost/common/agentHostExtensionProtocol.js +20 -0
  20. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +14 -6
  21. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +14 -10
  22. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.js +1 -1
  23. package/vscode/src/vs/platform/agentHost/common/agentHostManagedRules.d.ts +47 -0
  24. package/vscode/src/vs/platform/agentHost/common/agentHostManagedRules.js +75 -0
  25. package/vscode/src/vs/platform/agentHost/common/agentHostManagedSettings.d.ts +68 -0
  26. package/vscode/src/vs/platform/agentHost/common/agentHostManagedSettings.js +161 -0
  27. package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.js +288 -45
  28. package/vscode/src/vs/platform/agentHost/common/agentMerge.d.ts +261 -0
  29. package/vscode/src/vs/platform/agentHost/common/agentMerge.js +67 -0
  30. package/vscode/src/vs/platform/agentHost/common/agentSdkSetup.d.ts +53 -0
  31. package/vscode/src/vs/platform/agentHost/common/agentSdkSetup.js +45 -0
  32. package/vscode/src/vs/platform/agentHost/common/changesetUri.d.ts +130 -0
  33. package/vscode/src/vs/platform/agentHost/common/changesetUri.js +27 -0
  34. package/vscode/src/vs/platform/agentHost/common/customAgents.d.ts +8 -2
  35. package/vscode/src/vs/platform/agentHost/common/customAgents.js +7 -0
  36. package/vscode/src/vs/platform/agentHost/common/meta/agentChatSurfaceMeta.d.ts +39 -0
  37. package/vscode/src/vs/platform/agentHost/common/meta/agentChatSurfaceMeta.js +25 -0
  38. package/vscode/src/vs/platform/agentHost/common/meta/agentCompletionAttachmentMeta.d.ts +110 -0
  39. package/vscode/src/vs/platform/agentHost/common/meta/agentCompletionAttachmentMeta.js +38 -0
  40. package/vscode/src/vs/platform/agentHost/common/meta/agentHostArtifactRemovalMeta.d.ts +4 -0
  41. package/vscode/src/vs/platform/agentHost/common/meta/clientPluginCustomizationMeta.d.ts +7 -0
  42. package/vscode/src/vs/platform/agentHost/common/meta/clientPluginCustomizationMeta.js +14 -0
  43. package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.d.ts +3 -3
  44. package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.js +16 -24
  45. package/vscode/src/vs/platform/agentHost/common/semanticSearchConstants.d.ts +8 -0
  46. package/vscode/src/vs/platform/agentHost/common/semanticSearchConstants.js +8 -0
  47. package/vscode/src/vs/platform/agentHost/common/sessionArtifacts.d.ts +75 -0
  48. package/vscode/src/vs/platform/agentHost/common/sessionArtifacts.js +84 -0
  49. package/vscode/src/vs/platform/agentHost/common/shellInitScript.d.ts +24 -0
  50. package/vscode/src/vs/platform/agentHost/common/shellInitScript.js +63 -0
  51. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +71 -20
  52. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +187 -26
  53. package/vscode/src/vs/platform/agentHost/common/state/legacyProtocolCompatibility.d.ts +30 -0
  54. package/vscode/src/vs/platform/agentHost/common/state/legacyProtocolCompatibility.js +87 -0
  55. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.js +2 -2
  56. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation/reducer.d.ts +4 -0
  57. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation/reducer.js +37 -0
  58. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation-run/reducer.d.ts +4 -0
  59. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation-run/reducer.js +45 -0
  60. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.d.ts +5 -4
  61. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.js +100 -35
  62. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.js +193 -49
  63. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.js +161 -40
  64. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.d.ts +1 -1
  65. package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.js +5 -1
  66. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.d.ts +2 -2
  67. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/timestamps.d.ts +1 -0
  68. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/timestamps.js +7 -0
  69. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +1 -1
  70. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +114 -3
  71. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +28 -5
  72. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +4 -2
  73. package/vscode/src/vs/platform/agentHost/common/state/sessionWorkingDirectories.d.ts +34 -0
  74. package/vscode/src/vs/platform/agentHost/common/state/sessionWorkingDirectories.js +28 -0
  75. package/vscode/src/vs/platform/agentHost/common/worktreePaths.d.ts +24 -0
  76. package/vscode/src/vs/platform/agentHost/common/worktreePaths.js +15 -0
  77. package/vscode/src/vs/platform/browserView/common/browserChatToolReferenceNames.d.ts +1 -1
  78. package/vscode/src/vs/platform/chat/common/aiAgentEnv.d.ts +18 -0
  79. package/vscode/src/vs/platform/chat/common/aiAgentEnv.js +6 -0
  80. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +5 -1
  81. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +77 -5
  82. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.d.ts +1 -1
  83. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +9 -5
  84. package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +1 -5
  85. package/vscode/src/vs/platform/networkFilter/common/settings.js +0 -4
  86. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.d.ts +19 -7
  87. package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.js +49 -37
  88. package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.d.ts +2 -1
  89. package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.js +12 -0
  90. package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.js +1 -2
  91. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +1 -0
  92. package/vscode/src/vs/platform/terminal/common/autoApprove/autoApproveParseSafety.d.ts +5 -0
  93. package/vscode/src/vs/platform/terminal/common/autoApprove/autoApproveParseSafety.js +7 -0
  94. package/vscode/src/vs/platform/terminal/common/autoApprove/cmdDelayedExpansion.d.ts +5 -0
  95. package/vscode/src/vs/platform/terminal/common/autoApprove/cmdDelayedExpansion.js +8 -0
  96. package/vscode/src/vs/{workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers → platform/terminal/common/autoApprove}/sedFileWriteParser.d.ts +1 -2
  97. package/vscode/src/vs/workbench/browser/chatChangesPill.d.ts +29 -0
  98. package/vscode/src/vs/workbench/browser/chatChangesPill.js +84 -0
  99. package/vscode/src/vs/workbench/common/chatPullRequest.d.ts +19 -0
  100. package/vscode/src/vs/workbench/common/chatPullRequest.js +53 -0
  101. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoice.contribution.js +342 -155
  102. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceSessionsPicker.js +2 -2
  103. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.d.ts +25 -2
  104. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.js +150 -67
  105. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.js +5 -3
  106. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.d.ts +5 -1
  107. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.js +39 -9
  108. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.d.ts +1 -1
  109. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.js +3 -3
  110. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/feedbackDialog.js +6 -6
  111. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.d.ts +4 -2
  112. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.js +54 -17
  113. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/onboardingComponent.js +11 -11
  114. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.d.ts +1 -1
  115. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.js +9 -9
  116. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.d.ts +1 -1
  117. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.js +5 -5
  118. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.d.ts +6 -0
  119. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.js +5 -1
  120. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/transcriptComponent.d.ts +1 -1
  121. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.d.ts +1 -1
  122. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.js +2 -2
  123. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/media/voiceModeOnboarding.css +252 -0
  124. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscripts.contribution.js +13 -13
  125. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscriptsView.js +7 -7
  126. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/voiceModeOnboarding.d.ts +146 -0
  127. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/voiceModeOnboarding.js +889 -0
  128. package/vscode/src/vs/workbench/contrib/agentsVoice/common/voiceTranscriptStore.js +2 -2
  129. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +2 -7
  130. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +3 -54
  131. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +32 -3
  132. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +214 -161
  133. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +10 -9
  134. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.d.ts +2 -1
  135. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +256 -72
  136. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.d.ts +2 -1
  138. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +11 -12
  139. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +19 -15
  140. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +30 -14
  141. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +19 -10
  142. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +9 -9
  143. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  144. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFindActions.d.ts +6 -0
  145. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFindActions.js +237 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +7 -6
  147. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  148. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +10 -10
  149. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.d.ts +6 -0
  150. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +68 -61
  151. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +17 -21
  152. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +17 -21
  153. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  154. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.d.ts +5 -0
  155. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +68 -14
  156. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
  157. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +21 -19
  158. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.d.ts +7 -2
  159. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +222 -72
  160. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.d.ts +64 -17
  161. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +530 -305
  162. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openAgentHostStateFileAction.d.ts +25 -0
  163. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openAgentHostStateFileAction.js +63 -0
  164. package/vscode/src/vs/workbench/contrib/chat/browser/agentHostCompletionAction.d.ts +30 -0
  165. package/vscode/src/vs/workbench/contrib/chat/browser/agentHostCompletionAction.js +37 -0
  166. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginCommands.d.ts +6 -0
  167. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginCommands.js +95 -0
  168. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +10 -6
  169. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  170. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +2 -1
  171. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +18 -1
  172. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +86 -47
  173. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +61 -47
  174. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +43 -24
  175. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.js +326 -76
  176. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.d.ts +112 -5
  177. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.js +33 -7
  178. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostImportConversationStore.d.ts +20 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostImportConversationStore.js +26 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +28 -10
  181. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.js +110 -126
  182. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupport.d.ts +131 -0
  183. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupport.js +638 -0
  184. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupportScope.d.ts +41 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupportScope.js +202 -0
  186. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.d.ts +24 -1
  187. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.js +26 -5
  188. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +10 -7
  189. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostProtectedResourcesService.d.ts +20 -0
  190. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostProtectedResourcesService.js +55 -0
  191. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostResponseFileChanges.d.ts +62 -0
  192. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostResponseFileChanges.js +40 -0
  193. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionInputPills.d.ts +59 -0
  194. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionInputPills.js +624 -0
  195. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectorySynchronizer.d.ts +90 -0
  196. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectorySynchronizer.js +207 -0
  197. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostShellInitSynchronizer.d.ts +31 -0
  198. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostShellInitSynchronizer.js +140 -0
  199. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.d.ts +4 -0
  200. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.js +5 -1
  201. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolUtils.js +5 -4
  202. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +74 -5
  203. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +511 -171
  204. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/applyAgentHostSessionConfig.d.ts +32 -0
  205. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/applyAgentHostSessionConfig.js +48 -0
  206. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.d.ts +55 -6
  207. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.js +210 -20
  208. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +43 -24
  209. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +46 -10
  210. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +216 -110
  211. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +9 -4
  212. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +26 -17
  213. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  214. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  215. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  216. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  217. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +30 -26
  218. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +5 -2
  219. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/unifiedQuickAccess.css +6 -6
  220. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  221. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  222. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu.d.ts +3 -0
  223. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu.js +62 -0
  224. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/sessionSummaryHover.css +104 -0
  225. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHover.d.ts +115 -0
  226. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHover.js +168 -0
  227. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHoverService.d.ts +24 -0
  228. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHoverService.js +32 -0
  229. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessionsConfiguration.js +56 -0
  230. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +0 -4
  231. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +16 -17
  232. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +7 -3
  233. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +1 -0
  234. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +2 -0
  235. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +10 -1
  236. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +48 -1
  237. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +913 -220
  238. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.d.ts +1 -1
  239. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +148 -84
  240. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +161 -17
  241. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +2367 -247
  242. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +5 -2
  243. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +21 -13
  244. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementSectionRegistry.d.ts +26 -0
  245. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementSectionRegistry.js +34 -0
  246. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.d.ts +2 -0
  247. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.js +23 -0
  248. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.d.ts +15 -0
  249. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.js +3 -0
  250. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.d.ts +10 -2
  251. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +143 -68
  252. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +1 -0
  253. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +10 -5
  254. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCardList.d.ts +40 -0
  255. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCardList.js +302 -0
  256. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +1 -2
  257. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +49 -8
  258. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.js +3 -3
  259. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.d.ts +38 -0
  260. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.js +240 -0
  261. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationAccessibility.d.ts +1 -0
  262. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationAccessibility.js +53 -0
  263. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.d.ts +82 -0
  264. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.js +762 -0
  265. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationDashboard.d.ts +80 -0
  266. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationDashboard.js +279 -0
  267. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationServiceImpl.d.ts +44 -0
  268. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationServiceImpl.js +437 -0
  269. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +85 -6
  270. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +697 -15
  271. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.js +7 -7
  272. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.d.ts +40 -10
  273. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +164 -42
  274. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.js +6 -9
  275. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +260 -31
  276. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +2097 -589
  277. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpServerCustomizationMigration.d.ts +32 -0
  278. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpServerCustomizationMigration.js +860 -0
  279. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +2229 -1338
  280. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +79 -26
  281. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/customizationMigrationDashboard.css +354 -0
  282. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +85 -9
  283. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +1550 -357
  284. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +2 -4
  285. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.js +13 -27
  286. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.d.ts +38 -26
  287. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.js +637 -319
  288. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +28 -10
  289. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatPasteTargetService.d.ts +10 -0
  290. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatPasteTargetService.js +22 -0
  291. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatReferenceAttachmentWidget.contribution.d.ts +15 -0
  292. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatReferenceAttachmentWidget.contribution.js +38 -0
  293. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/transcriptContextAttachmentWidget.contribution.d.ts +8 -0
  294. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/transcriptContextAttachmentWidget.contribution.js +38 -0
  295. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +4 -1
  296. package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +1675 -633
  297. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.d.ts +93 -6
  298. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.js +823 -52
  299. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostLogSources.d.ts +132 -0
  300. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostLogSources.js +446 -0
  301. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostUsageSidecar.d.ts +183 -0
  302. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostUsageSidecar.js +218 -0
  303. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +45 -42
  304. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.d.ts +11 -0
  305. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +163 -136
  306. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheInsights.js +72 -72
  307. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +7 -7
  308. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +22 -2
  309. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +105 -14
  310. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  311. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEnablement.d.ts +32 -0
  312. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEnablement.js +49 -0
  313. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +20 -20
  314. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  315. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  316. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  317. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +27 -22
  318. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.d.ts +6 -0
  319. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +22 -23
  320. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  321. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +25 -25
  322. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  323. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  324. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.d.ts +7 -2
  325. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +76 -43
  326. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  327. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +3 -2
  328. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.js +1 -0
  329. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugWireLogView.d.ts +145 -0
  330. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugWireLogView.js +839 -0
  331. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +277 -3
  332. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  333. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +6 -6
  334. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  335. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +8 -8
  336. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  337. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +16 -16
  338. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -4
  339. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  340. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +8 -4
  341. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  342. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +6 -3
  343. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +35 -19
  344. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +16 -9
  345. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +4 -3
  346. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +4 -4
  347. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +4 -0
  348. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +7 -2
  349. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  350. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.d.ts +5 -5
  351. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +3 -3
  352. package/vscode/src/vs/workbench/contrib/chat/browser/chatInputPills.d.ts +86 -0
  353. package/vscode/src/vs/workbench/contrib/chat/browser/chatInputPills.js +282 -0
  354. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +14 -10
  355. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
  356. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +5 -0
  357. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +37 -25
  358. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +7 -5
  359. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +135 -82
  360. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -3
  361. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutlineCreator.d.ts +17 -0
  362. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutlineCreator.js +28 -0
  363. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +5 -5
  364. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +32 -32
  365. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementPreview.d.ts +7 -0
  366. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementPreview.js +114 -0
  367. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievements.contribution.d.ts +45 -0
  368. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievements.contribution.js +326 -0
  369. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditor.d.ts +33 -0
  370. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditor.js +99 -0
  371. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditorInput.d.ts +17 -0
  372. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditorInput.js +46 -0
  373. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsWidget.d.ts +27 -0
  374. package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsWidget.js +301 -0
  375. package/vscode/src/vs/workbench/contrib/chat/browser/chatPromoNotification.d.ts +22 -0
  376. package/vscode/src/vs/workbench/contrib/chat/browser/chatPromoNotification.js +103 -0
  377. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.d.ts +9 -36
  378. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +103 -196
  379. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  380. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +36 -30
  381. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +2 -0
  382. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +51 -12
  383. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  384. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +31 -27
  385. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +65 -20
  386. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +291 -138
  387. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/chatSetup.css +9 -0
  388. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/microsoft-dark.svg +1 -0
  389. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/microsoft-light.svg +1 -0
  390. package/vscode/src/vs/workbench/contrib/chat/browser/chatSideChat.d.ts +9 -0
  391. package/vscode/src/vs/workbench/contrib/chat/browser/chatSideChat.js +24 -0
  392. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +2 -1
  393. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +59 -35
  394. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +7 -2
  395. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +221 -145
  396. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +15 -29
  397. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +21 -3
  398. package/vscode/src/vs/workbench/contrib/chat/browser/chatSubmitRequestHandlerService.d.ts +22 -0
  399. package/vscode/src/vs/workbench/contrib/chat/browser/chatSubmitRequestHandlerService.js +27 -0
  400. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +9 -0
  401. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +23 -21
  402. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +6 -1
  403. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +62 -6
  404. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +15 -1
  405. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +97 -8
  406. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  407. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +6 -6
  408. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.d.ts +11 -2
  409. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +24 -16
  410. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +5 -5
  411. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  412. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.d.ts +44 -0
  413. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.js +232 -0
  414. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationContribution.d.ts +36 -0
  415. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationContribution.js +127 -0
  416. package/vscode/src/vs/workbench/contrib/chat/browser/exploreAgentDefaultModel.js +1 -1
  417. package/vscode/src/vs/workbench/contrib/chat/browser/feedbackSurvey/chatModelFeedbackSurveyPromptContribution.d.ts +18 -0
  418. package/vscode/src/vs/workbench/contrib/chat/browser/feedbackSurvey/chatModelFeedbackSurveyPromptContribution.js +55 -0
  419. package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.js +4 -3
  420. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
  421. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatPetAchievements.css +236 -0
  422. package/vscode/src/vs/workbench/contrib/chat/browser/planAgentDefaultModel.js +1 -1
  423. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorOverlay.d.ts +9 -0
  424. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorOverlay.js +260 -0
  425. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.d.ts +39 -5
  426. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.js +155 -56
  427. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.d.ts +10 -14
  428. package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +29 -14
  429. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.d.ts +2 -0
  430. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +76 -24
  431. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +1 -1
  432. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +53 -32
  433. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +1 -1
  434. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +17 -17
  435. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +8 -7
  436. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.d.ts +1 -1
  437. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +29 -71
  438. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +3 -0
  439. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +36 -40
  440. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +3 -0
  441. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +5 -5
  442. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  443. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolSetsCodeLensProvider.js +2 -2
  444. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  445. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  446. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +9 -16
  447. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  448. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +5 -13
  449. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/media/promptTimeline.css +820 -0
  450. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptBucketing.d.ts +38 -0
  451. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptBucketing.js +100 -0
  452. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimeline.contribution.d.ts +1 -0
  453. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimeline.contribution.js +51 -0
  454. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineCard.d.ts +30 -0
  455. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineCard.js +113 -0
  456. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineGutterRail.d.ts +146 -0
  457. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineGutterRail.js +440 -0
  458. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineLayout.d.ts +16 -0
  459. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineLayout.js +5 -0
  460. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineModel.d.ts +194 -0
  461. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineModel.js +525 -0
  462. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRail.d.ts +33 -0
  463. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRulerRail.d.ts +128 -0
  464. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRulerRail.js +460 -0
  465. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineStickyHeader.d.ts +38 -0
  466. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineStickyHeader.js +120 -0
  467. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineWidgetContrib.d.ts +53 -0
  468. package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineWidgetContrib.js +160 -0
  469. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +25 -22
  470. package/vscode/src/vs/workbench/contrib/chat/browser/sessionChatPillOptions.d.ts +13 -0
  471. package/vscode/src/vs/workbench/contrib/chat/browser/sessionChatPillOptions.js +52 -0
  472. package/vscode/src/vs/workbench/contrib/chat/browser/sessionPullRequestPill.d.ts +22 -0
  473. package/vscode/src/vs/workbench/contrib/chat/browser/sessionPullRequestPill.js +58 -0
  474. package/vscode/src/vs/workbench/contrib/chat/browser/speechToText/voiceCodeTranscriptionClient.d.ts +63 -0
  475. package/vscode/src/vs/workbench/contrib/chat/browser/speechToText/voiceCodeTranscriptionClient.js +361 -0
  476. package/vscode/src/vs/workbench/contrib/chat/browser/telemetry/chatEditorTopologyTelemetry.d.ts +35 -0
  477. package/vscode/src/vs/workbench/contrib/chat/browser/telemetry/chatEditorTopologyTelemetry.js +90 -0
  478. package/vscode/src/vs/workbench/contrib/chat/browser/tools/clientToolSetsContribution.js +25 -18
  479. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +3 -1
  480. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +77 -41
  481. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +60 -43
  482. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +4 -1
  483. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +60 -16
  484. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +10 -8
  485. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +13 -4
  486. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +3 -1
  487. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +44 -24
  488. package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +4 -4
  489. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  490. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.d.ts +52 -6
  491. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.js +446 -79
  492. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceInputUtils.d.ts +11 -0
  493. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceInputUtils.js +13 -0
  494. package/vscode/src/vs/workbench/contrib/chat/browser/voiceInputMode/voiceInputMode.d.ts +66 -0
  495. package/vscode/src/vs/workbench/contrib/chat/browser/voiceInputMode/voiceInputMode.js +297 -0
  496. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentOpenChat.d.ts +137 -0
  497. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentOpenChat.js +714 -0
  498. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatSubagentOpenChat.css +379 -0
  499. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatFind/chatFindAccessibilityHelp.d.ts +10 -0
  500. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatFind/chatFindAccessibilityHelp.js +78 -0
  501. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPetWidgetService.d.ts +36 -0
  502. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPetWidgetService.js +172 -0
  503. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.d.ts +5 -1
  504. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +8 -1
  505. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNoticeHub.d.ts +15 -0
  506. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNoticeHub.js +30 -0
  507. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +11 -1
  508. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +41 -13
  509. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.d.ts +5 -2
  510. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +133 -3
  511. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.d.ts +3 -2
  512. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.js +11 -2
  513. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatEditorInputContentProvider.js +4 -4
  514. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCommandArgumentHint.d.ts +1 -0
  515. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCommandArgumentHint.js +96 -0
  516. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.d.ts +12 -0
  517. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +36 -1
  518. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +67 -17
  519. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +23 -37
  520. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.d.ts +18 -0
  521. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +72 -3
  522. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputPlaceholderDecoration.d.ts +11 -0
  523. package/vscode/src/vs/workbench/contrib/{agentsVoice/common/agentsVoiceColors.js → chat/browser/widget/input/editor/chatInputPlaceholderDecoration.js} +17 -15
  524. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.d.ts +3 -0
  525. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.js +16 -0
  526. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +2 -2
  527. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.d.ts +6 -4
  528. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +21 -13
  529. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +48 -8
  530. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +457 -142
  531. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.d.ts +1 -1
  532. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +22 -14
  533. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +6 -22
  534. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationBlueprint.d.ts +22 -0
  535. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationBlueprint.js +163 -0
  536. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +27 -5
  537. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +79 -32
  538. package/vscode/src/vs/workbench/contrib/chat/common/chatNotification.d.ts +6 -0
  539. package/vscode/src/vs/workbench/contrib/chat/common/chatNotification.js +12 -0
  540. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +44 -11
  541. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +404 -51
  542. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +64 -4
  543. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +33 -2
  544. package/vscode/src/vs/workbench/contrib/chat/common/chatSideChatService.d.ts +68 -0
  545. package/vscode/src/vs/workbench/contrib/chat/common/chatSideChatService.js +70 -0
  546. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -2
  547. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +18 -5
  548. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +43 -14
  549. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +4 -0
  550. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +4 -9
  551. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +164 -71
  552. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.d.ts +1 -1
  553. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +1 -1
  554. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -18
  555. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +12 -12
  556. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  557. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  558. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.d.ts +3 -1
  559. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +19 -10
  560. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +3 -1
  561. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +172 -159
  562. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/customizationMigrationService.d.ts +115 -0
  563. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/customizationMigrationService.js +69 -0
  564. package/vscode/src/vs/workbench/contrib/chat/common/sessionChatPills.d.ts +60 -0
  565. package/vscode/src/vs/workbench/contrib/chat/common/sessionChatPills.js +139 -0
  566. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  567. package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.d.ts +5 -0
  568. package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.js +21 -1
  569. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.d.ts +25 -2
  570. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +55 -18
  571. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +10 -10
  572. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +10 -10
  573. package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.js +1 -1
  574. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +1 -0
  575. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +15 -15
  576. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  577. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditReviewSession.d.ts +59 -0
  578. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditReviewSession.js +323 -0
  579. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionResolver.d.ts +30 -0
  580. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionResolver.js +79 -0
  581. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +6 -2
  582. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +118 -13
  583. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  584. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  585. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  586. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  587. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  588. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +8 -8
  589. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +1 -0
  590. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.d.ts +81 -0
  591. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.js +85 -0
  592. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +17 -17
  593. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
  594. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +23 -23
  595. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
  596. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +17 -3
  597. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +81 -7
  598. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatSessionResolver.d.ts +30 -0
  599. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatSessionResolver.js +86 -0
  600. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +10 -2
  601. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +97 -18
  602. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.d.ts +2 -22
  603. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.js +10 -8
  604. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/largeOutputFileWriter.js +2 -1
  605. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +2 -0
  606. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +42 -36
  607. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +8 -0
  608. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +10 -0
  609. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +4 -4
  610. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +2 -1
  611. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  612. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +25 -16
  613. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +4 -3
  614. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/consoleCompactor/consoleCompactor.d.ts +70 -0
  615. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/consoleCompactor/consoleCompactor.js +4316 -0
  616. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  617. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  618. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  619. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  620. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +4 -4
  621. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +3 -3
  622. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +4 -4
  623. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +6 -1
  624. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +188 -148
  625. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +10 -10
  626. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  627. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  628. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  629. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  630. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +7 -0
  631. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +82 -3
  632. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.d.ts +5 -6
  633. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.js +5 -42
  634. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalOutput.d.ts +2 -0
  635. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalOutput.js +8 -0
  636. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +1 -0
  637. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +27 -8
  638. package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.d.ts +205 -0
  639. package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.js +1580 -0
  640. package/vscode/src/vs/workbench/services/agentEditorComments/browser/agentEditorCommentsOverlayWidget.d.ts +30 -0
  641. package/vscode/src/vs/workbench/services/agentEditorComments/browser/agentEditorCommentsOverlayWidget.js +175 -0
  642. package/vscode/src/vs/workbench/services/agentEditorComments/browser/media/agentEditorCommentsOverlayWidget.css +65 -0
  643. package/vscode/src/vs/workbench/services/agentHost/browser/agentSdkSetupService.d.ts +47 -0
  644. package/vscode/src/vs/workbench/services/agentHost/browser/agentSdkSetupService.js +129 -0
  645. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.d.ts +26 -8
  646. package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.js +89 -27
  647. package/vscode/src/vs/workbench/services/agentHost/browser/webAgentHostEnablementService.d.ts +8 -0
  648. package/vscode/src/vs/workbench/services/agentHost/browser/webAgentHostEnablementService.js +28 -0
  649. package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.js +5 -1
  650. package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.d.ts +18 -18
  651. package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.js +159 -60
  652. package/vscode/src/vs/workbench/services/agentHost/common/editorRemoteAgentHostTransport.d.ts +47 -0
  653. package/vscode/src/vs/workbench/services/agentHost/common/editorRemoteAgentHostTransport.js +362 -0
  654. package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.d.ts +0 -1
  655. package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.js +0 -40
  656. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +0 -1110
  657. package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.js +0 -76
  658. package/vscode/src/vs/platform/agentHost/common/agentHostResourceService.d.ts +0 -63
  659. package/vscode/src/vs/platform/agentHost/common/agentHostResourceService.js +0 -25
  660. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +0 -254
  661. package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +0 -451
  662. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +0 -1294
  663. package/vscode/src/vs/platform/agentHost/common/agentService.js +0 -92
  664. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/errors.d.ts +0 -186
  665. package/vscode/src/vs/platform/agentHost/common/state/protocol/common/errors.js +0 -10
  666. package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.d.ts +0 -42
  667. package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.js +0 -7
  668. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.d.ts +0 -15
  669. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.js +0 -15
  670. package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoiceColors.d.ts +0 -2
  671. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +0 -19
  672. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +0 -243
  673. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.d.ts +0 -24
  674. package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +0 -77
  675. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +0 -92
  676. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +0 -224
  677. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.d.ts +0 -23
  678. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.js +0 -52
  679. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.d.ts +0 -16
  680. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +0 -96
  681. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.d.ts +0 -27
  682. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.js +0 -152
  683. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.d.ts +0 -87
  684. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.js +0 -772
  685. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.d.ts +0 -30
  686. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.js +0 -29
  687. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.d.ts +0 -20
  688. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +0 -40
  689. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/media/planReviewFeedback.css +0 -160
  690. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.d.ts +0 -9
  691. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +0 -123
  692. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.d.ts +0 -37
  693. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +0 -572
  694. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.d.ts +0 -125
  695. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.js +0 -399
  696. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.d.ts +0 -321
  697. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.js +0 -2117
  698. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.d.ts +0 -57
  699. package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.js +0 -367
  700. package/vscode/src/vs/workbench/contrib/chat/common/automations/automation.d.ts +0 -78
  701. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.d.ts +0 -13
  702. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.d.ts +0 -11
  703. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.js +0 -6
  704. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.d.ts +0 -16
  705. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.js +0 -6
  706. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.d.ts +0 -46
  707. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.d.ts +0 -36
  708. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.js +0 -6
  709. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.d.ts +0 -12
  710. package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.js +0 -6
  711. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +0 -9
  712. package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +0 -6
  713. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.d.ts +0 -15
  714. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.js +0 -177
  715. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +0 -67
  716. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +0 -195
  717. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +0 -65
  718. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +0 -264
  719. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +0 -190
  720. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +0 -865
  721. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.d.ts +0 -31
  722. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.js +0 -122
  723. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +0 -24
  724. /package/vscode/src/vs/{workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers → platform/terminal/common/autoApprove}/sedFileWriteParser.js +0 -0
  725. /package/vscode/src/vs/{platform/agentHost/common/agentHost.config.contribution.d.ts → workbench/contrib/chat/browser/agentSessionsConfiguration.d.ts} +0 -0
@@ -0,0 +1,1580 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { distinct } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arrays';
4
+ import { ThrottledDelayer, RunOnceScheduler, timeout } 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 { getErrorMessage } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
7
+ import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
8
+ import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
9
+ import { equals } from '@codingame/monaco-vscode-api/vscode/vs/base/common/objects';
10
+ import { isWeb } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
11
+ import { isUndefined, isString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
12
+ import { localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
13
+ import { registerAction2, Action2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
14
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
15
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
16
+ import { RawContextKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
17
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
18
+ import { MANAGED_SETTINGS_UPDATE_REQUIRED_ERROR_CODE } from '@codingame/monaco-vscode-api/vscode/vs/platform/defaultAccount/common/defaultAccount';
19
+ import { IDefaultAccountService } from '@codingame/monaco-vscode-api/vscode/vs/platform/defaultAccount/common/defaultAccount.service';
20
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
21
+ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
22
+ import { resolveForceRemoteSettingsRefresh } from '@codingame/monaco-vscode-api/vscode/vs/platform/policy/common/copilotManagedSettings';
23
+ import { INativeManagedSettingsService, IFileManagedSettingsService } from '@codingame/monaco-vscode-api/vscode/vs/platform/policy/common/copilotManagedSettings.service';
24
+ import { MANAGED_SETTINGS_FRESHNESS_NOT_REQUIRED, ManagedSettingsFreshnessState, isManagedSettingsFreshnessBlocking, ManagedSettingsFreshnessFailure, isManagedSettingsFreshnessSatisfiedFor } from '@codingame/monaco-vscode-api/vscode/vs/platform/policy/common/managedSettingsFreshness';
25
+ import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
26
+ import { asJson, isSuccess, isClientError, asText, readHeader, retryAfterFromHeaders } from '@codingame/monaco-vscode-api/vscode/vs/platform/request/common/request';
27
+ import { IRequestService } from '@codingame/monaco-vscode-api/vscode/vs/platform/request/common/request.service';
28
+ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
29
+ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
30
+ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
31
+ import { registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions';
32
+ import { IAuthenticationService, IAuthenticationExtensionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/authentication/common/authentication.service';
33
+ import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service';
34
+ import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
35
+ import { IHostService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/host/browser/host.service';
36
+ import { appendManagedSettingsClientIdentity, adaptManagedSettings, parseManagedSettingsCompatibilityError } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/accounts/browser/managedSettings';
37
+
38
+ const DEFAULT_ACCOUNT_SIGN_IN_COMMAND = "workbench.actions.accounts.signIn";
39
+ var DefaultAccountStatus;
40
+ (function(DefaultAccountStatus) {
41
+ DefaultAccountStatus["Uninitialized"] = "uninitialized";
42
+ DefaultAccountStatus["Unavailable"] = "unavailable";
43
+ DefaultAccountStatus["Available"] = "available";
44
+ })(DefaultAccountStatus || (DefaultAccountStatus = {}));
45
+ const CONTEXT_DEFAULT_ACCOUNT_STATE = ( new RawContextKey("defaultAccountStatus", DefaultAccountStatus.Uninitialized));
46
+ const CACHED_POLICY_DATA_KEY = "defaultAccount.cachedPolicyData";
47
+ const ACCOUNT_DATA_POLL_INTERVAL_MS = 60 * 60 * 1000;
48
+ const MANAGED_SETTINGS_REQUEST_TIMEOUT_MS = 5000;
49
+ function toDefaultAccountConfig(defaultChatAgent) {
50
+ return {
51
+ preferredExtensions: [defaultChatAgent.chatExtensionId, defaultChatAgent.extensionId],
52
+ authenticationProvider: {
53
+ default: {
54
+ id: defaultChatAgent.provider.default.id,
55
+ name: defaultChatAgent.provider.default.name
56
+ },
57
+ enterprise: {
58
+ id: defaultChatAgent.provider.enterprise.id,
59
+ name: defaultChatAgent.provider.enterprise.name
60
+ },
61
+ enterpriseProviderConfig: `${defaultChatAgent.completionsAdvancedSetting}.authProvider`,
62
+ enterpriseProviderUriSetting: defaultChatAgent.providerUriSetting,
63
+ scopes: defaultChatAgent.providerScopes
64
+ },
65
+ entitlementUrl: defaultChatAgent.entitlementUrl,
66
+ tokenEntitlementUrl: defaultChatAgent.tokenEntitlementUrl,
67
+ mcpRegistryDataUrl: defaultChatAgent.mcpRegistryDataUrl,
68
+ managedSettingsUrl: defaultChatAgent.managedSettingsUrl
69
+ };
70
+ }
71
+ let DefaultAccountProvider = class DefaultAccountProvider extends Disposable {
72
+ get defaultAccount() {
73
+ return this._defaultAccount?.defaultAccount ?? null;
74
+ }
75
+ get policyData() {
76
+ return this._policyData?.policyData ?? null;
77
+ }
78
+ get copilotTokenInfo() {
79
+ return this._copilotTokenInfo;
80
+ }
81
+ get managedSettingsFetchStatus() {
82
+ return this._managedSettingsFetchStatus;
83
+ }
84
+ get managedSettingsFetchedAt() {
85
+ return this._policyData?.managedSettingsFetchedAt ?? null;
86
+ }
87
+ get managedSettingsRawResponse() {
88
+ return this._managedSettingsRawResponse;
89
+ }
90
+ get managedSettingsCompatibilityError() {
91
+ return this._managedSettingsCompatibilityError;
92
+ }
93
+ get managedSettingsFreshness() {
94
+ return this._managedSettingsFreshness;
95
+ }
96
+ constructor(
97
+ defaultAccountConfig,
98
+ configurationService,
99
+ authenticationService,
100
+ authenticationExtensionsService,
101
+ telemetryService,
102
+ extensionService,
103
+ requestService,
104
+ logService,
105
+ environmentService,
106
+ productService,
107
+ contextKeyService,
108
+ storageService,
109
+ hostService,
110
+ commandService,
111
+ nativeManagedSettingsService,
112
+ fileManagedSettingsService
113
+ ) {
114
+ super();
115
+ this.defaultAccountConfig = defaultAccountConfig;
116
+ this.configurationService = configurationService;
117
+ this.authenticationService = authenticationService;
118
+ this.authenticationExtensionsService = authenticationExtensionsService;
119
+ this.telemetryService = telemetryService;
120
+ this.extensionService = extensionService;
121
+ this.requestService = requestService;
122
+ this.logService = logService;
123
+ this.environmentService = environmentService;
124
+ this.productService = productService;
125
+ this.storageService = storageService;
126
+ this.hostService = hostService;
127
+ this.commandService = commandService;
128
+ this.nativeManagedSettingsService = nativeManagedSettingsService;
129
+ this.fileManagedSettingsService = fileManagedSettingsService;
130
+ this._defaultAccount = null;
131
+ this._policyData = null;
132
+ this._copilotTokenInfo = null;
133
+ this._managedSettingsFetchStatus = null;
134
+ this._managedSettingsRawResponse = null;
135
+ this._managedSettingsCompatibilityError = null;
136
+ this._managedSettingsFreshness = MANAGED_SETTINGS_FRESHNESS_NOT_REQUIRED;
137
+ this._onDidChangeDefaultAccount = this._register(( new Emitter()));
138
+ this.onDidChangeDefaultAccount = this._onDidChangeDefaultAccount.event;
139
+ this._onDidChangePolicyData = this._register(( new Emitter()));
140
+ this.onDidChangePolicyData = this._onDidChangePolicyData.event;
141
+ this._onDidChangeCopilotTokenInfo = this._register(( new Emitter()));
142
+ this.onDidChangeCopilotTokenInfo = this._onDidChangeCopilotTokenInfo.event;
143
+ this._onDidChangeManagedSettingsCompatibilityError = this._register(( new Emitter()));
144
+ this.onDidChangeManagedSettingsCompatibilityError = this._onDidChangeManagedSettingsCompatibilityError.event;
145
+ this._onDidChangeManagedSettingsFreshness = this._register(( new Emitter()));
146
+ this.onDidChangeManagedSettingsFreshness = this._onDidChangeManagedSettingsFreshness.event;
147
+ this.initialized = false;
148
+ this.updateThrottler = this._register(( new ThrottledDelayer(100)));
149
+ this.accountDataPollScheduler = this._register(( new RunOnceScheduler(() => this.refetchDefaultAccount(), ACCOUNT_DATA_POLL_INTERVAL_MS)));
150
+ this.failedManagedSettingsFreshness = ( new Map());
151
+ this._rateLimitBackoffUntil = 0;
152
+ this.accountStatusContext = CONTEXT_DEFAULT_ACCOUNT_STATE.bindTo(contextKeyService);
153
+ const cachedAccountData = this.getCachedAccountData();
154
+ this._policyData = cachedAccountData?.accountPolicyData ?? null;
155
+ this._copilotTokenInfo = cachedAccountData?.copilotTokenInfo ?? null;
156
+ this._managedSettingsCompatibilityError = cachedAccountData?.accountPolicyData.managedSettingsCompatibilityError ?? null;
157
+ this.updateManagedSettingsFreshnessRequirement(
158
+ this.nativeManagedSettingsService.managedSettings,
159
+ this.getCachedServerManagedSettings(this.getDefaultAccountAuthenticationProvider()),
160
+ this.fileManagedSettingsService.managedSettings
161
+ );
162
+ this._register(
163
+ this.nativeManagedSettingsService.onDidChangeManagedSettings(() => this.onManagedSettingsSourceChanged())
164
+ );
165
+ this._register(
166
+ this.fileManagedSettingsService.onDidChangeManagedSettings(() => this.onManagedSettingsSourceChanged())
167
+ );
168
+ this.initPromise = this.init().finally(() => {
169
+ this.telemetryService.publicLog2("defaultaccount:status", {
170
+ status: this.defaultAccount ? "available" : "unavailable",
171
+ initial: true
172
+ });
173
+ this.initialized = true;
174
+ });
175
+ }
176
+ getCachedAccountData() {
177
+ const cached = this.storageService.get(CACHED_POLICY_DATA_KEY, StorageScope.APPLICATION);
178
+ if (cached) {
179
+ try {
180
+ const parsed = JSON.parse(cached);
181
+ const {
182
+ accountId,
183
+ policyData,
184
+ tokenEntitlementsFetchedAt,
185
+ mcpRegistryDataFetchedAt,
186
+ copilotTokenInfo
187
+ } = parsed;
188
+ if (accountId && policyData) {
189
+ this.logService.debug(
190
+ "[DefaultAccount] Initializing with cached policy data (migrating old format)"
191
+ );
192
+ const result = {
193
+ accountPolicyData: {
194
+ accountId,
195
+ policyData,
196
+ tokenEntitlementsFetchedAt,
197
+ mcpRegistryDataFetchedAt
198
+ },
199
+ copilotTokenInfo
200
+ };
201
+ this.storageService.store(
202
+ CACHED_POLICY_DATA_KEY,
203
+ JSON.stringify(result),
204
+ StorageScope.APPLICATION,
205
+ StorageTarget.MACHINE
206
+ );
207
+ return result;
208
+ }
209
+ const {
210
+ accountPolicyData,
211
+ copilotTokenInfo: wrappedCopilotTokenInfo
212
+ } = parsed;
213
+ if (accountPolicyData?.accountId && accountPolicyData?.policyData) {
214
+ this.logService.debug("[DefaultAccount] Initializing with cached policy data");
215
+ return {
216
+ accountPolicyData,
217
+ copilotTokenInfo: wrappedCopilotTokenInfo
218
+ };
219
+ }
220
+ } catch (error) {
221
+ this.logService.error(
222
+ "[DefaultAccount] Failed to parse cached policy data",
223
+ getErrorMessage(error)
224
+ );
225
+ }
226
+ }
227
+ return null;
228
+ }
229
+ async init() {
230
+ if (isWeb && !this.environmentService.remoteAuthority && !this.environmentService.isSessionsWindow) {
231
+ this.logService.debug("[DefaultAccount] Running in web without remote, skipping initialization");
232
+ return;
233
+ }
234
+ await this.whenDefaultAccountAuthenticationProviderAvailable();
235
+ this.logService.debug("[DefaultAccount] Starting initialization");
236
+ await this.doUpdateDefaultAccount();
237
+ this.logService.debug("[DefaultAccount] Initialization complete");
238
+ this._register(this.onDidChangeDefaultAccount(account => {
239
+ this.telemetryService.publicLog2("defaultaccount:status", {
240
+ status: account ? "available" : "unavailable",
241
+ initial: false
242
+ });
243
+ }));
244
+ this._register(this.authenticationService.onDidChangeSessions(e => {
245
+ const defaultAccountProvider = this.getDefaultAccountAuthenticationProvider();
246
+ if (e.providerId !== defaultAccountProvider.id) {
247
+ return;
248
+ }
249
+ const added = e.event.added?.length ?? 0;
250
+ const removed = e.event.removed?.length ?? 0;
251
+ const changed = e.event.changed?.length ?? 0;
252
+ const currentSessionRemoved = this.defaultAccount !== null && (e.event.removed?.some(session => session.id === this.defaultAccount?.sessionId) ?? false);
253
+ const hasReplacementCandidates = added > 0 || changed > 0;
254
+ const clearDefaultAccount = currentSessionRemoved && !hasReplacementCandidates;
255
+ const message = `[DefaultAccount] Authentication sessions changed: added=${added}, removed=${removed}, changed=${changed}, currentSessionRemoved=${currentSessionRemoved}, hasReplacementCandidates=${hasReplacementCandidates}, decision=${clearDefaultAccount ? "clear" : "reconcile"}`;
256
+ if (currentSessionRemoved || (added > 0 && removed > 0)) {
257
+ this.logService.info(message);
258
+ } else {
259
+ this.logService.trace(message);
260
+ }
261
+ if (clearDefaultAccount) {
262
+ this.setDefaultAccount(null);
263
+ } else {
264
+ this.updateDefaultAccount();
265
+ }
266
+ }));
267
+ this._register(
268
+ this.authenticationExtensionsService.onDidChangeAccountPreference(async e => {
269
+ const defaultAccountProvider = this.getDefaultAccountAuthenticationProvider();
270
+ if (e.providerId !== defaultAccountProvider.id) {
271
+ return;
272
+ }
273
+ this.logService.debug(
274
+ "[DefaultAccount] Account preference changed for default account provider, updating default account"
275
+ );
276
+ this.updateDefaultAccount();
277
+ })
278
+ );
279
+ this._register(this.authenticationService.onDidRegisterAuthenticationProvider(e => {
280
+ const defaultAccountProvider = this.getDefaultAccountAuthenticationProvider();
281
+ if (e.id !== defaultAccountProvider.id) {
282
+ return;
283
+ }
284
+ this.logService.debug(
285
+ "[DefaultAccount] Default account provider registered, updating default account"
286
+ );
287
+ this.updateDefaultAccount();
288
+ }));
289
+ this._register(this.authenticationService.onDidUnregisterAuthenticationProvider(e => {
290
+ const defaultAccountProvider = this.getDefaultAccountAuthenticationProvider();
291
+ if (e.id !== defaultAccountProvider.id) {
292
+ return;
293
+ }
294
+ this.logService.debug(
295
+ "[DefaultAccount] Default account provider unregistered, updating default account"
296
+ );
297
+ this.updateDefaultAccount();
298
+ }));
299
+ this._register(this.hostService.onDidChangeFocus(focused => {
300
+ if (focused) {
301
+ this.refetchDefaultAccount();
302
+ }
303
+ }));
304
+ }
305
+ async whenDefaultAccountAuthenticationProviderAvailable() {
306
+ const provider = this.getDefaultAccountAuthenticationProvider();
307
+ this.logService.debug(
308
+ "[DefaultAccount] Waiting for default account authentication provider to be available."
309
+ );
310
+ const disposables = ( new DisposableStore());
311
+ try {
312
+ await ( new Promise(resolve => {
313
+ if (this.isAccountProviderAvailable(provider)) {
314
+ this.logService.debug(
315
+ "[DefaultAccount] Default account authentication provider is now available."
316
+ );
317
+ resolve();
318
+ return;
319
+ }
320
+ disposables.add(Event.any(
321
+ this.authenticationService.onDidChangeDeclaredProviders,
322
+ this.authenticationService.onDidRegisterAuthenticationProvider
323
+ )(() => {
324
+ if (this.isAccountProviderAvailable(provider)) {
325
+ this.logService.debug(
326
+ "[DefaultAccount] Default account authentication provider is now available."
327
+ );
328
+ resolve();
329
+ }
330
+ }));
331
+ if (this.environmentService.remoteAuthority) {
332
+ void this.authenticationService.getSessions(provider.id, undefined, {}, true);
333
+ }
334
+ this.extensionService.whenInstalledExtensionsRegistered().then(() => {
335
+ disposables.dispose();
336
+ this.logService.debug("[DefaultAccount] Installed extensions registered.");
337
+ resolve();
338
+ }, error => {
339
+ this.logService.error(
340
+ "[DefaultAccount] Error while waiting for installed extensions to be registered",
341
+ getErrorMessage(error)
342
+ );
343
+ resolve();
344
+ });
345
+ }));
346
+ } finally {
347
+ disposables.dispose();
348
+ }
349
+ }
350
+ async refresh(options) {
351
+ if (!this.initialized) {
352
+ await this.initPromise;
353
+ return this.defaultAccount;
354
+ }
355
+ this.logService.debug("[DefaultAccount] Refreshing default account");
356
+ await this.updateDefaultAccount(options);
357
+ return this.defaultAccount;
358
+ }
359
+ async refetchDefaultAccount() {
360
+ if (this.accountDataPollScheduler.isScheduled()) {
361
+ this.accountDataPollScheduler.cancel();
362
+ }
363
+ if (!this.hostService.hasFocus || !this._defaultAccount) {
364
+ this.scheduleAccountDataPoll();
365
+ this.logService.debug(
366
+ "[DefaultAccount] Skipping refetching default account. Host is not focused or default account is not set"
367
+ );
368
+ return;
369
+ }
370
+ this.logService.debug("[DefaultAccount] Refetching default account");
371
+ await this.updateDefaultAccount();
372
+ }
373
+ async updateDefaultAccount(options) {
374
+ await this.updateThrottler.trigger(() => this.doUpdateDefaultAccount(options));
375
+ }
376
+ async doUpdateDefaultAccount(options) {
377
+ const currentSessionId = this.defaultAccount?.sessionId;
378
+ try {
379
+ const defaultAccount = await this.fetchDefaultAccount(options);
380
+ if (currentSessionId && this.defaultAccount?.sessionId !== currentSessionId) {
381
+ this.logService.info(
382
+ "[DefaultAccount] Discarding default account update because the current session changed while the update was in progress"
383
+ );
384
+ return;
385
+ }
386
+ this.setDefaultAccount(defaultAccount);
387
+ this.scheduleAccountDataPoll();
388
+ } catch (error) {
389
+ this.logService.error(
390
+ "[DefaultAccount] Error while updating default account",
391
+ getErrorMessage(error)
392
+ );
393
+ this.blockPendingManagedSettingsFreshness();
394
+ }
395
+ }
396
+ async fetchDefaultAccount(options) {
397
+ const defaultAccountProvider = this.getDefaultAccountAuthenticationProvider();
398
+ this.logService.debug("[DefaultAccount] Default account provider ID:", defaultAccountProvider.id);
399
+ const managedSettingsSources = await this.initializeManagedSettingsSources();
400
+ const refreshRequirement = resolveForceRemoteSettingsRefresh(
401
+ managedSettingsSources.nativeMdm,
402
+ this.getCachedServerManagedSettings(defaultAccountProvider),
403
+ managedSettingsSources.file
404
+ );
405
+ if (!refreshRequirement.effective) {
406
+ this.setManagedSettingsFreshness(MANAGED_SETTINGS_FRESHNESS_NOT_REQUIRED);
407
+ }
408
+ if (!this.isAccountProviderAvailable(defaultAccountProvider)) {
409
+ this.logService.info(
410
+ `[DefaultAccount] Authentication provider is not available.`,
411
+ defaultAccountProvider
412
+ );
413
+ this.blockManagedSettingsFreshnessWithoutToken(refreshRequirement);
414
+ return null;
415
+ }
416
+ return await this.getDefaultAccountForAuthenticationProvider(
417
+ defaultAccountProvider,
418
+ managedSettingsSources,
419
+ refreshRequirement,
420
+ options
421
+ );
422
+ }
423
+ isAccountProviderAvailable(accountProvider) {
424
+ return ( this.authenticationService.declaredProviders.some(p => p.id === accountProvider.id)) || this.authenticationService.isAuthenticationProviderRegistered(accountProvider.id);
425
+ }
426
+ setDefaultAccount(account) {
427
+ if (equals(this._defaultAccount, account)) {
428
+ return;
429
+ }
430
+ this.logService.trace("[DefaultAccount] Updating default account:", account);
431
+ if (account) {
432
+ this._defaultAccount = account;
433
+ this.setCopilotTokenInfo(account.copilotTokenInfo);
434
+ this.setPolicyData(account.policyData);
435
+ this.setManagedSettingsCompatibilityError(account.policyData?.managedSettingsCompatibilityError ?? null);
436
+ this._onDidChangeDefaultAccount.fire(this._defaultAccount.defaultAccount);
437
+ this.accountStatusContext.set(DefaultAccountStatus.Available);
438
+ this.logService.debug("[DefaultAccount] Account status set to Available");
439
+ } else {
440
+ this._defaultAccount = null;
441
+ const refreshRequirement = resolveForceRemoteSettingsRefresh(
442
+ this.nativeManagedSettingsService.managedSettings,
443
+ this.getCachedServerManagedSettings(this.getDefaultAccountAuthenticationProvider()),
444
+ this.fileManagedSettingsService.managedSettings
445
+ );
446
+ this.blockManagedSettingsFreshnessWithoutToken(refreshRequirement);
447
+ const retainedPolicyData = this._managedSettingsFreshness.state !== ManagedSettingsFreshnessState.NotRequired && isManagedSettingsFreshnessBlocking(this._managedSettingsFreshness) && this._managedSettingsFreshness.source === "server" ? this._policyData : null;
448
+ this.setPolicyData(retainedPolicyData);
449
+ this.setManagedSettingsCompatibilityError(null);
450
+ this.setCopilotTokenInfo(null);
451
+ this._onDidChangeDefaultAccount.fire(null);
452
+ this.accountDataPollScheduler.cancel();
453
+ this.accountStatusContext.set(DefaultAccountStatus.Unavailable);
454
+ this.logService.debug("[DefaultAccount] Account status set to Unavailable");
455
+ }
456
+ }
457
+ setPolicyData(accountPolicyData) {
458
+ if (equals(this._policyData, accountPolicyData)) {
459
+ return;
460
+ }
461
+ this._policyData = accountPolicyData;
462
+ this.cachePolicyData(accountPolicyData);
463
+ this._onDidChangePolicyData.fire(this._policyData?.policyData ?? null);
464
+ }
465
+ setManagedSettingsCompatibilityError(error) {
466
+ if (equals(this._managedSettingsCompatibilityError, error)) {
467
+ return;
468
+ }
469
+ this._managedSettingsCompatibilityError = error;
470
+ this._onDidChangeManagedSettingsCompatibilityError.fire(error);
471
+ }
472
+ setManagedSettingsFreshness(freshness) {
473
+ if (equals(this._managedSettingsFreshness, freshness)) {
474
+ return;
475
+ }
476
+ this._managedSettingsFreshness = freshness;
477
+ this._onDidChangeManagedSettingsFreshness.fire(freshness);
478
+ }
479
+ blockPendingManagedSettingsFreshness() {
480
+ if (this._managedSettingsFreshness.state === ManagedSettingsFreshnessState.Pending) {
481
+ this.setManagedSettingsFreshness({
482
+ ...this._managedSettingsFreshness,
483
+ state: ManagedSettingsFreshnessState.Blocked,
484
+ failure: ManagedSettingsFreshnessFailure.Network
485
+ });
486
+ }
487
+ }
488
+ updateManagedSettingsFreshnessRequirement(nativeMdm, server, file) {
489
+ const requirement = resolveForceRemoteSettingsRefresh(nativeMdm, server, file);
490
+ this.setManagedSettingsFreshness(requirement.effective ? {
491
+ state: ManagedSettingsFreshnessState.Pending,
492
+ source: requirement.source
493
+ } : MANAGED_SETTINGS_FRESHNESS_NOT_REQUIRED);
494
+ }
495
+ onManagedSettingsSourceChanged() {
496
+ if (this.initialized) {
497
+ void this.updateDefaultAccount();
498
+ }
499
+ }
500
+ async initializeManagedSettingsSources() {
501
+ let nativeMdm = this.nativeManagedSettingsService.managedSettings;
502
+ try {
503
+ nativeMdm = await this.nativeManagedSettingsService.initialize();
504
+ } catch (error) {
505
+ this.logService.warn(
506
+ "[DefaultAccount] Failed to initialize native managed settings before resolving forceRemoteSettingsRefresh; using available values",
507
+ getErrorMessage(error)
508
+ );
509
+ }
510
+ let file = this.fileManagedSettingsService.managedSettings;
511
+ try {
512
+ file = await this.fileManagedSettingsService.initialize();
513
+ } catch (error) {
514
+ this.logService.warn(
515
+ "[DefaultAccount] Failed to initialize file managed settings before resolving forceRemoteSettingsRefresh; using available values",
516
+ getErrorMessage(error)
517
+ );
518
+ }
519
+ return {
520
+ nativeMdm,
521
+ file
522
+ };
523
+ }
524
+ blockManagedSettingsFreshnessWithoutToken(requirement) {
525
+ if (requirement.effective) {
526
+ this.setManagedSettingsFreshness({
527
+ state: ManagedSettingsFreshnessState.Blocked,
528
+ source: requirement.source,
529
+ failure: ManagedSettingsFreshnessFailure.NoToken
530
+ });
531
+ }
532
+ }
533
+ getCachedServerManagedSettings(authenticationProvider) {
534
+ return this.getScopedServerManagedSettings(
535
+ this._policyData ?? undefined,
536
+ authenticationProvider,
537
+ this._policyData?.accountId
538
+ );
539
+ }
540
+ getScopedServerManagedSettings(accountPolicyData, authenticationProvider, accountId) {
541
+ if (!accountPolicyData || accountPolicyData.accountId !== accountId) {
542
+ return undefined;
543
+ }
544
+ const scope = accountPolicyData.managedSettingsScope;
545
+ const managedSettingsUrl = this.getManagedSettingsUrl();
546
+ if (scope && (scope.accountId !== accountId || scope.authenticationProviderId !== authenticationProvider.id || (managedSettingsUrl ? scope.endpointOrigin !== this.createManagedSettingsFreshnessScope(scope.accountId, authenticationProvider.id, managedSettingsUrl).endpointOrigin : false))) {
547
+ return undefined;
548
+ }
549
+ return accountPolicyData.policyData.managedSettings;
550
+ }
551
+ setCopilotTokenInfo(copilotTokenInfo) {
552
+ if (equals(this._copilotTokenInfo, copilotTokenInfo)) {
553
+ return;
554
+ }
555
+ this._copilotTokenInfo = copilotTokenInfo;
556
+ this._onDidChangeCopilotTokenInfo.fire(this._copilotTokenInfo);
557
+ }
558
+ cachePolicyData(accountPolicyData) {
559
+ if (accountPolicyData) {
560
+ this.logService.debug(
561
+ "[DefaultAccount] Caching policy data for account:",
562
+ accountPolicyData.accountId
563
+ );
564
+ const cachedAccountData = {
565
+ accountPolicyData,
566
+ copilotTokenInfo: this._copilotTokenInfo ?? undefined
567
+ };
568
+ this.storageService.store(
569
+ CACHED_POLICY_DATA_KEY,
570
+ JSON.stringify(cachedAccountData),
571
+ StorageScope.APPLICATION,
572
+ StorageTarget.MACHINE
573
+ );
574
+ } else {
575
+ this.logService.debug("[DefaultAccount] Removing cached policy data");
576
+ this.storageService.remove(CACHED_POLICY_DATA_KEY, StorageScope.APPLICATION);
577
+ }
578
+ }
579
+ scheduleAccountDataPoll() {
580
+ if (!this._defaultAccount) {
581
+ return;
582
+ }
583
+ this.accountDataPollScheduler.schedule(ACCOUNT_DATA_POLL_INTERVAL_MS);
584
+ }
585
+ extractFromToken(token) {
586
+ const result = ( new Map());
587
+ const firstPart = token?.split(":")[0];
588
+ const fields = firstPart?.split(";");
589
+ for (const field of fields) {
590
+ const [key, value] = field.split("=");
591
+ result.set(key, value);
592
+ }
593
+ this.logService.debug(
594
+ `[DefaultAccount] extractFromToken: ${JSON.stringify(Object.fromEntries(result))}`
595
+ );
596
+ return result;
597
+ }
598
+ async getDefaultAccountForAuthenticationProvider(
599
+ authenticationProvider,
600
+ managedSettingsSources,
601
+ refreshRequirement,
602
+ options
603
+ ) {
604
+ try {
605
+ this.logService.debug(
606
+ "[DefaultAccount] Getting Default Account from authenticated sessions for provider:",
607
+ authenticationProvider.id
608
+ );
609
+ const sessions = await this.findMatchingProviderSession(
610
+ authenticationProvider.id,
611
+ this.defaultAccountConfig.authenticationProvider.scopes
612
+ );
613
+ if (!sessions?.length) {
614
+ this.logService.debug(
615
+ "[DefaultAccount] No matching session found for provider:",
616
+ authenticationProvider.id
617
+ );
618
+ this.blockManagedSettingsFreshnessWithoutToken(refreshRequirement);
619
+ return null;
620
+ }
621
+ return this.getDefaultAccountFromAuthenticatedSessions(authenticationProvider, sessions, options, managedSettingsSources);
622
+ } catch (error) {
623
+ this.logService.error(
624
+ "[DefaultAccount] Failed to get default account for provider:",
625
+ authenticationProvider.id,
626
+ getErrorMessage(error)
627
+ );
628
+ this.blockManagedSettingsFreshnessWithoutToken(refreshRequirement);
629
+ return null;
630
+ }
631
+ }
632
+ async getDefaultAccountFromAuthenticatedSessions(authenticationProvider, sessions, options, managedSettingsSources) {
633
+ try {
634
+ const accountId = sessions[0].account.id;
635
+ const accountPolicyData = this._policyData?.accountId === accountId ? this._policyData : undefined;
636
+ const sources = managedSettingsSources ?? (await this.initializeManagedSettingsSources());
637
+ const requirement = resolveForceRemoteSettingsRefresh(
638
+ sources.nativeMdm,
639
+ this.getScopedServerManagedSettings(accountPolicyData, authenticationProvider, accountId),
640
+ sources.file
641
+ );
642
+ const managedSettingsUrl = this.getManagedSettingsUrl();
643
+ const scope = managedSettingsUrl ? this.createManagedSettingsFreshnessScope(accountId, authenticationProvider.id, managedSettingsUrl) : undefined;
644
+ if (!requirement.effective) {
645
+ this.setManagedSettingsFreshness(MANAGED_SETTINGS_FRESHNESS_NOT_REQUIRED);
646
+ } else if ((!scope || !isManagedSettingsFreshnessSatisfiedFor(this._managedSettingsFreshness, scope) || options?.forceRefresh) && this.canRequestManagedSettings(options, scope)) {
647
+ this.setManagedSettingsFreshness({
648
+ state: ManagedSettingsFreshnessState.Pending,
649
+ source: requirement.source,
650
+ scope
651
+ });
652
+ }
653
+ const entitlementsResult = await this.getEntitlements(sessions, accountPolicyData, options);
654
+ const entitlementsData = entitlementsResult?.data;
655
+ const entitlementsFetchedAt = entitlementsResult?.fetchedAt;
656
+ const [tokenEntitlementsResult, managedSettingsResult] = await Promise.all([
657
+ entitlementsData?.chat_enabled ? this.getTokenEntitlements(sessions, accountPolicyData, options) : undefined,
658
+ entitlementsData?.chat_enabled || requirement.effective ? this.getManagedSettings(
659
+ sessions,
660
+ accountPolicyData,
661
+ options,
662
+ authenticationProvider,
663
+ sources,
664
+ requirement
665
+ ) : undefined
666
+ ]);
667
+ const tokenEntitlementsFetchedAt = tokenEntitlementsResult?.fetchedAt;
668
+ const managedSettingsFetchedAt = managedSettingsResult?.fetchedAt;
669
+ const managedSettingsScope = managedSettingsResult?.scope ?? accountPolicyData?.managedSettingsScope;
670
+ const managedSettingsCompatibilityError = managedSettingsResult ? managedSettingsResult.compatibilityError : this._managedSettingsCompatibilityError;
671
+ let mcpRegistryDataFetchedAt;
672
+ let policyData = accountPolicyData?.policyData ? {
673
+ ...accountPolicyData.policyData
674
+ } : undefined;
675
+ if (entitlementsData) {
676
+ policyData = policyData ?? {};
677
+ policyData.cloud_session_storage_enabled = entitlementsData.cloud_session_storage_enabled;
678
+ }
679
+ if (tokenEntitlementsResult?.data) {
680
+ const tokenEntitlementsData = tokenEntitlementsResult.data;
681
+ policyData = policyData ?? {};
682
+ policyData.chat_agent_enabled = tokenEntitlementsData.policyData.chat_agent_enabled;
683
+ policyData.chat_preview_features_enabled = tokenEntitlementsData.policyData.chat_preview_features_enabled;
684
+ policyData.mcp = tokenEntitlementsData.policyData.mcp;
685
+ if (policyData.mcp) {
686
+ const mcpRegistryResult = await this.getMcpRegistryProvider(sessions, accountPolicyData, options);
687
+ mcpRegistryDataFetchedAt = mcpRegistryResult?.fetchedAt;
688
+ policyData.mcpRegistryUrl = mcpRegistryResult?.data?.url;
689
+ policyData.mcpAccess = mcpRegistryResult?.data?.registry_access;
690
+ } else {
691
+ policyData.mcpRegistryUrl = undefined;
692
+ policyData.mcpAccess = undefined;
693
+ }
694
+ }
695
+ if (managedSettingsResult?.data) {
696
+ policyData = {
697
+ ...(policyData ?? {}),
698
+ ...managedSettingsResult.data
699
+ };
700
+ }
701
+ const defaultAccount = {
702
+ authenticationProvider,
703
+ accountName: sessions[0].account.label,
704
+ sessionId: sessions[0].id,
705
+ enterprise: authenticationProvider.enterprise || sessions[0].account.label.includes("_"),
706
+ entitlementsData
707
+ };
708
+ this.logService.debug(
709
+ "[DefaultAccount] Successfully created default account for provider:",
710
+ authenticationProvider.id
711
+ );
712
+ const accountPolicyResult = policyData || entitlementsFetchedAt ? {
713
+ accountId,
714
+ policyData: policyData ?? {},
715
+ entitlementsFetchedAt,
716
+ tokenEntitlementsFetchedAt,
717
+ mcpRegistryDataFetchedAt,
718
+ managedSettingsFetchedAt,
719
+ managedSettingsScope,
720
+ managedSettingsCompatibilityError: managedSettingsCompatibilityError ?? undefined
721
+ } : null;
722
+ return {
723
+ defaultAccount,
724
+ accountId,
725
+ policyData: accountPolicyResult,
726
+ copilotTokenInfo: tokenEntitlementsResult?.data?.copilotTokenInfo ?? null
727
+ };
728
+ } catch (error) {
729
+ this.logService.error(
730
+ "[DefaultAccount] Failed to create default account for provider:",
731
+ authenticationProvider.id,
732
+ getErrorMessage(error)
733
+ );
734
+ this.blockPendingManagedSettingsFreshness();
735
+ return null;
736
+ }
737
+ }
738
+ async findMatchingProviderSession(authProviderId, allScopes) {
739
+ const sessions = await this.getSessions(authProviderId);
740
+ const matchingSessions = sessions.filter(session => {
741
+ this.logService.debug("[DefaultAccount] Checking session with scopes", session.scopes);
742
+ return ( allScopes.some(scopes => this.scopesMatch(session.scopes, scopes)));
743
+ });
744
+ return matchingSessions.length > 0 ? matchingSessions : undefined;
745
+ }
746
+ async getSessions(authProviderId) {
747
+ for (let attempt = 1; attempt <= 3; attempt++) {
748
+ try {
749
+ let preferredAccount;
750
+ let preferredAccountName;
751
+ for (const preferredExtension of this.defaultAccountConfig.preferredExtensions) {
752
+ preferredAccountName = this.authenticationExtensionsService.getAccountPreference(preferredExtension, authProviderId);
753
+ if (preferredAccountName) {
754
+ break;
755
+ }
756
+ }
757
+ for (const account of await this.authenticationService.getAccounts(authProviderId)) {
758
+ if (account.label === preferredAccountName) {
759
+ preferredAccount = account;
760
+ break;
761
+ }
762
+ }
763
+ return await this.authenticationService.getSessions(authProviderId, undefined, {
764
+ account: preferredAccount
765
+ }, true);
766
+ } catch (error) {
767
+ this.logService.warn(
768
+ `[DefaultAccount] Attempt ${attempt} to get sessions failed:`,
769
+ getErrorMessage(error)
770
+ );
771
+ if (attempt === 3) {
772
+ throw error;
773
+ }
774
+ await timeout(500);
775
+ }
776
+ }
777
+ throw ( new Error("Unable to get sessions after multiple attempts"));
778
+ }
779
+ scopesMatch(scopes, expectedScopes) {
780
+ return expectedScopes.every(scope => scopes.includes(scope));
781
+ }
782
+ async getTokenEntitlements(sessions, accountPolicyData, options) {
783
+ if (!options?.forceRefresh && accountPolicyData?.tokenEntitlementsFetchedAt && !this.isDataStale(accountPolicyData.tokenEntitlementsFetchedAt)) {
784
+ this.logService.debug("[DefaultAccount] Using last fetched token entitlements data");
785
+ return {
786
+ data: {
787
+ policyData: accountPolicyData.policyData,
788
+ copilotTokenInfo: this._copilotTokenInfo ?? {}
789
+ },
790
+ fetchedAt: accountPolicyData.tokenEntitlementsFetchedAt
791
+ };
792
+ }
793
+ const data = await this.requestTokenEntitlements(sessions);
794
+ return {
795
+ data,
796
+ fetchedAt: Date.now()
797
+ };
798
+ }
799
+ async requestTokenEntitlements(sessions) {
800
+ const tokenEntitlementsUrl = this.getTokenEntitlementUrl();
801
+ if (!tokenEntitlementsUrl) {
802
+ this.logService.debug("[DefaultAccount] No token entitlements URL found");
803
+ return undefined;
804
+ }
805
+ this.logService.debug("[DefaultAccount] Fetching token entitlements from:", tokenEntitlementsUrl);
806
+ const response = await this.request(
807
+ tokenEntitlementsUrl,
808
+ "GET",
809
+ undefined,
810
+ sessions,
811
+ CancellationToken.None,
812
+ "defaultAccount.tokenEntitlements"
813
+ );
814
+ if (!response) {
815
+ return undefined;
816
+ }
817
+ if (response.res.statusCode && response.res.statusCode !== 200) {
818
+ this.logService.trace(
819
+ `[DefaultAccount] unexpected status code ${response.res.statusCode} while fetching token entitlements`
820
+ );
821
+ return undefined;
822
+ }
823
+ try {
824
+ const chatData = await asJson(response);
825
+ if (chatData) {
826
+ const tokenMap = this.extractFromToken(chatData.token);
827
+ return {
828
+ policyData: {
829
+ chat_preview_features_enabled: tokenMap.get("editor_preview_features") !== "0",
830
+ chat_agent_enabled: tokenMap.get("agent_mode") !== "0",
831
+ mcp: tokenMap.get("mcp") === "1"
832
+ },
833
+ copilotTokenInfo: {
834
+ sn: tokenMap.get("sn"),
835
+ fcv1: tokenMap.get("fcv1")
836
+ }
837
+ };
838
+ }
839
+ this.logService.error("Failed to fetch token entitlements", "No data returned");
840
+ } catch (error) {
841
+ this.logService.error("Failed to fetch token entitlements", getErrorMessage(error));
842
+ }
843
+ return undefined;
844
+ }
845
+ async getEntitlements(sessions, accountPolicyData, options) {
846
+ const accountId = sessions[0].account.id;
847
+ const existingData = this._defaultAccount?.accountId === accountId ? this._defaultAccount?.defaultAccount.entitlementsData : undefined;
848
+ if (!options?.forceRefresh && !options?.refreshEntitlements && existingData && accountPolicyData?.entitlementsFetchedAt && !this.isDataStale(accountPolicyData.entitlementsFetchedAt)) {
849
+ this.logService.debug("[DefaultAccount] Using last fetched entitlements data");
850
+ return {
851
+ data: existingData,
852
+ fetchedAt: accountPolicyData.entitlementsFetchedAt
853
+ };
854
+ }
855
+ const entitlementUrl = this.getEntitlementUrl();
856
+ if (!entitlementUrl) {
857
+ this.logService.debug("[DefaultAccount] No chat entitlements URL found");
858
+ return {
859
+ data: undefined,
860
+ fetchedAt: undefined
861
+ };
862
+ }
863
+ this.logService.debug("[DefaultAccount] Fetching entitlements from:", entitlementUrl);
864
+ const response = await this.request(
865
+ entitlementUrl,
866
+ "GET",
867
+ undefined,
868
+ sessions,
869
+ CancellationToken.None,
870
+ "defaultAccount.entitlements"
871
+ );
872
+ if (!response) {
873
+ return {
874
+ data: undefined,
875
+ fetchedAt: Date.now()
876
+ };
877
+ }
878
+ if (response.res.statusCode && response.res.statusCode !== 200) {
879
+ this.logService.trace(
880
+ `[DefaultAccount] unexpected status code ${response.res.statusCode} while fetching entitlements`
881
+ );
882
+ const data =
883
+ (
884
+ response.res.statusCode === 401 || response.res.statusCode === 404) ? null : undefined;
885
+ return {
886
+ data,
887
+ fetchedAt: Date.now()
888
+ };
889
+ }
890
+ try {
891
+ const data = await asJson(response);
892
+ if (data) {
893
+ return {
894
+ data,
895
+ fetchedAt: Date.now()
896
+ };
897
+ }
898
+ this.logService.error("[DefaultAccount] Failed to fetch entitlements", "No data returned");
899
+ } catch (error) {
900
+ this.logService.error("[DefaultAccount] Failed to fetch entitlements", getErrorMessage(error));
901
+ }
902
+ return {
903
+ data: undefined,
904
+ fetchedAt: Date.now()
905
+ };
906
+ }
907
+ async getMcpRegistryProvider(sessions, accountPolicyData, options) {
908
+ if (!options?.forceRefresh && accountPolicyData?.mcpRegistryDataFetchedAt && !this.isDataStale(accountPolicyData.mcpRegistryDataFetchedAt)) {
909
+ this.logService.debug("[DefaultAccount] Using last fetched MCP registry data");
910
+ const data = accountPolicyData.policyData.mcpRegistryUrl && accountPolicyData.policyData.mcpAccess ? {
911
+ url: accountPolicyData.policyData.mcpRegistryUrl,
912
+ registry_access: accountPolicyData.policyData.mcpAccess
913
+ } : null;
914
+ return {
915
+ data,
916
+ fetchedAt: accountPolicyData.mcpRegistryDataFetchedAt
917
+ };
918
+ }
919
+ const data = await this.requestMcpRegistryProvider(sessions);
920
+ return !isUndefined(data) ? {
921
+ data,
922
+ fetchedAt: Date.now()
923
+ } : undefined;
924
+ }
925
+ async requestMcpRegistryProvider(sessions) {
926
+ const mcpRegistryDataUrl = this.getMcpRegistryDataUrl();
927
+ if (!mcpRegistryDataUrl) {
928
+ this.logService.debug("[DefaultAccount] No MCP registry data URL found");
929
+ return null;
930
+ }
931
+ this.logService.debug("[DefaultAccount] Fetching MCP registry data from:", mcpRegistryDataUrl);
932
+ const response = await this.request(
933
+ mcpRegistryDataUrl,
934
+ "GET",
935
+ undefined,
936
+ sessions,
937
+ CancellationToken.None,
938
+ "defaultAccount.mcpRegistryProvider"
939
+ );
940
+ if (!response) {
941
+ return undefined;
942
+ }
943
+ if (!isSuccess(response)) {
944
+ if (isClientError(response)) {
945
+ this.logService.debug(
946
+ `[DefaultAccount] Received ${response.res.statusCode} for MCP registry data, treating as no registry available.`
947
+ );
948
+ return null;
949
+ }
950
+ this.logService.debug(
951
+ `[DefaultAccount] unexpected status code ${response.res.statusCode} while fetching MCP registry data`
952
+ );
953
+ return undefined;
954
+ }
955
+ try {
956
+ const data = await asJson(response);
957
+ if (data) {
958
+ this.logService.debug("Fetched MCP registry providers", data.mcp_registries);
959
+ return data.mcp_registries[0] ?? null;
960
+ }
961
+ this.logService.debug("No MCP registry providers content found in response");
962
+ return null;
963
+ } catch (error) {
964
+ this.logService.error("Failed to fetch MCP registry providers", getErrorMessage(error));
965
+ return undefined;
966
+ }
967
+ }
968
+ async getManagedSettings(
969
+ sessions,
970
+ accountPolicyData,
971
+ options,
972
+ authenticationProvider = this.getDefaultAccountAuthenticationProvider(),
973
+ managedSettingsSources,
974
+ refreshRequirement
975
+ ) {
976
+ const accountId = sessions[0].account.id;
977
+ const sources = managedSettingsSources ?? (await this.initializeManagedSettingsSources());
978
+ const requirement = refreshRequirement ?? resolveForceRemoteSettingsRefresh(
979
+ sources.nativeMdm,
980
+ this.getScopedServerManagedSettings(accountPolicyData, authenticationProvider, accountId),
981
+ sources.file
982
+ );
983
+ const cachedManagedSettings = accountPolicyData?.managedSettingsFetchedAt !== undefined && !this.isDataStale(accountPolicyData.managedSettingsFetchedAt) ? {
984
+ data: {
985
+ managedSettings: accountPolicyData.policyData.managedSettings
986
+ },
987
+ fetchedAt: accountPolicyData.managedSettingsFetchedAt
988
+ } : undefined;
989
+ const managedSettingsUrl = this.getManagedSettingsUrl();
990
+ if (!managedSettingsUrl) {
991
+ this.logService.debug(
992
+ "[DefaultAccount] No managed settings URL configured; skipping enterprise policy fetch"
993
+ );
994
+ this._managedSettingsFetchStatus = "no-url";
995
+ if (requirement.effective) {
996
+ this.setManagedSettingsFreshness({
997
+ state: ManagedSettingsFreshnessState.Blocked,
998
+ source: requirement.source,
999
+ failure: ManagedSettingsFreshnessFailure.NoUrl
1000
+ });
1001
+ }
1002
+ const retained = requirement.effective ? {
1003
+ data: {
1004
+ managedSettings: accountPolicyData?.policyData.managedSettings
1005
+ },
1006
+ fetchedAt: accountPolicyData?.managedSettingsFetchedAt
1007
+ } : cachedManagedSettings;
1008
+ return {
1009
+ data: retained?.data,
1010
+ fetchedAt: retained?.fetchedAt,
1011
+ scope: accountPolicyData?.managedSettingsScope,
1012
+ compatibilityError: this._managedSettingsCompatibilityError
1013
+ };
1014
+ }
1015
+ const scope = this.createManagedSettingsFreshnessScope(accountId, authenticationProvider.id, managedSettingsUrl);
1016
+ const cachedScope = accountPolicyData?.managedSettingsScope;
1017
+ const cacheScopeMatches = !cachedScope || this.getManagedSettingsScopeKey(cachedScope) === this.getManagedSettingsScopeKey(scope);
1018
+ const scopedManagedSettings = cacheScopeMatches ? accountPolicyData?.policyData.managedSettings : undefined;
1019
+ const scopedManagedSettingsFetchedAt = cacheScopeMatches ? accountPolicyData?.managedSettingsFetchedAt : undefined;
1020
+ const scopedCachedManagedSettings = cacheScopeMatches ? cachedManagedSettings : undefined;
1021
+ if (requirement.effective && !this.canRequestManagedSettings(options, scope)) {
1022
+ this.logService.debug(
1023
+ "[DefaultAccount] Skipping automatic managed settings retry after a prior failure"
1024
+ );
1025
+ const failedFreshness = this.failedManagedSettingsFreshness.get(this.getManagedSettingsScopeKey(scope));
1026
+ if (failedFreshness) {
1027
+ this.setManagedSettingsFreshness({
1028
+ ...failedFreshness,
1029
+ source: requirement.source
1030
+ });
1031
+ }
1032
+ return {
1033
+ data: {
1034
+ managedSettings: scopedManagedSettings
1035
+ },
1036
+ fetchedAt: scopedManagedSettingsFetchedAt,
1037
+ scope,
1038
+ compatibilityError: this._managedSettingsCompatibilityError
1039
+ };
1040
+ }
1041
+ const freshnessSatisfied = requirement.effective && isManagedSettingsFreshnessSatisfiedFor(this._managedSettingsFreshness, scope);
1042
+ if (!options?.forceRefresh && !options?.retryManagedSettings && scopedCachedManagedSettings && (!requirement.effective || freshnessSatisfied) && !this._managedSettingsCompatibilityError) {
1043
+ this.logService.debug("[DefaultAccount] Using last fetched managed settings data");
1044
+ return {
1045
+ ...scopedCachedManagedSettings,
1046
+ scope,
1047
+ compatibilityError: this._managedSettingsCompatibilityError
1048
+ };
1049
+ }
1050
+ const lastAttemptAt = Date.now();
1051
+ if (requirement.effective) {
1052
+ this.setManagedSettingsFreshness({
1053
+ state: ManagedSettingsFreshnessState.Pending,
1054
+ source: requirement.source,
1055
+ scope,
1056
+ lastAttemptAt
1057
+ });
1058
+ }
1059
+ const sharedBackoffActive = Date.now() < this._rateLimitBackoffUntil;
1060
+ const result = await this.requestManagedSettings(requirement.effective ? [sessions[0]] : sessions, managedSettingsUrl);
1061
+ if (requirement.effective && !sharedBackoffActive) {
1062
+ this.updateFailedManagedSettingsFreshness(scope, requirement.source, result, lastAttemptAt);
1063
+ }
1064
+ switch (result.kind) {
1065
+ case "success":
1066
+ {
1067
+ const fetchedAt = Date.now();
1068
+ this.resolveManagedSettingsFreshnessAfterSuccess(result.data.managedSettings, scope, lastAttemptAt, fetchedAt);
1069
+ return {
1070
+ data: result.data,
1071
+ fetchedAt,
1072
+ scope,
1073
+ compatibilityError: null
1074
+ };
1075
+ }
1076
+ case "noSettings":
1077
+ {
1078
+ const fetchedAt = Date.now();
1079
+ this.resolveManagedSettingsFreshnessAfterSuccess(undefined, scope, lastAttemptAt, fetchedAt);
1080
+ return {
1081
+ data: {
1082
+ managedSettings: undefined
1083
+ },
1084
+ fetchedAt,
1085
+ scope,
1086
+ compatibilityError: null
1087
+ };
1088
+ }
1089
+ case "updateRequired":
1090
+ if (requirement.effective) {
1091
+ this.setManagedSettingsFreshness({
1092
+ state: ManagedSettingsFreshnessState.Blocked,
1093
+ source: requirement.source,
1094
+ scope,
1095
+ lastAttemptAt,
1096
+ failure: ManagedSettingsFreshnessFailure.UpdateRequired
1097
+ });
1098
+ }
1099
+ return {
1100
+ data: requirement.effective ? {
1101
+ managedSettings: scopedManagedSettings
1102
+ } : {
1103
+ managedSettings: undefined
1104
+ },
1105
+ fetchedAt: requirement.effective ? scopedManagedSettingsFetchedAt : Date.now(),
1106
+ scope,
1107
+ compatibilityError: result.error
1108
+ };
1109
+ case "network":
1110
+ case "rateLimited":
1111
+ case "httpError":
1112
+ case "malformed":
1113
+ {
1114
+ if (requirement.effective) {
1115
+ this.setManagedSettingsFreshness(
1116
+ this.toBlockedManagedSettingsFreshness(requirement.source, result, lastAttemptAt, scope)
1117
+ );
1118
+ return {
1119
+ data: {
1120
+ managedSettings: scopedManagedSettings
1121
+ },
1122
+ fetchedAt: scopedManagedSettingsFetchedAt,
1123
+ scope,
1124
+ compatibilityError: this._managedSettingsCompatibilityError
1125
+ };
1126
+ }
1127
+ const retained = this._managedSettingsCompatibilityError ? undefined : scopedCachedManagedSettings;
1128
+ return {
1129
+ data: {
1130
+ managedSettings: retained?.data.managedSettings
1131
+ },
1132
+ fetchedAt: retained?.fetchedAt,
1133
+ scope,
1134
+ compatibilityError: this._managedSettingsCompatibilityError
1135
+ };
1136
+ }
1137
+ }
1138
+ }
1139
+ createManagedSettingsFreshnessScope(accountId, authenticationProviderId, managedSettingsUrl) {
1140
+ let endpointOrigin = managedSettingsUrl;
1141
+ try {
1142
+ endpointOrigin = ( new URL(managedSettingsUrl)).origin;
1143
+ } catch {}
1144
+ return {
1145
+ accountId,
1146
+ authenticationProviderId,
1147
+ endpointOrigin
1148
+ };
1149
+ }
1150
+ resolveManagedSettingsFreshnessAfterSuccess(server, scope, lastAttemptAt, satisfiedAt) {
1151
+ const freshRequirement = resolveForceRemoteSettingsRefresh(
1152
+ this.nativeManagedSettingsService.managedSettings,
1153
+ server,
1154
+ this.fileManagedSettingsService.managedSettings
1155
+ );
1156
+ this.setManagedSettingsFreshness(freshRequirement.effective ? {
1157
+ state: ManagedSettingsFreshnessState.Satisfied,
1158
+ source: freshRequirement.source,
1159
+ scope,
1160
+ lastAttemptAt,
1161
+ satisfiedAt
1162
+ } : MANAGED_SETTINGS_FRESHNESS_NOT_REQUIRED);
1163
+ }
1164
+ toBlockedManagedSettingsFreshness(source, result, lastAttemptAt, scope) {
1165
+ switch (result.kind) {
1166
+ case "network":
1167
+ return {
1168
+ state: ManagedSettingsFreshnessState.Blocked,
1169
+ source,
1170
+ scope,
1171
+ lastAttemptAt,
1172
+ failure: ManagedSettingsFreshnessFailure.Network
1173
+ };
1174
+ case "rateLimited":
1175
+ return {
1176
+ state: ManagedSettingsFreshnessState.Blocked,
1177
+ source,
1178
+ scope,
1179
+ lastAttemptAt,
1180
+ failure: ManagedSettingsFreshnessFailure.RateLimited
1181
+ };
1182
+ case "httpError":
1183
+ return {
1184
+ state: ManagedSettingsFreshnessState.Blocked,
1185
+ source,
1186
+ scope,
1187
+ lastAttemptAt,
1188
+ failure: ManagedSettingsFreshnessFailure.HttpError,
1189
+ httpStatus: result.status
1190
+ };
1191
+ case "malformed":
1192
+ return {
1193
+ state: ManagedSettingsFreshnessState.Blocked,
1194
+ source,
1195
+ scope,
1196
+ lastAttemptAt,
1197
+ failure: ManagedSettingsFreshnessFailure.Malformed
1198
+ };
1199
+ }
1200
+ }
1201
+ async requestManagedSettings(sessions, managedSettingsUrl) {
1202
+ const requestUrl = appendManagedSettingsClientIdentity(managedSettingsUrl, this.productService);
1203
+ this.logService.debug("[DefaultAccount] Fetching managed settings from:", requestUrl);
1204
+ const rateLimitBackoffActive = Date.now() < this._rateLimitBackoffUntil;
1205
+ const response = await this.request(
1206
+ requestUrl,
1207
+ "GET",
1208
+ undefined,
1209
+ sessions,
1210
+ CancellationToken.None,
1211
+ "defaultAccount.managedSettings",
1212
+ {
1213
+ requestTimeoutMs: MANAGED_SETTINGS_REQUEST_TIMEOUT_MS,
1214
+ retryNotFound: false
1215
+ }
1216
+ );
1217
+ if (!response) {
1218
+ this.logService.debug(
1219
+ "[DefaultAccount] Managed settings fetch returned no response (network error, all selected sessions rejected, or active rate-limit backoff); falling back to local-only policy"
1220
+ );
1221
+ this.reportManagedSettingsOutcome("no-response", rateLimitBackoffActive);
1222
+ return rateLimitBackoffActive ? {
1223
+ kind: "rateLimited"
1224
+ } : {
1225
+ kind: "network"
1226
+ };
1227
+ }
1228
+ const status = response.res.statusCode ?? 0;
1229
+ if (status === 404) {
1230
+ this.reportManagedSettingsOutcome(status, rateLimitBackoffActive);
1231
+ return {
1232
+ kind: "noSettings"
1233
+ };
1234
+ }
1235
+ if (status === 466) {
1236
+ const error = await this.readManagedSettingsCompatibilityError(response);
1237
+ this.setManagedSettingsCompatibilityError(error);
1238
+ this.reportManagedSettingsOutcome(status, rateLimitBackoffActive);
1239
+ return {
1240
+ kind: "updateRequired",
1241
+ error
1242
+ };
1243
+ }
1244
+ if (this.isRateLimited(response)) {
1245
+ this.reportManagedSettingsOutcome(status, rateLimitBackoffActive);
1246
+ return {
1247
+ kind: "rateLimited"
1248
+ };
1249
+ }
1250
+ if (!isSuccess(response)) {
1251
+ this.logService.warn(
1252
+ `[DefaultAccount] Managed settings fetch returned non-success status ${status}; falling back to local-only policy`
1253
+ );
1254
+ this.reportManagedSettingsOutcome(status, rateLimitBackoffActive);
1255
+ return {
1256
+ kind: "httpError",
1257
+ status
1258
+ };
1259
+ }
1260
+ try {
1261
+ const data = await asJson(response);
1262
+ this.logService.trace(
1263
+ "[DefaultAccount] Managed settings raw response:",
1264
+ JSON.stringify(data ?? null)
1265
+ );
1266
+ this._managedSettingsRawResponse = data ?? null;
1267
+ const adapted = adaptManagedSettings(data ?? {}, msg => this.logService.warn(msg));
1268
+ const managedSettingsCount = adapted.managedSettings ? ( Object.keys(adapted.managedSettings)).length : 0;
1269
+ if (managedSettingsCount === 0 && adapted.managedSettingsActive !== true) {
1270
+ this.logService.debug(
1271
+ "[DefaultAccount] Managed settings fetched (empty response — no enterprise policy file present)"
1272
+ );
1273
+ } else {
1274
+ this.logService.info("[DefaultAccount] Managed settings applied");
1275
+ this.logService.trace("[DefaultAccount] Managed settings payload:", JSON.stringify(adapted));
1276
+ }
1277
+ this.reportManagedSettingsOutcome("ok", rateLimitBackoffActive);
1278
+ return {
1279
+ kind: "success",
1280
+ data: adapted
1281
+ };
1282
+ } catch (error) {
1283
+ this.logService.error(
1284
+ "[DefaultAccount] Failed to parse managed settings response",
1285
+ getErrorMessage(error)
1286
+ );
1287
+ this.reportManagedSettingsOutcome("parse-error", rateLimitBackoffActive);
1288
+ return {
1289
+ kind: "malformed"
1290
+ };
1291
+ }
1292
+ }
1293
+ canRequestManagedSettings(options, scope) {
1294
+ return options?.retryManagedSettings === true || scope === undefined || !( this.failedManagedSettingsFreshness.has(this.getManagedSettingsScopeKey(scope)));
1295
+ }
1296
+ updateFailedManagedSettingsFreshness(scope, source, result, lastAttemptAt) {
1297
+ const scopeKey = this.getManagedSettingsScopeKey(scope);
1298
+ switch (result.kind) {
1299
+ case "success":
1300
+ case "noSettings":
1301
+ this.failedManagedSettingsFreshness.delete(scopeKey);
1302
+ break;
1303
+ case "updateRequired":
1304
+ {
1305
+ this.failedManagedSettingsFreshness.set(scopeKey, {
1306
+ state: ManagedSettingsFreshnessState.Blocked,
1307
+ source,
1308
+ scope,
1309
+ lastAttemptAt,
1310
+ failure: ManagedSettingsFreshnessFailure.UpdateRequired
1311
+ });
1312
+ break;
1313
+ }
1314
+ case "network":
1315
+ case "rateLimited":
1316
+ case "httpError":
1317
+ case "malformed":
1318
+ {
1319
+ this.failedManagedSettingsFreshness.set(
1320
+ scopeKey,
1321
+ this.toBlockedManagedSettingsFreshness(source, result, lastAttemptAt, scope)
1322
+ );
1323
+ break;
1324
+ }
1325
+ }
1326
+ }
1327
+ getManagedSettingsScopeKey(scope) {
1328
+ return `${scope.authenticationProviderId}\n${scope.accountId}\n${scope.endpointOrigin}`;
1329
+ }
1330
+ async readManagedSettingsCompatibilityError(response) {
1331
+ try {
1332
+ const text = await asText(response);
1333
+ const body = text ? JSON.parse(text) : undefined;
1334
+ const parsed = parseManagedSettingsCompatibilityError(body);
1335
+ if (parsed) {
1336
+ return parsed;
1337
+ }
1338
+ this.logService.error(
1339
+ "[DefaultAccount] Managed settings compatibility response did not contain the expected error code"
1340
+ );
1341
+ } catch (error) {
1342
+ this.logService.error(
1343
+ "[DefaultAccount] Failed to parse managed settings compatibility response",
1344
+ getErrorMessage(error)
1345
+ );
1346
+ }
1347
+ return {
1348
+ errorCode: MANAGED_SETTINGS_UPDATE_REQUIRED_ERROR_CODE
1349
+ };
1350
+ }
1351
+ reportManagedSettingsOutcome(status, rateLimitBackoffActive) {
1352
+ this._managedSettingsFetchStatus = status;
1353
+ this.telemetryService.publicLog2("defaultaccount:managedSettings:fetch", {
1354
+ outcome: typeof status === "number" ? `status:${status}` : status,
1355
+ rateLimitBackoffActive
1356
+ });
1357
+ }
1358
+ isRateLimited(response) {
1359
+ const status = response.res.statusCode;
1360
+ if (status === 429) {
1361
+ return true;
1362
+ }
1363
+ if (status === 403 && readHeader(response.res.headers, "x-ratelimit-remaining") === "0") {
1364
+ return true;
1365
+ }
1366
+ if (!isSuccess(response) && readHeader(response.res.headers, "retry-after") !== undefined) {
1367
+ return true;
1368
+ }
1369
+ return false;
1370
+ }
1371
+ async request(url, type, body, sessions, token, callSite, options) {
1372
+ if (Date.now() < this._rateLimitBackoffUntil) {
1373
+ const remainingSec = Math.ceil((this._rateLimitBackoffUntil - Date.now()) / 1000);
1374
+ this.logService.debug(
1375
+ `[DefaultAccount] Skipping request to ${url} — rate-limit backoff active for ${remainingSec}s more`
1376
+ );
1377
+ return undefined;
1378
+ }
1379
+ let lastResponse;
1380
+ for (const session of sessions) {
1381
+ if (token.isCancellationRequested) {
1382
+ return lastResponse;
1383
+ }
1384
+ try {
1385
+ const response = await this.requestService.request({
1386
+ type,
1387
+ url,
1388
+ data: type === "POST" ? JSON.stringify(body) : undefined,
1389
+ disableCache: true,
1390
+ timeout: options?.requestTimeoutMs,
1391
+ headers: {
1392
+ "Authorization": `Bearer ${session.accessToken}`
1393
+ },
1394
+ callSite
1395
+ }, token);
1396
+ const status = response.res.statusCode;
1397
+ if (this.isRateLimited(response)) {
1398
+ const retryAfterSec = retryAfterFromHeaders(response.res.headers) ?? 60;
1399
+ this._rateLimitBackoffUntil = Date.now() + retryAfterSec * 1000;
1400
+ this.logService.warn(
1401
+ `[DefaultAccount] Rate limited by ${url} (status ${status}); backing off for ${retryAfterSec}s`
1402
+ );
1403
+ return response;
1404
+ }
1405
+ if (status === 401 || (status === 404 && options?.retryNotFound !== false)) {
1406
+ this.logService.debug(
1407
+ `[DefaultAccount] Received ${status} for URL ${url} with session ${session.id}, likely due to expired/revoked token or insufficient permissions.`,
1408
+ "Trying next session if available."
1409
+ );
1410
+ lastResponse = response;
1411
+ continue;
1412
+ }
1413
+ return response;
1414
+ } catch (error) {
1415
+ if (!token.isCancellationRequested) {
1416
+ this.logService.error(`[DefaultAccount] request: error ${error}`, url);
1417
+ }
1418
+ }
1419
+ }
1420
+ if (!lastResponse) {
1421
+ this.logService.trace("[DefaultAccount]: No response received for request", url);
1422
+ return undefined;
1423
+ }
1424
+ return lastResponse;
1425
+ }
1426
+ isDataStale(fetchedAt) {
1427
+ return (Date.now() - fetchedAt) >= ACCOUNT_DATA_POLL_INTERVAL_MS;
1428
+ }
1429
+ getEntitlementUrl() {
1430
+ if (this.getDefaultAccountAuthenticationProvider().enterprise) {
1431
+ try {
1432
+ const enterpriseUrl = this.getEnterpriseUrl();
1433
+ if (!enterpriseUrl) {
1434
+ return undefined;
1435
+ }
1436
+ return `${enterpriseUrl.protocol}//api.${enterpriseUrl.hostname}${enterpriseUrl.port ? ":" + enterpriseUrl.port : ""}/copilot_internal/user`;
1437
+ } catch (error) {
1438
+ this.logService.error(error);
1439
+ }
1440
+ }
1441
+ return this.defaultAccountConfig.entitlementUrl;
1442
+ }
1443
+ getTokenEntitlementUrl() {
1444
+ if (this.getDefaultAccountAuthenticationProvider().enterprise) {
1445
+ try {
1446
+ const enterpriseUrl = this.getEnterpriseUrl();
1447
+ if (!enterpriseUrl) {
1448
+ return undefined;
1449
+ }
1450
+ return `${enterpriseUrl.protocol}//api.${enterpriseUrl.hostname}${enterpriseUrl.port ? ":" + enterpriseUrl.port : ""}/copilot_internal/v2/token`;
1451
+ } catch (error) {
1452
+ this.logService.error(error);
1453
+ }
1454
+ }
1455
+ return this.defaultAccountConfig.tokenEntitlementUrl;
1456
+ }
1457
+ getMcpRegistryDataUrl() {
1458
+ if (this.getDefaultAccountAuthenticationProvider().enterprise) {
1459
+ try {
1460
+ const enterpriseUrl = this.getEnterpriseUrl();
1461
+ if (!enterpriseUrl) {
1462
+ return undefined;
1463
+ }
1464
+ return `${enterpriseUrl.protocol}//api.${enterpriseUrl.hostname}${enterpriseUrl.port ? ":" + enterpriseUrl.port : ""}/copilot/mcp_registry`;
1465
+ } catch (error) {
1466
+ this.logService.error(error);
1467
+ }
1468
+ }
1469
+ return this.defaultAccountConfig.mcpRegistryDataUrl;
1470
+ }
1471
+ getManagedSettingsUrl() {
1472
+ if (this.getDefaultAccountAuthenticationProvider().enterprise) {
1473
+ try {
1474
+ const enterpriseUrl = this.getEnterpriseUrl();
1475
+ if (!enterpriseUrl) {
1476
+ return undefined;
1477
+ }
1478
+ return `${enterpriseUrl.protocol}//api.${enterpriseUrl.hostname}${enterpriseUrl.port ? ":" + enterpriseUrl.port : ""}/copilot_internal/managed_settings`;
1479
+ } catch (error) {
1480
+ this.logService.error(error);
1481
+ }
1482
+ }
1483
+ return this.defaultAccountConfig.managedSettingsUrl;
1484
+ }
1485
+ getDefaultAccountAuthenticationProvider() {
1486
+ if (this.configurationService.getValue(this.defaultAccountConfig.authenticationProvider.enterpriseProviderConfig) === this.defaultAccountConfig.authenticationProvider.enterprise.id) {
1487
+ return {
1488
+ ...this.defaultAccountConfig.authenticationProvider.enterprise,
1489
+ enterprise: true
1490
+ };
1491
+ }
1492
+ return {
1493
+ ...this.defaultAccountConfig.authenticationProvider.default,
1494
+ enterprise: false
1495
+ };
1496
+ }
1497
+ resolveGitHubUrl(path) {
1498
+ if (this.getDefaultAccountAuthenticationProvider().enterprise) {
1499
+ try {
1500
+ const enterpriseUrl = this.getEnterpriseUrl();
1501
+ if (enterpriseUrl) {
1502
+ return `${enterpriseUrl.protocol}//${enterpriseUrl.host}/${path}`;
1503
+ }
1504
+ } catch {}
1505
+ }
1506
+ return `https://github.com/${path}`;
1507
+ }
1508
+ getEnterpriseUrl() {
1509
+ const value = this.configurationService.getValue(
1510
+ this.defaultAccountConfig.authenticationProvider.enterpriseProviderUriSetting
1511
+ );
1512
+ if (!isString(value)) {
1513
+ return undefined;
1514
+ }
1515
+ return ( new URL(value));
1516
+ }
1517
+ async signIn(options) {
1518
+ const authProvider = this.getDefaultAccountAuthenticationProvider();
1519
+ if (!authProvider) {
1520
+ throw ( new Error("No default account provider configured"));
1521
+ }
1522
+ const {
1523
+ additionalScopes,
1524
+ ...sessionOptions
1525
+ } = options ?? {};
1526
+ const defaultAccountScopes = this.defaultAccountConfig.authenticationProvider.scopes[0];
1527
+ const scopes = additionalScopes ? distinct([...defaultAccountScopes, ...additionalScopes]) : defaultAccountScopes;
1528
+ const session = await this.authenticationService.createSession(authProvider.id, scopes, sessionOptions);
1529
+ for (const preferredExtension of this.defaultAccountConfig.preferredExtensions) {
1530
+ this.authenticationExtensionsService.updateAccountPreference(preferredExtension, authProvider.id, session.account);
1531
+ }
1532
+ await this.updateDefaultAccount();
1533
+ return this.defaultAccount;
1534
+ }
1535
+ async signOut() {
1536
+ if (!this.defaultAccount) {
1537
+ return;
1538
+ }
1539
+ await this.commandService.executeCommand("_signOutOfAccount", {
1540
+ providerId: this.defaultAccount.authenticationProvider.id,
1541
+ accountLabel: this.defaultAccount.accountName
1542
+ });
1543
+ }
1544
+ };
1545
+ DefaultAccountProvider = ( __decorate([( __param(1, IConfigurationService)), ( __param(2, IAuthenticationService)), ( __param(3, IAuthenticationExtensionsService)), ( __param(4, ITelemetryService)), ( __param(5, IExtensionService)), ( __param(6, IRequestService)), ( __param(7, ILogService)), ( __param(8, IWorkbenchEnvironmentService)), ( __param(9, IProductService)), ( __param(10, IContextKeyService)), ( __param(11, IStorageService)), ( __param(12, IHostService)), ( __param(13, ICommandService)), ( __param(14, INativeManagedSettingsService)), ( __param(15, IFileManagedSettingsService))], DefaultAccountProvider));
1546
+ let DefaultAccountProviderContribution = class DefaultAccountProviderContribution extends Disposable {
1547
+ static {
1548
+ this.ID = "workbench.contributions.defaultAccountProvider";
1549
+ }
1550
+ constructor(productService, instantiationService, defaultAccountService) {
1551
+ super();
1552
+ if (productService.defaultChatAgent) {
1553
+ const defaultAccountProvider = this._register(instantiationService.createInstance(
1554
+ DefaultAccountProvider,
1555
+ toDefaultAccountConfig(productService.defaultChatAgent)
1556
+ ));
1557
+ defaultAccountService.setDefaultAccountProvider(defaultAccountProvider);
1558
+ }
1559
+ }
1560
+ };
1561
+ DefaultAccountProviderContribution = ( __decorate([( __param(0, IProductService)), ( __param(1, IInstantiationService)), ( __param(2, IDefaultAccountService))], DefaultAccountProviderContribution));
1562
+ registerAction2(class extends Action2 {
1563
+ constructor() {
1564
+ super({
1565
+ id: DEFAULT_ACCOUNT_SIGN_IN_COMMAND,
1566
+ title: ( localize2(18953, "Sign In"))
1567
+ });
1568
+ }
1569
+ async run(accessor) {
1570
+ const defaultAccountService = accessor.get(IDefaultAccountService);
1571
+ await defaultAccountService.signIn();
1572
+ }
1573
+ });
1574
+ registerWorkbenchContribution2(
1575
+ DefaultAccountProviderContribution.ID,
1576
+ DefaultAccountProviderContribution,
1577
+ WorkbenchPhase.BlockStartup
1578
+ );
1579
+
1580
+ export { CONTEXT_DEFAULT_ACCOUNT_STATE, DEFAULT_ACCOUNT_SIGN_IN_COMMAND, DefaultAccountProvider, DefaultAccountStatus };