@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.
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
@@ -22,28 +22,28 @@ class SessionsChangesAccessibilityHelp {
22
22
  return (new AccessibleContentProvider(AccessibleViewProviderId.SessionsChanges, {
23
23
  type: AccessibleViewType.Help
24
24
  }, () => [( localize(
25
- 3530,
25
+ 3553,
26
26
  "You are in the Create Pull Request form. Title and description are generated in the background. Each field shows a loading indicator and reports a busy state until generation finishes. You may start editing immediately; generated text never replaces your edits."
27
27
  )), ( localize(
28
- 3531,
28
+ 3554,
29
29
  "The header identifies the repository, followed by the base branch on the left and source branch on the right. The arrow points toward the base branch that will receive the changes."
30
30
  )), ( localize(
31
- 3532,
31
+ 3555,
32
32
  "Use Tab and Shift+Tab to move between fields and buttons. Use arrow keys to choose a merge option and Space to toggle Create as Draft."
33
33
  )), ( localize(
34
- 3533,
34
+ 3556,
35
35
  "Create as Draft keeps the pull request in draft until it is ready for review."
36
36
  )), ( localize(
37
- 3534,
37
+ 3557,
38
38
  "Merge Manually leaves merging to you. Selecting Agent Merge reveals checkboxes for addressing reviews, fixing CI failures, and resolving conflicts or behind branches. Merge Pull Request lets you turn merging off, merge only if Agent Merge made no changes, or merge when ready. Session settings are changed only on submission, not when opening or cancelling the form. Auto-Merge asks GitHub to merge when requirements pass and lets you choose an allowed merge method. GitHub auto-merge is not available for drafts."
39
39
  )), ( localize(
40
- 3535,
40
+ 3558,
41
41
  "Draft, merge options, and the last-used submission action are remembered across sessions in this profile, even if you cancel. Title, description, repository, and branches are not remembered. Unavailable options are not applied, but your preferences are kept for repositories and hosts that support them."
42
42
  )), ( localize(
43
- 3536,
43
+ 3559,
44
44
  "Each Agent Merge checkbox has a description explaining what it does and when it acts. Focus a checkbox to hear its description, or hover over the info icon after its label to read it. Press Space to toggle it."
45
45
  )), ( localize(
46
- 3537,
46
+ 3560,
47
47
  "Create PR commits and pushes your changes and creates the pull request directly. When available, Tab to Pull Request Actions and press Enter or Space to open the dropdown. Choose Send Create PR Message to send the form details and options to this session's chat instead. The last-used action becomes the primary button. Control+Enter on Windows and Linux, or Command+Enter on macOS, runs that primary action. Press Escape to dismiss the dropdown, or Escape in the form or Cancel to close without submitting."
48
48
  ))].join("\n"), () => focusedElement.focus(), AccessibilityVerbositySettingId.SessionsChanges));
49
49
  }
@@ -51,41 +51,41 @@ class SessionsChangesAccessibilityHelp {
51
51
  const layoutService = accessor.get(IAgentWorkbenchLayoutService);
52
52
  const content = [];
53
53
  content.push(( localize(
54
- 3538,
54
+ 3561,
55
55
  "You are in the Changes view. It shows the files changed by the current session as a tree, followed by a collapsible Checks section."
56
56
  )));
57
57
  content.push(( localize(
58
- 3539,
58
+ 3562,
59
59
  "Use the up and down arrow keys to move between changed files, and the left and right arrow keys to collapse or expand folders. Press Enter to open the selected file's diff."
60
60
  )));
61
61
  content.push(( localize(
62
- 3540,
62
+ 3563,
63
63
  "The Checks section lists the continuous integration checks for the session's pull request. Its header is a button: press Enter or Space to collapse or expand it{0}.",
64
64
  "<keybinding:sessions.action.revealCIChecks>"
65
65
  )));
66
66
  content.push(( localize(
67
- 3541,
67
+ 3564,
68
68
  "The Changes view can show files as a tree or a flat list. Use the view's toolbar actions to switch between Tree and List modes."
69
69
  )));
70
70
  content.push(( localize(
71
- 3542,
71
+ 3565,
72
72
  "When available, the Changes toolbar or editor title bar also provides actions to commit, merge, sync, or create a pull request. When Agent Merge is the primary action, activate it to toggle Agent Merge and use its dropdown to configure it. Use Tab and Shift+Tab to move between the file list and toolbar actions."
73
73
  )));
74
74
  content.push(( localize(
75
- 3543,
75
+ 3566,
76
76
  "For Agent Host sessions, Create PR opens a form with generated, editable title and description, a draft checkbox, and merge options. The form appears while generation is in progress and preserves anything you type. Use Tab to navigate and Escape to cancel."
77
77
  )));
78
78
  content.push(layoutService.isSinglePaneLayoutEnabled ? ( localize(
79
- 3544,
79
+ 3567,
80
80
  "Use Diff View in the editor title area's More Actions menu to select inline, side-by-side, or automatic layout. The Toggle Preferred Diff View command switches between inline and automatic layout{0}.",
81
81
  "<keybinding:toggle.diff.renderSideBySide>"
82
82
  )) : ( localize(
83
- 3545,
83
+ 3568,
84
84
  "Use Diff View in the editor title area's More Actions menu to select inline, side-by-side, or automatic layout. The Toggle Preferred Diff View command switches between inline and automatic layout{0}.",
85
85
  "<keybinding:toggle.diff.renderSideBySide>"
86
86
  )));
87
87
  content.push(( localize(
88
- 3546,
88
+ 3569,
89
89
  "Use Word Wrap in the editor title area's More Actions menu to control word wrapping independently for code and multi-diff editors in the Agents window."
90
90
  )));
91
91
  return ( new AccessibleContentProvider(AccessibleViewProviderId.SessionsChanges, {
@@ -27,7 +27,7 @@ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/obse
27
27
  registerCss(sessionChatInputToolbarDebug, 1);
28
28
  const $ = $$1;
29
29
  const SessionChatPillsDebugAvailableContext = new RawContextKey("sessionsChatPillsDebugAvailable", false, ( localize(
30
- 3867,
30
+ 3890,
31
31
  "Whether a session chat view is active and can show fake status pills"
32
32
  )));
33
33
  const SHOW_SESSION_CHAT_PILLS_DEBUG_COMMAND_ID = "sessions.debug.showFakeChatPills";
@@ -62,7 +62,7 @@ let SessionChatPillsDebugService = class SessionChatPillsDebugService extends Di
62
62
  constructor() {
63
63
  super({
64
64
  id: SHOW_SESSION_CHAT_PILLS_DEBUG_COMMAND_ID,
65
- title: ( localize2(3868, "Configure Fake Session Chat UI")),
65
+ title: ( localize2(3891, "Configure Fake Session Chat UI")),
66
66
  category: Categories.Developer,
67
67
  precondition: SessionChatPillsDebugAvailableContext,
68
68
  menu: [{
@@ -121,7 +121,7 @@ let SessionChatPillsDebugService = class SessionChatPillsDebugService extends Di
121
121
  let applyButton;
122
122
  let numericInputs = [];
123
123
  let revalidate = () => {};
124
- const dialog = disposables.add(( new Dialog(this._layoutService.activeContainer, ( localize(3869, "Fake Session Chat UI")), [( localize(3870, "Apply")), ( localize(3871, "Clear")), ( localize(3872, "Cancel"))], createWorkbenchDialogOptions({
124
+ const dialog = disposables.add(( new Dialog(this._layoutService.activeContainer, ( localize(3892, "Fake Session Chat UI")), [( localize(3893, "Apply")), ( localize(3894, "Clear")), ( localize(3895, "Cancel"))], createWorkbenchDialogOptions({
125
125
  type: "none",
126
126
  extraClasses: ["session-chat-pills-debug-dialog"],
127
127
  cancelId: 2,
@@ -137,16 +137,16 @@ let SessionChatPillsDebugService = class SessionChatPillsDebugService extends Di
137
137
  append(
138
138
  form,
139
139
  $("p.session-chat-pills-debug-description", undefined, ( localize(
140
- 3873,
140
+ 3896,
141
141
  "Configure the values shown by status pills and input banners. Separate multiple names with commas or new lines."
142
142
  )))
143
143
  );
144
144
  const stats = append(form, $(".session-chat-pills-debug-stats"));
145
- const files = this._createInput(stats, disposables, ( localize(3874, "Files")), state.files, value => state.files = value, true, () => revalidate());
146
- const insertions = this._createInput(stats, disposables, ( localize(3875, "Insertions")), state.insertions, value => state.insertions = value, true, () => revalidate());
147
- const deletions = this._createInput(stats, disposables, ( localize(3876, "Deletions")), state.deletions, value => state.deletions = value, true, () => revalidate());
145
+ const files = this._createInput(stats, disposables, ( localize(3897, "Files")), state.files, value => state.files = value, true, () => revalidate());
146
+ const insertions = this._createInput(stats, disposables, ( localize(3898, "Insertions")), state.insertions, value => state.insertions = value, true, () => revalidate());
147
+ const deletions = this._createInput(stats, disposables, ( localize(3899, "Deletions")), state.deletions, value => state.deletions = value, true, () => revalidate());
148
148
  numericInputs = [files, insertions, deletions];
149
- const autoIncrementLabel = ( localize(3877, "Automatically increase insertions and deletions every 2 seconds"));
149
+ const autoIncrementLabel = ( localize(3900, "Automatically increase insertions and deletions every 2 seconds"));
150
150
  const autoIncrementRow = append(form, $(".session-chat-pills-debug-checkbox-row"));
151
151
  const autoIncrementCheckbox = disposables.add(( new Checkbox(autoIncrementLabel, state.autoIncrementChanges, defaultCheckboxStyles)));
152
152
  append(autoIncrementRow, autoIncrementCheckbox.domNode);
@@ -167,15 +167,15 @@ let SessionChatPillsDebugService = class SessionChatPillsDebugService extends Di
167
167
  EventType.CLICK,
168
168
  () => setAutoIncrement(!autoIncrementCheckbox.checked)
169
169
  ));
170
- this._createInput(form, disposables, ( localize(3878, "Artifact File Names")), state.markdownFiles, value => state.markdownFiles = value);
171
- this._createInput(form, disposables, ( localize(3879, "Subagent Names")), state.subagents, value => state.subagents = value);
172
- this._createInput(form, disposables, ( localize(3880, "Browser Labels")), state.browsers, value => state.browsers = value);
173
- append(form, $("h3.session-chat-pills-debug-heading", undefined, ( localize(3881, "Input Banners"))));
170
+ this._createInput(form, disposables, ( localize(3901, "Artifact File Names")), state.markdownFiles, value => state.markdownFiles = value);
171
+ this._createInput(form, disposables, ( localize(3902, "Subagent Names")), state.subagents, value => state.subagents = value);
172
+ this._createInput(form, disposables, ( localize(3903, "Browser Labels")), state.browsers, value => state.browsers = value);
173
+ append(form, $("h3.session-chat-pills-debug-heading", undefined, ( localize(3904, "Input Banners"))));
174
174
  const bannerStats = append(form, $(".session-chat-pills-debug-banner-stats"));
175
- const ciFailed = this._createInput(bannerStats, disposables, ( localize(3882, "Failed CI Checks")), state.ciFailed, value => state.ciFailed = value, true, () => revalidate());
176
- const ciPending = this._createInput(bannerStats, disposables, ( localize(3883, "Pending CI Checks")), state.ciPending, value => state.ciPending = value, true, () => revalidate());
177
- const prFeedback = this._createInput(bannerStats, disposables, ( localize(3884, "PR Feedback to Address")), state.prFeedback, value => state.prFeedback = value, true, () => revalidate());
178
- const agentFeedback = this._createInput(bannerStats, disposables, ( localize(3885, "Agent Feedback to Address")), state.agentFeedback, value => state.agentFeedback = value, true, () => revalidate());
175
+ const ciFailed = this._createInput(bannerStats, disposables, ( localize(3905, "Failed CI Checks")), state.ciFailed, value => state.ciFailed = value, true, () => revalidate());
176
+ const ciPending = this._createInput(bannerStats, disposables, ( localize(3906, "Pending CI Checks")), state.ciPending, value => state.ciPending = value, true, () => revalidate());
177
+ const prFeedback = this._createInput(bannerStats, disposables, ( localize(3907, "PR Feedback to Address")), state.prFeedback, value => state.prFeedback = value, true, () => revalidate());
178
+ const agentFeedback = this._createInput(bannerStats, disposables, ( localize(3908, "Agent Feedback to Address")), state.agentFeedback, value => state.agentFeedback = value, true, () => revalidate());
179
179
  numericInputs = [...numericInputs, ciFailed, ciPending, prFeedback, agentFeedback];
180
180
  revalidate = () => {
181
181
  const valid = numericInputs.every(input => input.validate() !== MessageType.ERROR);
@@ -240,7 +240,7 @@ let SessionChatPillsDebugService = class SessionChatPillsDebugService extends Di
240
240
  validationOptions: numeric ? {
241
241
  validation: raw => {
242
242
  return isNonNegativeIntegerInput(raw) ? null : {
243
- content: ( localize(3886, "Enter a whole number greater than or equal to 0.")),
243
+ content: ( localize(3909, "Enter a whole number greater than or equal to 0.")),
244
244
  type: MessageType.ERROR
245
245
  };
246
246
  }
@@ -0,0 +1,44 @@
1
+ import { OperatingSystem } from "@codingame/monaco-vscode-api/vscode/vs/base/common/platform";
2
+ import { ITaskEntry } from "@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/chat/browser/sessionsTasksService";
3
+ /**
4
+ * Operating system identifier used to pick the right OS-specific overrides on
5
+ * an `ITaskEntry`. Mirrors the keys used in `tasks.json` (`windows`, `osx`,
6
+ * `linux`).
7
+ */
8
+ export type TaskTargetOS = "windows" | "osx" | "linux";
9
+ /**
10
+ * Maps an {@link OperatingSystem} to the matching {@link TaskTargetOS} key used
11
+ * to select OS-specific `command`/`args` overrides on an `ITaskEntry`.
12
+ */
13
+ export declare function osToTaskTargetOS(os: OperatingSystem): TaskTargetOS;
14
+ /**
15
+ * Context passed to {@link resolveTaskCommand}.
16
+ */
17
+ export interface ITaskResolutionContext {
18
+ /**
19
+ * Target OS for picking OS-specific `command`/`args` overrides.
20
+ */
21
+ readonly targetOS?: TaskTargetOS;
22
+ /**
23
+ * Lookup used to resolve `dependsOn` references. Should return the
24
+ * referenced `ITaskEntry` by `label`, or `undefined` if the task is not
25
+ * declared in any reachable `tasks.json`.
26
+ */
27
+ readonly lookup?: (label: string) => ITaskEntry | undefined;
28
+ /**
29
+ * Optional hook that expands variables (e.g. `${workspaceFolder}`) before
30
+ * shell-quoting. When omitted, variables are left as-is.
31
+ */
32
+ readonly resolveVariables?: (value: string) => Promise<string>;
33
+ }
34
+ /**
35
+ * Resolves an `ITaskEntry` into a single shell command line that can be sent
36
+ * to a terminal verbatim. Handles `command`+`args` (with OS overrides),
37
+ * `type: 'npm'`+`script`, `dependsOn` chains, POSIX quoting, and variable
38
+ * expansion via {@link ITaskResolutionContext.resolveVariables}. Does not apply
39
+ * problem matchers or `presentation` options.
40
+ *
41
+ * @returns the resolved command line, or `undefined` if neither the task nor
42
+ * its dependencies yield a command.
43
+ */
44
+ export declare function resolveTaskCommand(task: ITaskEntry, ctx?: ITaskResolutionContext): Promise<string | undefined>;
@@ -0,0 +1,111 @@
1
+
2
+ import { OperatingSystem } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
3
+ import { CommandString } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskConfiguration';
4
+
5
+ function osToTaskTargetOS(os) {
6
+ switch (os) {
7
+ case OperatingSystem.Windows:
8
+ return "windows";
9
+ case OperatingSystem.Macintosh:
10
+ return "osx";
11
+ case OperatingSystem.Linux:
12
+ default:
13
+ return "linux";
14
+ }
15
+ }
16
+ function expandVariables(value, ctx) {
17
+ return ctx.resolveVariables ? ctx.resolveVariables(value) : value;
18
+ }
19
+ const POSIX_NEEDS_QUOTING = /[^A-Za-z0-9_\-.,:/=@%+]/;
20
+ function posixStrong(value) {
21
+ return `'${value.replace(/'/g, `'\\''`)}'`;
22
+ }
23
+ function posixWeak(value) {
24
+ return `"${value.replace(/(["\\$`])/g, "\\$1")}"`;
25
+ }
26
+ function posixEscape(value) {
27
+ return value.replace(/([\\\s"'`$&|;<>(){}[\]*?#~!])/g, "\\$1");
28
+ }
29
+ async function renderArg(arg, ctx) {
30
+ if (typeof arg === "string") {
31
+ const value = await expandVariables(arg, ctx);
32
+ return POSIX_NEEDS_QUOTING.test(value) ? posixStrong(value) : value;
33
+ }
34
+ if (Array.isArray(arg)) {
35
+ return (await Promise.all(arg.map(a => renderArg(a, ctx)))).join(" ");
36
+ }
37
+ const value = await expandVariables(CommandString.value(arg), ctx);
38
+ switch (arg.quoting) {
39
+ case "strong":
40
+ return posixStrong(value);
41
+ case "weak":
42
+ return posixWeak(value);
43
+ case "escape":
44
+ return posixEscape(value);
45
+ default:
46
+ return POSIX_NEEDS_QUOTING.test(value) ? posixStrong(value) : value;
47
+ }
48
+ }
49
+ async function resolveOwnCommand(task, ctx) {
50
+ const override = ctx.targetOS ? task[ctx.targetOS] : undefined;
51
+ const command = override?.command ?? task.command;
52
+ const args = override?.args ?? task.args;
53
+ if (command) {
54
+ const parts = [await expandVariables(command, ctx)];
55
+ if (args) {
56
+ for (const arg of args) {
57
+ parts.push(await renderArg(arg, ctx));
58
+ }
59
+ }
60
+ return parts.join(" ");
61
+ }
62
+ if (task.script && (!task.type || task.type === "npm")) {
63
+ return `npm run ${task.script}`;
64
+ }
65
+ return undefined;
66
+ }
67
+ async function resolveDependencies(task, ctx, stack) {
68
+ if (!task.dependsOn || !ctx.lookup) {
69
+ return undefined;
70
+ }
71
+ const depLabels = typeof task.dependsOn === "string" ? [task.dependsOn] : task.dependsOn;
72
+ const resolved = [];
73
+ for (const label of depLabels) {
74
+ const dep = ctx.lookup(label);
75
+ if (!dep) {
76
+ continue;
77
+ }
78
+ const cmd = await resolveInternal(dep, ctx, stack);
79
+ if (cmd) {
80
+ resolved.push(cmd);
81
+ }
82
+ }
83
+ if (resolved.length === 0) {
84
+ return undefined;
85
+ }
86
+ if (resolved.length === 1) {
87
+ return resolved[0];
88
+ }
89
+ return task.dependsOrder === "parallel" ? `${resolved.map(c => `( ${c} )`).join(" & ")} & wait` : resolved.join(" && ");
90
+ }
91
+ async function resolveInternal(task, ctx, stack) {
92
+ if (( stack.has(task.label))) {
93
+ return undefined;
94
+ }
95
+ stack.add(task.label);
96
+ try {
97
+ const own = await resolveOwnCommand(task, ctx);
98
+ const deps = await resolveDependencies(task, ctx, stack);
99
+ if (own && deps) {
100
+ return `${deps} && ${own}`;
101
+ }
102
+ return own ?? deps;
103
+ } finally {
104
+ stack.delete(task.label);
105
+ }
106
+ }
107
+ function resolveTaskCommand(task, ctx) {
108
+ return resolveInternal(task, ctx ?? {}, ( new Set()));
109
+ }
110
+
111
+ export { osToTaskTargetOS, resolveTaskCommand };
@@ -14,7 +14,7 @@ import { Extensions, WindowEnablement, ViewContainerLocation } from '@codingame/
14
14
  const COPILOT_CHAT_VIEW_CONTAINER_ID = "workbench.view.extension.copilot-chat";
15
15
  const COPILOT_CHAT_VIEW_ID = "copilot-chat";
16
16
  const SESSIONS_CHAT_DEBUG_CONTAINER_ID = "workbench.sessions.panel.chatDebugContainer";
17
- const chatDebugViewIcon = registerIcon("sessions-chat-debug-view-icon", Codicon.debug, ( localize(4009, "View icon of the chat debug view in the sessions window.")));
17
+ const chatDebugViewIcon = registerIcon("sessions-chat-debug-view-icon", Codicon.debug, ( localize(4032, "View icon of the chat debug view in the sessions window.")));
18
18
  let RegisterChatDebugViewContribution = class RegisterChatDebugViewContribution extends Disposable {
19
19
  static {
20
20
  this.ID = "sessions.registerChatDebugView";
@@ -55,7 +55,7 @@ let RegisterChatDebugViewContribution = class RegisterChatDebugViewContribution
55
55
  viewContainerRegistry.deregisterViewContainer(viewContainer);
56
56
  const chatDebugViewContainer = viewContainerRegistry.registerViewContainer({
57
57
  id: SESSIONS_CHAT_DEBUG_CONTAINER_ID,
58
- title: ( localize2(4010, "Chat Debug")),
58
+ title: ( localize2(4033, "Chat Debug")),
59
59
  icon: chatDebugViewIcon,
60
60
  order: 3,
61
61
  ctorDescriptor: ( new SyncDescriptor(ViewPaneContainer, [SESSIONS_CHAT_DEBUG_CONTAINER_ID, {
@@ -0,0 +1,75 @@
1
+
2
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
3
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
4
+ import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
5
+ import { Action2, MenuId, registerAction2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
6
+ import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
7
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/extensions';
8
+ import { IsSessionsWindowContext, ActiveEditorContext, IsAuxiliaryWindowContext, IsTopRightEditorGroupContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
9
+ import { SinglePaneLayoutEnabledContext, SessionWorkspaceIsVirtualContext, IsPhoneLayoutContext, SessionIsCreatedContext, SessionProviderIdContext, SessionHasChangesContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
10
+ import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
11
+ import { CHAT_CATEGORY } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
12
+ import { ISessionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/common/sessionsManagement.service';
13
+ import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
14
+ import '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/codeReview/browser/codeReviewService';
15
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
16
+ import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
17
+ import { ANY_AGENT_HOST_PROVIDER_RE } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/agentHostSessionsProvider';
18
+ import { Menus } from '@codingame/monaco-vscode-api/vscode/vs/sessions/browser/menus';
19
+ import { SessionChangesEditorInput } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/browser/sessionChangesEditorInput';
20
+ import '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/browser/sessionChangesService';
21
+ import { ISessionChangesService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/contrib/changes/common/sessionChangesService.service';
22
+
23
+ const CODE_REVIEW_QUERY = "/code-review";
24
+ const singlePaneDetailPanel = SinglePaneLayoutEnabledContext;
25
+ const codeReviewChangesToolbarWhen = ( ContextKeyExpr.and(IsSessionsWindowContext, ( SessionWorkspaceIsVirtualContext.toNegated()), ( IsPhoneLayoutContext.negate()), SessionIsCreatedContext, ( ContextKeyExpr.regex(SessionProviderIdContext.key, ANY_AGENT_HOST_PROVIDER_RE)), ( singlePaneDetailPanel.negate())));
26
+ const singlePaneCodeReviewWhen = ( ContextKeyExpr.and(IsSessionsWindowContext, ( ActiveEditorContext.isEqualTo(SessionChangesEditorInput.EDITOR_ID)), singlePaneDetailPanel, ( IsAuxiliaryWindowContext.toNegated()), IsTopRightEditorGroupContext, ( SessionWorkspaceIsVirtualContext.toNegated()), SessionIsCreatedContext, SessionHasChangesContext));
27
+ class RunSessionCodeReviewAction extends Action2 {
28
+ static {
29
+ this.ID = "sessions.codeReview.run";
30
+ }
31
+ constructor() {
32
+ super({
33
+ id: RunSessionCodeReviewAction.ID,
34
+ title: ( localize2(4034, "Run Code Review")),
35
+ tooltip: ( localize(4035, "Run Code Review")),
36
+ category: CHAT_CATEGORY,
37
+ icon: Codicon.codeReview,
38
+ precondition: ( ContextKeyExpr.or(ChatContextKeys.hasAgentSessionChanges, SessionHasChangesContext)),
39
+ menu: [{
40
+ id: MenuId.AgentsChangesToolbar,
41
+ group: "navigation",
42
+ order: 7,
43
+ when: codeReviewChangesToolbarWhen
44
+ }, {
45
+ id: Menus.SessionsEditorHeaderLayout,
46
+ group: "navigation",
47
+ order: 10,
48
+ when: singlePaneCodeReviewWhen
49
+ }]
50
+ });
51
+ }
52
+ async run(accessor, sessionResource) {
53
+ const sessionManagementService = accessor.get(ISessionsManagementService);
54
+ const sessionsService = accessor.get(ISessionsService);
55
+ const chatWidgetService = accessor.get(IChatWidgetService);
56
+ const sessionChangesService = accessor.get(ISessionChangesService);
57
+ const candidateResource = URI.isUri(sessionResource) ? sessionResource : sessionsService.activeSession.get()?.resource;
58
+ const resource = candidateResource ? sessionChangesService.getSessionResource(candidateResource) ?? candidateResource : undefined;
59
+ if (!resource) {
60
+ return;
61
+ }
62
+ const session = sessionManagementService.getSession(resource);
63
+ if (!session) {
64
+ return;
65
+ }
66
+ if (session.capabilities.get().supportsMultipleChats) {
67
+ await sessionManagementService.sendNewChatRequest(session, {
68
+ query: CODE_REVIEW_QUERY
69
+ });
70
+ } else {
71
+ chatWidgetService.getWidgetBySessionResource(session.resource)?.acceptInput(CODE_REVIEW_QUERY);
72
+ }
73
+ }
74
+ }
75
+ registerAction2(RunSessionCodeReviewAction);
@@ -23,9 +23,9 @@ const TEST_CUSTOM_VIEW_ID = "sessions.customView.test";
23
23
  class TestCustomView extends AbstractCustomView {
24
24
  constructor() {
25
25
  super(...arguments);
26
- this.title = constObservable(( localize(4011, "Test Custom View")));
26
+ this.title = constObservable(( localize(4036, "Test Custom View")));
27
27
  this.description = constObservable(( localize(
28
- 4012,
28
+ 4037,
29
29
  "A placeholder view used to verify the custom view grid layout, header and scrolling."
30
30
  )));
31
31
  }
@@ -34,7 +34,7 @@ class TestCustomView extends AbstractCustomView {
34
34
  }
35
35
  render(container) {
36
36
  for (let i = 0; i < TestCustomView.ITEM_COUNT; i++) {
37
- container.appendChild($(".custom-view-test-item", undefined, ( localize(4013, "Item {0}", i + 1))));
37
+ container.appendChild($(".custom-view-test-item", undefined, ( localize(4038, "Item {0}", i + 1))));
38
38
  }
39
39
  }
40
40
  layout(_width, _height) {}
@@ -65,7 +65,7 @@ class ShowTestCustomViewAction extends Action2 {
65
65
  constructor() {
66
66
  super({
67
67
  id: "sessions.customView.showTestView",
68
- title: ( localize2(4014, "Show Test Custom View")),
68
+ title: ( localize2(4039, "Show Test Custom View")),
69
69
  category: Categories.Developer,
70
70
  f1: true,
71
71
  precondition: IsDevelopmentContext
@@ -79,7 +79,7 @@ class HideTestCustomViewAction extends Action2 {
79
79
  constructor() {
80
80
  super({
81
81
  id: "sessions.customView.hideTestView",
82
- title: ( localize2(4015, "Hide Test Custom View")),
82
+ title: ( localize2(4040, "Hide Test Custom View")),
83
83
  category: Categories.Developer,
84
84
  f1: true,
85
85
  precondition: IsDevelopmentContext
@@ -93,7 +93,7 @@ class TestCustomViewPingAction extends Action2 {
93
93
  constructor() {
94
94
  super({
95
95
  id: "sessions.customView.testView.ping",
96
- title: ( localize2(4016, "Ping Test Custom View")),
96
+ title: ( localize2(4041, "Ping Test Custom View")),
97
97
  icon: Codicon.debugAlt,
98
98
  menu: [{
99
99
  id: Menus.CustomViewTest,
@@ -103,7 +103,7 @@ class TestCustomViewPingAction extends Action2 {
103
103
  });
104
104
  }
105
105
  run(accessor) {
106
- accessor.get(INotificationService).info(( localize(4017, "Test custom view action ran.")));
106
+ accessor.get(INotificationService).info(( localize(4042, "Test custom view action ran.")));
107
107
  }
108
108
  }
109
109
  registerAction2(ShowTestCustomViewAction);
@@ -35,7 +35,7 @@ class NewFileTabAction extends Action2 {
35
35
  constructor() {
36
36
  super({
37
37
  id: NEW_FILE_TAB_COMMAND_ID,
38
- title: ( localize2(4018, "Files")),
38
+ title: ( localize2(4043, "Files")),
39
39
  category: SessionsCategories.Sessions,
40
40
  icon: Codicon.newFile,
41
41
  f1: true,
@@ -70,7 +70,7 @@ class NewBrowserTabAction extends Action2 {
70
70
  constructor() {
71
71
  super({
72
72
  id: NEW_BROWSER_TAB_COMMAND_ID,
73
- title: ( localize2(4019, "Browser")),
73
+ title: ( localize2(4044, "Browser")),
74
74
  category: SessionsCategories.Sessions,
75
75
  icon: Codicon.globe,
76
76
  f1: true,
@@ -103,7 +103,7 @@ class NewSearchTabAction extends Action2 {
103
103
  constructor() {
104
104
  super({
105
105
  id: NEW_SEARCH_TAB_COMMAND_ID,
106
- title: ( localize2(4020, "Search")),
106
+ title: ( localize2(4045, "Search")),
107
107
  category: SessionsCategories.Sessions,
108
108
  icon: Codicon.search,
109
109
  f1: true,
@@ -132,7 +132,7 @@ class NewChangesTabAction extends Action2 {
132
132
  constructor() {
133
133
  super({
134
134
  id: NEW_CHANGES_TAB_COMMAND_ID,
135
- title: ( localize2(4021, "Changes")),
135
+ title: ( localize2(4046, "Changes")),
136
136
  category: SessionsCategories.Sessions,
137
137
  icon: Codicon.gitCompare,
138
138
  f1: false,
@@ -79,7 +79,7 @@ class MaximizeMainEditorPartAction extends Action2 {
79
79
  constructor() {
80
80
  super({
81
81
  id: MaximizeMainEditorPartAction.ID,
82
- title: ( localize2(4030, "Maximize Editor Area")),
82
+ title: ( localize2(4055, "Maximize Editor Area")),
83
83
  icon: Codicon.screenFull,
84
84
  f1: false,
85
85
  keybinding: {
@@ -124,7 +124,7 @@ class RestoreMainEditorPartAction extends Action2 {
124
124
  constructor() {
125
125
  super({
126
126
  id: RestoreMainEditorPartAction.ID,
127
- title: ( localize2(4031, "Restore Editor Area")),
127
+ title: ( localize2(4056, "Restore Editor Area")),
128
128
  icon: Codicon.screenNormal,
129
129
  f1: false,
130
130
  toggled: EditorMaximizedContext,
@@ -169,7 +169,7 @@ class HideMainEditorPartAction extends Action2 {
169
169
  constructor() {
170
170
  super({
171
171
  id: HideMainEditorPartAction.ID,
172
- title: ( localize2(4032, "Hide Editor")),
172
+ title: ( localize2(4057, "Hide Editor")),
173
173
  icon: Codicon.rightPanelHide,
174
174
  f1: false,
175
175
  menu: {
@@ -195,7 +195,7 @@ class ShowMainEditorPartAction extends Action2 {
195
195
  constructor() {
196
196
  super({
197
197
  id: ShowMainEditorPartAction.ID,
198
- title: ( localize2(4033, "Show Editor")),
198
+ title: ( localize2(4058, "Show Editor")),
199
199
  icon: Codicon.rightPanelShow,
200
200
  f1: false,
201
201
  menu: {
@@ -221,7 +221,7 @@ class CloseMainEditorPartAction extends Action2 {
221
221
  constructor() {
222
222
  super({
223
223
  id: CloseMainEditorPartAction.ID,
224
- title: ( localize2(4034, "Close Editor Area")),
224
+ title: ( localize2(4059, "Close Editor Area")),
225
225
  icon: Codicon.close,
226
226
  f1: false,
227
227
  menu: {
@@ -245,7 +245,7 @@ class OpenEditorInModalEditorAction extends Action2 {
245
245
  constructor() {
246
246
  super({
247
247
  id: OpenEditorInModalEditorAction.ID,
248
- title: ( localize2(4035, "Open in Modal Editor")),
248
+ title: ( localize2(4060, "Open in Modal Editor")),
249
249
  icon: Codicon.openInWindow,
250
250
  f1: false,
251
251
  menu: {
@@ -287,7 +287,7 @@ class OpenModalEditorInEditorAction extends Action2 {
287
287
  constructor() {
288
288
  super({
289
289
  id: OpenModalEditorInEditorAction.ID,
290
- title: ( localize2(4036, "Open in Editor Area")),
290
+ title: ( localize2(4061, "Open in Editor Area")),
291
291
  icon: Codicon.openInWindow,
292
292
  f1: false,
293
293
  precondition: ( CustomViewVisibleContext.negate()),
@@ -341,7 +341,7 @@ class AddFileAsContextAction extends Action2 {
341
341
  const precondition = ( ContextKeyExpr.and(IsSessionsWindowContext, ( IsAuxiliaryWindowContext.toNegated()), ( ActiveEditorContext.isEqualTo(TEXT_FILE_EDITOR_ID))));
342
342
  super({
343
343
  id: AddFileAsContextAction.ID,
344
- title: ( localize2(4037, "Add File as Context")),
344
+ title: ( localize2(4062, "Add File as Context")),
345
345
  category: SessionsCategories.Sessions,
346
346
  icon: Codicon.attach,
347
347
  f1: true,
@@ -21,7 +21,7 @@ let SinglePaneEmptyFileEditorContribution = class SinglePaneEmptyFileEditorContr
21
21
  return;
22
22
  }
23
23
  this._register(( Registry.as(EditorExtensions.EditorPane)).registerEditorPane(
24
- EditorPaneDescriptor.create(EmptyFileEditor, EmptyFileEditor.ID, ( localize(4038, "File"))),
24
+ EditorPaneDescriptor.create(EmptyFileEditor, EmptyFileEditor.ID, ( localize(4063, "File"))),
25
25
  [( new SyncDescriptor(EmptyFileEditorInput))]
26
26
  ));
27
27
  this._register(( Registry.as(EditorExtensions.EditorFactory)).registerEditorSerializer(EmptyFileEditorInput.ID, EmptyFileEditorSerializer));
@@ -23,13 +23,13 @@ class SearchFilesActionViewItem extends CompactButtonActionViewItem {
23
23
  return QUICK_OPEN_COMMAND_ID;
24
24
  }
25
25
  get label() {
26
- return localize(4039, "Search Files");
26
+ return localize(4064, "Search Files");
27
27
  }
28
28
  getHoverContent(keybindingLabel) {
29
- return keybindingLabel ? ( localize(4040, "Search Files ({0})", keybindingLabel)) : ( localize(4041, "Search Files"));
29
+ return keybindingLabel ? ( localize(4065, "Search Files ({0})", keybindingLabel)) : ( localize(4066, "Search Files"));
30
30
  }
31
31
  getAriaLabel(keybindingAriaLabel) {
32
- return keybindingAriaLabel ? ( localize(4042, "Search Files ({0})", keybindingAriaLabel)) : ( localize(4043, "Search Files"));
32
+ return keybindingAriaLabel ? ( localize(4067, "Search Files ({0})", keybindingAriaLabel)) : ( localize(4068, "Search Files"));
33
33
  }
34
34
  }
35
35
  let EmptyFileEditor = class EmptyFileEditor extends EditorPane {
@@ -60,7 +60,7 @@ let EmptyFileEditor = class EmptyFileEditor extends EditorPane {
60
60
  createEditor(parent) {
61
61
  const container = append(parent, $(".empty-file-editor"));
62
62
  const content = append(container, $(".empty-file-editor-content"));
63
- renderSessionsEmptyState(content, ( localize(4044, "Files")), ( localize(4045, "Select a file from the Files view")));
63
+ renderSessionsEmptyState(content, ( localize(4069, "Files")), ( localize(4070, "Select a file from the Files view")));
64
64
  const actions = append(content, $(".empty-file-editor-actions"));
65
65
  const action = this._register(this.createSearchAction());
66
66
  const actionViewItem = this._register(
@@ -71,7 +71,7 @@ let EmptyFileEditor = class EmptyFileEditor extends EditorPane {
71
71
  createSearchAction() {
72
72
  return (new Action(
73
73
  QUICK_OPEN_COMMAND_ID,
74
- localize(4039, "Search Files"),
74
+ localize(4064, "Search Files"),
75
75
  undefined,
76
76
  true,
77
77
  () => this.commandService.executeCommand(QUICK_OPEN_COMMAND_ID, "")