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

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 (110) 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 +11 -11
  23. package/vscode/src/vs/sessions/contrib/aquarium/browser/fish.d.ts +1 -1
  24. package/vscode/src/vs/sessions/contrib/aquarium/browser/fish.js +8 -8
  25. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialog.js +68 -68
  26. package/vscode/src/vs/sessions/contrib/automations/browser/automationDialogService.js +7 -7
  27. package/vscode/src/vs/sessions/contrib/automations/browser/automationRunner.js +4 -4
  28. package/vscode/src/vs/sessions/contrib/automations/browser/automationScheduler.js +2 -2
  29. package/vscode/src/vs/sessions/contrib/automations/browser/automationTools.js +38 -38
  30. package/vscode/src/vs/sessions/contrib/automations/browser/automations.contribution.js +2 -2
  31. package/vscode/src/vs/sessions/contrib/automations/browser/providerAutomationService.js +1 -1
  32. package/vscode/src/vs/sessions/contrib/changes/browser/changes.contribution.js +6 -6
  33. package/vscode/src/vs/sessions/contrib/changes/browser/changesActions.js +4 -4
  34. package/vscode/src/vs/sessions/contrib/changes/browser/changesViewActions.js +20 -20
  35. package/vscode/src/vs/sessions/contrib/changes/browser/changesetReviewActions.js +1 -1
  36. package/vscode/src/vs/sessions/contrib/changes/browser/sessionSyncChanges.js +9 -9
  37. package/vscode/src/vs/sessions/contrib/changes/browser/sessionsChangesAccessibilityHelp.js +17 -17
  38. package/vscode/src/vs/sessions/contrib/chat/browser/sessionChatInputToolbarDebug.js +17 -17
  39. package/vscode/src/vs/sessions/contrib/chat/browser/taskCommand.d.ts +44 -0
  40. package/vscode/src/vs/sessions/contrib/chat/browser/taskCommand.js +111 -0
  41. package/vscode/src/vs/sessions/contrib/chatDebug/browser/chatDebug.contribution.js +2 -2
  42. package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.d.ts +1 -0
  43. package/vscode/src/vs/sessions/contrib/codeReview/browser/codeReview.contributions.js +75 -0
  44. package/vscode/src/vs/sessions/contrib/customViewTest/browser/customViewTest.contribution.js +7 -7
  45. package/vscode/src/vs/sessions/contrib/editor/browser/addTabActions.js +4 -4
  46. package/vscode/src/vs/sessions/contrib/editor/browser/editor.contribution.js +8 -8
  47. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.contribution.js +1 -1
  48. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditor.js +5 -5
  49. package/vscode/src/vs/sessions/contrib/editor/browser/emptyFileEditorInput.js +1 -1
  50. package/vscode/src/vs/sessions/contrib/files/browser/files.contribution.js +7 -7
  51. package/vscode/src/vs/sessions/contrib/files/browser/filesView.js +1 -1
  52. package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +5 -5
  53. package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +2 -2
  54. package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneExistingSessionStrategy.js +1 -1
  55. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +19 -19
  56. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +4 -4
  57. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +6 -6
  58. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +2 -2
  59. package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +4 -4
  60. package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +24 -24
  61. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.d.ts +26 -0
  62. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +98 -0
  63. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.d.ts +33 -0
  64. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +98 -0
  65. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.d.ts +1 -0
  66. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostForkActions.js +72 -0
  67. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.d.ts +2 -0
  68. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModeIcon.js +13 -0
  69. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.d.ts +122 -0
  70. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +464 -0
  71. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.d.ts +35 -0
  72. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerActionItem.js +90 -0
  73. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.d.ts +84 -0
  74. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +328 -0
  75. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.d.ts +1 -0
  76. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.js +94 -0
  77. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.d.ts +174 -0
  78. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +1390 -0
  79. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.d.ts +1 -0
  80. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.js +468 -0
  81. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.d.ts +7 -0
  82. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.js +48 -0
  83. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/media/agentHostSessionConfigPicker.css +44 -0
  84. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.d.ts +30 -0
  85. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileAgentHostModePicker.js +78 -0
  86. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.d.ts +1 -0
  87. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.js +345 -0
  88. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.d.ts +11 -0
  89. package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatPhoneInputTarget.js +26 -0
  90. package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +6 -6
  91. package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +3 -3
  92. package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +1 -1
  93. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +4 -4
  94. package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +5 -5
  95. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +2 -2
  96. package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +8 -8
  97. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +58 -58
  98. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +8 -8
  99. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +5 -5
  100. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +10 -10
  101. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +38 -38
  102. package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +118 -118
  103. package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +53 -53
  104. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.d.ts +42 -0
  105. package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.js +139 -0
  106. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.d.ts +120 -0
  107. package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.js +741 -0
  108. package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +2 -2
  109. package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +2 -2
  110. package/vscode/src/vs/workbench/browser/layout.js +1 -1
@@ -0,0 +1,149 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { toAction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
4
+ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
+ import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
6
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
7
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
8
+ import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
9
+ import { Action2, MenuId, registerAction2, MenuRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
10
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
11
+ import { RawContextKey, ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
12
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
13
+ import '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification';
14
+ import { INotificationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service';
15
+ import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
16
+ import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.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 { CHAT_CATEGORY } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
20
+ import { ISessionsService } from '@codingame/monaco-vscode-api/vscode/vs/sessions/services/sessions/browser/sessionsService.service';
21
+ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
22
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
23
+ import { SessionIsArchivedContext } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/contextkeys';
24
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
25
+ import Severity from '@codingame/monaco-vscode-api/vscode/vs/base/common/severity';
26
+
27
+ const hasWorktreeAndRepositoryContextKey = new RawContextKey("agentSessionHasWorktreeAndRepository", false, {
28
+ type: "boolean",
29
+ description: ( localize(
30
+ 3262,
31
+ "True when the active agent session has both a worktree and a parent repository."
32
+ ))
33
+ });
34
+ let ApplyChangesToParentRepoContribution = class ApplyChangesToParentRepoContribution extends Disposable {
35
+ static {
36
+ this.ID = "sessions.contrib.applyChangesToParentRepo";
37
+ }
38
+ constructor(contextKeyService, sessionsService) {
39
+ super();
40
+ const worktreeAndRepoKey = hasWorktreeAndRepositoryContextKey.bindTo(contextKeyService);
41
+ this._register(autorun(reader => {
42
+ const activeSession = sessionsService.activeSession.read(reader);
43
+ const folder = activeSession?.workspace.read(reader)?.folders[0];
44
+ const hasWorktreeAndRepo = !!folder?.gitRepository?.workTreeUri;
45
+ worktreeAndRepoKey.set(hasWorktreeAndRepo);
46
+ }));
47
+ }
48
+ };
49
+ ApplyChangesToParentRepoContribution = ( __decorate([( __param(0, IContextKeyService)), ( __param(1, ISessionsService))], ApplyChangesToParentRepoContribution));
50
+ class ApplyChangesToParentRepoAction extends Action2 {
51
+ static {
52
+ this.ID = "chatEditing.applyChangesToParentRepo";
53
+ }
54
+ constructor() {
55
+ super({
56
+ id: ApplyChangesToParentRepoAction.ID,
57
+ title: ( localize2(3263, "Apply Changes to Parent Repository")),
58
+ icon: Codicon.desktopDownload,
59
+ category: CHAT_CATEGORY,
60
+ precondition: ( ContextKeyExpr.and(IsSessionsWindowContext, hasWorktreeAndRepositoryContextKey)),
61
+ menu: [{
62
+ id: MenuId.AgentsChangesPrimaryActionSubMenu,
63
+ group: "navigation",
64
+ order: 2,
65
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.false()), IsSessionsWindowContext, hasWorktreeAndRepositoryContextKey))
66
+ }]
67
+ });
68
+ }
69
+ async run(accessor) {
70
+ const sessionsService = accessor.get(ISessionsService);
71
+ const commandService = accessor.get(ICommandService);
72
+ const notificationService = accessor.get(INotificationService);
73
+ const logService = accessor.get(ILogService);
74
+ const openerService = accessor.get(IOpenerService);
75
+ const productService = accessor.get(IProductService);
76
+ const activeSession = sessionsService.activeSession.get();
77
+ const folder = activeSession?.workspace.get()?.folders[0];
78
+ if (!activeSession || !folder?.gitRepository?.workTreeUri) {
79
+ return;
80
+ }
81
+ const worktreeRoot = folder.gitRepository.workTreeUri;
82
+ const repoRoot = folder.root;
83
+ const openFolderAction = toAction({
84
+ id: "applyChangesToParentRepo.openFolder",
85
+ label: ( localize(3264, "Open in VS Code")),
86
+ run: () => {
87
+ const scheme = productService.quality === "stable" ? "vscode" : productService.quality === "exploration" ? "vscode-exploration" : "vscode-insiders";
88
+ const params = ( new URLSearchParams());
89
+ params.set("windowId", "_blank");
90
+ params.set("session", ( activeSession.resource.toString()));
91
+ openerService.open(( URI.from({
92
+ scheme,
93
+ authority: Schemas.file,
94
+ path: repoRoot.path,
95
+ query: ( params.toString())
96
+ })), {
97
+ openExternal: true
98
+ });
99
+ }
100
+ });
101
+ try {
102
+ const worktreeBranch = await commandService.executeCommand("_git.revParseAbbrevRef", worktreeRoot.fsPath);
103
+ if (!worktreeBranch) {
104
+ notificationService.notify({
105
+ severity: Severity.Warning,
106
+ message: ( localize(3265, "Could not determine worktree branch name."))
107
+ });
108
+ return;
109
+ }
110
+ const result = await commandService.executeCommand("_git.mergeBranch", repoRoot.fsPath, worktreeBranch);
111
+ if (!result) {
112
+ logService.warn("[ApplyChangesToParentRepo] No result from merge command");
113
+ } else {
114
+ notificationService.notify({
115
+ severity: Severity.Info,
116
+ message: typeof result === "string" && result.startsWith("Already up to date") ? ( localize(3266, "Parent repository is up to date with worktree.")) : ( localize(3267, "Applied changes to parent repository.")),
117
+ actions: {
118
+ primary: [openFolderAction]
119
+ }
120
+ });
121
+ }
122
+ } catch (err) {
123
+ logService.error("[ApplyChangesToParentRepo] Failed to apply changes", err);
124
+ notificationService.notify({
125
+ severity: Severity.Warning,
126
+ message: ( localize(
127
+ 3268,
128
+ "Failed to apply changes to parent repo. The parent repo may have diverged — resolve conflicts manually."
129
+ )),
130
+ actions: {
131
+ primary: [openFolderAction]
132
+ }
133
+ });
134
+ }
135
+ }
136
+ }
137
+ registerAction2(ApplyChangesToParentRepoAction);
138
+ registerWorkbenchContribution2(
139
+ ApplyChangesToParentRepoContribution.ID,
140
+ ApplyChangesToParentRepoContribution,
141
+ WorkbenchPhase.AfterRestored
142
+ );
143
+ MenuRegistry.appendMenuItem(MenuId.AgentsChangesToolbar, {
144
+ submenu: MenuId.AgentsChangesPrimaryActionSubMenu,
145
+ title: ( localize2(3269, "Apply Actions")),
146
+ group: "navigation",
147
+ order: 1,
148
+ when: ( ContextKeyExpr.and(IsSessionsWindowContext, ( SessionIsArchivedContext.isEqualTo(false))))
149
+ });
@@ -18,7 +18,7 @@ registerCss(aquarium, 1);
18
18
  [SESSIONS_DEVELOPER_JOY_ENABLED_SETTING]: {
19
19
  type: "boolean",
20
20
  default: true,
21
- description: ( localize(3247, "Adds an easter egg to the Agents window.")),
21
+ description: ( localize(3270, "Adds an easter egg to the Agents window.")),
22
22
  tags: ["experimental"]
23
23
  }
24
24
  }
@@ -30,7 +30,7 @@ class SimulateFishFeedingStreakAction extends Action2 {
30
30
  constructor() {
31
31
  super({
32
32
  id: SimulateFishFeedingStreakAction.ID,
33
- title: ( localize2(3248, "Simulate Fish Feeding Streak")),
33
+ title: ( localize2(3271, "Simulate Fish Feeding Streak")),
34
34
  f1: true,
35
35
  category: Categories.Developer
36
36
  });
@@ -40,21 +40,21 @@ class SimulateFishFeedingStreakAction extends Action2 {
40
40
  const aquariumService = accessor.get(IAquariumService);
41
41
  const aliveItem = {
42
42
  id: "alive",
43
- label: ( localize(3249, "Alive streak")),
44
- detail: ( localize(3250, "Show a live feeding streak in the toggle tooltip."))
43
+ label: ( localize(3272, "Alive streak")),
44
+ detail: ( localize(3273, "Show a live feeding streak in the toggle tooltip."))
45
45
  };
46
46
  const diedItem = {
47
47
  id: "died",
48
- label: ( localize(3251, "Died streak (revivable)")),
49
- detail: ( localize(3252, "Park a died streak and offer the revival prompt."))
48
+ label: ( localize(3274, "Died streak (revivable)")),
49
+ detail: ( localize(3275, "Park a died streak and offer the revival prompt."))
50
50
  };
51
51
  const clearItem = {
52
52
  id: "clear",
53
- label: ( localize(3253, "Clear streak")),
54
- detail: ( localize(3254, "Remove all streak state."))
53
+ label: ( localize(3276, "Clear streak")),
54
+ detail: ( localize(3277, "Remove all streak state."))
55
55
  };
56
56
  const scenario = await quickInputService.pick([aliveItem, diedItem, clearItem], {
57
- placeHolder: ( localize(3255, "Pick a streak scenario to simulate"))
57
+ placeHolder: ( localize(3278, "Pick a streak scenario to simulate"))
58
58
  });
59
59
  if (!scenario) {
60
60
  return;
@@ -65,10 +65,10 @@ class SimulateFishFeedingStreakAction extends Action2 {
65
65
  }
66
66
  const raw = await quickInputService.input({
67
67
  value: "30",
68
- prompt: ( localize(3256, "How many days should the streak be?")),
68
+ prompt: ( localize(3279, "How many days should the streak be?")),
69
69
  validateInput: async value => {
70
70
  const n = Number(value);
71
- return (!Number.isInteger(n) || n <= 0) ? ( localize(3257, "Enter a whole number greater than 0.")) : undefined;
71
+ return (!Number.isInteger(n) || n <= 0) ? ( localize(3280, "Enter a whole number greater than 0.")) : undefined;
72
72
  }
73
73
  });
74
74
  if (raw === undefined) {
@@ -85,7 +85,7 @@ class ToggleAquariumActionVisibilityAction extends Action2 {
85
85
  constructor() {
86
86
  super({
87
87
  id: ToggleAquariumActionVisibilityAction.ID,
88
- title: ( localize2(3258, "Toggle Aquarium Action Visibility")),
88
+ title: ( localize2(3281, "Toggle Aquarium Action Visibility")),
89
89
  f1: true,
90
90
  category: Categories.Developer
91
91
  });
@@ -148,7 +148,7 @@ let AquariumService = class AquariumService extends Disposable {
148
148
  StorageScope.APPLICATION,
149
149
  StorageTarget.USER
150
150
  );
151
- this.accessibilityService.status(visible ? ( localize(3259, "Aquarium action shown")) : ( localize(3260, "Aquarium action hidden")));
151
+ this.accessibilityService.status(visible ? ( localize(3282, "Aquarium action shown")) : ( localize(3283, "Aquarium action hidden")));
152
152
  return visible;
153
153
  }
154
154
  simulateStreak(count, alive) {
@@ -231,7 +231,7 @@ let AquariumService = class AquariumService extends Disposable {
231
231
  streakSpan.append(String(streak));
232
232
  } else {
233
233
  streakSpan.classList.add("revivable");
234
- streakSpan.append(( localize(3261, "{0} · Feed again to revive", revivable)));
234
+ streakSpan.append(( localize(3284, "{0} · Feed again to revive", revivable)));
235
235
  }
236
236
  button.appendChild(streakSpan);
237
237
  }
@@ -243,18 +243,18 @@ let AquariumService = class AquariumService extends Disposable {
243
243
  button.setAttribute("aria-label", label);
244
244
  }
245
245
  getToggleLabel(active) {
246
- const base = active ? ( localize(3262, "Hide Aquarium")) : ( localize(3263, "Show Aquarium"));
246
+ const base = active ? ( localize(3285, "Hide Aquarium")) : ( localize(3286, "Show Aquarium"));
247
247
  const streak = this.streak.count;
248
248
  if (streak > 0) {
249
249
  const hungerDescription = getFishHungerDescription(this.streak.hungerState);
250
250
  return (streak === 1 ? localize(
251
- 3264,
251
+ 3287,
252
252
  "{0} — {1} — {2} day feeding streak",
253
253
  base,
254
254
  hungerDescription,
255
255
  streak
256
256
  ) : localize(
257
- 3265,
257
+ 3288,
258
258
  "{0} — {1} — {2} days feeding streak",
259
259
  base,
260
260
  hungerDescription,
@@ -263,7 +263,7 @@ let AquariumService = class AquariumService extends Disposable {
263
263
  }
264
264
  const revivable = this.streak.revivableCount;
265
265
  if (revivable > 0) {
266
- return revivable === 1 ? ( localize(3266, "{0} — feed a fish to revive your {1} day streak", base, revivable)) : ( localize(3267, "{0} — feed a fish to revive your {1} day streak", base, revivable));
266
+ return revivable === 1 ? ( localize(3289, "{0} — feed a fish to revive your {1} day streak", base, revivable)) : ( localize(3290, "{0} — feed a fish to revive your {1} day streak", base, revivable));
267
267
  }
268
268
  return base;
269
269
  }
@@ -414,7 +414,7 @@ function createActiveAquarium(mainContainer, layoutService, accessibilityService
414
414
  positionY: randomBetween(0, Math.max(1, bounds.height - size)),
415
415
  velocityX: Math.cos(angle) * speed,
416
416
  velocityY: Math.sin(angle) * speed
417
- }, targetWindow.document));
417
+ }, mainContainer));
418
418
  fish.push(f);
419
419
  }
420
420
  const SYNC_BATCH = Math.ceil(FISH_COUNT / 2);
@@ -736,13 +736,13 @@ function addIconClasses(element, icon) {
736
736
  function getFishHungerDescription(state) {
737
737
  switch (state) {
738
738
  case "happy":
739
- return localize(3268, "fish is happy");
739
+ return localize(3291, "fish is happy");
740
740
  case "neutral":
741
- return localize(3269, "fish is getting hungry");
741
+ return localize(3292, "fish is getting hungry");
742
742
  case "sad":
743
- return localize(3270, "fish is hungry");
743
+ return localize(3293, "fish is hungry");
744
744
  case "verySad":
745
- return localize(3271, "fish is starving");
745
+ return localize(3294, "fish is starving");
746
746
  }
747
747
  }
748
748
  function computeWallAvoidAngle(centerX, centerY, width, height) {
@@ -51,7 +51,7 @@ export declare class Fish {
51
51
  * a snap-flip.
52
52
  */
53
53
  private facing;
54
- constructor(opts: IFishOptions, targetDocument: Document);
54
+ constructor(opts: IFishOptions, mainContainer: HTMLElement);
55
55
  /**
56
56
  * Write the current position/facing to the DOM.
57
57
  *
@@ -31,7 +31,7 @@ function disposeSharedFishDefs(targetDocument) {
31
31
  }
32
32
  }
33
33
  class Fish {
34
- constructor(opts, targetDocument) {
34
+ constructor(opts, mainContainer) {
35
35
  this.panicUntil = 0;
36
36
  this.facing = 1;
37
37
  this.positionX = opts.positionX;
@@ -45,7 +45,7 @@ class Fish {
45
45
  this.element.style.height = `${opts.size}px`;
46
46
  this.element.style.color = SPECIES_COLOR[opts.species];
47
47
  this.innerElement = $(".agents-aquarium-fish-inner");
48
- this.innerElement.appendChild(buildFishSvg(targetDocument));
48
+ this.innerElement.appendChild(buildFishSvg(mainContainer));
49
49
  this.element.appendChild(this.innerElement);
50
50
  this.applyTransform();
51
51
  }
@@ -81,8 +81,8 @@ const BODY_X_START = 5;
81
81
  const BODY_X_END = 90;
82
82
  const sharedDefsByDocument = ( new WeakMap());
83
83
  const SHARED_LOGO_SYMBOL_ID = "agents-aquarium-fish-logo";
84
- function ensureSharedDefs(targetDocument) {
85
- if (( sharedDefsByDocument.has(targetDocument))) {
84
+ function ensureSharedDefs(mainContainer) {
85
+ if (( sharedDefsByDocument.has(mainContainer.ownerDocument))) {
86
86
  return;
87
87
  }
88
88
  const stripWidth = (BODY_X_END - BODY_X_START) / NUM_BODY_STRIPS;
@@ -111,8 +111,8 @@ function ensureSharedDefs(targetDocument) {
111
111
  defs.appendChild(clip);
112
112
  }
113
113
  container.appendChild(defs);
114
- targetDocument.body.appendChild(container);
115
- sharedDefsByDocument.set(targetDocument, container);
114
+ mainContainer.appendChild(container);
115
+ sharedDefsByDocument.set(mainContainer.ownerDocument, container);
116
116
  }
117
117
  function createVSCodeLogoSymbol() {
118
118
  const symbol = $.SVG("symbol");
@@ -126,8 +126,8 @@ function createVSCodeLogoSymbol() {
126
126
  symbol.appendChild(logoPath);
127
127
  return symbol;
128
128
  }
129
- function buildFishSvg(targetDocument) {
130
- ensureSharedDefs(targetDocument);
129
+ function buildFishSvg(mainContainer) {
130
+ ensureSharedDefs(mainContainer);
131
131
  const svg = $.SVG("svg");
132
132
  svg.setAttribute("xmlns", "http://www.w3.org/2000/svg");
133
133
  svg.setAttribute("focusable", "false");