@codingame/monaco-vscode-workbench-service-override 37.3.3 → 37.3.4

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 (108) hide show
  1. package/package.json +10 -10
  2. package/session.js +11 -0
  3. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.d.ts +18 -0
  4. package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.js +27 -0
  5. package/vscode/src/vs/sessions/browser/layoutActions.d.ts +1 -0
  6. package/vscode/src/vs/sessions/browser/layoutActions.js +146 -0
  7. package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.js +6 -6
  8. package/vscode/src/vs/sessions/browser/parts/chatGroupView.js +5 -5
  9. package/vscode/src/vs/sessions/browser/parts/menubar.contribution.js +8 -8
  10. package/vscode/src/vs/sessions/browser/parts/sessionHeader.js +1 -1
  11. package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.js +1 -1
  12. package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.js +20 -20
  13. package/vscode/src/vs/sessions/browser/sessionsSetUpService.js +7 -7
  14. package/vscode/src/vs/sessions/browser/sessionsSignInDialog.js +4 -4
  15. package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.js +42 -42
  16. package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.js +11 -11
  17. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.js +18 -18
  18. package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.js +12 -12
  19. package/vscode/src/vs/sessions/contrib/applyCommitsToParentRepo/browser/applyChangesToParentRepo.d.ts +1 -0
  20. package/vscode/src/vs/sessions/contrib/applyCommitsToParentRepo/browser/applyChangesToParentRepo.js +149 -0
  21. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.js +12 -12
  22. package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.js +10 -10
  23. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +68 -68
  24. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +7 -7
  25. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +4 -4
  26. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +2 -2
  27. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +38 -38
  28. package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +2 -2
  29. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +1 -1
  30. package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +6 -6
  31. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +4 -4
  32. package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +20 -20
  33. package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +1 -1
  34. package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +9 -9
  35. package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +17 -17
  36. package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +17 -17
  37. package/vscode/src/vs/sessions/contrib/chat/browser/taskCommand.d.ts +44 -0
  38. package/vscode/src/vs/sessions/contrib/chat/browser/taskCommand.js +111 -0
  39. package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +2 -2
  40. package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.d.ts +1 -0
  41. package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.js +75 -0
  42. package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +7 -7
  43. package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +4 -4
  44. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +8 -8
  45. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +1 -1
  46. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +5 -5
  47. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +1 -1
  48. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +7 -7
  49. package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +1 -1
  50. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +5 -5
  51. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +2 -2
  52. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneExistingSessionStrategy.js +1 -1
  53. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +19 -19
  54. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +4 -4
  55. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +6 -6
  56. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +2 -2
  57. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +4 -4
  58. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +24 -24
  59. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.d.ts +26 -0
  60. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +98 -0
  61. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.d.ts +33 -0
  62. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +98 -0
  63. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.d.ts +1 -0
  64. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.js +72 -0
  65. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.d.ts +2 -0
  66. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.js +13 -0
  67. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.d.ts +122 -0
  68. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +464 -0
  69. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.d.ts +35 -0
  70. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.js +90 -0
  71. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.d.ts +84 -0
  72. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +328 -0
  73. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.d.ts +1 -0
  74. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.js +94 -0
  75. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.d.ts +174 -0
  76. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +1390 -0
  77. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.d.ts +1 -0
  78. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.js +468 -0
  79. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.d.ts +7 -0
  80. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.js +48 -0
  81. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/media/agentHostSessionConfigPicker.css +44 -0
  82. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.d.ts +30 -0
  83. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.js +78 -0
  84. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.d.ts +1 -0
  85. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.js +345 -0
  86. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.d.ts +11 -0
  87. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.js +26 -0
  88. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +6 -6
  89. package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +3 -3
  90. package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +1 -1
  91. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +4 -4
  92. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +5 -5
  93. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +2 -2
  94. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +8 -8
  95. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +58 -58
  96. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +8 -8
  97. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +5 -5
  98. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +10 -10
  99. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +38 -38
  100. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +118 -118
  101. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +53 -53
  102. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.d.ts +42 -0
  103. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.js +139 -0
  104. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.d.ts +120 -0
  105. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.js +741 -0
  106. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +2 -2
  107. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +2 -2
  108. package/vscode/src/vs/workbench/browser/layout.js +1 -1
@@ -0,0 +1,78 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { IActionWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionWidget.service';
4
+ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
5
+ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
6
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
7
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
8
+ import { IPreferencesService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/preferences/common/preferences.service';
9
+ import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
10
+ import { IChatPhoneInputPresenter } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.service';
11
+ import { didExplicitlySwitchChatPetModel, ChatPetAchievementIds } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatPetAchievements';
12
+ import { IChatPetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatPetService.service';
13
+ import { ISessionsProvidersService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service';
14
+ import { AgentHostModePicker } from '../agentHostModePicker.js';
15
+ import { createChatPhoneInputSessionContext } from './mobileChatPhoneInputTarget.js';
16
+
17
+ let MobileAgentHostModePicker = class MobileAgentHostModePicker extends AgentHostModePicker {
18
+ constructor(
19
+ session,
20
+ actionWidgetService,
21
+ sessionsProvidersService,
22
+ telemetryService,
23
+ hoverService,
24
+ _phonePresenter,
25
+ _chatWidgetService,
26
+ _chatPetService,
27
+ instantiationService,
28
+ configurationService,
29
+ preferencesService
30
+ ) {
31
+ super(
32
+ session,
33
+ actionWidgetService,
34
+ sessionsProvidersService,
35
+ telemetryService,
36
+ hoverService,
37
+ _chatPetService,
38
+ instantiationService,
39
+ configurationService,
40
+ preferencesService
41
+ );
42
+ this._phonePresenter = _phonePresenter;
43
+ this._chatWidgetService = _chatWidgetService;
44
+ this._chatPetService = _chatPetService;
45
+ }
46
+ _showPicker(anchor = this._triggerElement, onHide, listOptions) {
47
+ if (!anchor) {
48
+ return false;
49
+ }
50
+ if (this._isCurrentlyResolvingConfig()) {
51
+ return false;
52
+ }
53
+ if (this._phonePresenter.enabled.get()) {
54
+ this._phonePresenter.showCombinedModeAndModelSheet(anchor, {
55
+ kind: "session",
56
+ getSessionContext: () => createChatPhoneInputSessionContext(this._session.get()),
57
+ selectModel: modelIdentifier => {
58
+ const chatResource = this._session.get()?.activeChat.get().resource;
59
+ const inputPart = chatResource ? this._chatWidgetService.getWidgetBySessionResource(chatResource)?.inputPart : undefined;
60
+ const previousModelIdentifier = inputPart?.selectedLanguageModel.get()?.identifier;
61
+ const selected = inputPart?.switchModelByIdentifier(modelIdentifier, true, true) ?? false;
62
+ if (selected && didExplicitlySwitchChatPetModel(previousModelIdentifier, modelIdentifier)) {
63
+ this._chatPetService.unlockAchievement(ChatPetAchievementIds.ModelSwitch);
64
+ }
65
+ return selected;
66
+ }
67
+ }).finally(() => {
68
+ anchor.focus();
69
+ onHide?.();
70
+ });
71
+ return true;
72
+ }
73
+ return super._showPicker(anchor, onHide, listOptions);
74
+ }
75
+ };
76
+ MobileAgentHostModePicker = ( __decorate([( __param(1, IActionWidgetService)), ( __param(2, ISessionsProvidersService)), ( __param(3, ITelemetryService)), ( __param(4, IHoverService)), ( __param(5, IChatPhoneInputPresenter)), ( __param(6, IChatWidgetService)), ( __param(7, IChatPetService)), ( __param(8, IInstantiationService)), ( __param(9, IConfigurationService)), ( __param(10, IPreferencesService))], MobileAgentHostModePicker));
77
+
78
+ export { MobileAgentHostModePicker };
@@ -0,0 +1,345 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { append, $, EventType, addDisposableListener, EventHelper, clearNode } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
+ import { renderIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/iconLabel/iconLabels';
5
+ import { Gesture, EventType as EventType$1 } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/touch';
6
+ import { BaseActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionViewItems';
7
+ import { Disposable, DisposableStore, DisposableMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
8
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
9
+ import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
10
+ import { IActionViewItemService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/actionViewItemService.service';
11
+ import { registerAction2, Action2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
12
+ import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
13
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
14
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
15
+ import { SessionConfigKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/sessionConfigKeys';
16
+ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
17
+ import { IUriIdentityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service';
18
+ import { registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions';
19
+ import { IChatPhoneInputPresenter } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.service';
20
+ import { getModelProviderIcon } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/input/modelPicker/modelProviderIcons';
21
+ import { didExplicitlySwitchChatPetModel, ChatPetAchievementIds } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatPetAchievements';
22
+ import { IChatPetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatPetService.service';
23
+ import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
24
+ import { SessionUsesCombinedConfigPickerContext, IsPhoneLayoutContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
25
+ import { isAgentHostProvider } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/agentHostSessionsProvider';
26
+ import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
27
+ import { ISessionsProvidersService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service';
28
+ import { ISessionContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionContext.service';
29
+ import '../agentHostPermissionPickerDelegate.js';
30
+ import { getAgentHostModeIcon } from '../agentHostModeIcon.js';
31
+ import { INewChatModelPickerService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/newChatModelPicker.service';
32
+ import { ISessionModelSelection } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/sessionModelSelection.service';
33
+ import { reportNewChatPickerClosed } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/newChatPickerTelemetry';
34
+ import { createChatPhoneInputTarget, createChatPhoneInputSessionContext, matchesChatPhoneInputTarget } from './mobileChatPhoneInputTarget.js';
35
+ import { observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableSignalFromEvent';
36
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
37
+ import { isWellKnownModeSchema } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModePickerPresentation';
38
+
39
+ const MOBILE_CHAT_INPUT_CONFIG_PICKER_ID = "sessions.agentHost.mobileChatInputConfigPicker";
40
+ let MobileChatInputConfigPicker = class MobileChatInputConfigPicker extends Disposable {
41
+ constructor(
42
+ _session,
43
+ _sessionsProvidersService,
44
+ _telemetryService,
45
+ _phonePresenter,
46
+ _newChatModelPickerService,
47
+ _selectionModel,
48
+ _uriIdentityService,
49
+ _chatPetService
50
+ ) {
51
+ super();
52
+ this._session = _session;
53
+ this._sessionsProvidersService = _sessionsProvidersService;
54
+ this._telemetryService = _telemetryService;
55
+ this._phonePresenter = _phonePresenter;
56
+ this._newChatModelPickerService = _newChatModelPickerService;
57
+ this._selectionModel = _selectionModel;
58
+ this._uriIdentityService = _uriIdentityService;
59
+ this._chatPetService = _chatPetService;
60
+ this._renderDisposables = this._register(( new DisposableStore()));
61
+ this._providerListeners = this._register(( new DisposableMap()));
62
+ this._register(this._newChatModelPickerService.registerModelPicker({
63
+ open: () => {
64
+ void this._showSheet();
65
+ },
66
+ switchToModel: modelIdentifier => this._switchToModel(modelIdentifier)
67
+ }));
68
+ this._register(autorun(reader => {
69
+ this._session.read(reader);
70
+ this._selectionModel.state.read(reader);
71
+ this._updateTrigger();
72
+ }));
73
+ this._register(this._sessionsProvidersService.onDidChangeProviders(e => {
74
+ for (const provider of e.removed) {
75
+ this._providerListeners.deleteAndDispose(provider.id);
76
+ }
77
+ this._watchProviders(e.added);
78
+ this._updateTrigger();
79
+ }));
80
+ this._watchProviders(this._sessionsProvidersService.getProviders());
81
+ }
82
+ _watchProviders(providers) {
83
+ for (const provider of providers) {
84
+ if (( this._providerListeners.has(provider.id))) {
85
+ continue;
86
+ }
87
+ const resolved = this._sessionsProvidersService.getProvider(provider.id);
88
+ if (!resolved || !isAgentHostProvider(resolved)) {
89
+ continue;
90
+ }
91
+ this._providerListeners.set(
92
+ provider.id,
93
+ resolved.onDidChangeSessionConfig(() => this._updateTrigger())
94
+ );
95
+ }
96
+ }
97
+ render(container) {
98
+ this._renderDisposables.clear();
99
+ this._containerElement = container;
100
+ const slot = append(
101
+ container,
102
+ $(".sessions-chat-picker-slot.sessions-chat-picker-slot-mobile-config")
103
+ );
104
+ this._renderDisposables.add({
105
+ dispose: () => slot.remove()
106
+ });
107
+ this._slotElement = slot;
108
+ const trigger = append(slot, $("a.action-label"));
109
+ trigger.tabIndex = 0;
110
+ trigger.role = "button";
111
+ this._triggerElement = trigger;
112
+ this._renderDisposables.add(Gesture.addTarget(trigger));
113
+ for (const eventType of [EventType.CLICK, EventType$1.Tap]) {
114
+ this._renderDisposables.add(addDisposableListener(trigger, eventType, e => {
115
+ EventHelper.stop(e, true);
116
+ this._showSheet();
117
+ }));
118
+ }
119
+ this._renderDisposables.add(addDisposableListener(trigger, EventType.KEY_DOWN, e => {
120
+ if (e.key === "Enter" || e.key === " ") {
121
+ EventHelper.stop(e, true);
122
+ this._showSheet();
123
+ }
124
+ }));
125
+ this._updateTrigger();
126
+ }
127
+ _getContext() {
128
+ const session = this._session.get();
129
+ if (!session) {
130
+ return undefined;
131
+ }
132
+ const provider = this._sessionsProvidersService.getProvider(session.providerId);
133
+ if (!provider || !isAgentHostProvider(provider)) {
134
+ return undefined;
135
+ }
136
+ const config = provider.getSessionConfig(session.sessionId);
137
+ const modeSchema = config?.schema.properties[SessionConfigKey.Mode];
138
+ const modeItems = (modeSchema && isWellKnownModeSchema(modeSchema)) ? (modeSchema.enum ?? []).map((value, index) => ({
139
+ value: String(value),
140
+ label: modeSchema.enumLabels?.[index] ?? String(value),
141
+ description: modeSchema.enumDescriptions?.[index]
142
+ })) : [];
143
+ const rawCurrentMode = config?.values[SessionConfigKey.Mode] ?? modeSchema?.default;
144
+ const currentMode = (typeof rawCurrentMode === "string" && ( modeItems.some(i => i.value === rawCurrentMode))) ? rawCurrentMode : modeItems[0]?.value;
145
+ const selectionState = this._selectionModel.state.get();
146
+ const modelItems = selectionState.models;
147
+ const currentModelId = selectionState.currentModel?.identifier;
148
+ const showAutoModel = selectionState.options.showAutoModel;
149
+ return {
150
+ provider,
151
+ session,
152
+ modeItems,
153
+ currentMode,
154
+ modelItems,
155
+ currentModelId,
156
+ showAutoModel
157
+ };
158
+ }
159
+ _updateTrigger() {
160
+ if (!this._slotElement || !this._triggerElement || !this._containerElement) {
161
+ return;
162
+ }
163
+ const ctx = this._getContext();
164
+ if (!ctx || (ctx.modeItems.length === 0 && ctx.modelItems.length === 0 && ctx.showAutoModel)) {
165
+ this._slotElement.style.display = "none";
166
+ this._containerElement.style.display = "none";
167
+ return;
168
+ }
169
+ this._slotElement.style.display = "";
170
+ this._containerElement.style.display = "";
171
+ clearNode(this._triggerElement);
172
+ const modeIcon = ctx.currentMode ? getAgentHostModeIcon(ctx.currentMode) : undefined;
173
+ if (modeIcon) {
174
+ append(this._triggerElement, renderIcon(modeIcon));
175
+ }
176
+ const currentModel = ctx.currentModelId ? ctx.modelItems.find(m => m.identifier === ctx.currentModelId) : undefined;
177
+ if (currentModel) {
178
+ append(this._triggerElement, renderIcon(getModelProviderIcon(currentModel)));
179
+ }
180
+ const labelText = currentModel?.metadata.name ?? (ctx.showAutoModel ? ( localize(4307, "Auto")) : ( localize(4308, "No models available")));
181
+ const labelSpan = append(this._triggerElement, $("span.chat-input-picker-label"));
182
+ labelSpan.textContent = labelText;
183
+ const ariaParts = [];
184
+ if (ctx.currentMode) {
185
+ const modeItem = ctx.modeItems.find(i => i.value === ctx.currentMode);
186
+ if (modeItem) {
187
+ ariaParts.push(modeItem.label);
188
+ }
189
+ }
190
+ ariaParts.push(labelText);
191
+ this._triggerElement.ariaLabel = ( localize(4309, "Pick Mode and Model, {0}", ariaParts.join(", ")));
192
+ const isResolving = ctx.provider.isSessionConfigResolving(ctx.session.sessionId).get();
193
+ this._slotElement.classList.toggle("resolving", isResolving);
194
+ this._triggerElement.setAttribute("aria-disabled", isResolving ? "true" : "false");
195
+ }
196
+ _switchToModel(modelIdentifier) {
197
+ const previousModelIdentifier = this._selectionModel.state.get().currentModel?.identifier;
198
+ const selected = this._selectionModel.selectModel(modelIdentifier);
199
+ if (selected && didExplicitlySwitchChatPetModel(previousModelIdentifier, modelIdentifier)) {
200
+ this._chatPetService.unlockAchievement(ChatPetAchievementIds.ModelSwitch);
201
+ }
202
+ return selected;
203
+ }
204
+ async _showSheet() {
205
+ if (!this._triggerElement) {
206
+ return;
207
+ }
208
+ const ctx = this._getContext();
209
+ if (ctx && ctx.provider.isSessionConfigResolving(ctx.session.sessionId).get()) {
210
+ return;
211
+ }
212
+ const trigger = this._triggerElement;
213
+ const beforeCtx = ctx;
214
+ const target = createChatPhoneInputTarget(
215
+ createChatPhoneInputSessionContext(beforeCtx?.session),
216
+ this._uriIdentityService
217
+ );
218
+ const beforeMode = beforeCtx?.currentMode;
219
+ const beforeModeItem = beforeCtx?.modeItems.find(i => i.value === beforeMode);
220
+ const beforeModelId = beforeCtx?.currentModelId;
221
+ const beforeModel = beforeModelId ? beforeCtx?.modelItems.find(m => m.identifier === beforeModelId) : undefined;
222
+ trigger.setAttribute("aria-expanded", "true");
223
+ try {
224
+ await this._phonePresenter.showCombinedModeAndModelSheet(trigger, {
225
+ kind: "session",
226
+ getSessionContext: () => createChatPhoneInputSessionContext(this._session.get()),
227
+ selectModel: modelIdentifier => this._switchToModel(modelIdentifier)
228
+ });
229
+ const afterCtx = this._getContext();
230
+ if (beforeCtx && afterCtx && matchesChatPhoneInputTarget(
231
+ target,
232
+ createChatPhoneInputSessionContext(afterCtx.session),
233
+ this._uriIdentityService
234
+ )) {
235
+ if (beforeCtx.modeItems.length > 0) {
236
+ const afterMode = afterCtx.currentMode;
237
+ const afterModeItem = afterCtx.modeItems.find(i => i.value === afterMode);
238
+ reportNewChatPickerClosed(this._telemetryService, {
239
+ id: "NewChatMobileChatInputConfigPicker",
240
+ name: "NewChatMobileChatInputConfigPicker.mode",
241
+ optionIdBefore: beforeMode,
242
+ optionIdAfter: afterMode,
243
+ optionLabelBefore: beforeModeItem?.label ?? beforeMode,
244
+ optionLabelAfter: afterModeItem?.label ?? afterMode,
245
+ isPII: false
246
+ });
247
+ }
248
+ if (beforeCtx.modelItems.length > 0) {
249
+ const afterModelId = afterCtx.currentModelId;
250
+ const afterModel = afterModelId ? afterCtx.modelItems.find(m => m.identifier === afterModelId) : undefined;
251
+ reportNewChatPickerClosed(this._telemetryService, {
252
+ id: "NewChatMobileChatInputConfigPicker",
253
+ name: "NewChatMobileChatInputConfigPicker.model",
254
+ optionIdBefore: beforeModelId,
255
+ optionIdAfter: afterModelId,
256
+ optionLabelBefore: beforeModel?.metadata.name,
257
+ optionLabelAfter: afterModel?.metadata.name,
258
+ isPII: false
259
+ });
260
+ }
261
+ }
262
+ } finally {
263
+ trigger.setAttribute("aria-expanded", "false");
264
+ trigger.focus();
265
+ }
266
+ }
267
+ };
268
+ MobileChatInputConfigPicker = ( __decorate([( __param(1, ISessionsProvidersService)), ( __param(2, ITelemetryService)), ( __param(3, IChatPhoneInputPresenter)), ( __param(4, INewChatModelPickerService)), ( __param(5, ISessionModelSelection)), ( __param(6, IUriIdentityService)), ( __param(7, IChatPetService))], MobileChatInputConfigPicker));
269
+ registerAction2(class extends Action2 {
270
+ constructor() {
271
+ super({
272
+ id: MOBILE_CHAT_INPUT_CONFIG_PICKER_ID,
273
+ title: ( localize2(4310, "Mode and Model")),
274
+ f1: false,
275
+ menu: [{
276
+ id: Menus.NewSessionConfig,
277
+ group: "navigation",
278
+ order: 0,
279
+ when: ( ContextKeyExpr.and(SessionUsesCombinedConfigPickerContext, IsPhoneLayoutContext))
280
+ }]
281
+ });
282
+ }
283
+ async run() {}
284
+ });
285
+ let MobileChatInputConfigPickerContribution = class MobileChatInputConfigPickerContribution extends Disposable {
286
+ static {
287
+ this.ID = "sessions.contrib.mobileChatInputConfigPicker";
288
+ }
289
+ constructor(
290
+ actionViewItemService,
291
+ instantiationService,
292
+ sessionsService,
293
+ sessionsProvidersService,
294
+ contextKeyService
295
+ ) {
296
+ super();
297
+ const usesCombinedPicker = SessionUsesCombinedConfigPickerContext.bindTo(contextKeyService);
298
+ const providersChanged = observableSignalFromEvent(this, sessionsProvidersService.onDidChangeProviders);
299
+ this._register(autorun(reader => {
300
+ providersChanged.read(reader);
301
+ const session = sessionsService.activeSession.read(reader);
302
+ usesCombinedPicker.set(
303
+ !!session && sessionsProvidersService.getProvider(session.providerId)?.usesCombinedNewSessionConfigPicker === true
304
+ );
305
+ }));
306
+ this._register(actionViewItemService.register(
307
+ Menus.NewSessionConfig,
308
+ MOBILE_CHAT_INPUT_CONFIG_PICKER_ID,
309
+ (_action, _options, scopedInstantiationService) => {
310
+ const {
311
+ session
312
+ } = scopedInstantiationService.invokeFunction(accessor => accessor.get(ISessionContext));
313
+ const picker = scopedInstantiationService.createInstance(MobileChatInputConfigPicker, session);
314
+ return ( new MobileChatInputConfigPickerActionViewItem(picker));
315
+ }
316
+ ));
317
+ }
318
+ };
319
+ MobileChatInputConfigPickerContribution = ( __decorate([( __param(0, IActionViewItemService)), ( __param(1, IInstantiationService)), ( __param(2, ISessionsService)), ( __param(3, ISessionsProvidersService)), ( __param(4, IContextKeyService))], MobileChatInputConfigPickerContribution));
320
+ class MobileChatInputConfigPickerActionViewItem extends BaseActionViewItem {
321
+ constructor(_picker) {
322
+ super(undefined, {
323
+ id: "",
324
+ label: "",
325
+ enabled: true,
326
+ class: undefined,
327
+ tooltip: "",
328
+ run: () => {}
329
+ });
330
+ this._picker = _picker;
331
+ }
332
+ render(container) {
333
+ this._picker.render(container);
334
+ container.classList.add("chat-input-picker-item");
335
+ }
336
+ dispose() {
337
+ this._picker.dispose();
338
+ super.dispose();
339
+ }
340
+ }
341
+ registerWorkbenchContribution2(
342
+ MobileChatInputConfigPickerContribution.ID,
343
+ MobileChatInputConfigPickerContribution,
344
+ WorkbenchPhase.AfterRestored
345
+ );
@@ -0,0 +1,11 @@
1
+ import { IUriIdentityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service";
2
+ import { IChatPhoneInputSessionContext } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter";
3
+ import { IActiveSession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement";
4
+ export interface IChatPhoneInputTarget {
5
+ readonly providerId: string;
6
+ readonly sessionId: string;
7
+ readonly chatResourceKey: string;
8
+ }
9
+ export declare function createChatPhoneInputSessionContext(session: Pick<IActiveSession, "providerId" | "sessionId" | "sessionType" | "activeChat" | "modelId"> | undefined): IChatPhoneInputSessionContext | undefined;
10
+ export declare function createChatPhoneInputTarget(session: IChatPhoneInputSessionContext | undefined, uriIdentityService: Pick<IUriIdentityService, "extUri">): IChatPhoneInputTarget | undefined;
11
+ export declare function matchesChatPhoneInputTarget(target: IChatPhoneInputTarget | undefined, session: IChatPhoneInputSessionContext | undefined, uriIdentityService: Pick<IUriIdentityService, "extUri">): boolean;
@@ -0,0 +1,26 @@
1
+
2
+
3
+ function createChatPhoneInputSessionContext(session) {
4
+ return session ? {
5
+ providerId: session.providerId,
6
+ sessionId: session.sessionId,
7
+ sessionType: session.sessionType,
8
+ chatResource: session.activeChat.get().resource,
9
+ modelId: session.modelId.get(),
10
+ } : undefined;
11
+ }
12
+ function createChatPhoneInputTarget(session, uriIdentityService) {
13
+ return session ? {
14
+ providerId: session.providerId,
15
+ sessionId: session.sessionId,
16
+ chatResourceKey: uriIdentityService.extUri.getComparisonKey(session.chatResource),
17
+ } : undefined;
18
+ }
19
+ function matchesChatPhoneInputTarget(target, session, uriIdentityService) {
20
+ return target === undefined ? session === undefined : !!session
21
+ && session.providerId === target.providerId
22
+ && session.sessionId === target.sessionId
23
+ && uriIdentityService.extUri.getComparisonKey(session.chatResource) === target.chatResourceKey;
24
+ }
25
+
26
+ export { createChatPhoneInputSessionContext, createChatPhoneInputTarget, matchesChatPhoneInputTarget };
@@ -82,7 +82,7 @@ class DevContainerConnectionFactory extends Disposable {
82
82
  const authority = agentHostAuthority(entry.connection.address);
83
83
  if (connection.workspaceUri.scheme !== AGENT_HOST_SCHEME || connection.workspaceUri.authority !== authority) {
84
84
  throw ( new Error(( localize(
85
- 4266,
85
+ 4382,
86
86
  "Dev Container workspace URI must use the '{0}' scheme and '{1}' authority.",
87
87
  AGENT_HOST_SCHEME,
88
88
  authority
@@ -150,7 +150,7 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
150
150
  }
151
151
  registerConnector(connector) {
152
152
  if (this._connector) {
153
- throw ( new Error(( localize(4267, "A Dev Container Agent Host connector is already registered."))));
153
+ throw ( new Error(( localize(4383, "A Dev Container Agent Host connector is already registered."))));
154
154
  }
155
155
  this._connector = connector;
156
156
  this._onDidRegisterConnector.fire(connector);
@@ -213,7 +213,7 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
213
213
  try {
214
214
  const connector = await raceCancellationError(raceTimeout(connectorPromise, CONNECTOR_REGISTRATION_TIMEOUT_MS), token);
215
215
  if (!connector) {
216
- throw ( new Error(( localize(4268, "No Dev Container Agent Host connector is registered."))));
216
+ throw ( new Error(( localize(4384, "No Dev Container Agent Host connector is registered."))));
217
217
  }
218
218
  return connector;
219
219
  } finally {
@@ -243,7 +243,7 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
243
243
  const connection = this._remoteAgentHostService.getConnection(connectionInfo.address);
244
244
  if (!connection) {
245
245
  throw ( new Error(( localize(
246
- 4269,
246
+ 4385,
247
247
  "Dev Container Agent Host connection was not available after connecting."
248
248
  ))));
249
249
  }
@@ -340,7 +340,7 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
340
340
  const remaining = deadline - Date.now();
341
341
  if (remaining <= 0) {
342
342
  throw ( new Error(( localize(
343
- 4270,
343
+ 4386,
344
344
  "Timed out waiting for the Dev Container Agent Host to advertise agents."
345
345
  ))));
346
346
  }
@@ -352,7 +352,7 @@ let DevContainerAgentHostService = class DevContainerAgentHostService extends Di
352
352
  ), token);
353
353
  if (timedOut) {
354
354
  throw ( new Error(( localize(
355
- 4270,
355
+ 4386,
356
356
  "Timed out waiting for the Dev Container Agent Host to advertise agents."
357
357
  ))));
358
358
  }
@@ -24,7 +24,7 @@ KeybindingsRegistry.registerKeybindingRule({
24
24
  MenuRegistry.appendMenuItem(MenuId.ViewTitle, {
25
25
  command: {
26
26
  id: OpenEditorCommandId,
27
- title: ( localize2(4462, "Search")),
27
+ title: ( localize2(4578, "Search")),
28
28
  icon: Codicon.search
29
29
  },
30
30
  group: "1_files",
@@ -34,7 +34,7 @@ MenuRegistry.appendMenuItem(MenuId.ViewTitle, {
34
34
  MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, {
35
35
  command: {
36
36
  id: OpenEditorCommandId,
37
- title: ( localize(4463, "&&Search"))
37
+ title: ( localize(4579, "&&Search"))
38
38
  },
39
39
  group: "4_auxbar",
40
40
  order: 1
@@ -43,7 +43,7 @@ registerAction2(class extends Action2 {
43
43
  constructor() {
44
44
  super({
45
45
  id: "sessions.files.action.findInFolder",
46
- title: ( localize2(4464, "Find in Folder...")),
46
+ title: ( localize2(4580, "Find in Folder...")),
47
47
  menu: {
48
48
  id: MenuId.ExplorerContext,
49
49
  group: "4_search",
@@ -30,7 +30,7 @@ class SearchEditorEmptyStateContribution extends Disposable {
30
30
  return;
31
31
  }
32
32
  const container = $(".sessions-search-empty-state");
33
- renderSessionsEmptyState(container, ( localize(4465, "Search")), ( localize(4466, "Search for text in your files")));
33
+ renderSessionsEmptyState(container, ( localize(4581, "Search")), ( localize(4582, "Search for text in your files")));
34
34
  reader.store.add(editorObservable.createOverlayWidget({
35
35
  domNode: container,
36
36
  position: constObservable(null),
@@ -258,13 +258,13 @@ let BlockedSessionsIndicatorModel = class BlockedSessionsIndicatorModel extends
258
258
  getRequiresInputLabel(count, kind) {
259
259
  switch (kind) {
260
260
  case RequiresInputKind.TerminalApproval:
261
- return count === 1 ? ( localize(4498, "1 session requires terminal approval")) : ( localize(4499, "{0} sessions require terminal approval", count));
261
+ return count === 1 ? ( localize(4614, "1 session requires terminal approval")) : ( localize(4615, "{0} sessions require terminal approval", count));
262
262
  case RequiresInputKind.Question:
263
- return count === 1 ? ( localize(4500, "1 session has a question")) : ( localize(4501, "{0} sessions have questions", count));
263
+ return count === 1 ? ( localize(4616, "1 session has a question")) : ( localize(4617, "{0} sessions have questions", count));
264
264
  case RequiresInputKind.FailingCI:
265
- return count === 1 ? ( localize(4502, "1 session is failing CI")) : ( localize(4503, "{0} sessions are failing CI", count));
265
+ return count === 1 ? ( localize(4618, "1 session is failing CI")) : ( localize(4619, "{0} sessions are failing CI", count));
266
266
  default:
267
- return count === 1 ? ( localize(4504, "1 session requires input")) : ( localize(4505, "{0} sessions require input", count));
267
+ return count === 1 ? ( localize(4620, "1 session requires input")) : ( localize(4621, "{0} sessions require input", count));
268
268
  }
269
269
  }
270
270
  _ignoreOccurrence(blocked, occurrenceId) {
@@ -23,7 +23,7 @@ function registerBlockedSessionsItemActions() {
23
23
  return combinedDisposable(MenuRegistry.appendMenuItem(Menus.BlockedSessionsItem, {
24
24
  command: {
25
25
  id: IGNORE_INPUT_NEEDED_COMMAND_ID,
26
- title: ( localize(4506, "Ignore Input Needed")),
26
+ title: ( localize(4622, "Ignore Input Needed")),
27
27
  icon: Codicon.bellSlash
28
28
  },
29
29
  group: "navigation",
@@ -32,7 +32,7 @@ function registerBlockedSessionsItemActions() {
32
32
  }), MenuRegistry.appendMenuItem(Menus.BlockedSessionsItem, {
33
33
  command: {
34
34
  id: IGNORE_CI_FAILURE_COMMAND_ID,
35
- title: ( localize(4507, "Ignore CI Failure")),
35
+ title: ( localize(4623, "Ignore CI Failure")),
36
36
  icon: Codicon.bellSlash
37
37
  },
38
38
  group: "navigation",
@@ -54,7 +54,7 @@ let BlockedSessionsList = class BlockedSessionsList extends Disposable {
54
54
  const element = append(container, $(".agent-sessions-blocked-list"));
55
55
  const header = append(element, $(".agent-sessions-blocked-list-header"));
56
56
  const title = append(header, $(".agent-sessions-blocked-list-title"));
57
- title.textContent = ( localize(4508, "Sessions requiring input"));
57
+ title.textContent = ( localize(4624, "Sessions requiring input"));
58
58
  const headerActions = append(header, $(".agent-sessions-blocked-list-header-actions"));
59
59
  this._register(
60
60
  instantiationService.createInstance(MenuWorkbenchToolBar, headerActions, Menus.BlockedSessionsHeader, {
@@ -64,7 +64,7 @@ let BlockedSessionsList = class BlockedSessionsList extends Disposable {
64
64
  showAllSessions: options.onShowAllSessions,
65
65
  ignoreAllSessions: () => {
66
66
  options.onIgnoreAllSessions();
67
- status(( localize(4509, "All current blocked sessions were ignored.")));
67
+ status(( localize(4625, "All current blocked sessions were ignored.")));
68
68
  },
69
69
  close: options.onClose
70
70
  }
@@ -89,7 +89,7 @@ let BlockedSessionsList = class BlockedSessionsList extends Disposable {
89
89
  return false;
90
90
  }
91
91
  options.onIgnoreSession(session);
92
- status(action.id === IGNORE_INPUT_NEEDED_COMMAND_ID ? ( localize(4510, "Input needed ignored until this session needs input again.")) : ( localize(4511, "CI failure ignored until this session has another CI failure.")));
92
+ status(action.id === IGNORE_INPUT_NEEDED_COMMAND_ID ? ( localize(4626, "Input needed ignored until this session needs input again.")) : ( localize(4627, "CI failure ignored until this session has another CI failure.")));
93
93
  return true;
94
94
  }
95
95
  })
@@ -19,7 +19,7 @@ class ShowSessionDetailsAction extends Action2 {
19
19
  constructor() {
20
20
  super({
21
21
  id: ShowSessionDetailsAction.ID,
22
- title: ( localize2(4524, "Show Session Details")),
22
+ title: ( localize2(4640, "Show Session Details")),
23
23
  category: Categories.Developer,
24
24
  f1: true,
25
25
  precondition: ( ContextKeyExpr.and(IsSessionsWindowContext, ChatContextKeys.enabled))
@@ -29,7 +29,7 @@ class ShowSessionDetailsAction extends Action2 {
29
29
  const contents = formatSessionDetails(accessor.get(ISessionsManagementService).getSessions());
30
30
  const resource = ( URI.from({
31
31
  scheme: Schemas.untitled,
32
- path: ( localize(4525, "Session Details")),
32
+ path: ( localize(4641, "Session Details")),
33
33
  query: generateUuid()
34
34
  }));
35
35
  await accessor.get(IEditorService).openEditor({