@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.
- package/package.json +10 -10
- package/session.js +11 -0
- package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.d.ts +18 -0
- package/vscode/src/vs/platform/agentHost/common/meta/agentCheckoutOperationMeta.js +27 -0
- package/vscode/src/vs/sessions/browser/layoutActions.d.ts +1 -0
- package/vscode/src/vs/sessions/browser/layoutActions.js +146 -0
- package/vscode/src/vs/sessions/browser/parts/chatCompositeBar.js +6 -6
- package/vscode/src/vs/sessions/browser/parts/chatGroupView.js +5 -5
- package/vscode/src/vs/sessions/browser/parts/menubar.contribution.js +8 -8
- package/vscode/src/vs/sessions/browser/parts/sessionHeader.js +1 -1
- package/vscode/src/vs/sessions/browser/parts/sessionReadOnlyBanner.js +1 -1
- package/vscode/src/vs/sessions/browser/parts/sessionRemoteConnection.js +20 -20
- package/vscode/src/vs/sessions/browser/sessionsSetUpService.js +7 -7
- package/vscode/src/vs/sessions/browser/sessionsSignInDialog.js +4 -4
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/account.contribution.js +42 -42
- package/vscode/src/vs/sessions/contrib/accountMenu/browser/chatPetAchievementBadges.js +11 -11
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeView.contribution.js +18 -18
- package/vscode/src/vs/sessions/contrib/aiCustomizationTreeView/browser/aiCustomizationTreeViewViews.js +12 -12
- package/vscode/src/vs/sessions/contrib/applyCommitsToParentRepo/browser/applyChangesToParentRepo.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/applyCommitsToParentRepo/browser/applyChangesToParentRepo.js +149 -0
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquarium.contribution.js +12 -12
- package/vscode/src/vs/sessions/contrib/aquarium/browser/aquariumOverlay.js +10 -10
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +68 -68
- package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +7 -7
- package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +4 -4
- package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +2 -2
- package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +38 -38
- package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +2 -2
- package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +1 -1
- package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +6 -6
- package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +4 -4
- package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +20 -20
- package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +1 -1
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +9 -9
- package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +17 -17
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +17 -17
- package/vscode/src/vs/sessions/contrib/chat/browser/taskCommand.d.ts +44 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/taskCommand.js +111 -0
- package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +2 -2
- package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.js +75 -0
- package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +7 -7
- package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +4 -4
- package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +8 -8
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +1 -1
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +5 -5
- package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +1 -1
- package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +7 -7
- package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +1 -1
- package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +5 -5
- package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +2 -2
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneExistingSessionStrategy.js +1 -1
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +19 -19
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +4 -4
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +6 -6
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +2 -2
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +4 -4
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +24 -24
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.d.ts +26 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +98 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.d.ts +33 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +98 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.js +72 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.d.ts +2 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.js +13 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.d.ts +122 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +464 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.d.ts +35 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.js +90 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.d.ts +84 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +328 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.js +94 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.d.ts +174 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +1390 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.js +468 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.d.ts +7 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.js +48 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/media/agentHostSessionConfigPicker.css +44 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.d.ts +30 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.js +78 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.d.ts +1 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.js +345 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.d.ts +11 -0
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.js +26 -0
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +6 -6
- package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +3 -3
- package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +1 -1
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +4 -4
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +5 -5
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +2 -2
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +8 -8
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +58 -58
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +8 -8
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +5 -5
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +10 -10
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +38 -38
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +118 -118
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +53 -53
- package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.d.ts +42 -0
- package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.js +139 -0
- package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.d.ts +120 -0
- package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.js +741 -0
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +2 -2
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +2 -2
- 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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
46
|
+
title: ( localize2(4580, "Find in Folder...")),
|
|
47
47
|
menu: {
|
|
48
48
|
id: MenuId.ExplorerContext,
|
|
49
49
|
group: "4_search",
|
package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js
CHANGED
|
@@ -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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
32
|
+
path: ( localize(4641, "Session Details")),
|
|
33
33
|
query: generateUuid()
|
|
34
34
|
}));
|
|
35
35
|
await accessor.get(IEditorService).openEditor({
|