@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,33 @@
1
+ import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
2
+ import { ThemeIcon } from "@codingame/monaco-vscode-api/vscode/vs/base/common/themables";
3
+ import { IActionListItem, IActionListOptions } from "@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionList";
4
+ import { IActionWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionWidget.service";
5
+ import { CodexSessionConfigKey } from "@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/codexSessionConfigKeys";
6
+ import { SessionConfigPropertySchema } from "@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/commands";
7
+ import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
8
+ import { IOpenerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service";
9
+ import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
10
+ import { ISessionsProvidersService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service";
11
+ import { IActiveSession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement";
12
+ import { AgentHostSessionEnumPicker, IAgentHostSessionEnumPickerItem } from "./agentHostModePicker.js";
13
+ /**
14
+ * Picker widget for the Codex `codex.permissionsPreset` session-config
15
+ * property. Codex collapses its three security axes (sandbox × approval policy
16
+ * × approvals reviewer) into a single user-facing preset, so this presents one
17
+ * "Approvals" chip whose options mirror the Codex app's permissions selector.
18
+ */
19
+ export declare class AgentHostCodexApprovalsPicker extends AgentHostSessionEnumPicker {
20
+ private readonly _openerService;
21
+ protected readonly _property = CodexSessionConfigKey.PermissionsPreset;
22
+ protected readonly _pickerId = "agentHostCodexApprovalsPicker";
23
+ protected readonly _telemetryId = "NewChatAgentHostCodexApprovalsPicker";
24
+ constructor(session: IObservable<IActiveSession | undefined>, actionWidgetService: IActionWidgetService, sessionsProvidersService: ISessionsProvidersService, telemetryService: ITelemetryService, hoverService: IHoverService, _openerService: IOpenerService);
25
+ protected _isWellKnownSchema(schema: SessionConfigPropertySchema): boolean;
26
+ protected _getTriggerIcon(value: string | undefined): ThemeIcon | undefined;
27
+ protected _getActionItemIcon(item: IAgentHostSessionEnumPickerItem): ThemeIcon | undefined;
28
+ protected _getTriggerAriaLabel(label: string): string;
29
+ protected _getWidgetAriaLabel(): string;
30
+ protected _getListOptions(): IActionListOptions;
31
+ protected _getFooterActionItems(): readonly IActionListItem<IAgentHostSessionEnumPickerItem>[];
32
+ protected _handleFooterActionItem(item: IAgentHostSessionEnumPickerItem): boolean;
33
+ }
@@ -0,0 +1,98 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
4
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
5
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
6
+ import { ActionListItemKind } from '@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionList';
7
+ import { IActionWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionWidget.service';
8
+ import { getCodexApprovalsPickerListOptions } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/browser/codexApprovalsPicker';
9
+ import { CodexSessionConfigKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/codexSessionConfigKeys';
10
+ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
11
+ import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
12
+ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
13
+ import { ISessionsProvidersService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service';
14
+ import { AgentHostSessionEnumPicker } from './agentHostModePicker.js';
15
+ import { isWellKnownCodexApprovalsSchema } from './agentHostPermissionPickerDelegate.js';
16
+
17
+ const CODEX_APPROVALS_LEARN_MORE_URL = "https://developers.openai.com/codex/concepts/sandboxing#how-you-control-it";
18
+ const LEARN_MORE_VALUE = "__agentHostCodexApprovalsPicker.learnMore__";
19
+ function getCodexApprovalsIcon(value) {
20
+ switch (value) {
21
+ case "default":
22
+ return Codicon.shield;
23
+ case "auto-review":
24
+ return Codicon.sparkle;
25
+ case "full-access":
26
+ return Codicon.warning;
27
+ default:
28
+ return undefined;
29
+ }
30
+ }
31
+ let AgentHostCodexApprovalsPicker = class AgentHostCodexApprovalsPicker extends AgentHostSessionEnumPicker {
32
+ constructor(
33
+ session,
34
+ actionWidgetService,
35
+ sessionsProvidersService,
36
+ telemetryService,
37
+ hoverService,
38
+ _openerService
39
+ ) {
40
+ super(
41
+ session,
42
+ actionWidgetService,
43
+ sessionsProvidersService,
44
+ telemetryService,
45
+ hoverService
46
+ );
47
+ this._openerService = _openerService;
48
+ this._property = CodexSessionConfigKey.PermissionsPreset;
49
+ this._pickerId = "agentHostCodexApprovalsPicker";
50
+ this._telemetryId = "NewChatAgentHostCodexApprovalsPicker";
51
+ }
52
+ _isWellKnownSchema(schema) {
53
+ return isWellKnownCodexApprovalsSchema(schema);
54
+ }
55
+ _getTriggerIcon(value) {
56
+ return getCodexApprovalsIcon(value);
57
+ }
58
+ _getActionItemIcon(item) {
59
+ return getCodexApprovalsIcon(item.value);
60
+ }
61
+ _getTriggerAriaLabel(label) {
62
+ return localize(4193, "Pick Approvals, {0}", label);
63
+ }
64
+ _getWidgetAriaLabel() {
65
+ return localize(4194, "Approvals Picker");
66
+ }
67
+ _getListOptions() {
68
+ return getCodexApprovalsPickerListOptions();
69
+ }
70
+ _getFooterActionItems() {
71
+ const learnMoreLabel = ( localize(4195, "Learn more about permissions"));
72
+ return [{
73
+ kind: ActionListItemKind.Separator,
74
+ label: ""
75
+ }, {
76
+ kind: ActionListItemKind.Action,
77
+ label: learnMoreLabel,
78
+ group: {
79
+ title: "",
80
+ icon: Codicon.blank
81
+ },
82
+ item: {
83
+ value: LEARN_MORE_VALUE,
84
+ label: learnMoreLabel
85
+ }
86
+ }];
87
+ }
88
+ _handleFooterActionItem(item) {
89
+ if (item.value !== LEARN_MORE_VALUE) {
90
+ return false;
91
+ }
92
+ void this._openerService.open(( URI.parse(CODEX_APPROVALS_LEARN_MORE_URL)));
93
+ return true;
94
+ }
95
+ };
96
+ AgentHostCodexApprovalsPicker = ( __decorate([( __param(1, IActionWidgetService)), ( __param(2, ISessionsProvidersService)), ( __param(3, ITelemetryService)), ( __param(4, IHoverService)), ( __param(5, IOpenerService))], AgentHostCodexApprovalsPicker));
97
+
98
+ export { AgentHostCodexApprovalsPicker };
@@ -0,0 +1,72 @@
1
+
2
+ import { raceTimeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
3
+ import { registerAction2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
4
+ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
5
+ import { ForkConversationAction } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/actions/chatForkActions';
6
+ import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
7
+ import { isAgentHostProviderId } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/agentHostSessionsProvider';
8
+ import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
9
+ import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
10
+
11
+ registerAction2(class extends ForkConversationAction {
12
+ async _tryForkAsChat(instantiationService, sourceSessionResource, request) {
13
+ return instantiationService.invokeFunction(async accessor => {
14
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
15
+ const sessionsService = accessor.get(ISessionsService);
16
+ const chatService = accessor.get(IChatService);
17
+ const logService = accessor.get(ILogService);
18
+ const session = sessionsManagementService.getSession(sourceSessionResource) ?? sessionsManagementService.getSessions().find(s => ( s.chats.get().some(c => ( c.resource.toString()) === ( sourceSessionResource.toString()))));
19
+ if (!session?.capabilities.get().supportsMultipleChats || !isAgentHostProviderId(session.providerId)) {
20
+ return false;
21
+ }
22
+ const requests = chatService.getSession(sourceSessionResource)?.getRequests();
23
+ let turnId;
24
+ if (request) {
25
+ const requestIdx = requests?.findIndex(r => r.id === request.id) ?? -1;
26
+ if (requestIdx <= 0) {
27
+ return false;
28
+ }
29
+ turnId = requests[requestIdx - 1].id;
30
+ } else {
31
+ turnId = requests?.at(-1)?.id;
32
+ }
33
+ if (!turnId) {
34
+ return false;
35
+ }
36
+ const newChat = await sessionsManagementService.forkChatInSession(session, sourceSessionResource, turnId);
37
+ await sessionsService.openChat(session, newChat.resource);
38
+ logService.trace(`[AgentHostSessions] Forked conversation into new chat ${( newChat.resource.toString())} in session ${session.sessionId}`);
39
+ return true;
40
+ });
41
+ }
42
+ _openForkedSession(instantiationService, parentSessionResource, forkedSessionResource) {
43
+ return instantiationService.invokeFunction(async accessor => {
44
+ const sessionsManagementService = accessor.get(ISessionsManagementService);
45
+ const sessionsService = accessor.get(ISessionsService);
46
+ const logService = accessor.get(ILogService);
47
+ const parentSession = sessionsManagementService.getSession(parentSessionResource);
48
+ if (!parentSession) {
49
+ logService.error(`Parent session ${( parentSessionResource.toString())} not found when forking conversation`);
50
+ return super._openForkedSession(instantiationService, parentSessionResource, forkedSessionResource);
51
+ }
52
+ if (!sessionsManagementService.getSession(forkedSessionResource)) {
53
+ let listener;
54
+ const appeared = await raceTimeout(( new Promise(resolve => {
55
+ listener = sessionsManagementService.onDidChangeSessions(() => {
56
+ if (sessionsManagementService.getSession(forkedSessionResource)) {
57
+ resolve(true);
58
+ }
59
+ });
60
+ })), 30_000);
61
+ listener?.dispose();
62
+ if (!appeared) {
63
+ logService.error(`Forked session ${( forkedSessionResource.toString())} did not appear within timeout`);
64
+ return;
65
+ }
66
+ }
67
+ await sessionsService.openSession(forkedSessionResource, {
68
+ source: "fork"
69
+ });
70
+ });
71
+ }
72
+ });
@@ -0,0 +1,2 @@
1
+ import { ThemeIcon } from "@codingame/monaco-vscode-api/vscode/vs/base/common/themables";
2
+ export declare function getAgentHostModeIcon(value: string | undefined): ThemeIcon | undefined;
@@ -0,0 +1,13 @@
1
+
2
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
3
+
4
+ function getAgentHostModeIcon(value) {
5
+ switch (value) {
6
+ case 'plan': return Codicon.checklist;
7
+ case 'autopilot': return Codicon.rocket;
8
+ case 'interactive': return Codicon.comment;
9
+ default: return undefined;
10
+ }
11
+ }
12
+
13
+ export { getAgentHostModeIcon };
@@ -0,0 +1,122 @@
1
+ import { IListAccessibilityProvider } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/list/listWidget";
2
+ import { IAction } from "@codingame/monaco-vscode-api/vscode/vs/base/common/actions";
3
+ import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
4
+ import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
5
+ import { ThemeIcon } from "@codingame/monaco-vscode-api/vscode/vs/base/common/themables";
6
+ import { IActionListItem, IActionListOptions } from "@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionList";
7
+ import { IActionWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionWidget.service";
8
+ import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
9
+ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
10
+ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
11
+ import { SessionConfigKey } from "@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/sessionConfigKeys";
12
+ import { SessionConfigPropertySchema } from "@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/commands";
13
+ import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
14
+ import { type IAgentHostSessionsProvider } from "@codingame/monaco-vscode-api/vscode/vs/sessions/common/agentHostSessionsProvider";
15
+ import { ISessionsProvidersService } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsProvidersService.service";
16
+ import { IActiveSession } from "@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement";
17
+ import { IChatPetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatPetService.service";
18
+ import { IPreferencesService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/preferences/common/preferences.service";
19
+ export interface IAgentHostSessionEnumPickerItem {
20
+ readonly id?: string;
21
+ readonly value: string;
22
+ readonly label: string;
23
+ readonly description?: string;
24
+ readonly checked?: boolean;
25
+ }
26
+ /**
27
+ * Shared active-session picker for well-known string-enum session config.
28
+ * Concrete subclasses provide the property key, schema guard, icon policy,
29
+ * and labels while this class owns the provider subscription and picker UI.
30
+ */
31
+ export declare abstract class AgentHostSessionEnumPicker extends Disposable {
32
+ protected readonly _session: IObservable<IActiveSession | undefined>;
33
+ private readonly _actionWidgetService;
34
+ private readonly _sessionsProvidersService;
35
+ private readonly _telemetryService;
36
+ private readonly _hoverService;
37
+ private readonly _renderDisposables;
38
+ private readonly _triggerGesture;
39
+ private readonly _providerListeners;
40
+ private readonly _pickerListener;
41
+ private _containerElement;
42
+ private _slotElement;
43
+ protected _triggerElement: HTMLElement | undefined;
44
+ private _pickerVisible;
45
+ protected abstract readonly _property: string;
46
+ protected abstract readonly _pickerId: string;
47
+ protected abstract readonly _telemetryId: string;
48
+ constructor(_session: IObservable<IActiveSession | undefined>, _actionWidgetService: IActionWidgetService, _sessionsProvidersService: ISessionsProvidersService, _telemetryService: ITelemetryService, _hoverService: IHoverService);
49
+ render(container: HTMLElement): HTMLElement;
50
+ focus(): void;
51
+ private _watchProviders;
52
+ protected abstract _isWellKnownSchema(schema: SessionConfigPropertySchema): boolean;
53
+ protected abstract _getTriggerIcon(value: string | undefined): ThemeIcon | undefined;
54
+ protected abstract _getActionItemIcon(item: IAgentHostSessionEnumPickerItem, currentValue: string): ThemeIcon | undefined;
55
+ protected abstract _getTriggerAriaLabel(label: string): string;
56
+ protected abstract _getWidgetAriaLabel(): string;
57
+ protected _createTrigger(slot: HTMLElement): HTMLElement;
58
+ protected _getTriggerTooltip(tooltip: string): string;
59
+ protected _getFooterActionItems(): readonly IActionListItem<IAgentHostSessionEnumPickerItem | IAction>[];
60
+ protected _watchActionItems(_items: readonly IActionListItem<IAgentHostSessionEnumPickerItem | IAction>[]): IDisposable;
61
+ protected _handleFooterActionItem(_item: IAgentHostSessionEnumPickerItem): boolean;
62
+ protected _onDidSelectValue(_previousValue: string, _selectedValue: string): void;
63
+ protected _getActionItems(items: readonly IAgentHostSessionEnumPickerItem[], currentValue: string): IActionListItem<IAgentHostSessionEnumPickerItem | IAction>[];
64
+ protected _getAccessibilityProvider(): Partial<IListAccessibilityProvider<IActionListItem<IAgentHostSessionEnumPickerItem | IAction>>>;
65
+ /**
66
+ * Optional list-widget options for the picker popup. Subclasses whose
67
+ * option descriptions are long (e.g. the Codex approvals presets) return a
68
+ * bounded `maxWidth` plus a `className`/`detailItemHeight` so the detail text
69
+ * wraps within a compact box instead of stretching the popup horizontally.
70
+ */
71
+ protected _getListOptions(): IActionListOptions | undefined;
72
+ /**
73
+ * `true` while the active session's provider is resolving its config.
74
+ * Subclasses gate picker-open paths on this; the desktop chip is
75
+ * rendered visually disabled in {@link _updateTrigger}.
76
+ */
77
+ protected _isCurrentlyResolvingConfig(): boolean;
78
+ showPicker(anchor: HTMLElement, onHide?: () => void): boolean;
79
+ protected _getActiveContext(): {
80
+ provider: IAgentHostSessionsProvider;
81
+ sessionId: string;
82
+ currentValue: string;
83
+ items: readonly IAgentHostSessionEnumPickerItem[];
84
+ tooltip: string;
85
+ } | undefined;
86
+ protected _updateTrigger(): void;
87
+ protected _renderTriggerLabel(trigger: HTMLElement, label: string, icon: ThemeIcon | undefined): void;
88
+ protected _hidePicker(): void;
89
+ protected _showPicker(anchor?: HTMLElement | undefined, onHide?: () => void, listOptions?: IActionListOptions | undefined): boolean;
90
+ }
91
+ /**
92
+ * Picker widget for the agent-host `mode` session-config property
93
+ * (`interactive` / `plan` / `autopilot`).
94
+ */
95
+ export declare class AgentHostModePicker extends AgentHostSessionEnumPicker {
96
+ protected readonly _chatPetService: IChatPetService;
97
+ private readonly _configurationService;
98
+ private readonly _preferencesService;
99
+ private readonly _splitTrigger;
100
+ private readonly _permissionDelegate;
101
+ private readonly _permissionPicker;
102
+ protected readonly _property = SessionConfigKey.Mode;
103
+ protected readonly _pickerId = "agentHostModePicker";
104
+ protected readonly _telemetryId = "NewChatAgentHostModePicker";
105
+ constructor(session: IObservable<IActiveSession | undefined>, actionWidgetService: IActionWidgetService, sessionsProvidersService: ISessionsProvidersService, telemetryService: ITelemetryService, hoverService: IHoverService, _chatPetService: IChatPetService, instantiationService: IInstantiationService, _configurationService: IConfigurationService, _preferencesService: IPreferencesService);
106
+ protected _renderTriggerLabel(trigger: HTMLElement, label: string, icon: ThemeIcon | undefined): void;
107
+ protected _createTrigger(slot: HTMLElement): HTMLElement;
108
+ focus(): void;
109
+ protected _showPicker(anchor?: HTMLElement | undefined, onHide?: () => void, listOptions?: IActionListOptions): boolean;
110
+ protected _getTriggerTooltip(tooltip: string): string;
111
+ protected _getFooterActionItems(): readonly IActionListItem<IAgentHostSessionEnumPickerItem | IAction>[];
112
+ protected _getActionItems(items: readonly IAgentHostSessionEnumPickerItem[], currentValue: string): IActionListItem<IAgentHostSessionEnumPickerItem | IAction>[];
113
+ protected _watchActionItems(items: readonly IActionListItem<IAgentHostSessionEnumPickerItem | IAction>[]): IDisposable;
114
+ protected _getAccessibilityProvider(): Partial<IListAccessibilityProvider<IActionListItem<IAgentHostSessionEnumPickerItem | IAction>>>;
115
+ protected _onDidSelectValue(previousValue: string, selectedValue: string): void;
116
+ protected _getListOptions(): IActionListOptions;
117
+ protected _isWellKnownSchema(schema: SessionConfigPropertySchema): boolean;
118
+ protected _getTriggerIcon(value: string | undefined): ThemeIcon | undefined;
119
+ protected _getActionItemIcon(item: IAgentHostSessionEnumPickerItem): ThemeIcon | undefined;
120
+ protected _getTriggerAriaLabel(label: string): string;
121
+ protected _getWidgetAriaLabel(): string;
122
+ }