@codingame/monaco-vscode-workbench-service-override 37.3.2 → 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 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
4
|
+
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
5
|
+
import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
6
|
+
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
7
|
+
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
8
|
+
import { Action2, MenuRegistry, registerAction2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
|
|
9
|
+
import { AgentMergeSettingId, resolveAgentMergeConfiguration, agentMergeMergePullRequestValues, AGENT_MERGE_SETTING_TAG } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentMerge';
|
|
10
|
+
import { AgentHostPullRequestOperationId } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostChangesetOperationService';
|
|
11
|
+
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
12
|
+
import { ContextKeyExpr, RawContextKey } 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 { INotificationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service';
|
|
15
|
+
import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
|
|
16
|
+
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
17
|
+
import { registerWorkbenchContribution2, WorkbenchPhase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions';
|
|
18
|
+
import { IsSessionsWindowContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
|
|
19
|
+
import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
|
|
20
|
+
import { IPreferencesService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/preferences/common/preferences.service';
|
|
21
|
+
import { ANY_AGENT_HOST_PROVIDER_RE, isAgentHostProvider } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/agentHostSessionsProvider';
|
|
22
|
+
import { SessionProviderIdContext, SessionIsArchivedContext, SessionHasOpenPullRequestContext, SessionPrimaryPullRequestOperationContext, SessionAgentMergeEnabledContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
|
|
23
|
+
import { CHANGES_OPERATIONS_DROPDOWN_PRIMARY_GROUP } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/browser/changesView';
|
|
24
|
+
import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
|
|
25
|
+
import { ISessionsProvidersService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service';
|
|
26
|
+
import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
|
|
27
|
+
import { getSessionAgentMergeConfigurationObservable, getGlobalAgentMergeConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/sessionAgentMerge';
|
|
28
|
+
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
29
|
+
|
|
30
|
+
const agentMergeCommandPrecondition = ( ContextKeyExpr.and(IsSessionsWindowContext, ChatContextKeys.enabled, ( ContextKeyExpr.regex(SessionProviderIdContext.key, ANY_AGENT_HOST_PROVIDER_RE)), ( SessionIsArchivedContext.negate()), ( ContextKeyExpr.equals(`config.${AgentMergeSettingId.Enabled}`, true))));
|
|
31
|
+
const agentMergeHasPullRequest = ( ContextKeyExpr.or(SessionHasOpenPullRequestContext, ...( Object.values(AgentHostPullRequestOperationId)).map(id => ( ContextKeyExpr.equals(SessionPrimaryPullRequestOperationContext.key, id)))));
|
|
32
|
+
const agentMergeMenuPrecondition = ( ContextKeyExpr.and(agentMergeCommandPrecondition, agentMergeHasPullRequest));
|
|
33
|
+
const agentMergeOwnsPrimaryButton = ( ContextKeyExpr.or(( ContextKeyExpr.equals(
|
|
34
|
+
SessionPrimaryPullRequestOperationContext.key,
|
|
35
|
+
AgentHostPullRequestOperationId.EnableAutoMerge
|
|
36
|
+
)), ( ContextKeyExpr.equals(
|
|
37
|
+
SessionPrimaryPullRequestOperationContext.key,
|
|
38
|
+
AgentHostPullRequestOperationId.DisableAutoMerge
|
|
39
|
+
)), ( ContextKeyExpr.and(( ContextKeyExpr.equals(
|
|
40
|
+
SessionPrimaryPullRequestOperationContext.key,
|
|
41
|
+
AgentHostPullRequestOperationId.MarkReadyWithAgentMerge
|
|
42
|
+
)), SessionAgentMergeEnabledContext)), ( ContextKeyExpr.and(SessionHasOpenPullRequestContext, ( ContextKeyExpr.equals(SessionPrimaryPullRequestOperationContext.key, ""))))));
|
|
43
|
+
const AgentMergeSessionActionContexts = {
|
|
44
|
+
addressReviews: new RawContextKey("sessionAgentMergeAddressReviews", false, {
|
|
45
|
+
type: "boolean",
|
|
46
|
+
description: ( localize(
|
|
47
|
+
4259,
|
|
48
|
+
"True when Agent Merge may address reviews for the active agent session."
|
|
49
|
+
))
|
|
50
|
+
}),
|
|
51
|
+
fixCI: new RawContextKey("sessionAgentMergeFixCI", false, {
|
|
52
|
+
type: "boolean",
|
|
53
|
+
description: ( localize(
|
|
54
|
+
4260,
|
|
55
|
+
"True when Agent Merge may fix CI failures for the active agent session."
|
|
56
|
+
))
|
|
57
|
+
}),
|
|
58
|
+
resolveConflicts: new RawContextKey("sessionAgentMergeResolveConflicts", false, {
|
|
59
|
+
type: "boolean",
|
|
60
|
+
description: ( localize(
|
|
61
|
+
4261,
|
|
62
|
+
"True when Agent Merge may resolve conflicts for the active agent session."
|
|
63
|
+
))
|
|
64
|
+
})
|
|
65
|
+
};
|
|
66
|
+
const AgentMergeSessionMergePullRequestContext = new RawContextKey("sessionAgentMergeMergePullRequest", "never", {
|
|
67
|
+
type: "string",
|
|
68
|
+
description: ( localize(
|
|
69
|
+
4262,
|
|
70
|
+
"When Agent Merge may merge the pull request for the active agent session ('always', 'ifUnchanged' or 'never')."
|
|
71
|
+
))
|
|
72
|
+
});
|
|
73
|
+
const agentMergeActionLabels = {
|
|
74
|
+
addressReviews: ( localize(4263, "Address Reviews")),
|
|
75
|
+
fixCI: ( localize(4264, "Fix CI Failures")),
|
|
76
|
+
resolveConflicts: ( localize(4265, "Resolve Conflicts and Behind Branches"))
|
|
77
|
+
};
|
|
78
|
+
const agentMergeRepairActions = ( Object.keys(agentMergeActionLabels));
|
|
79
|
+
const agentMergeMergePullRequestLabels = {
|
|
80
|
+
always: ( localize(4266, "On")),
|
|
81
|
+
ifUnchanged: ( localize(4267, "Only if Agent Merge Made No Changes")),
|
|
82
|
+
never: ( localize(4268, "Off"))
|
|
83
|
+
};
|
|
84
|
+
const agentMergeMergePullRequestDescriptions = {
|
|
85
|
+
always: ( localize(4269, "Merge the pull request whenever it is ready.")),
|
|
86
|
+
ifUnchanged: ( localize(
|
|
87
|
+
4270,
|
|
88
|
+
"Merge the pull request only while Agent Merge has not changed it. Once a repair turn lands a commit this switches itself off."
|
|
89
|
+
)),
|
|
90
|
+
never: ( localize(4271, "Do not merge the pull request automatically."))
|
|
91
|
+
};
|
|
92
|
+
let AgentMergeContextContribution = class AgentMergeContextContribution extends Disposable {
|
|
93
|
+
static {
|
|
94
|
+
this.ID = "sessions.contrib.agentMergeContext";
|
|
95
|
+
}
|
|
96
|
+
constructor(
|
|
97
|
+
contextKeyService,
|
|
98
|
+
configurationService,
|
|
99
|
+
sessionsService,
|
|
100
|
+
sessionsProvidersService,
|
|
101
|
+
logService
|
|
102
|
+
) {
|
|
103
|
+
super();
|
|
104
|
+
const enabledKey = SessionAgentMergeEnabledContext.bindTo(contextKeyService);
|
|
105
|
+
const actionKeys = ( new Map(agentMergeRepairActions.map(
|
|
106
|
+
action => [action, AgentMergeSessionActionContexts[action].bindTo(contextKeyService)]
|
|
107
|
+
)));
|
|
108
|
+
const mergePullRequestKey = AgentMergeSessionMergePullRequestContext.bindTo(contextKeyService);
|
|
109
|
+
let lastLogged;
|
|
110
|
+
this._register(autorun(reader => {
|
|
111
|
+
const session = sessionsService.activeSession.read(reader);
|
|
112
|
+
const state = session ? getSessionAgentMergeConfigurationObservable(session, sessionsProvidersService, configurationService).read(reader) : undefined;
|
|
113
|
+
const enabled = state?.enabled === true;
|
|
114
|
+
const effective = state?.actions ?? getGlobalAgentMergeConfiguration(configurationService);
|
|
115
|
+
enabledKey.set(enabled);
|
|
116
|
+
for (const [action, key] of actionKeys) {
|
|
117
|
+
key.set(effective[action]);
|
|
118
|
+
}
|
|
119
|
+
mergePullRequestKey.set(effective.mergePullRequest);
|
|
120
|
+
const authorized = agentMergeRepairActions.filter(action => effective[action]);
|
|
121
|
+
const signature = `${session?.sessionId ?? "none"}|${enabled}|${authorized.join(",")}|${effective.mergePullRequest}`;
|
|
122
|
+
if (lastLogged !== signature) {
|
|
123
|
+
lastLogged = signature;
|
|
124
|
+
logService.info(
|
|
125
|
+
`[AgentMergeActions] Session state: session=${session?.sessionId ?? "none"}, enabled=${enabled}, authorizedActions=[${authorized.join(", ") || "none"}], mergePullRequest=${effective.mergePullRequest}`
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
AgentMergeContextContribution = ( __decorate([( __param(0, IContextKeyService)), ( __param(1, IConfigurationService)), ( __param(2, ISessionsService)), ( __param(3, ISessionsProvidersService)), ( __param(4, ILogService))], AgentMergeContextContribution));
|
|
132
|
+
registerWorkbenchContribution2(
|
|
133
|
+
AgentMergeContextContribution.ID,
|
|
134
|
+
AgentMergeContextContribution,
|
|
135
|
+
WorkbenchPhase.AfterRestored
|
|
136
|
+
);
|
|
137
|
+
class AgentMergeActionBase extends Action2 {
|
|
138
|
+
getActiveSession(accessor) {
|
|
139
|
+
const session = accessor.get(ISessionsService).activeSession.get();
|
|
140
|
+
const provider = session && accessor.get(ISessionsProvidersService).getProvider(session.providerId);
|
|
141
|
+
return session && provider && isAgentHostProvider(provider) ? {
|
|
142
|
+
session,
|
|
143
|
+
provider
|
|
144
|
+
} : undefined;
|
|
145
|
+
}
|
|
146
|
+
async updateOverrides(accessor, patch) {
|
|
147
|
+
const active = this.getActiveSession(accessor);
|
|
148
|
+
if (!active) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const configurationService = accessor.get(IConfigurationService);
|
|
152
|
+
const logService = accessor.get(ILogService);
|
|
153
|
+
const state = active.provider.getAgentMergeSessionState(active.session.sessionId);
|
|
154
|
+
const effective = resolveAgentMergeConfiguration(getGlobalAgentMergeConfiguration(configurationService), state?.overrides);
|
|
155
|
+
const overrides = {
|
|
156
|
+
addressReviews: effective.addressReviews,
|
|
157
|
+
fixCI: effective.fixCI,
|
|
158
|
+
resolveConflicts: effective.resolveConflicts,
|
|
159
|
+
mergePullRequest: effective.mergePullRequest,
|
|
160
|
+
...patch
|
|
161
|
+
};
|
|
162
|
+
await active.provider.setAgentMergeOverrides(active.session.sessionId, overrides);
|
|
163
|
+
logService.info(
|
|
164
|
+
`[AgentMergeActions] Overrides updated: session=${active.session.sessionId}, change=${JSON.stringify(patch)}`
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
MenuRegistry.appendMenuItem(Menus.ChangesOperationsDropdown, {
|
|
169
|
+
submenu: Menus.ChangesAgentMerge,
|
|
170
|
+
title: ( localize2(4272, "Agent Merge")),
|
|
171
|
+
icon: Codicon.gitMerge,
|
|
172
|
+
group: CHANGES_OPERATIONS_DROPDOWN_PRIMARY_GROUP,
|
|
173
|
+
order: 1,
|
|
174
|
+
when: ( ContextKeyExpr.and(agentMergeMenuPrecondition, agentMergeOwnsPrimaryButton))
|
|
175
|
+
});
|
|
176
|
+
const agentMergeTopLevelMenus = [Menus.ChangesOperationsDropdown, Menus.ChangesAgentMerge];
|
|
177
|
+
registerAction2(class EnableAgentMergeInSessionAction extends AgentMergeActionBase {
|
|
178
|
+
constructor() {
|
|
179
|
+
super({
|
|
180
|
+
id: "sessions.agentHost.agentMerge.enableInSession",
|
|
181
|
+
title: ( localize2(4273, "Enable Agent Merge")),
|
|
182
|
+
f1: false,
|
|
183
|
+
menu: agentMergeTopLevelMenus.map(id => ({
|
|
184
|
+
id,
|
|
185
|
+
group: "1_agentMerge",
|
|
186
|
+
order: 1,
|
|
187
|
+
when: ( ContextKeyExpr.and(agentMergeMenuPrecondition, ( SessionAgentMergeEnabledContext.negate())))
|
|
188
|
+
}))
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
async run(accessor) {
|
|
192
|
+
const active = this.getActiveSession(accessor);
|
|
193
|
+
const logService = accessor.get(ILogService);
|
|
194
|
+
if (!active) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
await active.provider.setAgentMergeEnabled(active.session.sessionId, true);
|
|
198
|
+
logService.info(
|
|
199
|
+
`[AgentMergeActions] Enabled from the title bar: session=${active.session.sessionId}`
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
registerAction2(class DisableAgentMergeInSessionAction extends AgentMergeActionBase {
|
|
204
|
+
constructor() {
|
|
205
|
+
super({
|
|
206
|
+
id: "sessions.agentHost.agentMerge.disableInSession",
|
|
207
|
+
title: ( localize2(4274, "Disable Agent Merge")),
|
|
208
|
+
f1: false,
|
|
209
|
+
menu: agentMergeTopLevelMenus.map(id => ({
|
|
210
|
+
id,
|
|
211
|
+
group: "1_agentMerge",
|
|
212
|
+
order: 1,
|
|
213
|
+
when: ( ContextKeyExpr.and(agentMergeMenuPrecondition, SessionAgentMergeEnabledContext))
|
|
214
|
+
}))
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
async run(accessor) {
|
|
218
|
+
const active = this.getActiveSession(accessor);
|
|
219
|
+
const logService = accessor.get(ILogService);
|
|
220
|
+
if (!active) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
await active.provider.setAgentMergeEnabled(active.session.sessionId, false);
|
|
224
|
+
logService.info(
|
|
225
|
+
`[AgentMergeActions] Disabled from the title bar: session=${active.session.sessionId}`
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
for (const id of agentMergeTopLevelMenus) {
|
|
230
|
+
MenuRegistry.appendMenuItem(id, {
|
|
231
|
+
submenu: Menus.ChangesAgentMergeConfigure,
|
|
232
|
+
title: ( localize2(4275, "Configure Agent Merge")),
|
|
233
|
+
group: "1_agentMerge",
|
|
234
|
+
order: 2,
|
|
235
|
+
when: agentMergeMenuPrecondition
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
for (const [index, action] of agentMergeRepairActions.entries()) {
|
|
239
|
+
registerAction2(class ToggleAgentMergeRepairAction extends AgentMergeActionBase {
|
|
240
|
+
constructor() {
|
|
241
|
+
super({
|
|
242
|
+
id: `sessions.agentHost.agentMerge.toggle.${action}`,
|
|
243
|
+
title: {
|
|
244
|
+
value: agentMergeActionLabels[action],
|
|
245
|
+
original: agentMergeActionLabels[action]
|
|
246
|
+
},
|
|
247
|
+
toggled: AgentMergeSessionActionContexts[action],
|
|
248
|
+
f1: false,
|
|
249
|
+
menu: [{
|
|
250
|
+
id: Menus.ChangesAgentMergeConfigure,
|
|
251
|
+
group: "1_agentMergeActions",
|
|
252
|
+
order: index,
|
|
253
|
+
when: agentMergeMenuPrecondition
|
|
254
|
+
}]
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
async run(accessor) {
|
|
258
|
+
const active = this.getActiveSession(accessor);
|
|
259
|
+
if (!active) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
const state = active.provider.getAgentMergeSessionState(active.session.sessionId);
|
|
263
|
+
const effective = resolveAgentMergeConfiguration(
|
|
264
|
+
getGlobalAgentMergeConfiguration(accessor.get(IConfigurationService)),
|
|
265
|
+
state?.overrides
|
|
266
|
+
);
|
|
267
|
+
await this.updateOverrides(accessor, {
|
|
268
|
+
[action]: !effective[action]
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
for (const value of agentMergeMergePullRequestValues) {
|
|
274
|
+
MenuRegistry.appendMenuItem(Menus.ChangesAgentMergeConfigure, mergePullRequestSubmenuItem(value));
|
|
275
|
+
}
|
|
276
|
+
function mergePullRequestSubmenuItem(value) {
|
|
277
|
+
const title = ( localize(4276, "Merge Pull Request ({0})", agentMergeMergePullRequestLabels[value]));
|
|
278
|
+
return {
|
|
279
|
+
submenu: Menus.ChangesAgentMergeMergePullRequest,
|
|
280
|
+
title: {
|
|
281
|
+
value: title,
|
|
282
|
+
original: title
|
|
283
|
+
},
|
|
284
|
+
group: "1_agentMergeActions",
|
|
285
|
+
order: agentMergeRepairActions.length,
|
|
286
|
+
when: ( ContextKeyExpr.and(agentMergeMenuPrecondition, ( AgentMergeSessionMergePullRequestContext.isEqualTo(value))))
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
for (const [index, value] of agentMergeMergePullRequestValues.entries()) {
|
|
290
|
+
registerAction2(class SetAgentMergeMergePullRequestAction extends AgentMergeActionBase {
|
|
291
|
+
constructor() {
|
|
292
|
+
super({
|
|
293
|
+
id: `sessions.agentHost.agentMerge.mergePullRequest.${value}`,
|
|
294
|
+
title: {
|
|
295
|
+
value: agentMergeMergePullRequestLabels[value],
|
|
296
|
+
original: agentMergeMergePullRequestLabels[value]
|
|
297
|
+
},
|
|
298
|
+
tooltip: agentMergeMergePullRequestDescriptions[value],
|
|
299
|
+
toggled: ( AgentMergeSessionMergePullRequestContext.isEqualTo(value)),
|
|
300
|
+
f1: false,
|
|
301
|
+
menu: [{
|
|
302
|
+
id: Menus.ChangesAgentMergeMergePullRequest,
|
|
303
|
+
group: "navigation",
|
|
304
|
+
order: index
|
|
305
|
+
}]
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
async run(accessor) {
|
|
309
|
+
await this.updateOverrides(accessor, {
|
|
310
|
+
mergePullRequest: value
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
registerAction2(class OpenAgentMergeDefaultsAction extends Action2 {
|
|
316
|
+
constructor() {
|
|
317
|
+
super({
|
|
318
|
+
id: "sessions.agentHost.agentMerge.openDefaults",
|
|
319
|
+
title: ( localize2(4277, "Agent Merge Defaults")),
|
|
320
|
+
f1: false,
|
|
321
|
+
menu: [{
|
|
322
|
+
id: Menus.ChangesAgentMergeConfigure,
|
|
323
|
+
group: "2_agentMergeDefaults",
|
|
324
|
+
order: 1,
|
|
325
|
+
when: agentMergeMenuPrecondition
|
|
326
|
+
}]
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
async run(accessor) {
|
|
330
|
+
const preferencesService = accessor.get(IPreferencesService);
|
|
331
|
+
const logService = accessor.get(ILogService);
|
|
332
|
+
await preferencesService.openSettings({
|
|
333
|
+
jsonEditor: false,
|
|
334
|
+
query: `@tag:${AGENT_MERGE_SETTING_TAG}`
|
|
335
|
+
});
|
|
336
|
+
logService.trace(`[AgentMergeActions] Opened Agent Merge defaults in the settings editor`);
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
registerAction2(class EnableAgentMergeAction extends AgentMergeActionBase {
|
|
340
|
+
constructor() {
|
|
341
|
+
super({
|
|
342
|
+
id: "sessions.agentHost.agentMerge.enable",
|
|
343
|
+
title: ( localize2(4278, "Enable Agent Merge for Active Session")),
|
|
344
|
+
f1: true,
|
|
345
|
+
precondition: ( ContextKeyExpr.and(agentMergeCommandPrecondition, ( SessionAgentMergeEnabledContext.negate())))
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
async run(accessor) {
|
|
349
|
+
const active = this.getActiveSession(accessor);
|
|
350
|
+
if (!active) {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
const logService = accessor.get(ILogService);
|
|
354
|
+
const notificationService = accessor.get(INotificationService);
|
|
355
|
+
await active.provider.setAgentMergeEnabled(active.session.sessionId, true);
|
|
356
|
+
logService.info(
|
|
357
|
+
`[AgentMergeActions] Enable requested: session=${active.session.sessionId}, provider=${active.session.providerId}`
|
|
358
|
+
);
|
|
359
|
+
notificationService.info(( localize(4279, "Agent Merge is enabled for the active session.")));
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
registerAction2(class DisableAgentMergeAction extends AgentMergeActionBase {
|
|
363
|
+
constructor() {
|
|
364
|
+
super({
|
|
365
|
+
id: "sessions.agentHost.agentMerge.disable",
|
|
366
|
+
title: ( localize2(4280, "Disable Agent Merge for Active Session")),
|
|
367
|
+
f1: true,
|
|
368
|
+
precondition: ( ContextKeyExpr.and(agentMergeCommandPrecondition, SessionAgentMergeEnabledContext))
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
async run(accessor) {
|
|
372
|
+
const active = this.getActiveSession(accessor);
|
|
373
|
+
if (!active) {
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
const logService = accessor.get(ILogService);
|
|
377
|
+
const notificationService = accessor.get(INotificationService);
|
|
378
|
+
await active.provider.setAgentMergeEnabled(active.session.sessionId, false);
|
|
379
|
+
logService.info(
|
|
380
|
+
`[AgentMergeActions] Disable requested: session=${active.session.sessionId}, provider=${active.session.providerId}`
|
|
381
|
+
);
|
|
382
|
+
notificationService.info(( localize(4281, "Agent Merge is disabled for the active session.")));
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
registerAction2(class ConfigureAgentMergeAction extends AgentMergeActionBase {
|
|
386
|
+
constructor() {
|
|
387
|
+
super({
|
|
388
|
+
id: "sessions.agentHost.agentMerge.configure",
|
|
389
|
+
title: ( localize2(4282, "Configure Agent Merge for Active Session")),
|
|
390
|
+
f1: true,
|
|
391
|
+
precondition: agentMergeCommandPrecondition
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
async run(accessor) {
|
|
395
|
+
const active = this.getActiveSession(accessor);
|
|
396
|
+
if (!active) {
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
const configurationService = accessor.get(IConfigurationService);
|
|
400
|
+
const quickInputService = accessor.get(IQuickInputService);
|
|
401
|
+
const logService = accessor.get(ILogService);
|
|
402
|
+
const notificationService = accessor.get(INotificationService);
|
|
403
|
+
const defaults = getGlobalAgentMergeConfiguration(configurationService);
|
|
404
|
+
const current = active.provider.getAgentMergeSessionState(active.session.sessionId);
|
|
405
|
+
const effective = resolveAgentMergeConfiguration(defaults, current?.overrides);
|
|
406
|
+
const picks = agentMergeRepairActions.map(action => ({
|
|
407
|
+
action,
|
|
408
|
+
label: agentMergeActionLabels[action],
|
|
409
|
+
picked: effective[action]
|
|
410
|
+
}));
|
|
411
|
+
const result = await pickAgentMergeActions(quickInputService, picks);
|
|
412
|
+
if (!result) {
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
const overrides = result.reset ? undefined : toOverrides(result.actions, effective.mergePullRequest);
|
|
416
|
+
await active.provider.setAgentMergeOverrides(active.session.sessionId, overrides);
|
|
417
|
+
logService.info(
|
|
418
|
+
`[AgentMergeActions] Action overrides updated: session=${active.session.sessionId}, provider=${active.session.providerId}, reset=${result.reset}, enabledActions=${[...result.actions].sort().join(",") || "none"}`
|
|
419
|
+
);
|
|
420
|
+
notificationService.info(result.reset ? ( localize(
|
|
421
|
+
4283,
|
|
422
|
+
"Agent Merge now follows the global action defaults for this session."
|
|
423
|
+
)) : ( localize(4284, "Agent Merge actions were updated for the active session.")));
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
function pickAgentMergeActions(quickInputService, picks) {
|
|
427
|
+
const store = ( new DisposableStore());
|
|
428
|
+
return (new Promise(resolve => {
|
|
429
|
+
const quickPick = store.add(quickInputService.createQuickPick());
|
|
430
|
+
quickPick.title = ( localize(4285, "Agent Merge"));
|
|
431
|
+
quickPick.placeholder = ( localize(4286, "Select actions Agent Merge may perform for this session"));
|
|
432
|
+
quickPick.canSelectMany = true;
|
|
433
|
+
quickPick.items = picks;
|
|
434
|
+
quickPick.selectedItems = picks.filter(pick => pick.picked);
|
|
435
|
+
quickPick.buttons = [{
|
|
436
|
+
iconClass: ThemeIcon.asClassName(Codicon.discard),
|
|
437
|
+
tooltip: ( localize(4287, "Reset to Global Defaults"))
|
|
438
|
+
}];
|
|
439
|
+
store.add(quickPick.onDidTriggerButton(() => {
|
|
440
|
+
resolve({
|
|
441
|
+
reset: true,
|
|
442
|
+
actions: ( new Set())
|
|
443
|
+
});
|
|
444
|
+
quickPick.hide();
|
|
445
|
+
}));
|
|
446
|
+
store.add(quickPick.onDidAccept(() => {
|
|
447
|
+
resolve({
|
|
448
|
+
reset: false,
|
|
449
|
+
actions: ( new Set(quickPick.selectedItems.map(item => item.action)))
|
|
450
|
+
});
|
|
451
|
+
quickPick.hide();
|
|
452
|
+
}));
|
|
453
|
+
store.add(quickPick.onDidHide(() => {
|
|
454
|
+
resolve(undefined);
|
|
455
|
+
store.dispose();
|
|
456
|
+
}));
|
|
457
|
+
quickPick.show();
|
|
458
|
+
}));
|
|
459
|
+
}
|
|
460
|
+
function toOverrides(selected, mergePullRequest) {
|
|
461
|
+
const overrides = {
|
|
462
|
+
mergePullRequest
|
|
463
|
+
};
|
|
464
|
+
for (const action of agentMergeRepairActions) {
|
|
465
|
+
overrides[action] = ( selected.has(action));
|
|
466
|
+
}
|
|
467
|
+
return overrides;
|
|
468
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Action2 } from "@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions";
|
|
2
|
+
import { ServicesAccessor } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
3
|
+
export declare class ExportAgentHostDebugLogsAction extends Action2 {
|
|
4
|
+
static readonly ID = "agentHost.exportDebugLogs";
|
|
5
|
+
constructor();
|
|
6
|
+
run(accessor: ServicesAccessor): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
|
|
2
|
+
import { localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
3
|
+
import { Categories } from '@codingame/monaco-vscode-api/vscode/vs/platform/action/common/actionCommonCategories';
|
|
4
|
+
import { Action2, registerAction2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
|
|
5
|
+
import { AGENT_HOST_ENABLED_CONTEXT_KEY } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostEnablementService';
|
|
6
|
+
import { DEFAULT_CHAT_ID } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/sessionState';
|
|
7
|
+
import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
8
|
+
import { IsSessionsWindowContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
|
|
9
|
+
import { exportAgentHostDebugLogs } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction';
|
|
10
|
+
import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
|
|
11
|
+
import { isAgentHostProvider } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/agentHostSessionsProvider';
|
|
12
|
+
import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
|
|
13
|
+
import { ISessionsProvidersService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service';
|
|
14
|
+
|
|
15
|
+
class ExportAgentHostDebugLogsAction extends Action2 {
|
|
16
|
+
static {
|
|
17
|
+
this.ID = "agentHost.exportDebugLogs";
|
|
18
|
+
}
|
|
19
|
+
constructor() {
|
|
20
|
+
super({
|
|
21
|
+
id: ExportAgentHostDebugLogsAction.ID,
|
|
22
|
+
title: ( localize2(4306, "Export Agent Host Debug Logs...")),
|
|
23
|
+
f1: true,
|
|
24
|
+
category: Categories.Developer,
|
|
25
|
+
precondition: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( ContextKeyExpr.or(IsSessionsWindowContext, AGENT_HOST_ENABLED_CONTEXT_KEY))))
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async run(accessor) {
|
|
29
|
+
const sessionsService = accessor.get(ISessionsService);
|
|
30
|
+
const sessionsProvidersService = accessor.get(ISessionsProvidersService);
|
|
31
|
+
const activeSession = sessionsService.activeSession.get();
|
|
32
|
+
const provider = activeSession ? sessionsProvidersService.getProvider(activeSession.providerId) : undefined;
|
|
33
|
+
const activeProvider = provider && isAgentHostProvider(provider) ? provider : undefined;
|
|
34
|
+
const activeChat = activeSession?.activeChat.get();
|
|
35
|
+
const activeSessionContext = activeSession && activeProvider ? {
|
|
36
|
+
resource: activeSession.resource,
|
|
37
|
+
sessionTitle: activeSession.title.get(),
|
|
38
|
+
chatTitle: activeChat?.title.get(),
|
|
39
|
+
isLocal: activeSession.resource.scheme.startsWith("agent-host-"),
|
|
40
|
+
chatId: activeChat?.resource.fragment || DEFAULT_CHAT_ID,
|
|
41
|
+
backendChatResource: activeChat ? activeProvider.getBackendChatResource(activeChat.resource) : undefined
|
|
42
|
+
} : undefined;
|
|
43
|
+
await exportAgentHostDebugLogs(accessor, activeSessionContext);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
registerAction2(ExportAgentHostDebugLogsAction);
|
|
47
|
+
|
|
48
|
+
export { ExportAgentHostDebugLogsAction };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
|
|
6
|
+
.sessions-chat-agent-host-config {
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
/* Each config control carries its own surface, so they need a gap. */
|
|
10
|
+
gap: var(--vscode-spacing-size20);
|
|
11
|
+
min-width: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.monaco-workbench .sessions-chat-agent-host-config-host[tabindex]:focus {
|
|
15
|
+
outline: none;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.sessions-chat-agent-host-config:empty {
|
|
19
|
+
display: none;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.sessions-chat-agent-host-config a.action-label {
|
|
23
|
+
touch-action: manipulation;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.sessions-chat-agent-host-config .sessions-chat-config-checkbox .action-label {
|
|
27
|
+
cursor: pointer;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.sessions-chat-agent-host-config .sessions-chat-config-checkbox .monaco-checkbox {
|
|
31
|
+
margin-right: var(--vscode-spacing-size60);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.sessions-chat-agent-host-config .sessions-chat-config-checkbox .sessions-chat-dropdown-label {
|
|
35
|
+
margin-left: 0;
|
|
36
|
+
cursor: pointer;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.sessions-chat-agent-host-config .sessions-chat-config-checkbox.disabled .action-label,
|
|
40
|
+
.sessions-chat-agent-host-config .sessions-chat-config-checkbox.disabled .sessions-chat-dropdown-label,
|
|
41
|
+
.sessions-chat-agent-host-config .sessions-chat-config-checkbox.resolving .action-label,
|
|
42
|
+
.sessions-chat-agent-host-config .sessions-chat-config-checkbox.resolving .sessions-chat-dropdown-label {
|
|
43
|
+
cursor: default;
|
|
44
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IActionWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionWidget.service";
|
|
2
|
+
import { IActionListOptions } from "@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionList";
|
|
3
|
+
import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
|
|
4
|
+
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
5
|
+
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
6
|
+
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
7
|
+
import { IPreferencesService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/preferences/common/preferences.service";
|
|
8
|
+
import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
|
|
9
|
+
import { IChatPhoneInputPresenter } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.service";
|
|
10
|
+
import { IChatPetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatPetService.service";
|
|
11
|
+
import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
|
|
12
|
+
import { ISessionsProvidersService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service";
|
|
13
|
+
import { IActiveSession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement";
|
|
14
|
+
import { AgentHostModePicker } from "../agentHostModePicker.js";
|
|
15
|
+
/**
|
|
16
|
+
* Phone-aware variant of {@link AgentHostModePicker}. On phone-layout
|
|
17
|
+
* viewports the desktop action-widget popover is replaced with the same
|
|
18
|
+
* combined Mode + Model bottom sheet used by the workbench picker button and the
|
|
19
|
+
* empty new-chat picker (see {@link IChatPhoneInputPresenter}). On
|
|
20
|
+
* desktop the inherited `_showPicker` falls through to the base
|
|
21
|
+
* implementation, so this class is safe to keep through viewport-class
|
|
22
|
+
* transitions.
|
|
23
|
+
*/
|
|
24
|
+
export declare class MobileAgentHostModePicker extends AgentHostModePicker {
|
|
25
|
+
private readonly _phonePresenter;
|
|
26
|
+
private readonly _chatWidgetService;
|
|
27
|
+
protected readonly _chatPetService: IChatPetService;
|
|
28
|
+
constructor(session: IObservable<IActiveSession | undefined>, actionWidgetService: IActionWidgetService, sessionsProvidersService: ISessionsProvidersService, telemetryService: ITelemetryService, hoverService: IHoverService, _phonePresenter: IChatPhoneInputPresenter, _chatWidgetService: IChatWidgetService, _chatPetService: IChatPetService, instantiationService: IInstantiationService, configurationService: IConfigurationService, preferencesService: IPreferencesService);
|
|
29
|
+
protected _showPicker(anchor?: HTMLElement | undefined, onHide?: () => void, listOptions?: IActionListOptions): boolean;
|
|
30
|
+
}
|