@codingame/monaco-vscode-workbench-service-override 37.4.0 → 37.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +10 -10
- package/vscode/src/vs/sessions/contrib/layout/browser/baseSessionLayoutController.js +22 -3
- package/vscode/src/vs/sessions/contrib/layout/browser/sessions.layout.contribution.js +2 -2
- package/vscode/src/vs/sessions/contrib/layout/browser/singlePane/singlePaneExistingSessionStrategy.js +1 -1
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/newSessionViewV3Prompt.js +19 -19
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionTour.js +4 -4
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTour.js +6 -6
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewTourShared.js +2 -2
- package/vscode/src/vs/sessions/contrib/onboardingTours/browser/tours/newSessionViewV2Tour.js +4 -4
- package/vscode/src/vs/sessions/contrib/policyBlocked/browser/sessionsPolicyBlocked.js +24 -24
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostClaudePermissionModePicker.js +3 -3
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostCodexApprovalsPicker.js +3 -3
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostModePicker.js +2 -2
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostPermissionPickerDelegate.js +8 -8
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionBranchActions.js +3 -3
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentHostSessionConfigPicker.js +32 -32
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/agentMergeActions.js +29 -29
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/exportDebugLogsAction.js +1 -1
- package/vscode/src/vs/sessions/contrib/providers/agentHost/browser/mobile/mobileChatInputConfigPicker.js +3 -3
- package/vscode/src/vs/sessions/contrib/providers/remoteAgentHost/browser/devContainerAgentHostService.js +6 -6
- package/vscode/src/vs/sessions/contrib/search/browser/search.contribution.js +3 -3
- package/vscode/src/vs/sessions/contrib/search/browser/searchEditorEmptyState.contribution.js +1 -1
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsIndicatorModel.js +4 -4
- package/vscode/src/vs/sessions/contrib/sessions/browser/blockedSessionsList.js +5 -5
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionDetailsAction.js +2 -2
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessions.contribution.js +8 -8
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsActions.js +58 -58
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.js +8 -8
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsWindowNotifier.js +5 -5
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationTemplates.js +10 -10
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsAccessibility.js +38 -38
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/automationsView.js +118 -118
- package/vscode/src/vs/sessions/contrib/sessions/browser/views/sessionsViewActions.js +53 -53
- package/vscode/src/vs/sessions/contrib/terminal/browser/agentHostSessionTaskRunner.js +1 -1
- package/vscode/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.js +2 -2
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsManagementService.js +2 -2
- package/vscode/src/vs/sessions/services/sessions/browser/sessionsService.js +2 -2
- package/vscode/src/vs/workbench/browser/layout.js +1 -1
|
@@ -23,8 +23,8 @@ import { SESSIONS_ARCHIVE_SESSION_CONFETTI_SETTING } from '@codingame/monaco-vsc
|
|
|
23
23
|
import { SessionsWindowNotifier } from './sessionsWindowNotifier.js';
|
|
24
24
|
import { USE_WORKTREE_SETTING, USE_WORKTREE_SETTING_TREATMENT } from '@codingame/monaco-vscode-api/vscode/vs/sessions/common/sessionConfig';
|
|
25
25
|
|
|
26
|
-
const agentSessionsViewIcon = registerIcon("chat-sessions-icon", Codicon.commentDiscussionSparkle, ( localize(
|
|
27
|
-
const AGENT_SESSIONS_VIEW_TITLE = ( localize2(
|
|
26
|
+
const agentSessionsViewIcon = registerIcon("chat-sessions-icon", Codicon.commentDiscussionSparkle, ( localize(4643, "Icon for Agent Sessions View")));
|
|
27
|
+
const AGENT_SESSIONS_VIEW_TITLE = ( localize2(4644, "Sessions"));
|
|
28
28
|
const SessionsContainerId = "agentic.workbench.view.sessionsContainer";
|
|
29
29
|
const agentSessionsViewContainer = ( Registry.as(Extensions.ViewContainersRegistry)).registerViewContainer({
|
|
30
30
|
id: SessionsContainerId,
|
|
@@ -38,7 +38,7 @@ const agentSessionsViewContainer = ( Registry.as(Extensions.ViewContainersRegist
|
|
|
38
38
|
order: 6,
|
|
39
39
|
openCommandActionDescriptor: {
|
|
40
40
|
id: SessionsContainerId,
|
|
41
|
-
mnemonicTitle: ( localize(
|
|
41
|
+
mnemonicTitle: ( localize(4645, "&&Sessions")),
|
|
42
42
|
keybindings: {
|
|
43
43
|
primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyX
|
|
44
44
|
},
|
|
@@ -67,7 +67,7 @@ const sessionsViewPaneDescriptor = {
|
|
|
67
67
|
type: "boolean",
|
|
68
68
|
tags: ["preview"],
|
|
69
69
|
description: ( localize(
|
|
70
|
-
|
|
70
|
+
4646,
|
|
71
71
|
"Controls whether the Chats group is shown in the sessions list even when it is empty."
|
|
72
72
|
)),
|
|
73
73
|
default: true,
|
|
@@ -79,7 +79,7 @@ const sessionsViewPaneDescriptor = {
|
|
|
79
79
|
type: "boolean",
|
|
80
80
|
tags: ["preview"],
|
|
81
81
|
description: ( localize(
|
|
82
|
-
|
|
82
|
+
4647,
|
|
83
83
|
"Controls whether a confetti animation is shown when archiving a session."
|
|
84
84
|
)),
|
|
85
85
|
default: false
|
|
@@ -95,7 +95,7 @@ const sessionsViewPaneDescriptor = {
|
|
|
95
95
|
mode: "auto",
|
|
96
96
|
name: AUTOMATIONS_NEW_BADGE_STYLE_TREATMENT
|
|
97
97
|
},
|
|
98
|
-
description: ( localize(
|
|
98
|
+
description: ( localize(4648, "Controls the visual style of the Automations first-use badge."))
|
|
99
99
|
},
|
|
100
100
|
[NEW_SESSION_BUTTON_STYLE_SETTING]: {
|
|
101
101
|
type: "string",
|
|
@@ -108,14 +108,14 @@ const sessionsViewPaneDescriptor = {
|
|
|
108
108
|
mode: "auto",
|
|
109
109
|
name: NEW_SESSION_BUTTON_STYLE_TREATMENT
|
|
110
110
|
},
|
|
111
|
-
description: ( localize(
|
|
111
|
+
description: ( localize(4649, "Controls the visual style of the New Session button."))
|
|
112
112
|
},
|
|
113
113
|
[USE_WORKTREE_SETTING]: {
|
|
114
114
|
type: "boolean",
|
|
115
115
|
default: true,
|
|
116
116
|
scope: ConfigurationScope.APPLICATION,
|
|
117
117
|
description: ( localize(
|
|
118
|
-
|
|
118
|
+
4650,
|
|
119
119
|
"Controls whether New Worktree is checked when no previous isolation choice has been saved. Once a choice is saved, it is used across workspaces instead of this setting."
|
|
120
120
|
)),
|
|
121
121
|
experiment: {
|
|
@@ -88,7 +88,7 @@ registerAction2(class ShowSessionsPickerAction extends Action2 {
|
|
|
88
88
|
constructor() {
|
|
89
89
|
super({
|
|
90
90
|
id: SHOW_SESSIONS_PICKER_COMMAND_ID,
|
|
91
|
-
title: ( localize2(
|
|
91
|
+
title: ( localize2(4651, "Show Sessions Picker")),
|
|
92
92
|
f1: true,
|
|
93
93
|
category: SessionsCategories.Sessions,
|
|
94
94
|
keybinding: {
|
|
@@ -141,7 +141,7 @@ registerAction2(class ShowSessionsPickerAction extends Action2 {
|
|
|
141
141
|
const picker = quickInputService.createQuickPick({
|
|
142
142
|
useSeparators: true
|
|
143
143
|
});
|
|
144
|
-
picker.placeholder = ( localize(
|
|
144
|
+
picker.placeholder = ( localize(4652, "Search sessions by name or folder"));
|
|
145
145
|
picker.canAcceptInBackground = true;
|
|
146
146
|
picker.matchOnDetail = true;
|
|
147
147
|
const disposables = ( new DisposableStore());
|
|
@@ -159,7 +159,7 @@ registerAction2(class ShowSessionsPickerAction extends Action2 {
|
|
|
159
159
|
const sessionGroups = groupSessionsForPicker(recent, other, reader);
|
|
160
160
|
const items = [{
|
|
161
161
|
id: "newSession",
|
|
162
|
-
label: `$(add) ${( localize(
|
|
162
|
+
label: `$(add) ${( localize(4653, "New Session"))}`,
|
|
163
163
|
session: undefined
|
|
164
164
|
}];
|
|
165
165
|
let firstSessionItem;
|
|
@@ -177,10 +177,10 @@ registerAction2(class ShowSessionsPickerAction extends Action2 {
|
|
|
177
177
|
items.push(item);
|
|
178
178
|
}
|
|
179
179
|
};
|
|
180
|
-
appendSessions(( localize(
|
|
181
|
-
appendSessions(( localize(
|
|
182
|
-
appendSessions(( localize(
|
|
183
|
-
appendSessions(( localize(
|
|
180
|
+
appendSessions(( localize(4654, "needs input")), sessionGroups.needsInput);
|
|
181
|
+
appendSessions(( localize(4655, "unread")), sessionGroups.unread);
|
|
182
|
+
appendSessions(( localize(4656, "recently opened")), sessionGroups.recent);
|
|
183
|
+
appendSessions(( localize(4657, "other sessions")), sessionGroups.other);
|
|
184
184
|
const activeItemId = picker.activeItems[0]?.id;
|
|
185
185
|
picker.items = items;
|
|
186
186
|
const activeItem = activeItemId ? items.find(item => item.type !== "separator" && item.id === activeItemId) : firstSessionItem;
|
|
@@ -248,12 +248,12 @@ registerAction2(class GoBackAction extends Action2 {
|
|
|
248
248
|
super({
|
|
249
249
|
id: "sessions.goBack",
|
|
250
250
|
title: {
|
|
251
|
-
...( localize2(
|
|
252
|
-
mnemonicTitle: ( localize(
|
|
251
|
+
...( localize2(4658, "Go Back")),
|
|
252
|
+
mnemonicTitle: ( localize(4659, "&&Back"))
|
|
253
253
|
},
|
|
254
254
|
f1: true,
|
|
255
255
|
icon: Codicon.arrowLeft,
|
|
256
|
-
tooltip: ( localize(
|
|
256
|
+
tooltip: ( localize(4660, "Go Back One Session")),
|
|
257
257
|
category: SessionsCategories.Sessions,
|
|
258
258
|
precondition: CanGoBackContext,
|
|
259
259
|
keybinding: {
|
|
@@ -293,12 +293,12 @@ registerAction2(class GoForwardAction extends Action2 {
|
|
|
293
293
|
super({
|
|
294
294
|
id: "sessions.goForward",
|
|
295
295
|
title: {
|
|
296
|
-
...( localize2(
|
|
297
|
-
mnemonicTitle: ( localize(
|
|
296
|
+
...( localize2(4661, "Go Forward")),
|
|
297
|
+
mnemonicTitle: ( localize(4662, "&&Forward"))
|
|
298
298
|
},
|
|
299
299
|
f1: true,
|
|
300
300
|
icon: Codicon.arrowRight,
|
|
301
|
-
tooltip: ( localize(
|
|
301
|
+
tooltip: ( localize(4663, "Go Forward One Session")),
|
|
302
302
|
category: SessionsCategories.Sessions,
|
|
303
303
|
precondition: CanGoForwardContext,
|
|
304
304
|
keybinding: {
|
|
@@ -337,7 +337,7 @@ registerAction2(class FocusActiveSessionAction extends Action2 {
|
|
|
337
337
|
constructor() {
|
|
338
338
|
super({
|
|
339
339
|
id: FOCUS_ACTIVE_SESSION_COMMAND_ID,
|
|
340
|
-
title: ( localize2(
|
|
340
|
+
title: ( localize2(4664, "Focus Active Session")),
|
|
341
341
|
f1: true,
|
|
342
342
|
category: SessionsCategories.Sessions,
|
|
343
343
|
keybinding: {
|
|
@@ -372,7 +372,7 @@ registerAction2(class FocusPreviousChatGroupAction extends Action2 {
|
|
|
372
372
|
constructor() {
|
|
373
373
|
super({
|
|
374
374
|
id: FOCUS_PREVIOUS_CHAT_GROUP_COMMAND_ID,
|
|
375
|
-
title: ( localize2(
|
|
375
|
+
title: ( localize2(4665, "Focus Previous Chat Group")),
|
|
376
376
|
f1: true,
|
|
377
377
|
category: SessionsCategories.Sessions,
|
|
378
378
|
keybinding: {
|
|
@@ -390,7 +390,7 @@ registerAction2(class FocusNextChatGroupAction extends Action2 {
|
|
|
390
390
|
constructor() {
|
|
391
391
|
super({
|
|
392
392
|
id: FOCUS_NEXT_CHAT_GROUP_COMMAND_ID,
|
|
393
|
-
title: ( localize2(
|
|
393
|
+
title: ( localize2(4666, "Focus Next Chat Group")),
|
|
394
394
|
f1: true,
|
|
395
395
|
category: SessionsCategories.Sessions,
|
|
396
396
|
keybinding: {
|
|
@@ -408,7 +408,7 @@ registerAction2(class SplitChatGroupRightAction extends Action2 {
|
|
|
408
408
|
constructor() {
|
|
409
409
|
super({
|
|
410
410
|
id: SPLIT_CHAT_GROUP_RIGHT_COMMAND_ID,
|
|
411
|
-
title: ( localize2(
|
|
411
|
+
title: ( localize2(4667, "Split Chat Group Right")),
|
|
412
412
|
f1: true,
|
|
413
413
|
category: SessionsCategories.Sessions
|
|
414
414
|
});
|
|
@@ -421,7 +421,7 @@ registerAction2(class SplitChatGroupDownAction extends Action2 {
|
|
|
421
421
|
constructor() {
|
|
422
422
|
super({
|
|
423
423
|
id: SPLIT_CHAT_GROUP_DOWN_COMMAND_ID,
|
|
424
|
-
title: ( localize2(
|
|
424
|
+
title: ( localize2(4668, "Split Chat Group Down")),
|
|
425
425
|
f1: true,
|
|
426
426
|
category: SessionsCategories.Sessions
|
|
427
427
|
});
|
|
@@ -434,7 +434,7 @@ registerAction2(class MoveChatToPreviousGroupAction extends Action2 {
|
|
|
434
434
|
constructor() {
|
|
435
435
|
super({
|
|
436
436
|
id: MOVE_CHAT_TO_PREVIOUS_GROUP_COMMAND_ID,
|
|
437
|
-
title: ( localize2(
|
|
437
|
+
title: ( localize2(4669, "Move Chat to Previous Group")),
|
|
438
438
|
f1: true,
|
|
439
439
|
category: SessionsCategories.Sessions
|
|
440
440
|
});
|
|
@@ -447,7 +447,7 @@ registerAction2(class MoveChatToNextGroupAction extends Action2 {
|
|
|
447
447
|
constructor() {
|
|
448
448
|
super({
|
|
449
449
|
id: MOVE_CHAT_TO_NEXT_GROUP_COMMAND_ID,
|
|
450
|
-
title: ( localize2(
|
|
450
|
+
title: ( localize2(4670, "Move Chat to Next Group")),
|
|
451
451
|
f1: true,
|
|
452
452
|
category: SessionsCategories.Sessions
|
|
453
453
|
});
|
|
@@ -463,7 +463,7 @@ for (let index = 0; index < 9; index++) {
|
|
|
463
463
|
constructor() {
|
|
464
464
|
super({
|
|
465
465
|
id: `sessions.focusSessionInGrid${position}`,
|
|
466
|
-
title: isLast ? ( localize2(
|
|
466
|
+
title: isLast ? ( localize2(4671, "Focus Last Session in Grid")) : ( localize2(4672, "Focus Session {0} in Grid", position)),
|
|
467
467
|
f1: true,
|
|
468
468
|
category: SessionsCategories.Sessions,
|
|
469
469
|
keybinding: {
|
|
@@ -491,7 +491,7 @@ registerAction2(class CloseAllSessionsAction extends Action2 {
|
|
|
491
491
|
constructor() {
|
|
492
492
|
super({
|
|
493
493
|
id: "sessions.closeAllSessions",
|
|
494
|
-
title: ( localize2(
|
|
494
|
+
title: ( localize2(4673, "Close All Sessions")),
|
|
495
495
|
f1: true,
|
|
496
496
|
category: SessionsCategories.Sessions,
|
|
497
497
|
precondition: IsSessionsWindowContext,
|
|
@@ -543,11 +543,11 @@ async function renameChatWithQuickInput(accessor, context) {
|
|
|
543
543
|
if (!initialChat || extUri.isEqual(resource, session.mainChat.get().resource) || initialChat.status.get() === SessionStatus.Untitled || !getChatCapabilities(initialChat, session, undefined).canRename) {
|
|
544
544
|
return;
|
|
545
545
|
}
|
|
546
|
-
const initialTitle = initialChat.title.get().trim() || ( localize(
|
|
546
|
+
const initialTitle = initialChat.title.get().trim() || ( localize(4674, "Untitled Chat"));
|
|
547
547
|
const newTitle = await quickInputService.input({
|
|
548
548
|
value: initialTitle,
|
|
549
|
-
prompt: ( localize(
|
|
550
|
-
validateInput: async value => value.trim() ? undefined : ( localize(
|
|
549
|
+
prompt: ( localize(4675, "New chat title")),
|
|
550
|
+
validateInput: async value => value.trim() ? undefined : ( localize(4676, "Title cannot be empty"))
|
|
551
551
|
});
|
|
552
552
|
const trimmedTitle = newTitle?.trim();
|
|
553
553
|
if (!trimmedTitle || trimmedTitle === initialTitle) {
|
|
@@ -563,7 +563,7 @@ registerAction2(class RenameChatAction extends Action2 {
|
|
|
563
563
|
constructor() {
|
|
564
564
|
super({
|
|
565
565
|
id: RENAME_CHAT_COMMAND_ID,
|
|
566
|
-
title: ( localize2(
|
|
566
|
+
title: ( localize2(4677, "Rename...")),
|
|
567
567
|
f1: false,
|
|
568
568
|
category: SessionsCategories.Sessions,
|
|
569
569
|
keybinding: {
|
|
@@ -584,7 +584,7 @@ registerAction2(class RenameSessionListChatAction extends Action2 {
|
|
|
584
584
|
constructor() {
|
|
585
585
|
super({
|
|
586
586
|
id: "sessions.list.renameChat",
|
|
587
|
-
title: ( localize2(
|
|
587
|
+
title: ( localize2(4678, "Rename...")),
|
|
588
588
|
f1: false,
|
|
589
589
|
menu: {
|
|
590
590
|
id: Menus.SessionChatItemContext,
|
|
@@ -605,7 +605,7 @@ registerAction2(class OpenSessionListChatToSideAction extends Action2 {
|
|
|
605
605
|
constructor() {
|
|
606
606
|
super({
|
|
607
607
|
id: "sessions.list.openChatToSide",
|
|
608
|
-
title: ( localize2(
|
|
608
|
+
title: ( localize2(4679, "Open to the Side")),
|
|
609
609
|
f1: false,
|
|
610
610
|
menu: {
|
|
611
611
|
id: Menus.SessionChatItemContext,
|
|
@@ -629,7 +629,7 @@ registerAction2(class DeleteSessionListChatAction extends Action2 {
|
|
|
629
629
|
constructor() {
|
|
630
630
|
super({
|
|
631
631
|
id: "sessions.list.deleteChat",
|
|
632
|
-
title: ( localize2(
|
|
632
|
+
title: ( localize2(4680, "Delete...")),
|
|
633
633
|
f1: false,
|
|
634
634
|
menu: {
|
|
635
635
|
id: Menus.SessionChatItemContext,
|
|
@@ -651,7 +651,7 @@ registerAction2(class AddChatToSessionAction extends Action2 {
|
|
|
651
651
|
constructor() {
|
|
652
652
|
super({
|
|
653
653
|
id: ADD_CHAT_TO_SESSION_ACTION_ID,
|
|
654
|
-
title: ( localize2(
|
|
654
|
+
title: ( localize2(4681, "New Chat in This Session")),
|
|
655
655
|
icon: Codicon.add,
|
|
656
656
|
keybinding: {
|
|
657
657
|
weight: CHAT_TAB_KEYBINDING_WEIGHT,
|
|
@@ -720,7 +720,7 @@ registerAction2(class NavigateNextChatAction extends Action2 {
|
|
|
720
720
|
constructor() {
|
|
721
721
|
super({
|
|
722
722
|
id: "sessions.chatCompositeBar.navigateNextChat",
|
|
723
|
-
title: ( localize2(
|
|
723
|
+
title: ( localize2(4682, "Go to Next Chat")),
|
|
724
724
|
f1: true,
|
|
725
725
|
category: SessionsCategories.Sessions,
|
|
726
726
|
precondition: SessionHasMultipleOpenChatsContext,
|
|
@@ -739,7 +739,7 @@ registerAction2(class NavigatePreviousChatAction extends Action2 {
|
|
|
739
739
|
constructor() {
|
|
740
740
|
super({
|
|
741
741
|
id: "sessions.chatCompositeBar.navigatePreviousChat",
|
|
742
|
-
title: ( localize2(
|
|
742
|
+
title: ( localize2(4683, "Go to Previous Chat")),
|
|
743
743
|
f1: true,
|
|
744
744
|
category: SessionsCategories.Sessions,
|
|
745
745
|
precondition: SessionHasMultipleOpenChatsContext,
|
|
@@ -758,7 +758,7 @@ registerAction2(class CloseChatAction extends Action2 {
|
|
|
758
758
|
constructor() {
|
|
759
759
|
super({
|
|
760
760
|
id: CLOSE_CHAT_COMMAND_ID,
|
|
761
|
-
title: ( localize2(
|
|
761
|
+
title: ( localize2(4684, "Close Chat")),
|
|
762
762
|
icon: Codicon.close,
|
|
763
763
|
f1: false,
|
|
764
764
|
category: SessionsCategories.Sessions,
|
|
@@ -803,7 +803,7 @@ registerAction2(class CloseAllChatsAction extends Action2 {
|
|
|
803
803
|
constructor() {
|
|
804
804
|
super({
|
|
805
805
|
id: "sessions.chatCompositeBar.closeAllChats",
|
|
806
|
-
title: ( localize2(
|
|
806
|
+
title: ( localize2(4685, "Close All Chats")),
|
|
807
807
|
f1: true,
|
|
808
808
|
category: SessionsCategories.Sessions,
|
|
809
809
|
precondition: SessionHasMultipleOpenChatsContext,
|
|
@@ -842,7 +842,7 @@ registerAction2(class DeleteChatAction extends Action2 {
|
|
|
842
842
|
constructor() {
|
|
843
843
|
super({
|
|
844
844
|
id: "sessions.chatCompositeBar.deleteChat",
|
|
845
|
-
title: ( localize2(
|
|
845
|
+
title: ( localize2(4686, "Delete Chat")),
|
|
846
846
|
f1: true,
|
|
847
847
|
category: SessionsCategories.Sessions,
|
|
848
848
|
keybinding: {
|
|
@@ -874,7 +874,7 @@ registerAction2(class ReopenLastClosedChatAction extends Action2 {
|
|
|
874
874
|
constructor() {
|
|
875
875
|
super({
|
|
876
876
|
id: "sessions.chatCompositeBar.reopenLastClosedChat",
|
|
877
|
-
title: ( localize2(
|
|
877
|
+
title: ( localize2(4687, "Reopen Last Closed Chat")),
|
|
878
878
|
f1: true,
|
|
879
879
|
category: SessionsCategories.Sessions,
|
|
880
880
|
precondition: SessionSupportsMultipleChatsContext
|
|
@@ -899,7 +899,7 @@ registerAction2(class ReopenLastClosedItemAction extends Action2 {
|
|
|
899
899
|
constructor() {
|
|
900
900
|
super({
|
|
901
901
|
id: "sessions.reopenLastClosedItem",
|
|
902
|
-
title: ( localize2(
|
|
902
|
+
title: ( localize2(4688, "Reopen Closed Chat or Session")),
|
|
903
903
|
category: SessionsCategories.Sessions,
|
|
904
904
|
keybinding: {
|
|
905
905
|
weight: CHAT_TAB_KEYBINDING_WEIGHT,
|
|
@@ -934,7 +934,7 @@ function openChatsPicker(accessor, mru) {
|
|
|
934
934
|
}
|
|
935
935
|
const extUri = accessor.get(IUriIdentityService).extUri;
|
|
936
936
|
const toItem = chat => ({
|
|
937
|
-
label: chat.title.get()?.trim() || ( localize(
|
|
937
|
+
label: chat.title.get()?.trim() || ( localize(4674, "Untitled Chat")),
|
|
938
938
|
description: fromNow(chat.updatedAt.get(), true, true),
|
|
939
939
|
iconClass: ThemeIcon.asClassName(Codicon.commentDiscussion),
|
|
940
940
|
chat
|
|
@@ -949,10 +949,10 @@ function openChatsPicker(accessor, mru) {
|
|
|
949
949
|
}
|
|
950
950
|
const displayItems = closedItems.length === 0 ? openItems : [{
|
|
951
951
|
type: "separator",
|
|
952
|
-
label: ( localize(
|
|
952
|
+
label: ( localize(4689, "Open"))
|
|
953
953
|
}, ...openItems, {
|
|
954
954
|
type: "separator",
|
|
955
|
-
label: ( localize(
|
|
955
|
+
label: ( localize(4690, "Closed"))
|
|
956
956
|
}, ...closedItems];
|
|
957
957
|
const activeChat = session.activeChat.get();
|
|
958
958
|
const activeIndex = Math.max(
|
|
@@ -972,7 +972,7 @@ function openChatsPicker(accessor, mru) {
|
|
|
972
972
|
keybindings: keybindingService.lookupKeybindings(CHATS_PICKER_QUICK_NAVIGATE_NEXT_ID)
|
|
973
973
|
};
|
|
974
974
|
} else {
|
|
975
|
-
picker.placeholder = ( localize(
|
|
975
|
+
picker.placeholder = ( localize(4691, "Search chats by name"));
|
|
976
976
|
picker.matchOnDescription = true;
|
|
977
977
|
}
|
|
978
978
|
const pickerVisibleContext = SessionChatsPickerVisibleContext.bindTo(contextKeyService);
|
|
@@ -993,7 +993,7 @@ registerAction2(class ShowChatsPickerAction extends Action2 {
|
|
|
993
993
|
constructor() {
|
|
994
994
|
super({
|
|
995
995
|
id: SHOW_CHATS_PICKER_COMMAND_ID,
|
|
996
|
-
title: ( localize2(
|
|
996
|
+
title: ( localize2(4692, "Go to Chat in Session")),
|
|
997
997
|
f1: true,
|
|
998
998
|
category: SessionsCategories.Sessions,
|
|
999
999
|
precondition: SessionHasMultipleCommittedChatsContext,
|
|
@@ -1012,7 +1012,7 @@ registerAction2(class QuickSwitchNextChatAction extends Action2 {
|
|
|
1012
1012
|
constructor() {
|
|
1013
1013
|
super({
|
|
1014
1014
|
id: QUICK_SWITCH_NEXT_CHAT_ID,
|
|
1015
|
-
title: ( localize2(
|
|
1015
|
+
title: ( localize2(4693, "Quick Switch to Next Chat")),
|
|
1016
1016
|
f1: false,
|
|
1017
1017
|
category: SessionsCategories.Sessions,
|
|
1018
1018
|
precondition: SessionHasMultipleOpenChatsContext,
|
|
@@ -1036,7 +1036,7 @@ registerAction2(class QuickSwitchPreviousChatAction extends Action2 {
|
|
|
1036
1036
|
constructor() {
|
|
1037
1037
|
super({
|
|
1038
1038
|
id: QUICK_SWITCH_PREVIOUS_CHAT_ID,
|
|
1039
|
-
title: ( localize2(
|
|
1039
|
+
title: ( localize2(4694, "Quick Switch to Previous Chat")),
|
|
1040
1040
|
f1: false,
|
|
1041
1041
|
category: SessionsCategories.Sessions,
|
|
1042
1042
|
precondition: SessionHasMultipleOpenChatsContext,
|
|
@@ -1195,7 +1195,7 @@ let NewSessionActionViewItem = class NewSessionActionViewItem extends CompactBut
|
|
|
1195
1195
|
return NEW_SESSION_ACTION_ID;
|
|
1196
1196
|
}
|
|
1197
1197
|
get label() {
|
|
1198
|
-
return localize(
|
|
1198
|
+
return localize(4695, "New");
|
|
1199
1199
|
}
|
|
1200
1200
|
get onboardingTargetId() {
|
|
1201
1201
|
return "sessions.newSession.button";
|
|
@@ -1214,10 +1214,10 @@ let NewSessionActionViewItem = class NewSessionActionViewItem extends CompactBut
|
|
|
1214
1214
|
}));
|
|
1215
1215
|
}
|
|
1216
1216
|
getHoverContent(keybindingLabel) {
|
|
1217
|
-
return keybindingLabel ? ( localize(
|
|
1217
|
+
return keybindingLabel ? ( localize(4696, "New Session ({0})", keybindingLabel)) : ( localize(4697, "New Session"));
|
|
1218
1218
|
}
|
|
1219
1219
|
getAriaLabel(keybindingAriaLabel) {
|
|
1220
|
-
return keybindingAriaLabel ? ( localize(
|
|
1220
|
+
return keybindingAriaLabel ? ( localize(4698, "New Session ({0})", keybindingAriaLabel)) : ( localize(4699, "New Session"));
|
|
1221
1221
|
}
|
|
1222
1222
|
onRun() {
|
|
1223
1223
|
logSessionsInteraction(this.telemetryService, "newSession", this.telemetrySource);
|
|
@@ -1352,7 +1352,7 @@ let SessionConversationActionsContribution = class SessionConversationActionsCon
|
|
|
1352
1352
|
const allChats = session.chats.read(reader);
|
|
1353
1353
|
const registerOpen = (chat, order) => {
|
|
1354
1354
|
const chatResource = chat.resource;
|
|
1355
|
-
const title = chat.title.read(reader) || ( localize(
|
|
1355
|
+
const title = chat.title.read(reader) || ( localize(4674, "Untitled Chat"));
|
|
1356
1356
|
store.add(registerAction2(class extends Action2 {
|
|
1357
1357
|
constructor() {
|
|
1358
1358
|
super({
|
|
@@ -1397,7 +1397,7 @@ let SessionConversationActionsContribution = class SessionConversationActionsCon
|
|
|
1397
1397
|
SessionConversationActionsContribution = ( __decorate([( __param(0, ISessionsService)), ( __param(1, IUriIdentityService))], SessionConversationActionsContribution));
|
|
1398
1398
|
MenuRegistry.appendMenuItem(Menus.SessionBarToolbar, {
|
|
1399
1399
|
submenu: Menus.SessionConversations,
|
|
1400
|
-
title: ( localize2(
|
|
1400
|
+
title: ( localize2(4700, "Side Chats")),
|
|
1401
1401
|
icon: Codicon.commentDiscussion,
|
|
1402
1402
|
group: "secondary/2_chats",
|
|
1403
1403
|
order: 10,
|
|
@@ -1407,12 +1407,12 @@ registerAction2(class TogglePinSessionAction extends Action2 {
|
|
|
1407
1407
|
constructor() {
|
|
1408
1408
|
super({
|
|
1409
1409
|
id: "sessions.chatCompositeBar.togglePin",
|
|
1410
|
-
title: ( localize2(
|
|
1410
|
+
title: ( localize2(4701, "Pin")),
|
|
1411
1411
|
icon: Codicon.pin,
|
|
1412
1412
|
toggled: {
|
|
1413
1413
|
condition: SessionIsStickyContext,
|
|
1414
1414
|
icon: Codicon.pinned,
|
|
1415
|
-
title: ( localize(
|
|
1415
|
+
title: ( localize(4702, "Unpin"))
|
|
1416
1416
|
},
|
|
1417
1417
|
menu: [{
|
|
1418
1418
|
id: Menus.SessionBarToolbar,
|
|
@@ -1437,10 +1437,10 @@ registerAction2(class TogglePinSessionAction extends Action2 {
|
|
|
1437
1437
|
MenuRegistry.appendMenuItem(Menus.SessionHeaderContext, {
|
|
1438
1438
|
command: {
|
|
1439
1439
|
id: "sessions.chatCompositeBar.togglePin",
|
|
1440
|
-
title: ( localize(
|
|
1440
|
+
title: ( localize(4703, "Pin")),
|
|
1441
1441
|
toggled: {
|
|
1442
1442
|
condition: SessionIsStickyContext,
|
|
1443
|
-
title: ( localize(
|
|
1443
|
+
title: ( localize(4704, "Unpin"))
|
|
1444
1444
|
}
|
|
1445
1445
|
},
|
|
1446
1446
|
group: "1_view",
|
|
@@ -1451,7 +1451,7 @@ registerAction2(class RenameSessionHeaderAction extends Action2 {
|
|
|
1451
1451
|
constructor() {
|
|
1452
1452
|
super({
|
|
1453
1453
|
id: "sessions.sessionHeader.rename",
|
|
1454
|
-
title: ( localize2(
|
|
1454
|
+
title: ( localize2(4705, "Rename...")),
|
|
1455
1455
|
icon: Codicon.edit,
|
|
1456
1456
|
menu: [{
|
|
1457
1457
|
id: Menus.SessionHeaderContext,
|
|
@@ -1480,7 +1480,7 @@ registerAction2(class CloseSessionAction extends Action2 {
|
|
|
1480
1480
|
constructor() {
|
|
1481
1481
|
super({
|
|
1482
1482
|
id: "sessions.chatCompositeBar.close",
|
|
1483
|
-
title: ( localize2(
|
|
1483
|
+
title: ( localize2(4706, "Close")),
|
|
1484
1484
|
icon: Codicon.close,
|
|
1485
1485
|
menu: [{
|
|
1486
1486
|
id: Menus.SessionBarToolbar,
|
|
@@ -1506,12 +1506,12 @@ registerAction2(class ToggleMaximizeSessionViewAction extends Action2 {
|
|
|
1506
1506
|
constructor() {
|
|
1507
1507
|
super({
|
|
1508
1508
|
id: "sessions.chatCompositeBar.toggleMaximize",
|
|
1509
|
-
title: ( localize2(
|
|
1509
|
+
title: ( localize2(4707, "Maximize")),
|
|
1510
1510
|
icon: Codicon.screenFull,
|
|
1511
1511
|
toggled: {
|
|
1512
1512
|
condition: SessionIsMaximizedContext,
|
|
1513
1513
|
icon: Codicon.screenNormal,
|
|
1514
|
-
title: ( localize(
|
|
1514
|
+
title: ( localize(4708, "Restore"))
|
|
1515
1515
|
},
|
|
1516
1516
|
menu: {
|
|
1517
1517
|
id: Menus.SessionBarToolbar,
|
|
@@ -1530,7 +1530,7 @@ registerAction2(class CloseEditorAreaAction extends Action2 {
|
|
|
1530
1530
|
constructor() {
|
|
1531
1531
|
super({
|
|
1532
1532
|
id: "sessions.closeEditorArea",
|
|
1533
|
-
title: ( localize2(
|
|
1533
|
+
title: ( localize2(4709, "Close Editor Area")),
|
|
1534
1534
|
icon: Codicon.close,
|
|
1535
1535
|
category: SessionsCategories.Sessions,
|
|
1536
1536
|
menu: {
|
|
@@ -47,7 +47,7 @@ function registerBlockedSessionsHeaderActions() {
|
|
|
47
47
|
return combinedDisposable(MenuRegistry.appendMenuItem(Menus.BlockedSessionsHeader, {
|
|
48
48
|
command: {
|
|
49
49
|
id: SHOW_ALL_SESSIONS_FROM_BLOCKED_LIST_COMMAND_ID,
|
|
50
|
-
title: ( localize(
|
|
50
|
+
title: ( localize(4710, "Show All Sessions")),
|
|
51
51
|
icon: Codicon.listSelection
|
|
52
52
|
},
|
|
53
53
|
group: "navigation",
|
|
@@ -55,7 +55,7 @@ function registerBlockedSessionsHeaderActions() {
|
|
|
55
55
|
}), MenuRegistry.appendMenuItem(Menus.BlockedSessionsHeader, {
|
|
56
56
|
command: {
|
|
57
57
|
id: IGNORE_ALL_INPUT_NEEDED_COMMAND_ID,
|
|
58
|
-
title: ( localize(
|
|
58
|
+
title: ( localize(4711, "Ignore All Input Needed")),
|
|
59
59
|
icon: Codicon.bellSlash
|
|
60
60
|
},
|
|
61
61
|
group: "navigation",
|
|
@@ -63,7 +63,7 @@ function registerBlockedSessionsHeaderActions() {
|
|
|
63
63
|
}), MenuRegistry.appendMenuItem(Menus.BlockedSessionsHeader, {
|
|
64
64
|
command: {
|
|
65
65
|
id: HIDE_BLOCKED_SESSIONS_COMMAND_ID,
|
|
66
|
-
title: ( localize(
|
|
66
|
+
title: ( localize(4712, "Close")),
|
|
67
67
|
icon: Codicon.close
|
|
68
68
|
},
|
|
69
69
|
group: "z_close",
|
|
@@ -212,7 +212,7 @@ let SessionsTitleBarWidget = class SessionsTitleBarWidget extends BaseActionView
|
|
|
212
212
|
}
|
|
213
213
|
_renderActiveSession() {
|
|
214
214
|
const container = this._container;
|
|
215
|
-
container.setAttribute("aria-label", this._sessionTitle ? ( localize(
|
|
215
|
+
container.setAttribute("aria-label", this._sessionTitle ? ( localize(4713, "Show Sessions: {0}", this._sessionTitle)) : ( localize(4714, "Show Sessions")));
|
|
216
216
|
const workspaceInfo = this._workspaceInfo;
|
|
217
217
|
const sessionPill = $("div.agent-sessions-titlebar-pill");
|
|
218
218
|
const centerGroup = $("div.agent-sessions-titlebar-center");
|
|
@@ -239,7 +239,7 @@ let SessionsTitleBarWidget = class SessionsTitleBarWidget extends BaseActionView
|
|
|
239
239
|
);
|
|
240
240
|
centerGroup.appendChild(workspaceIconEl);
|
|
241
241
|
const workspaceEl = $("div.agent-sessions-titlebar-workspace");
|
|
242
|
-
workspaceEl.textContent = this._sessionTitle ?? ( localize(
|
|
242
|
+
workspaceEl.textContent = this._sessionTitle ?? ( localize(4715, "No workspace"));
|
|
243
243
|
centerGroup.appendChild(workspaceEl);
|
|
244
244
|
this._dynamicDisposables.add(this.hoverService.setupDelayedHover(workspaceEl, {
|
|
245
245
|
content: workspaceEl.textContent
|
|
@@ -302,7 +302,7 @@ let SessionsTitleBarWidget = class SessionsTitleBarWidget extends BaseActionView
|
|
|
302
302
|
}
|
|
303
303
|
_renderApproved(count) {
|
|
304
304
|
const container = this._container;
|
|
305
|
-
const label = count === 1 ? ( localize(
|
|
305
|
+
const label = count === 1 ? ( localize(4716, "Approved 1 session")) : ( localize(4717, "Approved {0} sessions", count));
|
|
306
306
|
container.setAttribute("aria-label", label);
|
|
307
307
|
const pill = $("div.agent-sessions-titlebar-pill");
|
|
308
308
|
const labelEl = $("div.agent-sessions-titlebar-approved-label");
|
|
@@ -475,14 +475,14 @@ let SessionsTitleBarContribution = class SessionsTitleBarContribution extends Di
|
|
|
475
475
|
));
|
|
476
476
|
this._register(MenuRegistry.appendMenuItem(Menus.CommandCenter, {
|
|
477
477
|
submenu: Menus.TitleBarSessionTitle,
|
|
478
|
-
title: ( localize(
|
|
478
|
+
title: ( localize(4718, "Agent Sessions")),
|
|
479
479
|
order: 101,
|
|
480
480
|
when: ( ContextKeyExpr.and(( IsAuxiliaryWindowContext.negate()), ( SessionsWelcomeVisibleContext.negate())))
|
|
481
481
|
}));
|
|
482
482
|
this._register(MenuRegistry.appendMenuItem(Menus.TitleBarSessionTitle, {
|
|
483
483
|
command: {
|
|
484
484
|
id: SHOW_SESSIONS_PICKER_COMMAND_ID,
|
|
485
|
-
title: ( localize(
|
|
485
|
+
title: ( localize(4719, "Show Sessions"))
|
|
486
486
|
},
|
|
487
487
|
group: "a_sessions",
|
|
488
488
|
order: 1,
|
|
@@ -113,9 +113,9 @@ let SessionsWindowNotifier = class SessionsWindowNotifier extends Disposable {
|
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
115
|
const result = await this._hostService.showToast({
|
|
116
|
-
title: this._sanitizeOSToastText(( localize(
|
|
116
|
+
title: this._sanitizeOSToastText(( localize(4720, "Session: {0}", session.title.get()))),
|
|
117
117
|
body: this._sanitizeOSToastText(this._getNotificationBody(session, status)),
|
|
118
|
-
actions: [( localize(
|
|
118
|
+
actions: [( localize(4721, "Open Session"))],
|
|
119
119
|
dedupeKey: getChatNotificationDedupeKey(
|
|
120
120
|
session.resource,
|
|
121
121
|
status === SessionStatus.NeedsInput ? ChatNotificationKind.NeedsInput : ChatNotificationKind.Idle
|
|
@@ -139,11 +139,11 @@ let SessionsWindowNotifier = class SessionsWindowNotifier extends Disposable {
|
|
|
139
139
|
const workspaceLabel = session.workspace.get()?.label;
|
|
140
140
|
switch (status) {
|
|
141
141
|
case SessionStatus.NeedsInput:
|
|
142
|
-
return workspaceLabel ? ( localize(
|
|
142
|
+
return workspaceLabel ? ( localize(4722, "Input needed in {0}.", workspaceLabel)) : ( localize(4723, "Input needed."));
|
|
143
143
|
case SessionStatus.Completed:
|
|
144
|
-
return workspaceLabel ? ( localize(
|
|
144
|
+
return workspaceLabel ? ( localize(4724, "Completed in {0}.", workspaceLabel)) : ( localize(4725, "Session completed."));
|
|
145
145
|
case SessionStatus.Error:
|
|
146
|
-
return workspaceLabel ? ( localize(
|
|
146
|
+
return workspaceLabel ? ( localize(4726, "Failed in {0}.", workspaceLabel)) : ( localize(4727, "Session failed."));
|
|
147
147
|
default:
|
|
148
148
|
return "";
|
|
149
149
|
}
|
|
@@ -4,10 +4,10 @@ import { isContributionEnabled } from '@codingame/monaco-vscode-api/vscode/vs/wo
|
|
|
4
4
|
|
|
5
5
|
const AUTOMATION_TEMPLATES = [{
|
|
6
6
|
id: "main-updates",
|
|
7
|
-
name: ( localize(
|
|
8
|
-
description: ( localize(
|
|
7
|
+
name: ( localize(4728, "Catch up on main")),
|
|
8
|
+
description: ( localize(4729, "Pull the latest main and summarize new commits.")),
|
|
9
9
|
prompt: ( localize(
|
|
10
|
-
|
|
10
|
+
4730,
|
|
11
11
|
"Pull the latest main and summarize the commits that were pulled.\n\nInspect this repository's current branch, working tree, and configured remotes. Resolve the remote for main from the repository configuration rather than assuming origin. Record HEAD, then pull that remote's main into the current checkout using --ff-only. Proceed only with a clean working tree and a fast-forward update. If the remote is ambiguous, main is missing, or the update is blocked, stop and explain why. Do not switch branches, stash or discard local changes, rebase, or force an update.\n\nCompare the starting and ending HEAD and summarize only newly pulled commits, grouped by theme. Highlight user-visible changes, bug fixes, breaking changes, and follow-up actions. Include commit links and related pull requests when available. If no commits were pulled, say so."
|
|
12
12
|
)),
|
|
13
13
|
schedule: {
|
|
@@ -18,10 +18,10 @@ const AUTOMATION_TEMPLATES = [{
|
|
|
18
18
|
}
|
|
19
19
|
}, {
|
|
20
20
|
id: "issue-triage",
|
|
21
|
-
name: ( localize(
|
|
22
|
-
description: ( localize(
|
|
21
|
+
name: ( localize(4731, "Issue triage")),
|
|
22
|
+
description: ( localize(4732, "Triage my GitHub repositories' issues using their precedents.")),
|
|
23
23
|
prompt: ( localize(
|
|
24
|
-
|
|
24
|
+
4733,
|
|
25
25
|
"Triage my GitHub repositories' issues using existing repository precedents.\n\nUse the authenticated GitHub account to find my repositories, prioritizing active repositories and new or untriaged issues. For each repository, read its contribution guidelines, issue templates, existing labels, and comparable issues with maintainer decisions. Learn each repository's conventions separately before making recommendations.\n\nProduce a report grouped by repository. Link to each issue, recommend existing labels, identify likely duplicates, and draft a reply when useful. Cite prior issues, pull requests, or maintainer comments supporting each recommendation. Flag uncertainty or missing precedent rather than inventing a rule. Do not apply labels, post comments, close issues, or make other GitHub changes. State which repositories and issues were reviewed and any access limitations."
|
|
26
26
|
)),
|
|
27
27
|
schedule: {
|
|
@@ -32,10 +32,10 @@ const AUTOMATION_TEMPLATES = [{
|
|
|
32
32
|
}
|
|
33
33
|
}, {
|
|
34
34
|
id: "find-bugs",
|
|
35
|
-
name: ( localize(
|
|
36
|
-
description: ( localize(
|
|
35
|
+
name: ( localize(4734, "Find bugs")),
|
|
36
|
+
description: ( localize(4735, "Explore the codebase and report verified, reproducible bugs.")),
|
|
37
37
|
prompt: ( localize(
|
|
38
|
-
|
|
38
|
+
4736,
|
|
39
39
|
"Explore this codebase and find concrete, reproducible bugs.\n\nRead the repository guidance and understand the architecture before choosing a focused area to investigate, such as recent changes, complex state transitions, or error handling. Trace suspected problems through callers and existing tests. Use the smallest relevant tests or a minimal reproduction to verify behavior, and distinguish confirmed bugs from hypotheses. Avoid style-only suggestions and speculative findings.\n\nReport high-confidence, actionable bugs with severity, file and line references, a triggering scenario, expected versus actual behavior, and supporting test or reproduction results. Suggest a focused fix for each finding without modifying repository files or committing changes. State what you explored, any validation limitations, and when no confirmed bugs were found."
|
|
40
40
|
)),
|
|
41
41
|
schedule: {
|
|
@@ -57,7 +57,7 @@ function readAutomationTemplates(plugins, reader) {
|
|
|
57
57
|
templates.push({
|
|
58
58
|
id: `${( plugin.uri.toString())}#automation=${automation.blueprint.id}`,
|
|
59
59
|
name: automation.blueprint.name,
|
|
60
|
-
description: automation.blueprint.description ?? ( localize(
|
|
60
|
+
description: automation.blueprint.description ?? ( localize(4737, "Provided by {0}.", plugin.label)),
|
|
61
61
|
prompt: automation.blueprint.prompt,
|
|
62
62
|
schedule: automation.blueprint.schedule,
|
|
63
63
|
source: {
|