From f47ddd262dcdec44f4a57c789990df4c99902dc2 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 10:17:43 -0800 Subject: [PATCH 01/48] Register slash command execution with unique ID and update completion item command structure --- .../sessions/contrib/chat/browser/slashCommands.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/vs/sessions/contrib/chat/browser/slashCommands.ts b/src/vs/sessions/contrib/chat/browser/slashCommands.ts index 401961417c0be..3b450c6a20919 100644 --- a/src/vs/sessions/contrib/chat/browser/slashCommands.ts +++ b/src/vs/sessions/contrib/chat/browser/slashCommands.ts @@ -15,7 +15,7 @@ import { Position } from '../../../../editor/common/core/position.js'; import { Range } from '../../../../editor/common/core/range.js'; import { getWordAtText } from '../../../../editor/common/core/wordHelper.js'; import { ILanguageFeaturesService } from '../../../../editor/common/services/languageFeatures.js'; -import { ICommandService } from '../../../../platform/commands/common/commands.js'; +import { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js'; import { IThemeService } from '../../../../platform/theme/common/themeService.js'; import { inputPlaceholderForeground } from '../../../../platform/theme/common/colorRegistry.js'; import { localize } from '../../../../nls.js'; @@ -46,6 +46,7 @@ export class SlashCommandHandler extends Disposable { private static _slashDecosRegistered = false; private readonly _slashCommands: ISessionsSlashCommandData[] = []; + private readonly _executeSlashCommandId: string; constructor( private readonly _editor: CodeEditorWidget, @@ -55,6 +56,12 @@ export class SlashCommandHandler extends Disposable { @IThemeService private readonly themeService: IThemeService, ) { super(); + const modelUri = this._editor.getModel()?.uri.toString() ?? String(Date.now()); + this._executeSlashCommandId = `sessions.chat.executeSlashCommand.${modelUri}`; + this._register(CommandsRegistry.registerCommand(this._executeSlashCommandId, (_, slashCommandStr: string) => { + this.tryExecuteSlashCommand(slashCommandStr); + this._editor.getModel()?.setValue(''); + })); this._registerSlashCommands(); this._registerCompletions(); this._registerDecorations(); @@ -226,11 +233,12 @@ export class SlashCommandHandler extends Disposable { const withSlash = `/${c.command}`; return { label: withSlash, - insertText: `${withSlash} `, + insertText: c.executeImmediately ? '' : `${withSlash} `, detail: c.detail, range, sortText: c.sortText ?? 'a'.repeat(i + 1), kind: CompletionItemKind.Text, + command: c.executeImmediately ? { id: this._executeSlashCommandId, title: withSlash, arguments: [withSlash] } : undefined, }; }) }; From 76637b0de6ff92169e3118233bb7d100e43e0953 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 10:37:29 -0800 Subject: [PATCH 02/48] Refactor slash command execution to use a static command ID and simplify command registration --- .../contrib/chat/browser/slashCommands.ts | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/vs/sessions/contrib/chat/browser/slashCommands.ts b/src/vs/sessions/contrib/chat/browser/slashCommands.ts index 3b450c6a20919..7aff6b90dc01f 100644 --- a/src/vs/sessions/contrib/chat/browser/slashCommands.ts +++ b/src/vs/sessions/contrib/chat/browser/slashCommands.ts @@ -22,6 +22,17 @@ import { localize } from '../../../../nls.js'; import { chatSlashCommandBackground, chatSlashCommandForeground } from '../../../../workbench/contrib/chat/common/widget/chatColors.js'; import { AICustomizationManagementCommands, AICustomizationManagementSection } from '../../../../workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js'; +/** + * Static command ID used by completion items to trigger immediate slash command execution, + * mirroring the pattern of core's `ChatSubmitAction` for `executeImmediately` commands. + */ +export const SESSIONS_EXECUTE_SLASH_COMMAND_ID = 'sessions.chat.executeSlashCommand'; + +CommandsRegistry.registerCommand(SESSIONS_EXECUTE_SLASH_COMMAND_ID, (_, handler: SlashCommandHandler, slashCommandStr: string) => { + handler.tryExecuteSlashCommand(slashCommandStr); + handler.clearInput(); +}); + /** * Minimal slash command descriptor for the sessions new-chat widget. * Self-contained copy of the essential fields from core's `IChatSlashData` @@ -46,7 +57,6 @@ export class SlashCommandHandler extends Disposable { private static _slashDecosRegistered = false; private readonly _slashCommands: ISessionsSlashCommandData[] = []; - private readonly _executeSlashCommandId: string; constructor( private readonly _editor: CodeEditorWidget, @@ -56,17 +66,15 @@ export class SlashCommandHandler extends Disposable { @IThemeService private readonly themeService: IThemeService, ) { super(); - const modelUri = this._editor.getModel()?.uri.toString() ?? String(Date.now()); - this._executeSlashCommandId = `sessions.chat.executeSlashCommand.${modelUri}`; - this._register(CommandsRegistry.registerCommand(this._executeSlashCommandId, (_, slashCommandStr: string) => { - this.tryExecuteSlashCommand(slashCommandStr); - this._editor.getModel()?.setValue(''); - })); this._registerSlashCommands(); this._registerCompletions(); this._registerDecorations(); } + clearInput(): void { + this._editor.getModel()?.setValue(''); + } + /** * Attempts to parse and execute a slash command from the input. * Returns `true` if a command was handled. @@ -238,7 +246,7 @@ export class SlashCommandHandler extends Disposable { range, sortText: c.sortText ?? 'a'.repeat(i + 1), kind: CompletionItemKind.Text, - command: c.executeImmediately ? { id: this._executeSlashCommandId, title: withSlash, arguments: [withSlash] } : undefined, + command: c.executeImmediately ? { id: SESSIONS_EXECUTE_SLASH_COMMAND_ID, title: withSlash, arguments: [this, withSlash] } : undefined, }; }) }; From 275b8adcee07c5bc666f94dbbae00a0cddf6a81b Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 11:25:06 -0800 Subject: [PATCH 03/48] Add support for allowed session targets in chat components - Introduced `SessionsChatViewPane` to restrict session targets to Local and Cloud. - Updated interfaces and classes to include optional `allowedSessionTargets` for session target and delegation pickers. - Enhanced visibility logic in `DelegationSessionPickerActionItem` and `SessionTypePickerActionItem` to respect allowed targets. --- .../contrib/chat/browser/chat.contribution.ts | 13 ++++++++++++- src/vs/workbench/contrib/chat/browser/chat.ts | 15 +++++++++++++++ .../contrib/chat/browser/widget/chatWidget.ts | 1 + .../chat/browser/widget/input/chatInputPart.ts | 8 ++++++++ .../input/delegationSessionPickerActionItem.ts | 5 +++++ .../widget/input/sessionTargetPickerActionItem.ts | 4 ++++ .../browser/widgetHosts/viewPane/chatViewPane.ts | 11 +++++++++++ 7 files changed, 56 insertions(+), 1 deletion(-) diff --git a/src/vs/sessions/contrib/chat/browser/chat.contribution.ts b/src/vs/sessions/contrib/chat/browser/chat.contribution.ts index 8fa8db33b1c52..5dfa313d8408c 100644 --- a/src/vs/sessions/contrib/chat/browser/chat.contribution.ts +++ b/src/vs/sessions/contrib/chat/browser/chat.contribution.ts @@ -37,6 +37,17 @@ import { ViewPaneContainer } from '../../../../workbench/browser/parts/views/vie import { registerIcon } from '../../../../platform/theme/common/iconRegistry.js'; import { ChatViewPane } from '../../../../workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js'; +/** + * Sessions-window subclass of {@link ChatViewPane} that restricts the session + * target and delegation pickers to only show targets supported by the agent + * sessions window (Local and Cloud). + */ +class SessionsChatViewPane extends ChatViewPane { + protected override getAllowedSessionTargets(): ReadonlySet { + return new Set([AgentSessionProviders.Local, AgentSessionProviders.Cloud]); + } +} + export class OpenSessionWorktreeInVSCodeAction extends Action2 { static readonly ID = 'chat.openSessionWorktreeInVSCode'; @@ -201,7 +212,7 @@ class RegisterChatViewContainerContribution implements IWorkbenchContribution { name: localize2('chat.viewContainer.label', "Chat"), canToggleVisibility: false, canMoveView: false, - ctorDescriptor: new SyncDescriptor(ChatViewPane), + ctorDescriptor: new SyncDescriptor(SessionsChatViewPane), when: IsNewChatSessionContext.negate(), windowVisibility: WindowVisibility.Sessions }, { diff --git a/src/vs/workbench/contrib/chat/browser/chat.ts b/src/vs/workbench/contrib/chat/browser/chat.ts index c29b6a4843b05..d5ffe92849692 100644 --- a/src/vs/workbench/contrib/chat/browser/chat.ts +++ b/src/vs/workbench/contrib/chat/browser/chat.ts @@ -91,6 +91,13 @@ export interface ISessionTypePickerDelegate { * this stores the target for delegation on the next submit instead of immediately creating a new session. */ setPendingDelegationTarget?(provider: AgentSessionProviders): void; + /** + * Optional getter for the set of allowed session targets. + * When provided, the session target and delegation pickers will only show targets + * in this set. This allows host contexts (e.g. the agent sessions window) to restrict + * visible targets without adding host-specific dependencies to chat core. + */ + getAllowedTargets?(): ReadonlySet | undefined; /** * Optional event that fires when the active session provider changes. * When provided, listeners (like chatInputPart) can react to session type changes @@ -272,6 +279,14 @@ export interface IChatWidgetViewOptions { */ sessionTypePickerDelegate?: ISessionTypePickerDelegate; + /** + * Optional set of allowed session targets for the pickers. + * When provided, only targets in this set will be visible in the session target + * and delegation pickers. This allows host contexts (e.g. the agent sessions window) + * to restrict the available targets. + */ + allowedSessionTargets?: ReadonlySet; + /** * Optional delegate for the workspace picker. * When provided, shows a workspace picker in the chat input allowing users to select diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts index 4134d04ad8231..acb7271c572b8 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts @@ -1832,6 +1832,7 @@ export class ChatWidget extends Disposable implements IChatWidget { widgetViewKindTag: this.getWidgetViewKindTag(), defaultMode: this.viewOptions.defaultMode, sessionTypePickerDelegate: this.viewOptions.sessionTypePickerDelegate, + allowedSessionTargets: this.viewOptions.allowedSessionTargets, workspacePickerDelegate: this.viewOptions.workspacePickerDelegate, }; diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts b/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts index aa98e73062c3a..4f60c1d918b98 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts @@ -159,6 +159,12 @@ export interface IChatInputPartOptions { * When provided, allows the input part to maintain independent state for the selected session type. */ sessionTypePickerDelegate?: ISessionTypePickerDelegate; + /** + * Optional set of allowed session targets for the pickers. + * When provided, only targets in this set will be visible in the session target + * and delegation pickers. + */ + allowedSessionTargets?: ReadonlySet; /** * Optional delegate for the workspace picker. * When provided, shows a workspace picker allowing users to select a target workspace @@ -2199,6 +2205,7 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge const sessionResource = this._widget?.viewModel?.sessionResource; return sessionResource ? getAgentSessionProvider(sessionResource) : undefined; }; + const allowedSessionTargets = this.options.allowedSessionTargets; const delegate: ISessionTypePickerDelegate = this.options.sessionTypePickerDelegate ?? { getActiveSessionProvider: () => { return getActiveSessionType(); @@ -2213,6 +2220,7 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge this.updateAgentSessionTypeContextKey(); this.refreshChatSessionPickers(); }, + getAllowedTargets: allowedSessionTargets ? () => allowedSessionTargets : undefined, }; const isWelcomeViewMode = !!this.options.sessionTypePickerDelegate?.setActiveSessionProvider; const Picker = (action.id === OpenSessionTargetPickerAction.ID || isWelcomeViewMode) ? SessionTypePickerActionItem : DelegationSessionPickerActionItem; diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts index 9e5218f2afbf1..a1a901d986de0 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts @@ -50,6 +50,11 @@ export class DelegationSessionPickerActionItem extends SessionTypePickerActionIt } protected override _isVisible(type: AgentSessionProviders): boolean { + const allowedTargets = this.delegate.getAllowedTargets?.(); + if (allowedTargets && !allowedTargets.has(type)) { + return false; + } + if (this.delegate.getActiveSessionProvider() === type) { return true; // Always show active session type } diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.ts b/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.ts index 7095abd9ecdb4..089e0523423db 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.ts @@ -181,6 +181,10 @@ export class SessionTypePickerActionItem extends ChatInputPickerActionViewItem { } protected _isVisible(type: AgentSessionProviders): boolean { + const allowedTargets = this.delegate.getAllowedTargets?.(); + if (allowedTargets && !allowedTargets.has(type)) { + return false; + } return true; } diff --git a/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts b/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts index 9ff8c08231977..f3b5355c39d05 100644 --- a/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts +++ b/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts @@ -49,6 +49,7 @@ import { IChatSessionsService, localChatSessionType } from '../../../common/chat import { LocalChatSessionUri, getChatSessionType } from '../../../common/model/chatUri.js'; import { ChatAgentLocation, ChatConfiguration, ChatModeKind } from '../../../common/constants.js'; import { AgentSessionsControl } from '../../agentSessions/agentSessionsControl.js'; +import { AgentSessionProviders } from '../../agentSessions/agentSessions.js'; import { ACTION_ID_NEW_CHAT } from '../../actions/chatActions.js'; import { ChatWidget } from '../../widget/chatWidget.js'; import { ChatViewWelcomeController, IViewWelcomeDelegate } from '../../viewsWelcome/chatViewWelcomeController.js'; @@ -530,6 +531,7 @@ export class ChatViewPane extends ViewPane implements IViewWelcomeDelegate { : 'explicit', supportsChangingModes: true, dndContainer: parent, + allowedSessionTargets: this.getAllowedSessionTargets(), }, { listForeground: SIDE_BAR_FOREGROUND, @@ -547,6 +549,15 @@ export class ChatViewPane extends ViewPane implements IViewWelcomeDelegate { return this._widget; } + /** + * Returns the set of allowed session targets for the pickers, or undefined to allow all. + * Subclasses (e.g. in the agent sessions window) can override this to restrict + * the visible targets in the session target and delegation pickers. + */ + protected getAllowedSessionTargets(): ReadonlySet | undefined { + return undefined; + } + private createChatTitleControl(parent: HTMLElement): void { this.titleControl = this._register(this.instantiationService.createInstance(ChatViewTitleControl, parent, From 059b3160850b1d021fdcd065f86b7823ac9cb607 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 11:54:42 -0800 Subject: [PATCH 04/48] Remove unnecessary scheme check in archiveLocalParentSession method --- src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts index acb7271c572b8..7f5f8b795411d 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts @@ -1511,11 +1511,6 @@ export class ChatWidget extends Disposable implements IChatWidget { } private async archiveLocalParentSession(sessionResource: URI): Promise { - if (sessionResource.scheme !== Schemas.vscodeLocalChatSession) { - this.logService.debug(`[Delegation] archiveLocalParentSession: skipping, scheme=${sessionResource.scheme} is not vscodeLocalChatSession`); - return; - } - this.logService.debug(`[Delegation] archiveLocalParentSession: archiving session ${sessionResource.toString()}`); // Implicitly keep parent session's changes as they've now been delegated to the new agent. From 7d661f64bba88831395c8d64fb912a3515db4893 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 12:01:41 -0800 Subject: [PATCH 05/48] Remove restriction on delegating from non-local active session --- .../browser/widget/input/delegationSessionPickerActionItem.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts index a1a901d986de0..63805fb1db090 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts @@ -38,10 +38,6 @@ export class DelegationSessionPickerActionItem extends SessionTypePickerActionIt const allContributions = this.chatSessionsService.getAllChatSessionContributions(); const contribution = allContributions.find(contribution => getAgentSessionProvider(contribution.type) === type); - if (this.delegate.getActiveSessionProvider() !== AgentSessionProviders.Local) { - return false; // Can only delegate when active session is local - } - if (contribution && !contribution.canDelegate && this.delegate.getActiveSessionProvider() !== type /* Allow switching back to active type */) { return false; } From 87bf2fc4778b6100703d2f6f9ae6444a7312f504 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 12:09:30 -0800 Subject: [PATCH 06/48] Add SessionsChatViewPane to restrict session targets to Background and Cloud --- .../contrib/chat/browser/chat.contribution.ts | 15 ++------------- .../contrib/chat/browser/newChatViewPane.ts | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/vs/sessions/contrib/chat/browser/chat.contribution.ts b/src/vs/sessions/contrib/chat/browser/chat.contribution.ts index 5dfa313d8408c..92c4f649943a8 100644 --- a/src/vs/sessions/contrib/chat/browser/chat.contribution.ts +++ b/src/vs/sessions/contrib/chat/browser/chat.contribution.ts @@ -32,21 +32,10 @@ import { IPromptsService } from '../../../../workbench/contrib/chat/common/promp import { ISessionsConfigurationService, SessionsConfigurationService } from './sessionsConfigurationService.js'; import { ChatViewContainerId, ChatViewId } from '../../../../workbench/contrib/chat/browser/chat.js'; import { CHAT_CATEGORY } from '../../../../workbench/contrib/chat/browser/actions/chatActions.js'; -import { NewChatViewPane, SessionsViewId } from './newChatViewPane.js'; +import { NewChatViewPane, SessionsChatViewPane, SessionsViewId } from './newChatViewPane.js'; import { ViewPaneContainer } from '../../../../workbench/browser/parts/views/viewPaneContainer.js'; import { registerIcon } from '../../../../platform/theme/common/iconRegistry.js'; -import { ChatViewPane } from '../../../../workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js'; - -/** - * Sessions-window subclass of {@link ChatViewPane} that restricts the session - * target and delegation pickers to only show targets supported by the agent - * sessions window (Local and Cloud). - */ -class SessionsChatViewPane extends ChatViewPane { - protected override getAllowedSessionTargets(): ReadonlySet { - return new Set([AgentSessionProviders.Local, AgentSessionProviders.Cloud]); - } -} + export class OpenSessionWorktreeInVSCodeAction extends Action2 { static readonly ID = 'chat.openSessionWorktreeInVSCode'; diff --git a/src/vs/sessions/contrib/chat/browser/newChatViewPane.ts b/src/vs/sessions/contrib/chat/browser/newChatViewPane.ts index 10dc60a3800a1..2cce08eec5367 100644 --- a/src/vs/sessions/contrib/chat/browser/newChatViewPane.ts +++ b/src/vs/sessions/contrib/chat/browser/newChatViewPane.ts @@ -1133,6 +1133,23 @@ export class NewChatViewPane extends ViewPane { // #endregion +// #region --- Sessions Chat View Pane --- + +import { ChatViewPane } from '../../../../workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js'; + +/** + * Sessions-window subclass of {@link ChatViewPane} that restricts the session + * target and delegation pickers to only show targets supported by the agent + * sessions window (Background and Cloud). + */ +export class SessionsChatViewPane extends ChatViewPane { + protected override getAllowedSessionTargets(): ReadonlySet { + return new Set([AgentSessionProviders.Background, AgentSessionProviders.Cloud]); + } +} + +// #endregion + /** * Check whether an option group represents the model picker. * The convention is `id: 'models'` but extensions may use different IDs From 4609d8a02b25a1a39687b5f90b5981c8b2a88691 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 12:23:06 -0800 Subject: [PATCH 07/48] Refactor chat components to remove SessionsChatViewPane and related allowed session target logic --- .../contrib/chat/browser/chat.contribution.ts | 6 ++-- .../contrib/chat/browser/newChatViewPane.ts | 17 ---------- src/vs/workbench/contrib/chat/browser/chat.ts | 15 --------- .../contrib/chat/browser/widget/chatWidget.ts | 1 - .../browser/widget/input/chatInputPart.ts | 8 ----- .../delegationSessionPickerActionItem.ts | 33 +++++++++++++++++-- .../input/sessionTargetPickerActionItem.ts | 4 --- .../widgetHosts/viewPane/chatViewPane.ts | 11 ------- 8 files changed, 34 insertions(+), 61 deletions(-) diff --git a/src/vs/sessions/contrib/chat/browser/chat.contribution.ts b/src/vs/sessions/contrib/chat/browser/chat.contribution.ts index 92c4f649943a8..8fa8db33b1c52 100644 --- a/src/vs/sessions/contrib/chat/browser/chat.contribution.ts +++ b/src/vs/sessions/contrib/chat/browser/chat.contribution.ts @@ -32,10 +32,10 @@ import { IPromptsService } from '../../../../workbench/contrib/chat/common/promp import { ISessionsConfigurationService, SessionsConfigurationService } from './sessionsConfigurationService.js'; import { ChatViewContainerId, ChatViewId } from '../../../../workbench/contrib/chat/browser/chat.js'; import { CHAT_CATEGORY } from '../../../../workbench/contrib/chat/browser/actions/chatActions.js'; -import { NewChatViewPane, SessionsChatViewPane, SessionsViewId } from './newChatViewPane.js'; +import { NewChatViewPane, SessionsViewId } from './newChatViewPane.js'; import { ViewPaneContainer } from '../../../../workbench/browser/parts/views/viewPaneContainer.js'; import { registerIcon } from '../../../../platform/theme/common/iconRegistry.js'; - +import { ChatViewPane } from '../../../../workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js'; export class OpenSessionWorktreeInVSCodeAction extends Action2 { static readonly ID = 'chat.openSessionWorktreeInVSCode'; @@ -201,7 +201,7 @@ class RegisterChatViewContainerContribution implements IWorkbenchContribution { name: localize2('chat.viewContainer.label', "Chat"), canToggleVisibility: false, canMoveView: false, - ctorDescriptor: new SyncDescriptor(SessionsChatViewPane), + ctorDescriptor: new SyncDescriptor(ChatViewPane), when: IsNewChatSessionContext.negate(), windowVisibility: WindowVisibility.Sessions }, { diff --git a/src/vs/sessions/contrib/chat/browser/newChatViewPane.ts b/src/vs/sessions/contrib/chat/browser/newChatViewPane.ts index 2cce08eec5367..10dc60a3800a1 100644 --- a/src/vs/sessions/contrib/chat/browser/newChatViewPane.ts +++ b/src/vs/sessions/contrib/chat/browser/newChatViewPane.ts @@ -1133,23 +1133,6 @@ export class NewChatViewPane extends ViewPane { // #endregion -// #region --- Sessions Chat View Pane --- - -import { ChatViewPane } from '../../../../workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js'; - -/** - * Sessions-window subclass of {@link ChatViewPane} that restricts the session - * target and delegation pickers to only show targets supported by the agent - * sessions window (Background and Cloud). - */ -export class SessionsChatViewPane extends ChatViewPane { - protected override getAllowedSessionTargets(): ReadonlySet { - return new Set([AgentSessionProviders.Background, AgentSessionProviders.Cloud]); - } -} - -// #endregion - /** * Check whether an option group represents the model picker. * The convention is `id: 'models'` but extensions may use different IDs diff --git a/src/vs/workbench/contrib/chat/browser/chat.ts b/src/vs/workbench/contrib/chat/browser/chat.ts index d5ffe92849692..c29b6a4843b05 100644 --- a/src/vs/workbench/contrib/chat/browser/chat.ts +++ b/src/vs/workbench/contrib/chat/browser/chat.ts @@ -91,13 +91,6 @@ export interface ISessionTypePickerDelegate { * this stores the target for delegation on the next submit instead of immediately creating a new session. */ setPendingDelegationTarget?(provider: AgentSessionProviders): void; - /** - * Optional getter for the set of allowed session targets. - * When provided, the session target and delegation pickers will only show targets - * in this set. This allows host contexts (e.g. the agent sessions window) to restrict - * visible targets without adding host-specific dependencies to chat core. - */ - getAllowedTargets?(): ReadonlySet | undefined; /** * Optional event that fires when the active session provider changes. * When provided, listeners (like chatInputPart) can react to session type changes @@ -279,14 +272,6 @@ export interface IChatWidgetViewOptions { */ sessionTypePickerDelegate?: ISessionTypePickerDelegate; - /** - * Optional set of allowed session targets for the pickers. - * When provided, only targets in this set will be visible in the session target - * and delegation pickers. This allows host contexts (e.g. the agent sessions window) - * to restrict the available targets. - */ - allowedSessionTargets?: ReadonlySet; - /** * Optional delegate for the workspace picker. * When provided, shows a workspace picker in the chat input allowing users to select diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts index 7f5f8b795411d..5e51650b36f79 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts @@ -1827,7 +1827,6 @@ export class ChatWidget extends Disposable implements IChatWidget { widgetViewKindTag: this.getWidgetViewKindTag(), defaultMode: this.viewOptions.defaultMode, sessionTypePickerDelegate: this.viewOptions.sessionTypePickerDelegate, - allowedSessionTargets: this.viewOptions.allowedSessionTargets, workspacePickerDelegate: this.viewOptions.workspacePickerDelegate, }; diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts b/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts index 4f60c1d918b98..aa98e73062c3a 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts @@ -159,12 +159,6 @@ export interface IChatInputPartOptions { * When provided, allows the input part to maintain independent state for the selected session type. */ sessionTypePickerDelegate?: ISessionTypePickerDelegate; - /** - * Optional set of allowed session targets for the pickers. - * When provided, only targets in this set will be visible in the session target - * and delegation pickers. - */ - allowedSessionTargets?: ReadonlySet; /** * Optional delegate for the workspace picker. * When provided, shows a workspace picker allowing users to select a target workspace @@ -2205,7 +2199,6 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge const sessionResource = this._widget?.viewModel?.sessionResource; return sessionResource ? getAgentSessionProvider(sessionResource) : undefined; }; - const allowedSessionTargets = this.options.allowedSessionTargets; const delegate: ISessionTypePickerDelegate = this.options.sessionTypePickerDelegate ?? { getActiveSessionProvider: () => { return getActiveSessionType(); @@ -2220,7 +2213,6 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge this.updateAgentSessionTypeContextKey(); this.refreshChatSessionPickers(); }, - getAllowedTargets: allowedSessionTargets ? () => allowedSessionTargets : undefined, }; const isWelcomeViewMode = !!this.options.sessionTypePickerDelegate?.setActiveSessionProvider; const Picker = (action.id === OpenSessionTargetPickerAction.ID || isWelcomeViewMode) ? SessionTypePickerActionItem : DelegationSessionPickerActionItem; diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts index 63805fb1db090..988babeb99e20 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts @@ -7,9 +7,20 @@ import { IAction } from '../../../../../../base/common/actions.js'; import { Codicon } from '../../../../../../base/common/codicons.js'; import { URI } from '../../../../../../base/common/uri.js'; import { localize } from '../../../../../../nls.js'; +import { IActionWidgetService } from '../../../../../../platform/actionWidget/browser/actionWidget.js'; import { IActionWidgetDropdownAction } from '../../../../../../platform/actionWidget/browser/actionWidgetDropdown.js'; +import { MenuItemAction } from '../../../../../../platform/actions/common/actions.js'; +import { ICommandService } from '../../../../../../platform/commands/common/commands.js'; +import { IContextKeyService } from '../../../../../../platform/contextkey/common/contextkey.js'; +import { IKeybindingService } from '../../../../../../platform/keybinding/common/keybinding.js'; +import { IOpenerService } from '../../../../../../platform/opener/common/opener.js'; +import { ITelemetryService } from '../../../../../../platform/telemetry/common/telemetry.js'; +import { IChatSessionsService } from '../../../common/chatSessionsService.js'; +import { IWorkbenchEnvironmentService } from '../../../../../services/environment/common/environmentService.js'; import { ACTION_ID_NEW_CHAT } from '../../actions/chatActions.js'; import { AgentSessionProviders, getAgentCanContinueIn, getAgentSessionProvider, isFirstPartyAgentSessionProvider } from '../../agentSessions/agentSessions.js'; +import { ISessionTypePickerDelegate } from '../../chat.js'; +import { IChatInputPickerOptions } from './chatInputPickerActionItem.js'; import { ISessionTypeItem, SessionTypePickerActionItem } from './sessionTargetPickerActionItem.js'; /** @@ -17,6 +28,24 @@ import { ISessionTypeItem, SessionTypePickerActionItem } from './sessionTargetPi * This picker allows switching to remote execution providers when the session is not empty. */ export class DelegationSessionPickerActionItem extends SessionTypePickerActionItem { + + constructor( + action: MenuItemAction, + chatSessionPosition: 'sidebar' | 'editor', + delegate: ISessionTypePickerDelegate, + pickerOptions: IChatInputPickerOptions, + @IActionWidgetService actionWidgetService: IActionWidgetService, + @IKeybindingService keybindingService: IKeybindingService, + @IContextKeyService contextKeyService: IContextKeyService, + @IChatSessionsService chatSessionsService: IChatSessionsService, + @ICommandService commandService: ICommandService, + @IOpenerService openerService: IOpenerService, + @ITelemetryService telemetryService: ITelemetryService, + @IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService, + ) { + super(action, chatSessionPosition, delegate, pickerOptions, actionWidgetService, keybindingService, contextKeyService, chatSessionsService, commandService, openerService, telemetryService); + } + protected override _run(sessionTypeItem: ISessionTypeItem): void { if (this.delegate.setPendingDelegationTarget) { this.delegate.setPendingDelegationTarget(sessionTypeItem.type); @@ -46,8 +75,8 @@ export class DelegationSessionPickerActionItem extends SessionTypePickerActionIt } protected override _isVisible(type: AgentSessionProviders): boolean { - const allowedTargets = this.delegate.getAllowedTargets?.(); - if (allowedTargets && !allowedTargets.has(type)) { + // In the sessions window, only show Background and Cloud targets + if (this.environmentService.isSessionsWindow && type === AgentSessionProviders.Local) { return false; } diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.ts b/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.ts index 089e0523423db..7095abd9ecdb4 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.ts @@ -181,10 +181,6 @@ export class SessionTypePickerActionItem extends ChatInputPickerActionViewItem { } protected _isVisible(type: AgentSessionProviders): boolean { - const allowedTargets = this.delegate.getAllowedTargets?.(); - if (allowedTargets && !allowedTargets.has(type)) { - return false; - } return true; } diff --git a/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts b/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts index f3b5355c39d05..9ff8c08231977 100644 --- a/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts +++ b/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.ts @@ -49,7 +49,6 @@ import { IChatSessionsService, localChatSessionType } from '../../../common/chat import { LocalChatSessionUri, getChatSessionType } from '../../../common/model/chatUri.js'; import { ChatAgentLocation, ChatConfiguration, ChatModeKind } from '../../../common/constants.js'; import { AgentSessionsControl } from '../../agentSessions/agentSessionsControl.js'; -import { AgentSessionProviders } from '../../agentSessions/agentSessions.js'; import { ACTION_ID_NEW_CHAT } from '../../actions/chatActions.js'; import { ChatWidget } from '../../widget/chatWidget.js'; import { ChatViewWelcomeController, IViewWelcomeDelegate } from '../../viewsWelcome/chatViewWelcomeController.js'; @@ -531,7 +530,6 @@ export class ChatViewPane extends ViewPane implements IViewWelcomeDelegate { : 'explicit', supportsChangingModes: true, dndContainer: parent, - allowedSessionTargets: this.getAllowedSessionTargets(), }, { listForeground: SIDE_BAR_FOREGROUND, @@ -549,15 +547,6 @@ export class ChatViewPane extends ViewPane implements IViewWelcomeDelegate { return this._widget; } - /** - * Returns the set of allowed session targets for the pickers, or undefined to allow all. - * Subclasses (e.g. in the agent sessions window) can override this to restrict - * the visible targets in the session target and delegation pickers. - */ - protected getAllowedSessionTargets(): ReadonlySet | undefined { - return undefined; - } - private createChatTitleControl(parent: HTMLElement): void { this.titleControl = this._register(this.instantiationService.createInstance(ChatViewTitleControl, parent, From d7c642279402cf517f9315fdfc7919b882b7609b Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 12:31:15 -0800 Subject: [PATCH 08/48] Prevent additional actions in DelegationSessionPickerActionItem when in sessions window --- .../browser/widget/input/delegationSessionPickerActionItem.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts index 988babeb99e20..d84b9e1243dec 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts @@ -109,6 +109,9 @@ export class DelegationSessionPickerActionItem extends SessionTypePickerActionIt } protected override _getAdditionalActions(): IActionWidgetDropdownAction[] { + if (this.environmentService.isSessionsWindow) { + return []; + } return [{ id: 'newChatSession', class: undefined, From b647996dad37e1f4d4e4cfc6320ef1d7075044cb Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 12:39:28 -0800 Subject: [PATCH 09/48] Refactor DelegationSessionPickerActionItem to use IsSessionsWindowContext for session window checks --- .../widget/input/delegationSessionPickerActionItem.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts index d84b9e1243dec..4b07b79c983b8 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts @@ -15,8 +15,8 @@ import { IContextKeyService } from '../../../../../../platform/contextkey/common import { IKeybindingService } from '../../../../../../platform/keybinding/common/keybinding.js'; import { IOpenerService } from '../../../../../../platform/opener/common/opener.js'; import { ITelemetryService } from '../../../../../../platform/telemetry/common/telemetry.js'; +import { IsSessionsWindowContext } from '../../../../../common/contextkeys.js'; import { IChatSessionsService } from '../../../common/chatSessionsService.js'; -import { IWorkbenchEnvironmentService } from '../../../../../services/environment/common/environmentService.js'; import { ACTION_ID_NEW_CHAT } from '../../actions/chatActions.js'; import { AgentSessionProviders, getAgentCanContinueIn, getAgentSessionProvider, isFirstPartyAgentSessionProvider } from '../../agentSessions/agentSessions.js'; import { ISessionTypePickerDelegate } from '../../chat.js'; @@ -29,6 +29,8 @@ import { ISessionTypeItem, SessionTypePickerActionItem } from './sessionTargetPi */ export class DelegationSessionPickerActionItem extends SessionTypePickerActionItem { + private readonly _isSessionsWindow: boolean; + constructor( action: MenuItemAction, chatSessionPosition: 'sidebar' | 'editor', @@ -41,9 +43,9 @@ export class DelegationSessionPickerActionItem extends SessionTypePickerActionIt @ICommandService commandService: ICommandService, @IOpenerService openerService: IOpenerService, @ITelemetryService telemetryService: ITelemetryService, - @IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService, ) { super(action, chatSessionPosition, delegate, pickerOptions, actionWidgetService, keybindingService, contextKeyService, chatSessionsService, commandService, openerService, telemetryService); + this._isSessionsWindow = IsSessionsWindowContext.getValue(contextKeyService) === true; } protected override _run(sessionTypeItem: ISessionTypeItem): void { @@ -76,7 +78,7 @@ export class DelegationSessionPickerActionItem extends SessionTypePickerActionIt protected override _isVisible(type: AgentSessionProviders): boolean { // In the sessions window, only show Background and Cloud targets - if (this.environmentService.isSessionsWindow && type === AgentSessionProviders.Local) { + if (this._isSessionsWindow && type === AgentSessionProviders.Local) { return false; } @@ -109,7 +111,7 @@ export class DelegationSessionPickerActionItem extends SessionTypePickerActionIt } protected override _getAdditionalActions(): IActionWidgetDropdownAction[] { - if (this.environmentService.isSessionsWindow) { + if (this._isSessionsWindow) { return []; } return [{ From bbb30fdad403ec1be0e23d705d36054e1cd71b1d Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 13:03:15 -0800 Subject: [PATCH 10/48] Add debug logging for delegation actions in chat components --- .../chat/browser/actions/chatContinueInAction.ts | 11 ++++++++++- .../chat/browser/actions/chatExecuteActions.ts | 6 ++++++ .../widget/input/delegationSessionPickerActionItem.ts | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index f5d589353f4e6..4cc277db5f2ee 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -226,21 +226,26 @@ export class CreateRemoteAgentJobAction { remoteJobCreatingKey.set(true); const widget = _widget ?? widgetService.lastFocusedWidget; + console.log(`[Delegation] CreateRemoteAgentJobAction: widget=${!!widget}, viewModel=${!!widget?.viewModel}, continuationTarget=${continuationTarget.type}`); if (!widget || !widget.viewModel) { + console.log(`[Delegation] CreateRemoteAgentJobAction: no widget/viewModel, opening untitled editor`); return this.openUntitledEditor(commandService, continuationTarget); } // todo@connor4312: remove 'as' cast const chatModel = widget.viewModel.model as ChatModel; if (!chatModel) { + console.log(`[Delegation] CreateRemoteAgentJobAction: no chatModel, returning`); return; } const sessionResource = widget.viewModel.sessionResource; const chatRequests = chatModel.getRequests(); let userPrompt = widget.getInput(); + console.log(`[Delegation] CreateRemoteAgentJobAction: sessionResource=${sessionResource.toString()}, requestCount=${chatRequests.length}, userPrompt="${userPrompt?.substring(0, 50)}"`); if (!userPrompt) { if (!chatRequests.length) { + console.log(`[Delegation] CreateRemoteAgentJobAction: no prompt and no requests, opening untitled editor`); return this.openUntitledEditor(commandService, continuationTarget); } userPrompt = 'implement this.'; @@ -278,6 +283,8 @@ export class CreateRemoteAgentJobAction { const requestParser = instantiationService.createInstance(ChatRequestParser); const continuationTargetType = continuationTarget.type; + console.log(`[Delegation] CreateRemoteAgentJobAction: sending request with agentIdSilent=${continuationTargetType}, defaultAgent=${defaultAgent?.id}`); + // Add the request to the model first const parsedRequest = requestParser.parseChatRequest(sessionResource, userPrompt, ChatAgentLocation.Chat); const addedRequest = chatModel.addRequest( @@ -296,11 +303,13 @@ export class CreateRemoteAgentJobAction { ...widget.getModeRequestOptions() }); + console.log(`[Delegation] CreateRemoteAgentJobAction: sendResult kind=${sendResult?.kind}, agent=${ChatSendResult.isSent(sendResult) ? sendResult.data.agent?.id : 'n/a'}`); + if (ChatSendResult.isSent(sendResult)) { await widget.handleDelegationExitIfNeeded(defaultAgent, sendResult.data.agent); } } catch (e) { - console.error('Error creating remote coding agent job', e); + console.error('[Delegation] Error creating remote coding agent job', e); throw e; } finally { remoteJobCreatingKey.set(false); diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts b/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts index a9e08c350c5db..d8afa34bb2519 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts @@ -59,7 +59,9 @@ abstract class SubmitAction extends Action2 { // Check if there's a pending delegation target const pendingDelegationTarget = widget?.input.pendingDelegationTarget; + console.log(`[Delegation] SubmitAction: pendingDelegationTarget=${pendingDelegationTarget}, isLocal=${pendingDelegationTarget === AgentSessionProviders.Local}`); if (pendingDelegationTarget && pendingDelegationTarget !== AgentSessionProviders.Local) { + console.log(`[Delegation] SubmitAction: delegating to ${pendingDelegationTarget}`); return await this.handleDelegation(accessor, widget, pendingDelegationTarget); } @@ -164,15 +166,19 @@ abstract class SubmitAction extends Action2 { // Find the contribution for the delegation target const contributions = chatSessionsService.getAllChatSessionContributions(); + console.log(`[Delegation] handleDelegation: target=${delegationTarget}, contributions=${contributions.map(c => `${c.type}(canDelegate=${c.canDelegate})`).join(', ')}`); const targetContribution = contributions.find(contrib => { const providerType = getAgentSessionProvider(contrib.type); return providerType === delegationTarget; }); if (!targetContribution) { + console.error(`[Delegation] handleDelegation: No contribution found for delegation target: ${delegationTarget}`); throw new Error(`No contribution found for delegation target: ${delegationTarget}`); } + console.log(`[Delegation] handleDelegation: found contribution type=${targetContribution.type}, canDelegate=${targetContribution.canDelegate}`); + if (targetContribution.canDelegate === false) { throw new Error(`The contribution for delegation target: ${delegationTarget} does not support delegation.`); } diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts index 4b07b79c983b8..698f5312f1c89 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts @@ -49,6 +49,7 @@ export class DelegationSessionPickerActionItem extends SessionTypePickerActionIt } protected override _run(sessionTypeItem: ISessionTypeItem): void { + console.log(`[Delegation] DelegationPicker._run: setting pending target to ${sessionTypeItem.type}, hasSetter=${!!this.delegate.setPendingDelegationTarget}`); if (this.delegate.setPendingDelegationTarget) { this.delegate.setPendingDelegationTarget(sessionTypeItem.type); } From 429b6922797e721bd347edc2863f64f0c7fdc064 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 13:15:24 -0800 Subject: [PATCH 11/48] Add console logging for delegation exit checks in ChatWidget --- .../contrib/chat/browser/widget/chatWidget.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts index 5e51650b36f79..e216a4d5da1ef 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts @@ -1398,10 +1398,11 @@ export class ChatWidget extends Disposable implements IChatWidget { async handleDelegationExitIfNeeded(sourceAgent: Pick | undefined, targetAgent: IChatAgentData | undefined): Promise { if (!this._shouldExitAfterDelegation(sourceAgent, targetAgent)) { + console.log(`[Delegation] handleDelegationExitIfNeeded: skipping exit, sourceAgent=${sourceAgent?.id}, targetAgent=${targetAgent?.id}`); return; } - this.logService.debug(`[Delegation] Will exit after delegation: sourceAgent=${sourceAgent?.id}, targetAgent=${targetAgent?.id}`); + console.log(`[Delegation] Will exit after delegation: sourceAgent=${sourceAgent?.id}, targetAgent=${targetAgent?.id}`); try { await this._handleDelegationExit(); } catch (e) { @@ -1411,39 +1412,41 @@ export class ChatWidget extends Disposable implements IChatWidget { private _shouldExitAfterDelegation(sourceAgent: Pick | undefined, targetAgent: IChatAgentData | undefined): boolean { if (!targetAgent) { - this.logService.debug('[Delegation] _shouldExitAfterDelegation: false (no targetAgent)'); + console.log('[Delegation] _shouldExitAfterDelegation: false (no targetAgent)'); return false; } if (!this.configurationService.getValue(ChatConfiguration.ExitAfterDelegation)) { - this.logService.debug('[Delegation] _shouldExitAfterDelegation: false (ExitAfterDelegation config disabled)'); + console.log('[Delegation] _shouldExitAfterDelegation: false (ExitAfterDelegation config disabled)'); return false; } // Never exit if the source and target are the same (that means that you're providing a follow up, etc.) // NOTE: sourceAgent would be the chatWidget's 'lockedAgent' if (sourceAgent && sourceAgent.id === targetAgent.id) { - this.logService.debug('[Delegation] _shouldExitAfterDelegation: false (source and target agents are the same)'); + console.log('[Delegation] _shouldExitAfterDelegation: false (source and target agents are the same)'); return false; } + console.log(`[Delegation] _shouldExitAfterDelegation: viewContext=${JSON.stringify(this.viewContext)}, isViewViewContext=${isIChatViewViewContext(this.viewContext)}`); if (!isIChatViewViewContext(this.viewContext)) { - this.logService.debug('[Delegation] _shouldExitAfterDelegation: false (not in chat view context)'); + console.log('[Delegation] _shouldExitAfterDelegation: false (not in chat view context)'); return false; } const contribution = this.chatSessionsService.getChatSessionContribution(targetAgent.id); + console.log(`[Delegation] _shouldExitAfterDelegation: contribution=${contribution?.type}, canDelegate=${contribution?.canDelegate}`); if (!contribution) { - this.logService.debug(`[Delegation] _shouldExitAfterDelegation: false (no contribution found for targetAgent.id=${targetAgent.id})`); + console.log(`[Delegation] _shouldExitAfterDelegation: false (no contribution found for targetAgent.id=${targetAgent.id})`); return false; } if (contribution.canDelegate !== true) { - this.logService.debug(`[Delegation] _shouldExitAfterDelegation: false (contribution.canDelegate=${contribution.canDelegate}, expected true)`); + console.log(`[Delegation] _shouldExitAfterDelegation: false (contribution.canDelegate=${contribution.canDelegate}, expected true)`); return false; } - this.logService.debug('[Delegation] _shouldExitAfterDelegation: true'); + console.log('[Delegation] _shouldExitAfterDelegation: true'); return true; } From 1ba3ef6f1f54b7ef0e0561cb131f5437f8e4dfb6 Mon Sep 17 00:00:00 2001 From: Connor Peet Date: Wed, 25 Feb 2026 13:22:17 -0800 Subject: [PATCH 12/48] plugins: wire in agents to prompt service Missed getting these in. Easy enough following our existing patterns. --- .../chat/common/plugins/agentPluginService.ts | 6 +++ .../common/plugins/agentPluginServiceImpl.ts | 49 +++++++++++++++++-- .../service/promptsServiceImpl.ts | 4 ++ .../service/promptsService.test.ts | 4 +- 4 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.ts b/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.ts index 1b413761b4b09..c22a9c0166b51 100644 --- a/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.ts +++ b/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.ts @@ -31,6 +31,11 @@ export interface IAgentPluginSkill { readonly name: string; } +export interface IAgentPluginAgent { + readonly uri: URI; + readonly name: string; +} + export interface IAgentPluginMcpServerDefinition { readonly name: string; readonly configuration: IMcpServerConfiguration; @@ -43,6 +48,7 @@ export interface IAgentPlugin { readonly hooks: IObservable; readonly commands: IObservable; readonly skills: IObservable; + readonly agents: IObservable; readonly mcpServerDefinitions: IObservable; /** Set when the plugin was installed from a marketplace repository. */ readonly fromMarketplace?: IMarketplacePlugin; diff --git a/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.ts b/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.ts index 7b8696d771540..94d2ab458464f 100644 --- a/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.ts +++ b/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.ts @@ -8,6 +8,7 @@ import { CancellationToken } from '../../../../../base/common/cancellation.js'; import { parse as parseJSONC } from '../../../../../base/common/json.js'; import { Disposable, DisposableStore } from '../../../../../base/common/lifecycle.js'; import { ResourceSet } from '../../../../../base/common/map.js'; +import { cloneAndChange } from '../../../../../base/common/objects.js'; import { autorun, derived, IObservable, ISettableObservable, observableValue } from '../../../../../base/common/observable.js'; import { posix, @@ -18,7 +19,7 @@ import { extname, joinPath } from '../../../../../base/common/resources.js'; import { URI } from '../../../../../base/common/uri.js'; -import { IConfigurationService, ConfigurationTarget, getConfigValueInTarget } from '../../../../../platform/configuration/common/configuration.js'; +import { ConfigurationTarget, getConfigValueInTarget, IConfigurationService } from '../../../../../platform/configuration/common/configuration.js'; import { IFileService } from '../../../../../platform/files/common/files.js'; import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js'; import { ILogService } from '../../../../../platform/log/common/log.js'; @@ -27,10 +28,9 @@ import { observableConfigValue } from '../../../../../platform/observable/common import { IWorkspaceContextService } from '../../../../../platform/workspace/common/workspace.js'; import { IPathService } from '../../../../services/path/common/pathService.js'; import { ChatConfiguration } from '../constants.js'; -import { parseCopilotHooks } from '../promptSyntax/hookCompatibility.js'; import { parseClaudeHooks } from '../promptSyntax/hookClaudeCompat.js'; -import { agentPluginDiscoveryRegistry, IAgentPlugin, IAgentPluginCommand, IAgentPluginDiscovery, IAgentPluginHook, IAgentPluginMcpServerDefinition, IAgentPluginService, IAgentPluginSkill } from './agentPluginService.js'; -import { cloneAndChange } from '../../../../../base/common/objects.js'; +import { parseCopilotHooks } from '../promptSyntax/hookCompatibility.js'; +import { agentPluginDiscoveryRegistry, IAgentPlugin, IAgentPluginAgent, IAgentPluginCommand, IAgentPluginDiscovery, IAgentPluginHook, IAgentPluginMcpServerDefinition, IAgentPluginService, IAgentPluginSkill } from './agentPluginService.js'; import { IPluginInstallService } from './pluginInstallService.js'; import { IMarketplacePlugin, IPluginMarketplaceService } from './pluginMarketplaceService.js'; @@ -334,12 +334,14 @@ export class ConfiguredAgentPluginDiscovery extends Disposable implements IAgent const store = new DisposableStore(); const commands = observableValue('agentPluginCommands', []); const skills = observableValue('agentPluginSkills', []); + const agents = observableValue('agentPluginAgents', []); const hooks = observableValue('agentPluginHooks', []); const mcpServerDefinitions = observableValue('agentPluginMcpServerDefinitions', []); const enabled = observableValue('agentPluginEnabled', initialEnabled); const commandsDir = joinPath(uri, 'commands'); const skillsDir = joinPath(uri, 'skills'); + const agentsDir = joinPath(uri, 'agents'); const commandsScheduler = store.add(new RunOnceScheduler(async () => { commands.set(await this._readCommands(uri), undefined); @@ -347,6 +349,9 @@ export class ConfiguredAgentPluginDiscovery extends Disposable implements IAgent const skillsScheduler = store.add(new RunOnceScheduler(async () => { skills.set(await this._readSkills(uri), undefined); }, 200)); + const agentsScheduler = store.add(new RunOnceScheduler(async () => { + agents.set(await this._readAgents(uri), undefined); + }, 200)); const hooksScheduler = store.add(new RunOnceScheduler(async () => { hooks.set(await this._readHooks(uri, adapter), undefined); }, 200)); @@ -362,6 +367,9 @@ export class ConfiguredAgentPluginDiscovery extends Disposable implements IAgent if (e.affects(skillsDir)) { skillsScheduler.schedule(); } + if (e.affects(agentsDir)) { + agentsScheduler.schedule(); + } if (adapter.hookWatchPaths.some(path => e.affects(joinPath(uri, path)))) { hooksScheduler.schedule(); } @@ -373,6 +381,7 @@ export class ConfiguredAgentPluginDiscovery extends Disposable implements IAgent commandsScheduler.schedule(); skillsScheduler.schedule(); + agentsScheduler.schedule(); hooksScheduler.schedule(); mcpScheduler.schedule(); @@ -385,6 +394,7 @@ export class ConfiguredAgentPluginDiscovery extends Disposable implements IAgent hooks, commands, skills, + agents, mcpServerDefinitions, fromMarketplace, }; @@ -577,6 +587,37 @@ export class ConfiguredAgentPluginDiscovery extends Disposable implements IAgent return skills; } + private async _readAgents(uri: URI): Promise { + const agentsDir = joinPath(uri, 'agents'); + let stat; + try { + stat = await this._fileService.resolve(agentsDir); + } catch { + return []; + } + + if (!stat.isDirectory || !stat.children) { + return []; + } + + const agents: IAgentPluginAgent[] = []; + for (const child of stat.children) { + if (!child.isFile || extname(child.resource).toLowerCase() !== COMMAND_FILE_SUFFIX) { + continue; + } + + const name = basename(child.resource).slice(0, -COMMAND_FILE_SUFFIX.length); + + agents.push({ + uri: child.resource, + name, + }); + } + + agents.sort((a, b) => a.name.localeCompare(b.name)); + return agents; + } + private async _readCommands(uri: URI): Promise { const commandsDir = joinPath(uri, 'commands'); let stat; diff --git a/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts b/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts index 38866f18fb46f..927def920cebd 100644 --- a/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts +++ b/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts @@ -231,6 +231,10 @@ export class PromptsService extends Disposable implements IPromptsService { PromptsType.skill, (plugin, reader) => plugin.skills.read(reader), )); + this._register(this.watchPluginPromptFilesForType( + PromptsType.agent, + (plugin, reader) => plugin.agents.read(reader), + )); this._register(autorun(reader => { const plugins = this.agentPluginService.plugins.read(reader); diff --git a/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/promptsService.test.ts b/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/promptsService.test.ts index 5a784486c3200..dc2fb6d67b9c7 100644 --- a/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/promptsService.test.ts +++ b/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/promptsService.test.ts @@ -53,7 +53,7 @@ import { ChatModeKind } from '../../../../common/constants.js'; import { HookType } from '../../../../common/promptSyntax/hookSchema.js'; import { IContextKeyService, IContextKeyChangeEvent } from '../../../../../../../platform/contextkey/common/contextkey.js'; import { MockContextKeyService } from '../../../../../../../platform/keybinding/test/common/mockKeybindingService.js'; -import { IAgentPlugin, IAgentPluginCommand, IAgentPluginHook, IAgentPluginMcpServerDefinition, IAgentPluginService, IAgentPluginSkill } from '../../../../common/plugins/agentPluginService.js'; +import { IAgentPlugin, IAgentPluginAgent, IAgentPluginCommand, IAgentPluginHook, IAgentPluginMcpServerDefinition, IAgentPluginService, IAgentPluginSkill } from '../../../../common/plugins/agentPluginService.js'; suite('PromptsService', () => { const disposables = ensureNoDisposablesAreLeakedInTestSuite(); @@ -3444,6 +3444,7 @@ suite('PromptsService', () => { const hooks = observableValue('testPluginHooks', initialHooks); const commands = observableValue('testPluginCommands', []); const skills = observableValue('testPluginSkills', []); + const agents = observableValue('testPluginAgents', []); const mcpServerDefinitions = observableValue('testPluginMcpServerDefinitions', []); return { @@ -3454,6 +3455,7 @@ suite('PromptsService', () => { hooks, commands, skills, + agents, mcpServerDefinitions, }, hooks, From 95ea3fe0ac87bfdcf6f84c6f442eac397456c3cc Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 13:33:17 -0800 Subject: [PATCH 13/48] Enhance CreateRemoteAgentJobAction to handle cross-type delegation and open new sessions accordingly --- .../chat/browser/actions/chatContinueInAction.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index 4cc277db5f2ee..a68bcc8c73c45 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -36,7 +36,7 @@ import { ChatSendResult, IChatService } from '../../common/chatService/chatServi import { IChatSessionsExtensionPoint, IChatSessionsService } from '../../common/chatSessionsService.js'; import { ChatAgentLocation } from '../../common/constants.js'; import { PROMPT_LANGUAGE_ID } from '../../common/promptSyntax/promptTypes.js'; -import { AgentSessionProviders, getAgentSessionProviderIcon, getAgentSessionProviderName } from '../agentSessions/agentSessions.js'; +import { AgentSessionProviders, getAgentSessionProvider, getAgentSessionProviderIcon, getAgentSessionProviderName } from '../agentSessions/agentSessions.js'; import { IChatWidget, IChatWidgetService } from '../chat.js'; import { ctxHasEditorModification } from '../chatEditing/chatEditingEditorContextKeys.js'; import { CHAT_SETUP_ACTION_ID } from './chatActions.js'; @@ -278,10 +278,21 @@ export class CreateRemoteAgentJobAction { } } + const continuationTargetType = continuationTarget.type; + + // When source and target session types differ, open a new session of + // the target type with the prompt and context instead of sending to + // the current (incompatible) session resource. + const sourceProvider = getAgentSessionProvider(sessionResource); + if (sourceProvider && sourceProvider !== continuationTargetType) { + console.log(`[Delegation] CreateRemoteAgentJobAction: cross-type delegation (${sourceProvider} -> ${continuationTargetType}), opening new session`); + await commandService.executeCommand(`${NEW_CHAT_SESSION_ACTION_ID}.${continuationTargetType}`, { prompt: userPrompt, attachedContext: attachedContext.asArray() }); + return; + } + const defaultAgent = chatAgentService.getDefaultAgent(ChatAgentLocation.Chat); const instantiationService = accessor.get(IInstantiationService); const requestParser = instantiationService.createInstance(ChatRequestParser); - const continuationTargetType = continuationTarget.type; console.log(`[Delegation] CreateRemoteAgentJobAction: sending request with agentIdSilent=${continuationTargetType}, defaultAgent=${defaultAgent?.id}`); From ee9754284f1ed8288db22b051ace04be406b8701 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 13:36:47 -0800 Subject: [PATCH 14/48] Enhance CreateRemoteAgentJobAction to support sidebar context for cross-type delegation --- .../chat/browser/actions/chatContinueInAction.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index a68bcc8c73c45..13587ce156f47 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -37,7 +37,7 @@ import { IChatSessionsExtensionPoint, IChatSessionsService } from '../../common/ import { ChatAgentLocation } from '../../common/constants.js'; import { PROMPT_LANGUAGE_ID } from '../../common/promptSyntax/promptTypes.js'; import { AgentSessionProviders, getAgentSessionProvider, getAgentSessionProviderIcon, getAgentSessionProviderName } from '../agentSessions/agentSessions.js'; -import { IChatWidget, IChatWidgetService } from '../chat.js'; +import { IChatWidget, IChatWidgetService, isIChatViewViewContext } from '../chat.js'; import { ctxHasEditorModification } from '../chatEditing/chatEditingEditorContextKeys.js'; import { CHAT_SETUP_ACTION_ID } from './chatActions.js'; import { PromptFileVariableKind, toPromptFileVariableEntry } from '../../common/attachments/chatVariableEntries.js'; @@ -285,8 +285,12 @@ export class CreateRemoteAgentJobAction { // the current (incompatible) session resource. const sourceProvider = getAgentSessionProvider(sessionResource); if (sourceProvider && sourceProvider !== continuationTargetType) { - console.log(`[Delegation] CreateRemoteAgentJobAction: cross-type delegation (${sourceProvider} -> ${continuationTargetType}), opening new session`); - await commandService.executeCommand(`${NEW_CHAT_SESSION_ACTION_ID}.${continuationTargetType}`, { prompt: userPrompt, attachedContext: attachedContext.asArray() }); + const isSidebar = isIChatViewViewContext(widget.viewContext); + const actionId = isSidebar + ? `workbench.action.chat.openNewSessionSidebar.${continuationTargetType}` + : `${NEW_CHAT_SESSION_ACTION_ID}.${continuationTargetType}`; + console.log(`[Delegation] CreateRemoteAgentJobAction: cross-type delegation (${sourceProvider} -> ${continuationTargetType}), isSidebar=${isSidebar}`); + await commandService.executeCommand(actionId, { prompt: userPrompt, attachedContext: attachedContext.asArray() }); return; } From 62cd38b3e0613b1a50a8507b777ed34245ebe3f1 Mon Sep 17 00:00:00 2001 From: Vijay Upadya <41652029+vijayupadya@users.noreply.github.com> Date: Wed, 25 Feb 2026 14:28:47 -0800 Subject: [PATCH 15/48] Debug panel fixes (#297804) --- .../workbench/api/common/extHostChatDebug.ts | 7 ++--- .../browser/chatDebug/chatDebugEventList.ts | 26 ++++++++++++------- .../browser/chatDebug/chatDebugHomeView.ts | 6 ++++- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/vs/workbench/api/common/extHostChatDebug.ts b/src/vs/workbench/api/common/extHostChatDebug.ts index 4790d2141a5e0..fd4994cdaf034 100644 --- a/src/vs/workbench/api/common/extHostChatDebug.ts +++ b/src/vs/workbench/api/common/extHostChatDebug.ts @@ -197,13 +197,14 @@ export class ExtHostChatDebug extends Disposable implements ExtHostChatDebugShap }; } default: { - // Final fallback: treat as generic const generic = event as vscode.ChatDebugGenericEvent; + const rawName = generic.name; + const rawDetails = generic.details; return { ...base, kind: 'generic', - name: generic.name ?? '', - details: generic.details, + name: typeof rawName === 'string' ? rawName : '', + details: typeof rawDetails === 'string' ? rawDetails : undefined, level: generic.level ?? 1, category: generic.category, }; diff --git a/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.ts b/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.ts index 7ae85ffa0f88b..a88d4a370032d 100644 --- a/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.ts +++ b/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.ts @@ -12,6 +12,14 @@ import { safeIntl } from '../../../../../base/common/date.js'; const $ = DOM.$; +/** Coerce a value to a string, returning a fallback for null/undefined/non-strings. */ +function safeStr(value: string | undefined | null, fallback: string = ''): string { + if (value === null || value === undefined || typeof value !== 'string') { + return fallback; + } + return value; +} + const dateFormatter = safeIntl.DateTimeFormat(undefined, { month: 'short', day: 'numeric', @@ -32,30 +40,30 @@ function renderEventToTemplate(element: IChatDebugEvent, templateData: IChatDebu switch (element.kind) { case 'toolCall': - templateData.name.textContent = element.toolName; - templateData.details.textContent = element.result ?? ''; + templateData.name.textContent = safeStr(element.toolName, localize('chatDebug.unknownEvent', "(unknown)")); + templateData.details.textContent = safeStr(element.result); break; case 'modelTurn': - templateData.name.textContent = element.model ?? localize('chatDebug.modelTurn', "Model Turn"); + templateData.name.textContent = safeStr(element.model) || localize('chatDebug.modelTurn', "Model Turn"); templateData.details.textContent = element.totalTokens !== undefined ? localize('chatDebug.tokens', "{0} tokens", element.totalTokens) : ''; break; case 'generic': - templateData.name.textContent = element.name; - templateData.details.textContent = element.details ?? ''; + templateData.name.textContent = safeStr(element.name, localize('chatDebug.unknownEvent', "(unknown)")); + templateData.details.textContent = safeStr(element.details); break; case 'subagentInvocation': - templateData.name.textContent = element.agentName; - templateData.details.textContent = element.description ?? (element.status ?? ''); + templateData.name.textContent = safeStr(element.agentName, localize('chatDebug.unknownEvent', "(unknown)")); + templateData.details.textContent = safeStr(element.description) || safeStr(element.status); break; case 'userMessage': templateData.name.textContent = localize('chatDebug.userMessage', "User Message"); - templateData.details.textContent = element.message; + templateData.details.textContent = safeStr(element.message); break; case 'agentResponse': templateData.name.textContent = localize('chatDebug.agentResponse', "Agent Response"); - templateData.details.textContent = element.message; + templateData.details.textContent = safeStr(element.message); break; } diff --git a/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.ts b/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.ts index 5f177aa9e21b0..20a12c032c801 100644 --- a/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.ts +++ b/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.ts @@ -98,7 +98,11 @@ export class ChatDebugHomeView extends Disposable { DOM.append(item, $(`span${ThemeIcon.asCSSSelector(Codicon.comment)}`)); const titleSpan = DOM.append(item, $('span.chat-debug-home-session-item-title')); - const isShimmering = isUUID(sessionTitle); + // Only show shimmer when the title is a UUID AND the model is not + // yet loaded. A live session with no requests yet has an empty title but its model exists — show a + // placeholder instead of an indefinite spinner. + const hasLiveModel = !!this.chatService.getSession(sessionResource); + const isShimmering = isUUID(sessionTitle) && !hasLiveModel; if (isShimmering) { titleSpan.classList.add('chat-debug-home-session-item-shimmer'); item.disabled = true; From 78051ceeeb234e98849b9a11dee4345dc6b287d4 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 14:33:39 -0800 Subject: [PATCH 16/48] Enhance CreateRemoteAgentJobAction to include conversation transcript in delegation prompts --- .../chat/browser/actions/chatContinueInAction.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index 13587ce156f47..3abfe4b91d949 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -289,8 +289,20 @@ export class CreateRemoteAgentJobAction { const actionId = isSidebar ? `workbench.action.chat.openNewSessionSidebar.${continuationTargetType}` : `${NEW_CHAT_SESSION_ACTION_ID}.${continuationTargetType}`; + + // Build conversation transcript from the source session to preserve context + const transcript = chatRequests.map(req => { + const userMsg = `User: ${req.message.text}`; + const respMsg = req.response?.response ? `Assistant: ${req.response.response.getMarkdown()}` : ''; + return respMsg ? `${userMsg}\n${respMsg}` : userMsg; + }).join('\n\n'); + + const delegationPrompt = transcript + ? `The following is the conversation history from a previous ${getAgentSessionProviderName(sourceProvider)} session. Continue working on it.\n\n${transcript}\n\nUser: ${userPrompt}` + : userPrompt; + console.log(`[Delegation] CreateRemoteAgentJobAction: cross-type delegation (${sourceProvider} -> ${continuationTargetType}), isSidebar=${isSidebar}`); - await commandService.executeCommand(actionId, { prompt: userPrompt, attachedContext: attachedContext.asArray() }); + await commandService.executeCommand(actionId, { prompt: delegationPrompt, attachedContext: attachedContext.asArray() }); return; } From ffe36845ac1283dcb48f7ea5fdf642f5cd410c8f Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 14:47:59 -0800 Subject: [PATCH 17/48] Enhance CreateRemoteAgentJobAction to extract repository info from remote URL and pass it to target session --- .../browser/actions/chatContinueInAction.ts | 30 +++++++++++++++++-- .../chatSessions/chatSessions.contribution.ts | 12 ++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index 3abfe4b91d949..581f105cf33f8 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -42,6 +42,18 @@ import { ctxHasEditorModification } from '../chatEditing/chatEditingEditorContex import { CHAT_SETUP_ACTION_ID } from './chatActions.js'; import { PromptFileVariableKind, toPromptFileVariableEntry } from '../../common/attachments/chatVariableEntries.js'; +/** + * Extracts the "owner/repo" name-with-owner from a git remote URL. + * Supports HTTPS (https://github.com/owner/repo.git) and SSH (git@github.com:owner/repo.git) formats. + */ +function extractNwoFromRemoteUrl(remoteUrl: string): string | undefined { + const match = remoteUrl.match(/(?:github\.com)[/:](?[^/]+)\/(?[^/.]+)/); + if (match?.groups) { + return `${match.groups.owner}/${match.groups.repo}`; + } + return undefined; +} + export const enum ActionLocation { ChatWidget = 'chatWidget', Editor = 'editor' @@ -301,8 +313,22 @@ export class CreateRemoteAgentJobAction { ? `The following is the conversation history from a previous ${getAgentSessionProviderName(sourceProvider)} session. Continue working on it.\n\n${transcript}\n\nUser: ${userPrompt}` : userPrompt; - console.log(`[Delegation] CreateRemoteAgentJobAction: cross-type delegation (${sourceProvider} -> ${continuationTargetType}), isSidebar=${isSidebar}`); - await commandService.executeCommand(actionId, { prompt: delegationPrompt, attachedContext: attachedContext.asArray() }); + // Extract repository info from the source session to pass to the target session + const initialSessionOptions: { optionId: string; value: string }[] = []; + const repoData = chatModel.repoData; + if (repoData?.remoteUrl) { + const nwo = extractNwoFromRemoteUrl(repoData.remoteUrl); + if (nwo) { + initialSessionOptions.push({ optionId: 'repositories', value: nwo }); + } + } + + console.log(`[Delegation] CreateRemoteAgentJobAction: cross-type delegation (${sourceProvider} -> ${continuationTargetType}), isSidebar=${isSidebar}, repoNwo=${initialSessionOptions.find(o => o.optionId === 'repositories')?.value}`); + await commandService.executeCommand(actionId, { + prompt: delegationPrompt, + attachedContext: attachedContext.asArray(), + initialSessionOptions: initialSessionOptions.length > 0 ? initialSessionOptions : undefined, + }); return; } diff --git a/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts b/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts index ada489b06acfe..f4861719941ab 100644 --- a/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts +++ b/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts @@ -1234,6 +1234,7 @@ export enum ChatSessionPosition { type NewChatSessionSendOptions = { readonly prompt: string; readonly attachedContext?: IChatRequestVariableEntry[]; + readonly initialSessionOptions?: ReadonlyArray<{ optionId: string; value: string | { id: string; name: string } }>; }; export type NewChatSessionOpenOptions = { @@ -1297,6 +1298,17 @@ async function openChatSession(accessor: ServicesAccessor, openOptions: NewChatS // Send initial prompt if provided if (chatSendOptions) { try { + // Set initial session options on the model before sending the request, + // so that the contributed session provider can read them. + if (chatSendOptions.initialSessionOptions) { + const model = chatService.getSession(resource); + if (model) { + model.setContributedChatSession({ + ...model.contributedChatSession!, + initialSessionOptions: chatSendOptions.initialSessionOptions, + }); + } + } await chatService.sendRequest(resource, chatSendOptions.prompt, { agentIdSilent: openOptions.type, attachedContext: chatSendOptions.attachedContext }); } catch (e) { logService.error(`Failed to send initial request to '${openOptions.type}' chat session with contextOptions: ${JSON.stringify(chatSendOptions)}`, e); From 70ef2c728a2afd5592ab0a31e9669ef34373ef00 Mon Sep 17 00:00:00 2001 From: David Dossett <25163139+daviddossett@users.noreply.github.com> Date: Wed, 25 Feb 2026 14:48:21 -0800 Subject: [PATCH 18/48] Align chat welcome view styles to other empty states (#297461) Style chat welcome view to match integrated browser --- .../contrib/chat/browser/widget/chatWidget.ts | 2 +- .../browser/widget/media/chatViewWelcome.css | 41 +++++++++++-------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts index 3238bb06704a9..16e96f0e435ad 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts @@ -188,7 +188,7 @@ const supportsAllAttachments: Required = { supportsPromptAttachments: true, }; -const DISCLAIMER = localize('chatDisclaimer', "AI responses may be inaccurate."); +const DISCLAIMER = localize('chatDisclaimer', "AI responses may be inaccurate"); export class ChatWidget extends Disposable implements IChatWidget { diff --git a/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css b/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css index 225d4422d4d8b..4c9933dc63793 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css +++ b/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css @@ -53,11 +53,13 @@ div.chat-welcome-view { padding: 12px; & > .chat-welcome-view-icon { - min-height: 48px; + min-height: 40px; } & > .chat-welcome-view-icon .codicon { + color: var(--vscode-descriptionForeground); font-size: 40px; + margin-bottom: 24px; } & > .chat-welcome-view-icon.custom-icon { @@ -84,7 +86,9 @@ div.chat-welcome-view { } & > .chat-welcome-view-title { - font-size: 24px; + font-size: 13px; + font-weight: 600; + color: var(--vscode-foreground); margin-top: 5px; text-align: center; line-height: normal; @@ -94,10 +98,11 @@ div.chat-welcome-view { & > .chat-welcome-view-message { position: relative; text-align: center; - max-width: 100%; + max-width: 280px; padding: 0 20px; - margin: 0 auto; - color: var(--vscode-foreground); + margin: 8px auto 0; + color: var(--vscode-descriptionForeground); + font-size: 12px; a { color: var(--vscode-textLink-foreground); @@ -110,8 +115,7 @@ div.chat-welcome-view { } p { - margin-top: 8px; - margin-bottom: 8px; + margin: 0; } } @@ -153,11 +157,16 @@ div.chat-welcome-view { } & > .chat-welcome-view-disclaimer { - color: var(--vscode-foreground); + color: var(--vscode-input-placeholderForeground); text-align: center; - margin: -16px auto; - max-width: 400px; + margin: 0; + max-width: 256px; padding: 0 12px; + font-size: 12px; + + p { + margin: 0; + } a { color: var(--vscode-textLink-foreground); @@ -190,9 +199,7 @@ div.chat-welcome-view { position: absolute; top: 8px; left: 16px; - font-size: 11px; - text-transform: uppercase; - letter-spacing: 0.5px; + font-size: 12px; color: var(--vscode-descriptionForeground); margin: 0; text-align: left; @@ -202,8 +209,8 @@ div.chat-welcome-view { display: flex; align-items: center; gap: 6px; - height: 24px; - padding: 0 8px; + height: 20px; + padding: 0 6px; border-radius: 4px; background-color: var(--vscode-editorWidget-background); cursor: pointer; @@ -214,13 +221,13 @@ div.chat-welcome-view { flex: 0 0 auto; & > .chat-welcome-view-suggested-prompt-title { - font-size: 13px; + font-size: 12px; color: var(--vscode-editorWidget-foreground); white-space: nowrap; } & > .chat-welcome-view-suggested-prompt-description { - font-size: 13px; + font-size: 11px; color: var(--vscode-descriptionForeground); overflow: hidden; text-overflow: ellipsis; From 561772d217cb1a32addeb1e332fb20b87b9d533d Mon Sep 17 00:00:00 2001 From: BeniBenj Date: Wed, 25 Feb 2026 23:49:48 +0100 Subject: [PATCH 19/48] update animation and background color --- .../lib/stylelint/vscode-known-variables.json | 2 + src/vs/sessions/common/theme.ts | 14 +++ .../browser/account.contribution.ts | 41 ++++++- .../test/browser/updateWidget.fixture.ts | 103 ++++++++++++++++++ 4 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 src/vs/sessions/contrib/accountMenu/test/browser/updateWidget.fixture.ts diff --git a/build/lib/stylelint/vscode-known-variables.json b/build/lib/stylelint/vscode-known-variables.json index 5d00be88ea8e7..9e2eea3b858ec 100644 --- a/build/lib/stylelint/vscode-known-variables.json +++ b/build/lib/stylelint/vscode-known-variables.json @@ -645,6 +645,8 @@ "--vscode-searchEditor-findMatchBorder", "--vscode-searchEditor-textInputBorder", "--vscode-selection-background", + "--vscode-sessionsUpdateButton-downloadedBackground", + "--vscode-sessionsUpdateButton-downloadingBackground", "--vscode-settings-checkboxBackground", "--vscode-settings-checkboxBorder", "--vscode-settings-checkboxForeground", diff --git a/src/vs/sessions/common/theme.ts b/src/vs/sessions/common/theme.ts index 782b1be6ab59b..2f928d12aecbb 100644 --- a/src/vs/sessions/common/theme.ts +++ b/src/vs/sessions/common/theme.ts @@ -7,6 +7,7 @@ import { localize } from '../../nls.js'; import { registerColor, transparent } from '../../platform/theme/common/colorUtils.js'; import { contrastBorder, iconForeground } from '../../platform/theme/common/colorRegistry.js'; import { Color } from '../../base/common/color.js'; +import { buttonBackground } from '../../platform/theme/common/colors/inputColors.js'; import { SIDE_BAR_BACKGROUND, SIDE_BAR_FOREGROUND } from '../../workbench/common/theme.js'; // Sessions sidebar background color @@ -55,3 +56,16 @@ export const agentFeedbackInputWidgetBorder = registerColor( { dark: transparent(iconForeground, 0.8), light: transparent(iconForeground, 0.8), hcDark: contrastBorder, hcLight: contrastBorder }, localize('agentFeedbackInputWidget.border', 'Border color of the agent feedback input widget shown in the editor.') ); + +// Sessions update button colors +export const sessionsUpdateButtonDownloadingBackground = registerColor( + 'sessionsUpdateButton.downloadingBackground', + transparent(buttonBackground, 0.4), + localize('sessionsUpdateButton.downloadingBackground', 'Background color of the update button to show download progress in the agent sessions window.') +); + +export const sessionsUpdateButtonDownloadedBackground = registerColor( + 'sessionsUpdateButton.downloadedBackground', + transparent(buttonBackground, 0.7), + localize('sessionsUpdateButton.downloadedBackground', 'Background color of the update button when download is complete in the agent sessions window.') +); diff --git a/src/vs/sessions/contrib/accountMenu/browser/account.contribution.ts b/src/vs/sessions/contrib/accountMenu/browser/account.contribution.ts index cbff23edc4c94..12ce22cdbd8f6 100644 --- a/src/vs/sessions/contrib/accountMenu/browser/account.contribution.ts +++ b/src/vs/sessions/contrib/accountMenu/browser/account.contribution.ts @@ -23,7 +23,9 @@ import { IAction } from '../../../../base/common/actions.js'; import { Button } from '../../../../base/browser/ui/button/button.js'; import { defaultButtonStyles } from '../../../../platform/theme/browser/defaultStyles.js'; import { Codicon } from '../../../../base/common/codicons.js'; -import { IUpdateService, StateType } from '../../../../platform/update/common/update.js'; +import { Downloading, IUpdateService, State, StateType } from '../../../../platform/update/common/update.js'; +import { asCssVariable } from '../../../../platform/theme/common/colorUtils.js'; +import { sessionsUpdateButtonDownloadingBackground, sessionsUpdateButtonDownloadedBackground } from '../../../common/theme.js'; // --- Account Menu Items --- // const AccountMenu = new MenuId('SessionsAccountMenu'); @@ -160,7 +162,7 @@ class AccountWidget extends ActionViewItem { } } -class UpdateWidget extends ActionViewItem { +export class UpdateWidget extends ActionViewItem { private updateButton: Button | undefined; private readonly viewItemDisposables = this._register(new DisposableStore()); @@ -222,9 +224,44 @@ class UpdateWidget extends ActionViewItem { if (this.isUpdatePending() && !this.isUpdateReady()) { this.updateButton.enabled = false; this.updateButton.label = `$(${Codicon.loading.id}~spin) ${this.getUpdateProgressMessage(state.type)}`; + this.updateDownloadProgress(state); } else { this.updateButton.enabled = true; this.updateButton.label = `$(${Codicon.debugRestart.id}) ${localize('update', "Update")}`; + const color = asCssVariable(sessionsUpdateButtonDownloadedBackground); + this.updateButton.element.style.backgroundImage = `linear-gradient(to right, ${color} 100%, transparent 100%)`; + } + } + + private updateDownloadProgress(state: State): void { + if (!this.updateButton) { + return; + } + + const el = this.updateButton.element; + + if (state.type === StateType.Downloading) { + const { downloadedBytes, totalBytes } = state as Downloading; + if (downloadedBytes !== undefined && totalBytes && totalBytes > 0) { + const percent = Math.min(100, Math.round((downloadedBytes / totalBytes) * 100)); + const color = asCssVariable(sessionsUpdateButtonDownloadingBackground); + el.style.backgroundImage = `linear-gradient(to right, ${color} ${percent}%, transparent ${percent}%)`; + } else { + // Indeterminate: show a subtle pulsing background + const color = asCssVariable(sessionsUpdateButtonDownloadingBackground); + el.style.backgroundImage = `linear-gradient(to right, ${color} 0%, transparent 100%)`; + } + } else if (state.type === StateType.Downloaded) { + const color = asCssVariable(sessionsUpdateButtonDownloadedBackground); + el.style.backgroundImage = `linear-gradient(to right, ${color} 100%, transparent 100%)`; + } else { + this.clearDownloadProgress(); + } + } + + private clearDownloadProgress(): void { + if (this.updateButton) { + this.updateButton.element.style.backgroundImage = ''; } } diff --git a/src/vs/sessions/contrib/accountMenu/test/browser/updateWidget.fixture.ts b/src/vs/sessions/contrib/accountMenu/test/browser/updateWidget.fixture.ts new file mode 100644 index 0000000000000..a67edb78b11b7 --- /dev/null +++ b/src/vs/sessions/contrib/accountMenu/test/browser/updateWidget.fixture.ts @@ -0,0 +1,103 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { Action } from '../../../../../base/common/actions.js'; +import { Emitter } from '../../../../../base/common/event.js'; +import { IUpdateService, State } from '../../../../../platform/update/common/update.js'; +import { ComponentFixtureContext, createEditorServices, defineComponentFixture, defineThemedFixtureGroup } from '../../../../../workbench/test/browser/componentFixtures/fixtureUtils.js'; +import { UpdateWidget } from '../../browser/account.contribution.js'; + +// Ensure color registrations are loaded +import '../../../../common/theme.js'; +import '../../../../../platform/theme/common/colors/inputColors.js'; + +// Import the CSS +import '../../../../browser/media/sidebarActionButton.css'; +import '../../browser/media/accountWidget.css'; + +const mockUpdate = { version: '1.0.0' }; + +function createMockUpdateService(state: State): IUpdateService { + const onStateChange = new Emitter(); + const service: IUpdateService = { + _serviceBrand: undefined, + state, + onStateChange: onStateChange.event, + checkForUpdates: async () => { }, + downloadUpdate: async () => { }, + applyUpdate: async () => { }, + quitAndInstall: async () => { }, + isLatestVersion: async () => true, + _applySpecificUpdate: async () => { }, + setInternalOrg: async () => { }, + }; + return service; +} + +function renderUpdateWidget(ctx: ComponentFixtureContext, state: State): void { + ctx.container.style.padding = '16px'; + ctx.container.style.width = '300px'; + ctx.container.style.backgroundColor = 'var(--vscode-sideBar-background)'; + + const mockService = createMockUpdateService(state); + + const instantiationService = createEditorServices(ctx.disposableStore, { + colorTheme: ctx.theme, + additionalServices: (reg) => { + reg.defineInstance(IUpdateService, mockService); + }, + }); + + const action = ctx.disposableStore.add(new Action('sessions.action.updateWidget', 'Sessions Update')); + const widget = instantiationService.createInstance(UpdateWidget, action, {}); + ctx.disposableStore.add(widget); + widget.render(ctx.container); +} + +export default defineThemedFixtureGroup({ + Ready: defineComponentFixture({ + render: (ctx) => renderUpdateWidget(ctx, State.Ready(mockUpdate, true, false)), + }), + + CheckingForUpdates: defineComponentFixture({ + render: (ctx) => renderUpdateWidget(ctx, State.CheckingForUpdates(true)), + }), + + AvailableForDownload: defineComponentFixture({ + render: (ctx) => renderUpdateWidget(ctx, State.AvailableForDownload(mockUpdate)), + }), + + Downloading0Percent: defineComponentFixture({ + render: (ctx) => renderUpdateWidget(ctx, State.Downloading(mockUpdate, true, false, 0, 100_000_000)), + }), + + Downloading30Percent: defineComponentFixture({ + render: (ctx) => renderUpdateWidget(ctx, State.Downloading(mockUpdate, true, false, 30_000_000, 100_000_000)), + }), + + Downloading65Percent: defineComponentFixture({ + render: (ctx) => renderUpdateWidget(ctx, State.Downloading(mockUpdate, true, false, 65_000_000, 100_000_000)), + }), + + Downloading100Percent: defineComponentFixture({ + render: (ctx) => renderUpdateWidget(ctx, State.Downloading(mockUpdate, true, false, 100_000_000, 100_000_000)), + }), + + DownloadingIndeterminate: defineComponentFixture({ + render: (ctx) => renderUpdateWidget(ctx, State.Downloading(mockUpdate, true, false)), + }), + + Downloaded: defineComponentFixture({ + render: (ctx) => renderUpdateWidget(ctx, State.Downloaded(mockUpdate, true, false)), + }), + + Updating: defineComponentFixture({ + render: (ctx) => renderUpdateWidget(ctx, State.Updating(mockUpdate)), + }), + + Overwriting: defineComponentFixture({ + render: (ctx) => renderUpdateWidget(ctx, State.Overwriting(mockUpdate, true)), + }), +}); From da1199fa616371f4567fee26963553c82f4454c8 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 14:57:30 -0800 Subject: [PATCH 20/48] Enhance CreateRemoteAgentJobAction to extract repository NWO from multiple session data sources --- .../browser/actions/chatContinueInAction.ts | 68 +++++++++++++++++-- 1 file changed, 61 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index 581f105cf33f8..2b18a474fe484 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -37,6 +37,7 @@ import { IChatSessionsExtensionPoint, IChatSessionsService } from '../../common/ import { ChatAgentLocation } from '../../common/constants.js'; import { PROMPT_LANGUAGE_ID } from '../../common/promptSyntax/promptTypes.js'; import { AgentSessionProviders, getAgentSessionProvider, getAgentSessionProviderIcon, getAgentSessionProviderName } from '../agentSessions/agentSessions.js'; +import { IAgentSessionsService } from '../agentSessions/agentSessionsService.js'; import { IChatWidget, IChatWidgetService, isIChatViewViewContext } from '../chat.js'; import { ctxHasEditorModification } from '../chatEditing/chatEditingEditorContextKeys.js'; import { CHAT_SETUP_ACTION_ID } from './chatActions.js'; @@ -224,6 +225,62 @@ export class CreateRemoteAgentJobAction { commandService.executeCommand(`${NEW_CHAT_SESSION_ACTION_ID}.${continuationTarget.type}`); } + /** + * Extracts the GitHub "owner/repo" NWO from the source session by checking + * multiple data sources: chat model repoData, session metadata, and session options. + */ + private extractRepoNwoFromSession(accessor: ServicesAccessor, sessionResource: URI, chatModel: ChatModel): string | undefined { + // 1. Try chat model's repoData (populated when local git repo exists) + const repoData = chatModel.repoData; + if (repoData?.remoteUrl) { + const nwo = extractNwoFromRemoteUrl(repoData.remoteUrl); + if (nwo) { + return nwo; + } + } + + // 2. Try agent session metadata (populated by session providers) + const agentSessionsService = accessor.get(IAgentSessionsService); + const agentSession = agentSessionsService.getSession(sessionResource); + if (agentSession?.metadata) { + const metadata = agentSession.metadata; + + // Cloud sessions set name/owner in metadata + const owner = metadata.owner as string | undefined; + const name = metadata.name as string | undefined; + if (owner && name) { + return `${owner}/${name}`; + } + + // Background sessions may set repositoryNwo directly + const repositoryNwo = metadata.repositoryNwo as string | undefined; + if (repositoryNwo?.includes('/')) { + return repositoryNwo; + } + + // Background sessions may set repositoryUrl + const repositoryUrl = metadata.repositoryUrl as string | undefined; + if (repositoryUrl) { + const nwo = extractNwoFromRemoteUrl(repositoryUrl); + if (nwo) { + return nwo; + } + } + } + + // 3. Try session options (repository picker selection) + const chatSessionsService = accessor.get(IChatSessionsService); + const repoOption = chatSessionsService.getSessionOption(sessionResource, 'repositories'); + if (repoOption) { + const optionValue = typeof repoOption === 'string' ? repoOption : (repoOption as { id: string }).id; + if (optionValue?.includes('/')) { + return optionValue; + } + } + + return undefined; + } + async run(accessor: ServicesAccessor, continuationTarget: IChatSessionsExtensionPoint, _widget?: IChatWidget) { const contextKeyService = accessor.get(IContextKeyService); const commandService = accessor.get(ICommandService); @@ -315,15 +372,12 @@ export class CreateRemoteAgentJobAction { // Extract repository info from the source session to pass to the target session const initialSessionOptions: { optionId: string; value: string }[] = []; - const repoData = chatModel.repoData; - if (repoData?.remoteUrl) { - const nwo = extractNwoFromRemoteUrl(repoData.remoteUrl); - if (nwo) { - initialSessionOptions.push({ optionId: 'repositories', value: nwo }); - } + const repoNwo = this.extractRepoNwoFromSession(accessor, sessionResource, chatModel); + if (repoNwo) { + initialSessionOptions.push({ optionId: 'repositories', value: repoNwo }); } - console.log(`[Delegation] CreateRemoteAgentJobAction: cross-type delegation (${sourceProvider} -> ${continuationTargetType}), isSidebar=${isSidebar}, repoNwo=${initialSessionOptions.find(o => o.optionId === 'repositories')?.value}`); + console.log(`[Delegation] CreateRemoteAgentJobAction: cross-type delegation (${sourceProvider} -> ${continuationTargetType}), isSidebar=${isSidebar}, repoNwo=${repoNwo}`); await commandService.executeCommand(actionId, { prompt: delegationPrompt, attachedContext: attachedContext.asArray(), From ae0171524afd7a360caee3f06ad82d712a01d99d Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 14:59:12 -0800 Subject: [PATCH 21/48] Enhance CreateRemoteAgentJobAction to log repository data and session metadata during NWO extraction --- .../contrib/chat/browser/actions/chatContinueInAction.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index 2b18a474fe484..39ea890f0d291 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -232,6 +232,7 @@ export class CreateRemoteAgentJobAction { private extractRepoNwoFromSession(accessor: ServicesAccessor, sessionResource: URI, chatModel: ChatModel): string | undefined { // 1. Try chat model's repoData (populated when local git repo exists) const repoData = chatModel.repoData; + console.log(`[Delegation] extractRepoNwo: repoData=${JSON.stringify(repoData ? { remoteUrl: repoData.remoteUrl, workspaceType: repoData.workspaceType } : null)}`); if (repoData?.remoteUrl) { const nwo = extractNwoFromRemoteUrl(repoData.remoteUrl); if (nwo) { @@ -242,6 +243,7 @@ export class CreateRemoteAgentJobAction { // 2. Try agent session metadata (populated by session providers) const agentSessionsService = accessor.get(IAgentSessionsService); const agentSession = agentSessionsService.getSession(sessionResource); + console.log(`[Delegation] extractRepoNwo: agentSession=${!!agentSession}, metadata=${JSON.stringify(agentSession?.metadata)}`); if (agentSession?.metadata) { const metadata = agentSession.metadata; @@ -271,6 +273,7 @@ export class CreateRemoteAgentJobAction { // 3. Try session options (repository picker selection) const chatSessionsService = accessor.get(IChatSessionsService); const repoOption = chatSessionsService.getSessionOption(sessionResource, 'repositories'); + console.log(`[Delegation] extractRepoNwo: repoOption=${JSON.stringify(repoOption)}`); if (repoOption) { const optionValue = typeof repoOption === 'string' ? repoOption : (repoOption as { id: string }).id; if (optionValue?.includes('/')) { From a57eec6e7462fcb7413ab0b1144d756fb7122198 Mon Sep 17 00:00:00 2001 From: David Dossett <25163139+daviddossett@users.noreply.github.com> Date: Wed, 25 Feb 2026 15:00:26 -0800 Subject: [PATCH 22/48] Use icon.foreground color for titleBar.activeForeground in 2026 themes (#297494) --- extensions/theme-2026/themes/2026-dark.json | 12 ++++++------ extensions/theme-2026/themes/2026-light.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/extensions/theme-2026/themes/2026-dark.json b/extensions/theme-2026/themes/2026-dark.json index ee51bb61214e2..8d3f082600d84 100644 --- a/extensions/theme-2026/themes/2026-dark.json +++ b/extensions/theme-2026/themes/2026-dark.json @@ -84,7 +84,7 @@ "sideBarSectionHeader.foreground": "#bfbfbf", "sideBarSectionHeader.border": "#2A2B2CFF", "titleBar.activeBackground": "#191A1B", - "titleBar.activeForeground": "#bfbfbf", + "titleBar.activeForeground": "#8C8C8C", "titleBar.inactiveBackground": "#191A1B", "titleBar.inactiveForeground": "#8C8C8C", "titleBar.border": "#2A2B2CFF", @@ -110,11 +110,11 @@ "editorCursor.foreground": "#BBBEBF", "editor.selectionBackground": "#27678280", "editor.inactiveSelectionBackground": "#27678260", - "editor.selectionHighlightBackground": "#27678260", - "editor.wordHighlightBackground": "#27678250", - "editor.wordHighlightStrongBackground": "#27678280", - "editor.findMatchBackground": "#27678290", - "editor.findMatchHighlightBackground": "#27678280", + "editor.selectionHighlightBackground": "#27678260", + "editor.wordHighlightBackground": "#27678250", + "editor.wordHighlightStrongBackground": "#27678280", + "editor.findMatchBackground": "#27678290", + "editor.findMatchHighlightBackground": "#27678280", "editor.findRangeHighlightBackground": "#242526", "editor.hoverHighlightBackground": "#242526", "editor.lineHighlightBackground": "#242526", diff --git a/extensions/theme-2026/themes/2026-light.json b/extensions/theme-2026/themes/2026-light.json index b86ef612b20c3..f11ffef290574 100644 --- a/extensions/theme-2026/themes/2026-light.json +++ b/extensions/theme-2026/themes/2026-light.json @@ -93,7 +93,7 @@ "sideBarSectionHeader.foreground": "#202020", "sideBarSectionHeader.border": "#F2F3F4FF", "titleBar.activeBackground": "#FAFAFD", - "titleBar.activeForeground": "#424242", + "titleBar.activeForeground": "#606060", "titleBar.inactiveBackground": "#FAFAFD", "titleBar.inactiveForeground": "#606060", "titleBar.border": "#F2F3F4FF", From 79634654cb348e59fa64851d0f78b6222a474360 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 15:04:27 -0800 Subject: [PATCH 23/48] Enhance CreateRemoteAgentJobAction to support multiple session option formats for repository extraction --- .../browser/actions/chatContinueInAction.ts | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index 39ea890f0d291..04bbe9d8af99b 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -272,12 +272,30 @@ export class CreateRemoteAgentJobAction { // 3. Try session options (repository picker selection) const chatSessionsService = accessor.get(IChatSessionsService); - const repoOption = chatSessionsService.getSessionOption(sessionResource, 'repositories'); - console.log(`[Delegation] extractRepoNwo: repoOption=${JSON.stringify(repoOption)}`); - if (repoOption) { - const optionValue = typeof repoOption === 'string' ? repoOption : (repoOption as { id: string }).id; - if (optionValue?.includes('/')) { - return optionValue; + // Cloud sessions use 'repositories', sessions window uses 'repository' + for (const optionId of ['repositories', 'repository']) { + const repoOption = chatSessionsService.getSessionOption(sessionResource, optionId); + console.log(`[Delegation] extractRepoNwo: repoOption[${optionId}]=${JSON.stringify(repoOption)}`); + if (repoOption) { + const optionValue = typeof repoOption === 'string' ? repoOption : (repoOption as { id: string }).id; + if (optionValue?.includes('/')) { + return optionValue; + } + // Option may be a URI string (github-remote-file://github/owner/repo/...) + if (optionValue) { + const nwo = extractNwoFromRemoteUrl(optionValue); + if (nwo) { + return nwo; + } + // Try parsing as URI + try { + const uri = URI.parse(optionValue); + const parts = uri.path.split('/').filter(Boolean); + if (parts.length >= 2) { + return `${parts[0]}/${parts[1]}`; + } + } catch { /* ignore */ } + } } } From d2eb4faabee660f9e05f56227df82e8903c2099a Mon Sep 17 00:00:00 2001 From: Benjamin Christopher Simmonds <44439583+benibenj@users.noreply.github.com> Date: Thu, 26 Feb 2026 00:06:19 +0100 Subject: [PATCH 24/48] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../accountMenu/browser/account.contribution.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/vs/sessions/contrib/accountMenu/browser/account.contribution.ts b/src/vs/sessions/contrib/accountMenu/browser/account.contribution.ts index 12ce22cdbd8f6..2cd913c75f647 100644 --- a/src/vs/sessions/contrib/accountMenu/browser/account.contribution.ts +++ b/src/vs/sessions/contrib/accountMenu/browser/account.contribution.ts @@ -228,8 +228,15 @@ export class UpdateWidget extends ActionViewItem { } else { this.updateButton.enabled = true; this.updateButton.label = `$(${Codicon.debugRestart.id}) ${localize('update', "Update")}`; - const color = asCssVariable(sessionsUpdateButtonDownloadedBackground); - this.updateButton.element.style.backgroundImage = `linear-gradient(to right, ${color} 100%, transparent 100%)`; + + const el = this.updateButton.element; + if (state.type === StateType.Ready) { + const color = asCssVariable(sessionsUpdateButtonDownloadedBackground); + el.style.backgroundImage = `linear-gradient(to right, ${color} 100%, transparent 100%)`; + } else { + // Ensure non-update states (e.g. Idle, Disabled, Uninitialized) do not look like a completed download + el.style.backgroundImage = ''; + } } } From 192a1b2478d0c2baabcdad5faad6bb0ac3fbed10 Mon Sep 17 00:00:00 2001 From: Robo Date: Thu, 26 Feb 2026 08:08:43 +0900 Subject: [PATCH 25/48] chore: sessions entry app for windows (#297589) * chore: enable sub app entrypoint on windows * chore: update window icons * chore: update gulp-electron * chore: bump inno_updater * chore: cleanup * fix: inno compilation for stable * chore: bump distro * chore: bump distro --- .npmrc | 4 +- build/checksums/electron.txt | 150 +++++++++--------- build/gulpfile.vscode.ts | 25 ++- build/gulpfile.vscode.win32.ts | 12 ++ build/lib/embeddedType.ts | 18 +++ build/win32/code.iss | 20 ++- build/win32/inno_updater.exe | Bin 587776 -> 607232 bytes cgmanifest.json | 6 +- package-lock.json | 16 +- package.json | 8 +- .../electron-main/updateService.darwin.ts | 2 +- .../electron-main/updateService.win32.ts | 7 + .../platform/windows/electron-main/windows.ts | 13 +- 13 files changed, 176 insertions(+), 105 deletions(-) create mode 100644 build/lib/embeddedType.ts diff --git a/.npmrc b/.npmrc index b07eade64d573..2c7c6c1b58489 100644 --- a/.npmrc +++ b/.npmrc @@ -1,6 +1,6 @@ disturl="https://electronjs.org/headers" -target="39.6.0" -ms_build_id="13330601" +target="39.6.1" +ms_build_id="13369494" runtime="electron" ignore-scripts=false build_from_source="true" diff --git a/build/checksums/electron.txt b/build/checksums/electron.txt index 3df57a48a97d2..90e662c384deb 100644 --- a/build/checksums/electron.txt +++ b/build/checksums/electron.txt @@ -1,75 +1,75 @@ -1a1bb622d9788793310458b7bf9eedcea8347da9556dd1d7661b757c15ebfdd5 *chromedriver-v39.6.0-darwin-arm64.zip -c84565c127adeca567ca69e85bbd8f387fff1f83c09e69f6f851528f5602dc4e *chromedriver-v39.6.0-darwin-x64.zip -f50df11f99a2e3df84560d5331608cd0a9d7a147a1490f25edfd8a95531918a2 *chromedriver-v39.6.0-linux-arm64.zip -a571fd25e33f3b3bded91506732a688319d93eb652e959bb19a09cd3f67f9e5f *chromedriver-v39.6.0-linux-armv7l.zip -2a50751190bbfe07984f7d8cbf2f12c257a4c132a36922a78c4e320169b8f498 *chromedriver-v39.6.0-linux-x64.zip -cf6034c20b727c48a6f44bb87b1ec89fd4189f56200a32cd39cedaab3f19e007 *chromedriver-v39.6.0-mas-arm64.zip -d2107db701c41fa5f3aaa04c279275ac4dcffde4542c032c806939acd8c6cd6c *chromedriver-v39.6.0-mas-x64.zip -1593ed5550fa11c549fd4ff5baea5cb7806548bff15b79340343ac24a86d6de3 *chromedriver-v39.6.0-win32-arm64.zip -deee89cbeed935a57551294fbc59f6a346b76769e27dd78a59a35a82ae3037d9 *chromedriver-v39.6.0-win32-ia32.zip -f88a23ebc246ed2a506d6d172eb9ffbb4c9d285103285a735e359268fcd08895 *chromedriver-v39.6.0-win32-x64.zip -2e1ec8568f4fda21dc4bb7231cdb0427fa31bb03c4bc39f8aa36659894f2d23e *electron-api.json -03e743428685b44beeab9aa51bad7437387dc2ce299b94745ed8fb0923dd9a07 *electron-v39.6.0-darwin-arm64-dsym-snapshot.zip -723d64530286ebd58539bc29deb65e9334ae8450a714b075d369013b4bbfdce0 *electron-v39.6.0-darwin-arm64-dsym.zip -8f529fbbed8c386f3485614fa059ea9408ebe17d3f0c793269ea52ef3efdf8df *electron-v39.6.0-darwin-arm64-symbols.zip -dace1f9e5c49f4f63f32341f8b0fb7f16b8cf07ce5fcb17abcc0b33782966b8c *electron-v39.6.0-darwin-arm64.zip -e2425514469c4382be374e676edff6779ef98ca1c679b1500337fa58aa863e98 *electron-v39.6.0-darwin-x64-dsym-snapshot.zip -877e72afd7d8695e8a4420a74765d45c30fad30606d3dbab07a0e88fe600e3f6 *electron-v39.6.0-darwin-x64-dsym.zip -ae958c150c6fe76fc7989a28ddb6104851f15d2e24bd32fe60f51e308954a816 *electron-v39.6.0-darwin-x64-symbols.zip -bed88dac3ac28249a020397d83f3f61871c7eaea2099d5bf6b1e92878cb14f19 *electron-v39.6.0-darwin-x64.zip -a86e9470d6084611f38849c9f9b3311584393fa81b55d0bbf7e284a649b729cf *electron-v39.6.0-linux-arm64-debug.zip -e7d7aec3873a6d2f2c9fe406a27a8668910f8b4fdf55a36b5302d9db3ec390db *electron-v39.6.0-linux-arm64-symbols.zip -d6ded47a49046eb031800cf70f2b5d763ccac11dac64e70a874c62aaa115ccba *electron-v39.6.0-linux-arm64.zip -2bf6a75c9f3c2400698c325e48c9b6444d108e4d76544fb130d04605002ae084 *electron-v39.6.0-linux-armv7l-debug.zip -421d02c8a063602b22e4f16a2614fe6cc13e07f9d4ead309fe40aeac296fe951 *electron-v39.6.0-linux-armv7l-symbols.zip -ee34896d1317f1572ed4f3ed8eb1719f599f250d442fc6afb6ec40091c4f4cdc *electron-v39.6.0-linux-armv7l.zip -233f55caae4514144310928248a96bd3a3ce7ac6dc1ff99e7531737a579793b1 *electron-v39.6.0-linux-x64-debug.zip -eca69e741b00ce141b9c2e6e63c1f77cd834a85aa095385f032fdb58d3154fff *electron-v39.6.0-linux-x64-symbols.zip -94bf4bee48f3c657edffd4556abbe62556ca8225cbb4528d62eb858233a3c34b *electron-v39.6.0-linux-x64.zip -6dfebeb760627df74c65ff8da7088fb77e0ae222cab5590fea4cdd37c060ea06 *electron-v39.6.0-mas-arm64-dsym-snapshot.zip -b327d41507546799451a684b6061caed10f1c16ee39a7e686aac71187f8b7afe *electron-v39.6.0-mas-arm64-dsym.zip -02a56a9c3c3522ebc653f03ad88be9a2f46594c730a767a28e7322ddb7a789b7 *electron-v39.6.0-mas-arm64-symbols.zip -2fe93cd39521371bb5722c358feebadc5e79d79628b07a79a00a9d918e261de4 *electron-v39.6.0-mas-arm64.zip -f25ddc8a9b2b699d6d9e54fdf66220514e387ae36e45efeb4d8217b1462503f6 *electron-v39.6.0-mas-x64-dsym-snapshot.zip -6732026b6a3728bea928af0c5928bf82d565eebeb3f5dc5b6991639d27e7c457 *electron-v39.6.0-mas-x64-dsym.zip -5260dabf5b0fc369e0f69d3286fbcce9d67bc65e3364e17f7bb13dd49e320422 *electron-v39.6.0-mas-x64-symbols.zip -905f7cf95270afa92972b6c9242fc50c0afd65ffd475a81ded6033588f27a613 *electron-v39.6.0-mas-x64.zip -9204c9844e89f5ca0b32a8347cf9141d8dcb66671906e299afa06004f464d9b0 *electron-v39.6.0-win32-arm64-pdb.zip -6778c54d8cf7a0d305e4334501c3b877daf4737197187120ac18064f4e093b23 *electron-v39.6.0-win32-arm64-symbols.zip -efec460f92ff99a9d5970dd7a67fd0be5272989cfacc9389dec954c706b23f7d *electron-v39.6.0-win32-arm64-toolchain-profile.zip -22b96aca4cf8f7823b98e3b20b6131e521e0100c5cd03ab76f106eefbd0399cf *electron-v39.6.0-win32-arm64.zip -f5b69c8c1c9349a1f3b4309fb3fa1cf6326953e0807d2063fc27ba9f1400232e *electron-v39.6.0-win32-ia32-pdb.zip -1d6e103869acdeb0330b26ee08089667e0b5afc506efcd7021ba761ed8b786b5 *electron-v39.6.0-win32-ia32-symbols.zip -efec460f92ff99a9d5970dd7a67fd0be5272989cfacc9389dec954c706b23f7d *electron-v39.6.0-win32-ia32-toolchain-profile.zip -2b30e5bc923fff1443e2a4d1971cb9b26f61bd6a454cfbb991042457bab4d623 *electron-v39.6.0-win32-ia32.zip -5f93924c317206a2a4800628854e44e68662a9c40b3457c9e72690d6fff884d3 *electron-v39.6.0-win32-x64-pdb.zip -eab07439f0a21210cd560c1169c04ea5e23c6fe0ab65bd60cffce2b9f69fd36e *electron-v39.6.0-win32-x64-symbols.zip -efec460f92ff99a9d5970dd7a67fd0be5272989cfacc9389dec954c706b23f7d *electron-v39.6.0-win32-x64-toolchain-profile.zip -e8eee36be3bb85ba6fd8fcd26cf3a264bc946ac0717762c64e168896695c8e34 *electron-v39.6.0-win32-x64.zip -2e84c606e40c7bab5530e4c83bbf3a24c28143b0a768dafa5ecf78b18d889297 *electron.d.ts -27cf8e375bc22ceea6b3d42132f2927ea544edac2b8b2c5dc3c10b5df8dfb027 *ffmpeg-v39.6.0-darwin-arm64.zip -321d9c07f74c6cf77027ec07d888fb7b634d6589207e3c9e016c43e277ca9944 *ffmpeg-v39.6.0-darwin-x64.zip -52ae6eccbdb4a9403a6c3eb46b356a28940ec25958b6b9181fb2f38e612e40ed *ffmpeg-v39.6.0-linux-arm64.zip -622cb781fb1e3b9617e7e60c36384427f7b0d9b5ad888e9bc356a83b050e13f1 *ffmpeg-v39.6.0-linux-armv7l.zip -ba441851788008362f013bf2983b22b0042af8df31bf90123328f928cc067492 *ffmpeg-v39.6.0-linux-x64.zip -27cf8e375bc22ceea6b3d42132f2927ea544edac2b8b2c5dc3c10b5df8dfb027 *ffmpeg-v39.6.0-mas-arm64.zip -321d9c07f74c6cf77027ec07d888fb7b634d6589207e3c9e016c43e277ca9944 *ffmpeg-v39.6.0-mas-x64.zip -2a358c2dbeeb259c0b6a18057b52ffb0109de69112086cb2ce02f3a79bd70cee *ffmpeg-v39.6.0-win32-arm64.zip -4555510880a7b8dff5d5d0520f641665c62494689782adbed67fa0e24b45ae67 *ffmpeg-v39.6.0-win32-ia32.zip -091ab3c97d5a1cda1e04c6bd263a2c07ea63ed7ec3fd06600af6d7e23bbbbe15 *ffmpeg-v39.6.0-win32-x64.zip -650fb5fbc7e6cc27e5caeb016f72aba756469772bbfdfb3ec0b229f973d8ad46 *hunspell_dictionaries.zip -669ef1bf8ed0f6378e67f4f8bc23d2907d7cc1db7369dbdf468e164f4ef49365 *libcxx-objects-v39.6.0-linux-arm64.zip -996d81ad796524246144e15e22ffef75faff055a102c49021d70b03f039c3541 *libcxx-objects-v39.6.0-linux-armv7l.zip -1ffb610613c11169640fa76e4790137034a0deb3b48e2aef51a01c9b96b7700a *libcxx-objects-v39.6.0-linux-x64.zip -6dd8db57473992367c7914b50d06cae3a1b713cc09ceebecfcd4107df333e759 *libcxx_headers.zip -e5c18f813cc64a7d3b0404ee9adeb9cbb49e7ee5e1054b62c71fa7d1a448ad1b *libcxxabi_headers.zip -7f58d6e1d8c75b990f7d2259de8d0896414d0f2cff2f0fe4e5c7f8037d8fe879 *mksnapshot-v39.6.0-darwin-arm64.zip -be1178e4aa1f4910ba2b8f35b5655e12182657b9e32d509b47f0b2db033f0ac5 *mksnapshot-v39.6.0-darwin-x64.zip -5e36a594067fea08bb3d7bcd60873c3e240ebcee2208bcebfbc9f77d3075cc0d *mksnapshot-v39.6.0-linux-arm64-x64.zip -2db9196d2af0148ebb7b6f1f597f46a535b7af482f95739bd1ced78e1ebf39e7 *mksnapshot-v39.6.0-linux-armv7l-x64.zip -cd673e0a908fc950e0b4246e2b099018a8ee879d12a62973a01cb7de522f5bcf *mksnapshot-v39.6.0-linux-x64.zip -0749d8735a1fd8c666862cd7020b81317c45203d01319c9be089d1e750cb2c15 *mksnapshot-v39.6.0-mas-arm64.zip -81ae98e064485f8c6c69cd6c875ee72666c0cc801a8549620d382c2d0cea3b5c *mksnapshot-v39.6.0-mas-x64.zip -2e44f75df797922e7c8bad61a1b41fed14b070a54257a6a751892b2b8b9dfe29 *mksnapshot-v39.6.0-win32-arm64-x64.zip -fb5d73a8bf4b8db80f61b7073aa8458b5c46cce5c2a4b23591e851c6fcbd0144 *mksnapshot-v39.6.0-win32-ia32.zip -118ae88dbcd6b260cfa370e46ccfb0ab00af5efbf59495aaeea56a2831f604b2 *mksnapshot-v39.6.0-win32-x64.zip +71cee744399edac3516b0b56d6565b015a70abda53785501b94e7efe68efb556 *chromedriver-v39.6.1-darwin-arm64.zip +2284eb7a536b6001d2b53b57a69d8b397f7245044c6055515268a472e780e9b3 *chromedriver-v39.6.1-darwin-x64.zip +d64a85751e3b779ce9d4e88ab0e25db4970594f7c2b4995a21d5bfce8d6b63f0 *chromedriver-v39.6.1-linux-arm64.zip +83e938f9b5c19785d32f510a4ef5eab9ac6e63d40944b0e759a5f85867a02b72 *chromedriver-v39.6.1-linux-armv7l.zip +b1cd220f1c71edd4aeb57910cbf63bdf8862c62a1c3270ae7af5a4bd2098fe6f *chromedriver-v39.6.1-linux-x64.zip +c63e4ea9a0bdb883d2a6369919262a7ff3f9b432dfdcd32c827debbabfa6e8e4 *chromedriver-v39.6.1-mas-arm64.zip +d073ed5147b5adf3aefc88c5ee24c0998a8930849d10f886a1e553b99ed001b9 *chromedriver-v39.6.1-mas-x64.zip +7d475b4bbddb9a6b2ab1fd7793cbe5fd2a3b3e8ee291b804ff1773d3a6432482 *chromedriver-v39.6.1-win32-arm64.zip +ff7175e1953a604a3d033eac76c0be6c0c6cadce014459c23186b4ce35ee632b *chromedriver-v39.6.1-win32-ia32.zip +2c3591abbc4a11ea9508d02eb9e9152eba7ef693746696723239cac8db4faac1 *chromedriver-v39.6.1-win32-x64.zip +c97d31018c4f3229555607f71e14ddf44ecf78b684055dce548ae5117b4fd284 *electron-api.json +9777c57ec393cb9961500f645166b3f05a9e1ddd8472474c3c6ae9f8224cc029 *electron-v39.6.1-darwin-arm64-dsym-snapshot.zip +005d1a2b75c7e022eda48ecb5b8026e7556b9e12ad6bbd3de39b555a299edbd9 *electron-v39.6.1-darwin-arm64-dsym.zip +fbd66751111a813295d29cfb152d67610d6fa3d606712f649c809883d087aae2 *electron-v39.6.1-darwin-arm64-symbols.zip +287d3bbff9709e37abb9a8c2780e6227f99a165c066dc870a104e173ef4bfe95 *electron-v39.6.1-darwin-arm64.zip +1dee7165235ead83950170805f84be03d6f89a4224e74ed9d570cd7393c2e9d3 *electron-v39.6.1-darwin-x64-dsym-snapshot.zip +e8f1c0b4d61272f95db0fa43a83b181ca449c31665012bb4d65b7320d3b450e1 *electron-v39.6.1-darwin-x64-dsym.zip +c04988ad2b72293fc5b26dba1c291cb3eb755dee9e1d274ec0553c35b306b339 *electron-v39.6.1-darwin-x64-symbols.zip +a9d801eaa52cdfbcb0e238c77b264ef04dc3831e4ff960b666f9bd414cdcac27 *electron-v39.6.1-darwin-x64.zip +43803eeeb2c85c8c122e7f2b036d577fdc761b469cfe503beffed96f6896dfbc *electron-v39.6.1-linux-arm64-debug.zip +9bd95e9fbdf836c0bce62a9e071e54a544e10d3509753e09a71e9ad8c1b74ff7 *electron-v39.6.1-linux-arm64-symbols.zip +fb5f0d71b908f9e49e845cda014ddcafa0637bbf21d811ad30ac799cb453d0a9 *electron-v39.6.1-linux-arm64.zip +9451c34d1608030b841018ce5df2af4319c70e43528e8033c2c469b836a4e15f *electron-v39.6.1-linux-armv7l-debug.zip +bfe9d26d2070ee4f330be8f89de9886ae121efffe6740f8af068b6c65be091eb *electron-v39.6.1-linux-armv7l-symbols.zip +6346f457f12ac728eacb63a782873438580291b853d7c2f387387da363cd021e *electron-v39.6.1-linux-armv7l.zip +d8b0d22e49cf1d7af1318608c791564637a6055584cae558f94a4c6c48422fee *electron-v39.6.1-linux-x64-debug.zip +1e25737611d32a47aec6941d803f9affad90713d9fac695c926806f8d852ca03 *electron-v39.6.1-linux-x64-symbols.zip +2c8ce4905bfeba655df1f8528981361225a3c8f2eb3e9fd1df1f7c2a6e0a03fa *electron-v39.6.1-linux-x64.zip +ef108445cada7fd68a1ec43037e5dd5c542ebe9f579ef59b4c2f4ee33dcf2d2f *electron-v39.6.1-mas-arm64-dsym-snapshot.zip +1139730349a8ab01f0c28f0c1066b58d79b815c6c99d88c19e9effe2e0f0ec37 *electron-v39.6.1-mas-arm64-dsym.zip +08bb61490eca6157ef5e6fff36fe0fc194994446fcab3c2a779190b45d14c206 *electron-v39.6.1-mas-arm64-symbols.zip +5c1e6db65a37e9810e88e172328b18bc7f6fa30f6edf865d600dbd3f399a9dd2 *electron-v39.6.1-mas-arm64.zip +88879e5383ee0066d138587f47ee1eacce18d1494fdfef851f448621fb69de50 *electron-v39.6.1-mas-x64-dsym-snapshot.zip +3125230a1c02498adbd404852eef94040114532990d2a84ced6f30f9fe58c0d1 *electron-v39.6.1-mas-x64-dsym.zip +4a2d0deaa795d2488d3a708ddbf887d6d8421256a03ae0945ec7c8cca383874d *electron-v39.6.1-mas-x64-symbols.zip +c1f9e7faef99ab132bdaf9cef3c773ca92a32683c7ba787d00abcfdbd87c99e2 *electron-v39.6.1-mas-x64.zip +ed8ac6af71ad036a8b3b725db1f45ac92ea346f6c7d6f8f9a9e6af89fcb98405 *electron-v39.6.1-win32-arm64-pdb.zip +66f0e675d11cf174960d0e700678dbbb92b993b52f058f1eb34613d3b66705e5 *electron-v39.6.1-win32-arm64-symbols.zip +efec460f92ff99a9d5970dd7a67fd0be5272989cfacc9389dec954c706b23f7d *electron-v39.6.1-win32-arm64-toolchain-profile.zip +41e1368fe8ea044cc872c5da3d747ea9ab1576386b99580a55a8e14c7375dec9 *electron-v39.6.1-win32-arm64.zip +8079d11539a2924eb07c05639d711ab12273e4d333aaeb3d6ae346bf7c5e45f6 *electron-v39.6.1-win32-ia32-pdb.zip +b22f3898fbb0e49f8c0506bd45b4f3510a0a0fdd947c0a62114bbc709c061eb5 *electron-v39.6.1-win32-ia32-symbols.zip +efec460f92ff99a9d5970dd7a67fd0be5272989cfacc9389dec954c706b23f7d *electron-v39.6.1-win32-ia32-toolchain-profile.zip +bb5563fc6ce349271e2bee3456a15445afd3af742c4d315b44ffd868d0211bfc *electron-v39.6.1-win32-ia32.zip +4af89e83c7c56c9418f83f8f534133bc664287bbde49b066607b45217f5acfa9 *electron-v39.6.1-win32-x64-pdb.zip +d6eda384bd6ebf6e39173b0363490f920fba92ecb8fdd53b3061080c72806c12 *electron-v39.6.1-win32-x64-symbols.zip +efec460f92ff99a9d5970dd7a67fd0be5272989cfacc9389dec954c706b23f7d *electron-v39.6.1-win32-x64-toolchain-profile.zip +87ddfa6c8f2c1178582dd79af76da6b267d09dcbb52cc59d40d30c01c39f49f0 *electron-v39.6.1-win32-x64.zip +2ebffb8530e804319443d49288343c982c08cbae0aac314f70b9859cb2722f42 *electron.d.ts +27cf8e375bc22ceea6b3d42132f2927ea544edac2b8b2c5dc3c10b5df8dfb027 *ffmpeg-v39.6.1-darwin-arm64.zip +321d9c07f74c6cf77027ec07d888fb7b634d6589207e3c9e016c43e277ca9944 *ffmpeg-v39.6.1-darwin-x64.zip +52ae6eccbdb4a9403a6c3eb46b356a28940ec25958b6b9181fb2f38e612e40ed *ffmpeg-v39.6.1-linux-arm64.zip +622cb781fb1e3b9617e7e60c36384427f7b0d9b5ad888e9bc356a83b050e13f1 *ffmpeg-v39.6.1-linux-armv7l.zip +ba441851788008362f013bf2983b22b0042af8df31bf90123328f928cc067492 *ffmpeg-v39.6.1-linux-x64.zip +27cf8e375bc22ceea6b3d42132f2927ea544edac2b8b2c5dc3c10b5df8dfb027 *ffmpeg-v39.6.1-mas-arm64.zip +321d9c07f74c6cf77027ec07d888fb7b634d6589207e3c9e016c43e277ca9944 *ffmpeg-v39.6.1-mas-x64.zip +2a358c2dbeeb259c0b6a18057b52ffb0109de69112086cb2ce02f3a79bd70cee *ffmpeg-v39.6.1-win32-arm64.zip +4555510880a7b8dff5d5d0520f641665c62494689782adbed67fa0e24b45ae67 *ffmpeg-v39.6.1-win32-ia32.zip +091ab3c97d5a1cda1e04c6bd263a2c07ea63ed7ec3fd06600af6d7e23bbbbe15 *ffmpeg-v39.6.1-win32-x64.zip +c98648b15b337bc6a6443ba009a46cfc696d657032445078a2475e5bc835cae9 *hunspell_dictionaries.zip +7ac45cdcc0b3f46c92a23689aacae8f5d341d71bf61f7fbaf9254087840e0a8d *libcxx-objects-v39.6.1-linux-arm64.zip +901825379fba3261a94e9967f6b3759366d4c0e59a3e1a2e0c787e3e3f725ebb *libcxx-objects-v39.6.1-linux-armv7l.zip +832d867351c2a0ae6adc02efdd24bdf44173a011f07009f489df80e8a5ccc483 *libcxx-objects-v39.6.1-linux-x64.zip +9d6081a9fc90693d7bd54bb0bdef147d9c37bd7a179a1eea63018570ee7813f0 *libcxx_headers.zip +23be04f992ee37ce8f29ffb9e53bd5bf461c50a91b6eddedaecc9f20b8967937 *libcxxabi_headers.zip +beccf9d63fc88de743a5497626096e886a70c631b08bc3e3a924a134bc32c9dc *mksnapshot-v39.6.1-darwin-arm64.zip +40757d33f3e939efbc126b5c9a52cfc1e102098295bcd4c5ccdd588fb03fd918 *mksnapshot-v39.6.1-darwin-x64.zip +68a16dd164cd6fcd2cc44fa530a60ac17061c5d3bbe4a95dc534fb8de74c06ee *mksnapshot-v39.6.1-linux-arm64-x64.zip +5b6fee728d9a54afd8cd11b8c153c32c8ff1a7cdbe2473e4bb4edf771610b118 *mksnapshot-v39.6.1-linux-armv7l-x64.zip +1653b0c1d087058be4f16f1b5877decfeb0705b3732f9428eadff003ffc0f166 *mksnapshot-v39.6.1-linux-x64.zip +0a1d2064c80cc60bc44d7b4609fb83f1870bc66de5fbc2d4907f6baf0bc6e0a0 *mksnapshot-v39.6.1-mas-arm64.zip +6294fc74584a6b20fb3cdd6fcff4c644234ce0471896728b9652ecac00b577f6 *mksnapshot-v39.6.1-mas-x64.zip +d997856786ba5a72a9fddbdc13a085979a613a2c94a343286f0e136d2f3d84c5 *mksnapshot-v39.6.1-win32-arm64-x64.zip +76dcbe1c3cf7d36bee79ecb7f8c02a9b75167c48983ecd8df047da5793d6248c *mksnapshot-v39.6.1-win32-ia32.zip +4c9f0bd54704a6333f5268645625b65cd87d61aa8c6d52482d9d39cc1f85808a *mksnapshot-v39.6.1-win32-x64.zip diff --git a/build/gulpfile.vscode.ts b/build/gulpfile.vscode.ts index 2a8b923395756..25a360094868e 100644 --- a/build/gulpfile.vscode.ts +++ b/build/gulpfile.vscode.ts @@ -31,6 +31,7 @@ import minimist from 'minimist'; import { compileBuildWithoutManglingTask, compileBuildWithManglingTask } from './gulpfile.compile.ts'; import { compileNonNativeExtensionsBuildTask, compileNativeExtensionsBuildTask, compileAllExtensionsBuildTask, compileExtensionMediaBuildTask, cleanExtensionsBuildTask } from './gulpfile.extensions.ts'; import { copyCodiconsTask } from './lib/compilation.ts'; +import type { EmbeddedProductInfo } from './lib/embeddedType.ts'; import { useEsbuildTranspile } from './buildConfig.ts'; import { promisify } from 'util'; import globCallback from 'glob'; @@ -388,7 +389,7 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d const isInsiderOrExploration = quality === 'insider' || quality === 'exploration'; const embedded = isInsiderOrExploration - ? (product as typeof product & { embedded?: { nameShort: string; nameLong: string; applicationName: string; dataFolderName: string; darwinBundleIdentifier: string; urlProtocol: string } }).embedded + ? (product as typeof product & { embedded?: EmbeddedProductInfo }).embedded : undefined; const packageSubJsonStream = isInsiderOrExploration @@ -403,12 +404,9 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d const productSubJsonStream = embedded ? gulp.src(['product.json'], { base: '.' }) .pipe(jsonEditor((json: Record) => { - json.nameShort = embedded.nameShort; - json.nameLong = embedded.nameLong; - json.applicationName = embedded.applicationName; - json.dataFolderName = embedded.dataFolderName; - json.darwinBundleIdentifier = embedded.darwinBundleIdentifier; - json.urlProtocol = embedded.urlProtocol; + Object.keys(embedded).forEach(key => { + json[key] = embedded[key as keyof EmbeddedProductInfo]; + }); return json; })) .pipe(rename('product.sub.json')) @@ -499,6 +497,9 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d 'resources/win32/code_70x70.png', 'resources/win32/code_150x150.png' ], { base: '.' })); + if (embedded) { + all = es.merge(all, gulp.src('resources/win32/sessions.ico', { base: '.' })); + } } else if (platform === 'linux') { const policyDest = gulp.src('.build/policies/linux/**', { base: '.build/policies/linux' }) .pipe(rename(f => f.dirname = `policies/${f.dirname}`)); @@ -522,6 +523,8 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d darwinMiniAppName: embedded.nameShort, darwinMiniAppBundleIdentifier: embedded.darwinBundleIdentifier, darwinMiniAppIcon: 'resources/darwin/sessions.icns', + win32ProxyAppName: embedded.nameShort, + win32ProxyIcon: 'resources/win32/sessions.ico', } : {}) }; @@ -530,7 +533,13 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d .pipe(util.fixWin32DirectoryPermissions()) .pipe(filter(['**', '!**/.github/**'], { dot: true })) // https://github.com/microsoft/vscode/issues/116523 .pipe(electron(electronConfig)) - .pipe(filter(['**', '!LICENSE', '!version'], { dot: true })); + .pipe(filter([ + '**', + '!LICENSE', + '!version', + ...(platform === 'darwin' && !isInsiderOrExploration ? ['!**/Contents/Applications'] : []), + ...(platform === 'win32' && !isInsiderOrExploration ? ['!**/electron_proxy.exe'] : []), + ], { dot: true })); if (platform === 'linux') { result = es.merge(result, gulp.src('resources/completions/bash/code', { base: '.' }) diff --git a/build/gulpfile.vscode.win32.ts b/build/gulpfile.vscode.win32.ts index d04e7f1f0e7d3..0f81323c98db2 100644 --- a/build/gulpfile.vscode.win32.ts +++ b/build/gulpfile.vscode.win32.ts @@ -14,6 +14,7 @@ import product from '../product.json' with { type: 'json' }; import { getVersion } from './lib/getVersion.ts'; import * as task from './lib/task.ts'; import * as util from './lib/util.ts'; +import type { EmbeddedProductInfo } from './lib/embeddedType.ts'; import { createRequire } from 'module'; const require = createRequire(import.meta.url); @@ -112,6 +113,17 @@ function buildWin32Setup(arch: string, target: string): task.CallbackTask { Quality: quality }; + const isInsiderOrExploration = quality === 'insider' || quality === 'exploration'; + const embedded = isInsiderOrExploration + ? (product as typeof product & { embedded?: EmbeddedProductInfo }).embedded + : undefined; + + if (embedded) { + definitions['ProxyExeBasename'] = embedded.nameShort; + definitions['ProxyAppUserId'] = embedded.win32AppUserModelId; + definitions['ProxyNameLong'] = embedded.nameLong; + } + if (quality === 'stable' || quality === 'insider') { definitions['AppxPackage'] = `${quality === 'stable' ? 'code' : 'code_insider'}_${arch}.appx`; definitions['AppxPackageDll'] = `${quality === 'stable' ? 'code' : 'code_insider'}_explorer_command_${arch}.dll`; diff --git a/build/lib/embeddedType.ts b/build/lib/embeddedType.ts new file mode 100644 index 0000000000000..4b3075f4a7165 --- /dev/null +++ b/build/lib/embeddedType.ts @@ -0,0 +1,18 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +export type EmbeddedProductInfo = { + nameShort: string; + nameLong: string; + applicationName: string; + dataFolderName: string; + darwinBundleIdentifier: string; + urlProtocol: string; + win32AppUserModelId: string; + win32MutexName: string; + win32RegValueName: string; + win32NameVersion: string; + win32VersionedUpdate: boolean; +}; diff --git a/build/win32/code.iss b/build/win32/code.iss index f7091b28e5597..935f17dbe4150 100644 --- a/build/win32/code.iss +++ b/build/win32/code.iss @@ -95,9 +95,12 @@ Name: "runcode"; Description: "{cm:RunAfter,{#NameShort}}"; GroupDescription: "{ Name: "{app}"; AfterInstall: DisableAppDirInheritance [Files] -Source: "*"; Excludes: "\CodeSignSummary*.md,\tools,\tools\*,\policies,\policies\*,\appx,\appx\*,\resources\app\product.json,\{#ExeBasename}.exe,\{#ExeBasename}.VisualElementsManifest.xml,\bin,\bin\*"; DestDir: "{code:GetDestDir}"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "*"; Excludes: "\CodeSignSummary*.md,\tools,\tools\*,\policies,\policies\*,\appx,\appx\*,\resources\app\product.json,\{#ExeBasename}.exe,{#ifdef ProxyExeBasename}\{#ProxyExeBasename}.exe,{#endif}\{#ExeBasename}.VisualElementsManifest.xml,\bin,\bin\*"; DestDir: "{code:GetDestDir}"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "{#ExeBasename}.exe"; DestDir: "{code:GetDestDir}"; DestName: "{code:GetExeBasename}"; Flags: ignoreversion Source: "{#ExeBasename}.VisualElementsManifest.xml"; DestDir: "{code:GetDestDir}"; DestName: "{code:GetVisualElementsManifest}"; Flags: ignoreversion +#ifdef ProxyExeBasename +Source: "{#ProxyExeBasename}.exe"; DestDir: "{code:GetDestDir}"; DestName: "{code:GetProxyExeBasename}"; Flags: ignoreversion +#endif Source: "tools\*"; DestDir: "{app}\{#VersionedResourcesFolder}\tools"; Flags: ignoreversion Source: "policies\*"; DestDir: "{code:GetDestDir}\{#VersionedResourcesFolder}\policies"; Flags: ignoreversion skipifsourcedoesntexist Source: "bin\{#TunnelApplicationName}.exe"; DestDir: "{code:GetDestDir}\bin"; DestName: "{code:GetBinDirTunnelApplicationFilename}"; Flags: ignoreversion skipifsourcedoesntexist @@ -113,6 +116,11 @@ Source: "appx\{#AppxPackageDll}"; DestDir: "{code:GetDestDir}\{#VersionedResourc Name: "{group}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; AppUserModelID: "{#AppUserId}"; Check: ShouldUpdateShortcut(ExpandConstant('{group}\{#NameLong}.lnk')) Name: "{autodesktop}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: desktopicon; AppUserModelID: "{#AppUserId}"; Check: ShouldUpdateShortcut(ExpandConstant('{autodesktop}\{#NameLong}.lnk')) Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: quicklaunchicon; AppUserModelID: "{#AppUserId}"; Check: ShouldUpdateShortcut(ExpandConstant('{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#NameLong}.lnk')) +#ifdef ProxyExeBasename +Name: "{group}\{#ProxyExeBasename}"; Filename: "{app}\{#ProxyExeBasename}.exe"; AppUserModelID: "{#ProxyAppUserId}"; Check: ShouldUpdateShortcut(ExpandConstant('{group}\{#ProxyExeBasename}.lnk')) +Name: "{autodesktop}\{#ProxyNameLong}"; Filename: "{app}\{#ProxyExeBasename}.exe"; Tasks: desktopicon; AppUserModelID: "{#ProxyAppUserId}"; Check: ShouldUpdateShortcut(ExpandConstant('{autodesktop}\{#ProxyNameLong}.lnk')) +Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#ProxyNameLong}"; Filename: "{app}\{#ProxyExeBasename}.exe"; Tasks: quicklaunchicon; AppUserModelID: "{#ProxyAppUserId}"; Check: ShouldUpdateShortcut(ExpandConstant('{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#ProxyNameLong}.lnk')) +#endif [Run] Filename: "{app}\{#ExeBasename}.exe"; Description: "{cm:LaunchProgram,{#NameLong}}"; Tasks: runcode; Flags: nowait postinstall; Check: ShouldRunAfterUpdate @@ -1562,6 +1570,16 @@ begin Result := ExpandConstant('{#ExeBasename}.exe'); end; +#ifdef ProxyExeBasename +function GetProxyExeBasename(Value: string): string; +begin + if IsBackgroundUpdate() and IsVersionedUpdate() then + Result := ExpandConstant('new_{#ProxyExeBasename}.exe') + else + Result := ExpandConstant('{#ProxyExeBasename}.exe'); +end; +#endif + function GetBinDirTunnelApplicationFilename(Value: string): string; begin if IsBackgroundUpdate() and IsVersionedUpdate() then diff --git a/build/win32/inno_updater.exe b/build/win32/inno_updater.exe index c3c4a0cd2bcb8e7f258343df9cbe8b1ff9370e59..424e997bde5b97db689d42f9d958c7d1ee933958 100644 GIT binary patch literal 607232 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 z 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

5xWVI+DT{fb(f2ecqu3qwfXXG78d%Oh;Ul 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 { if ((process as INodeProcess).isEmbeddedApp) { this.setState(State.Disabled(DisablementReason.EmbeddedApp)); - this.logService.info('update#ctor - updates are disabled for embedded app'); + this.logService.info('update#ctor - updates are disabled from embedded app'); return; } diff --git a/src/vs/platform/update/electron-main/updateService.win32.ts b/src/vs/platform/update/electron-main/updateService.win32.ts index 257edf1af198a..25535f2125222 100644 --- a/src/vs/platform/update/electron-main/updateService.win32.ts +++ b/src/vs/platform/update/electron-main/updateService.win32.ts @@ -33,6 +33,7 @@ import { asJson, IRequestService } from '../../request/common/request.js'; import { ITelemetryService } from '../../telemetry/common/telemetry.js'; import { AvailableForDownload, DisablementReason, IUpdate, State, StateType, UpdateType } from '../common/update.js'; import { AbstractUpdateService, createUpdateURL, getUpdateRequestHeaders, IUpdateURLOptions, UpdateErrorClassification } from './abstractUpdateService.js'; +import { INodeProcess } from '../../../base/common/platform.js'; interface IAvailableUpdate { packagePath: string; @@ -98,6 +99,12 @@ export class Win32UpdateService extends AbstractUpdateService implements IRelaun } protected override async initialize(): Promise { + if ((process as INodeProcess).isEmbeddedApp) { + this.setState(State.Disabled(DisablementReason.EmbeddedApp)); + this.logService.info('update#ctor - updates are disabled from embedded app'); + return; + } + if (this.productService.win32VersionedUpdate) { const cachePath = await this.cachePath; app.setPath('appUpdate', cachePath); diff --git a/src/vs/platform/windows/electron-main/windows.ts b/src/vs/platform/windows/electron-main/windows.ts index 50b1321e83e30..75bcee0c678ad 100644 --- a/src/vs/platform/windows/electron-main/windows.ts +++ b/src/vs/platform/windows/electron-main/windows.ts @@ -7,7 +7,7 @@ import electron, { Display, Rectangle } from 'electron'; import { Color } from '../../../base/common/color.js'; import { Event } from '../../../base/common/event.js'; import { join } from '../../../base/common/path.js'; -import { IProcessEnvironment, isLinux, isMacintosh, isWindows } from '../../../base/common/platform.js'; +import { INodeProcess, IProcessEnvironment, isLinux, isMacintosh, isWindows } from '../../../base/common/platform.js'; import { URI } from '../../../base/common/uri.js'; import { IAuxiliaryWindow } from '../../auxiliaryWindow/electron-main/auxiliaryWindow.js'; import { IConfigurationService } from '../../configuration/common/configuration.js'; @@ -177,8 +177,15 @@ export function defaultBrowserWindowOptions(accessor: ServicesAccessor, windowSt if (isLinux) { options.icon = join(environmentMainService.appRoot, 'resources/linux/code.png'); // always on Linux - } else if (isWindows && !environmentMainService.isBuilt) { - options.icon = join(environmentMainService.appRoot, 'resources/win32/code_150x150.png'); // only when running out of sources on Windows + } else if (isWindows) { + if (!environmentMainService.isBuilt) { + options.icon = join(environmentMainService.appRoot, 'resources/win32/code_150x150.png'); // only when running out of sources on Windows + } else if ((process as INodeProcess).isEmbeddedApp) { + // For sub app the proxy executable acts as a launcher to the main executable whose + // icon will be used when creating windows if the following override is not set. + // This avoids sharing icon with the main application. + options.icon = join(environmentMainService.appRoot, 'resources/win32/sessions.ico'); + } } if (isMacintosh) { From 8096f24f7c86773daa0cac69cc2728bfde4f7727 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 15:12:39 -0800 Subject: [PATCH 26/48] Enhance CreateRemoteAgentJobAction to resolve GitHub NWO from local repository path and improve session data extraction --- .../browser/actions/chatContinueInAction.ts | 64 +++++++++++++++---- 1 file changed, 53 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index 04bbe9d8af99b..ae36863525a16 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -27,6 +27,7 @@ import { IOpenerService } from '../../../../../platform/opener/common/opener.js' import { IWorkbenchContribution } from '../../../../common/contributions.js'; import { ResourceContextKey } from '../../../../common/contextkeys.js'; import { IEditorService } from '../../../../services/editor/common/editorService.js'; +import { IFileService } from '../../../../../platform/files/common/files.js'; import { IChatAgentService } from '../../common/participants/chatAgents.js'; import { ChatContextKeys } from '../../common/actions/chatContextKeys.js'; import { chatEditingWidgetFileStateContextKey, ModifiedFileEntryState } from '../../common/editing/chatEditingService.js'; @@ -55,6 +56,27 @@ function extractNwoFromRemoteUrl(remoteUrl: string): string | undefined { return undefined; } +/** + * Resolves GitHub NWO from a local git repository path by reading `.git/config`. + */ +async function resolveGitRemoteNwo(repoPath: string, fileService: IFileService): Promise { + try { + // Try reading .git/config from the repo path + const gitConfigUri = URI.file(`${repoPath}/.git/config`); + const content = await fileService.readFile(gitConfigUri); + const configText = content.value.toString(); + + // Parse remote "origin" URL from git config + const remoteMatch = configText.match(/\[remote\s+"origin"\][^[]*url\s*=\s*(.+)/m); + if (remoteMatch?.[1]) { + return extractNwoFromRemoteUrl(remoteMatch[1].trim()); + } + } catch { + // File not found or not readable + } + return undefined; +} + export const enum ActionLocation { ChatWidget = 'chatWidget', Editor = 'editor' @@ -229,7 +251,8 @@ export class CreateRemoteAgentJobAction { * Extracts the GitHub "owner/repo" NWO from the source session by checking * multiple data sources: chat model repoData, session metadata, and session options. */ - private extractRepoNwoFromSession(accessor: ServicesAccessor, sessionResource: URI, chatModel: ChatModel): string | undefined { + private async extractRepoNwoFromSession(accessor: ServicesAccessor, sessionResource: URI, chatModel: ChatModel): Promise { + const fileService = accessor.get(IFileService); // 1. Try chat model's repoData (populated when local git repo exists) const repoData = chatModel.repoData; console.log(`[Delegation] extractRepoNwo: repoData=${JSON.stringify(repoData ? { remoteUrl: repoData.remoteUrl, workspaceType: repoData.workspaceType } : null)}`); @@ -268,6 +291,15 @@ export class CreateRemoteAgentJobAction { return nwo; } } + + // Background sessions set workingDirectoryPath — resolve git remote from it + const workingDir = (metadata.workingDirectoryPath ?? metadata.repositoryPath ?? metadata.worktreePath) as string | undefined; + if (workingDir) { + const nwo = await resolveGitRemoteNwo(workingDir, fileService); + if (nwo) { + return nwo; + } + } } // 3. Try session options (repository picker selection) @@ -275,26 +307,36 @@ export class CreateRemoteAgentJobAction { // Cloud sessions use 'repositories', sessions window uses 'repository' for (const optionId of ['repositories', 'repository']) { const repoOption = chatSessionsService.getSessionOption(sessionResource, optionId); - console.log(`[Delegation] extractRepoNwo: repoOption[${optionId}]=${JSON.stringify(repoOption)}`); if (repoOption) { const optionValue = typeof repoOption === 'string' ? repoOption : (repoOption as { id: string }).id; - if (optionValue?.includes('/')) { - return optionValue; - } - // Option may be a URI string (github-remote-file://github/owner/repo/...) if (optionValue) { + // Check if it's already a "owner/repo" NWO (exactly two segments) + const segments = optionValue.split('/').filter(Boolean); + if (segments.length === 2) { + return optionValue; + } + // Try extracting NWO from a URL const nwo = extractNwoFromRemoteUrl(optionValue); if (nwo) { return nwo; } - // Try parsing as URI + // Try parsing as URI (e.g. github-remote-file://github/owner/repo/...) try { const uri = URI.parse(optionValue); - const parts = uri.path.split('/').filter(Boolean); - if (parts.length >= 2) { - return `${parts[0]}/${parts[1]}`; + if (uri.authority === 'github') { + const parts = uri.path.split('/').filter(Boolean); + if (parts.length >= 2) { + return `${parts[0]}/${parts[1]}`; + } } } catch { /* ignore */ } + // Local filesystem path — resolve git remote + if (optionValue.startsWith('/') || optionValue.match(/^[A-Za-z]:\\/)) { + const nwoFromGit = await resolveGitRemoteNwo(optionValue, fileService); + if (nwoFromGit) { + return nwoFromGit; + } + } } } } @@ -393,7 +435,7 @@ export class CreateRemoteAgentJobAction { // Extract repository info from the source session to pass to the target session const initialSessionOptions: { optionId: string; value: string }[] = []; - const repoNwo = this.extractRepoNwoFromSession(accessor, sessionResource, chatModel); + const repoNwo = await this.extractRepoNwoFromSession(accessor, sessionResource, chatModel); if (repoNwo) { initialSessionOptions.push({ optionId: 'repositories', value: repoNwo }); } From e26b6460ece01773e1b0cd059d9bde68e7a5ccbb Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 15:17:24 -0800 Subject: [PATCH 27/48] Refactor CreateRemoteAgentJobAction to enhance extractRepoNwoFromSession method by directly injecting dependencies for agentSessionsService and chatSessionsService --- .../chat/browser/actions/chatContinueInAction.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index ae36863525a16..78f90d6fcd9c8 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -251,8 +251,7 @@ export class CreateRemoteAgentJobAction { * Extracts the GitHub "owner/repo" NWO from the source session by checking * multiple data sources: chat model repoData, session metadata, and session options. */ - private async extractRepoNwoFromSession(accessor: ServicesAccessor, sessionResource: URI, chatModel: ChatModel): Promise { - const fileService = accessor.get(IFileService); + private async extractRepoNwoFromSession(agentSessionsService: IAgentSessionsService, chatSessionsService: IChatSessionsService, fileService: IFileService, sessionResource: URI, chatModel: ChatModel): Promise { // 1. Try chat model's repoData (populated when local git repo exists) const repoData = chatModel.repoData; console.log(`[Delegation] extractRepoNwo: repoData=${JSON.stringify(repoData ? { remoteUrl: repoData.remoteUrl, workspaceType: repoData.workspaceType } : null)}`); @@ -264,7 +263,6 @@ export class CreateRemoteAgentJobAction { } // 2. Try agent session metadata (populated by session providers) - const agentSessionsService = accessor.get(IAgentSessionsService); const agentSession = agentSessionsService.getSession(sessionResource); console.log(`[Delegation] extractRepoNwo: agentSession=${!!agentSession}, metadata=${JSON.stringify(agentSession?.metadata)}`); if (agentSession?.metadata) { @@ -303,7 +301,6 @@ export class CreateRemoteAgentJobAction { } // 3. Try session options (repository picker selection) - const chatSessionsService = accessor.get(IChatSessionsService); // Cloud sessions use 'repositories', sessions window uses 'repository' for (const optionId of ['repositories', 'repository']) { const repoOption = chatSessionsService.getSessionOption(sessionResource, optionId); @@ -351,6 +348,9 @@ export class CreateRemoteAgentJobAction { const chatAgentService = accessor.get(IChatAgentService); const chatService = accessor.get(IChatService); const editorService = accessor.get(IEditorService); + const agentSessionsService = accessor.get(IAgentSessionsService); + const chatSessionsService = accessor.get(IChatSessionsService); + const fileService = accessor.get(IFileService); const remoteJobCreatingKey = ChatContextKeys.remoteJobCreating.bindTo(contextKeyService); @@ -435,7 +435,7 @@ export class CreateRemoteAgentJobAction { // Extract repository info from the source session to pass to the target session const initialSessionOptions: { optionId: string; value: string }[] = []; - const repoNwo = await this.extractRepoNwoFromSession(accessor, sessionResource, chatModel); + const repoNwo = await this.extractRepoNwoFromSession(agentSessionsService, chatSessionsService, fileService, sessionResource, chatModel); if (repoNwo) { initialSessionOptions.push({ optionId: 'repositories', value: repoNwo }); } From ed4c87e54e2590ec3c13fcbf4af0897ad17248a7 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 15:20:26 -0800 Subject: [PATCH 28/48] Enhance resolveGitRemoteNwo function to support git worktrees by correctly resolving config file paths --- .../browser/actions/chatContinueInAction.ts | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index 78f90d6fcd9c8..8a9fae9b64a69 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -58,12 +58,38 @@ function extractNwoFromRemoteUrl(remoteUrl: string): string | undefined { /** * Resolves GitHub NWO from a local git repository path by reading `.git/config`. + * Handles both regular repos and git worktrees. */ async function resolveGitRemoteNwo(repoPath: string, fileService: IFileService): Promise { try { - // Try reading .git/config from the repo path - const gitConfigUri = URI.file(`${repoPath}/.git/config`); - const content = await fileService.readFile(gitConfigUri); + const gitPath = `${repoPath}/.git`; + const gitUri = URI.file(gitPath); + + let configUri: URI; + try { + const stat = await fileService.stat(gitUri); + if (stat.isDirectory) { + // Regular git repo + configUri = URI.file(`${gitPath}/config`); + } else { + // Git worktree — .git is a file with "gitdir: " + const gitFile = await fileService.readFile(gitUri); + const gitDir = gitFile.value.toString().trim().replace(/^gitdir:\s*/, ''); + // Resolve relative paths + const resolvedGitDir = gitDir.startsWith('/') + ? gitDir + : `${repoPath}/${gitDir}`; + // The config is in the common dir (parent of worktree git dirs) + // e.g., gitdir points to /repo/.git/worktrees/name, config is at /repo/.git/config + const commonDir = resolvedGitDir.replace(/\/worktrees\/[^/]+$/, ''); + configUri = URI.file(`${commonDir}/config`); + } + } catch { + // .git doesn't exist + return undefined; + } + + const content = await fileService.readFile(configUri); const configText = content.value.toString(); // Parse remote "origin" URL from git config From b5fb405f5dcfa38481e5130904370300ee83a19a Mon Sep 17 00:00:00 2001 From: Josh Spicer <23246594+joshspicer@users.noreply.github.com> Date: Wed, 25 Feb 2026 15:29:02 -0800 Subject: [PATCH 29/48] ai customizations: always use embedded editor with auto-save (#297810) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ai customizations: always use embedded editor with auto-save - Remove preferEmbeddedCustomizationEditor branching — embedded editor is now the default for both core VS Code and sessions - Add explicit save via textFileService.save() with 500ms debounce, fixing the issue where edits opened dirty copies in separate tabs - Remove IEditorService dependency and close() method from the management editor - Update AI_CUSTOMIZATIONS.md Refs #297343 * Update src/vs/sessions/copilot-customizations-spec.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/vs/sessions/AI_CUSTOMIZATIONS.md | 10 +- .../sessions/copilot-customizations-spec.md | 356 ++++++++++++++++++ .../aiCustomizationManagementEditor.ts | 94 ++--- 3 files changed, 406 insertions(+), 54 deletions(-) create mode 100644 src/vs/sessions/copilot-customizations-spec.md diff --git a/src/vs/sessions/AI_CUSTOMIZATIONS.md b/src/vs/sessions/AI_CUSTOMIZATIONS.md index 604626bc35ced..eb342a816ad34 100644 --- a/src/vs/sessions/AI_CUSTOMIZATIONS.md +++ b/src/vs/sessions/AI_CUSTOMIZATIONS.md @@ -56,7 +56,7 @@ The `IAICustomizationWorkspaceService` interface controls per-window behavior: |----------|-------------|----------| | `managementSections` | All sections except Models | Same | | `visibleStorageSources` | workspace, user, extension, plugin | workspace, user only | -| `preferManualCreation` | `false` (opens file externally) | `true` (embedded editor) | +| `preferManualCreation` | `false` (AI generation primary) | `true` (file creation primary) | | `activeProjectRoot` | First workspace folder | Active session worktree | ## Key Services @@ -71,3 +71,11 @@ Browser compatibility is required — no Node.js APIs. ## Feature Gating All commands and UI respect `ChatContextKeys.enabled` and the `chat.customizationsMenu.enabled` setting. + +## Settings + +Settings use the `chat.customizationsMenu.` namespace: + +| Setting | Default | Description | +|---------|---------|-------------| +| `chat.customizationsMenu.enabled` | `true` | Show the Chat Customizations editor in the Command Palette | diff --git a/src/vs/sessions/copilot-customizations-spec.md b/src/vs/sessions/copilot-customizations-spec.md new file mode 100644 index 0000000000000..2b39296618014 --- /dev/null +++ b/src/vs/sessions/copilot-customizations-spec.md @@ -0,0 +1,356 @@ +# Copilot Agent Runtime — Customization Surface Spec + +> **Purpose:** Definitive reference for every customization mechanism that affects agent behavior when a user sends a message. Intended for building a UI that collects all customizations into a single view. +> +> **Source:** `github/copilot-agent-runtime` codebase as of 2026-02-25. + +> Some information has been removed by the human compiling this spec, scoping to what is deemed most relevant for the sessions window implementation. For the full details, see the source code (for maintainers likely checked out side-by-side). + +--- + +## Overview + +When a user sends a message, the agent assembles its behavior from **10 customization categories**, each discovered from well-known file paths, environment variables, or runtime APIs. This document enumerates every source, file pattern, and merge rule. + +--- + +## 1. Instructions + +System-prompt additions that shape how the agent responds. Multiple sources are discovered and merged in priority order. + +### 1.1 Repo-Level Instruction Files + +Each pattern is defined in `src/helpers/repo-helpers.ts` → `instructionPatterns`: + +| Convention | File Pattern | Notes | +|------------|-------------|-------| +| Copilot | `{repo}/.github/copilot-instructions.md` | Primary repo instructions | +| Codex / OpenAI | `{repo}/AGENTS.md` | OpenAI model convention | +| Claude / Anthropic | `{repo}/CLAUDE.md` | Claude model convention | +| Claude (alt) | `{repo}/.claude/CLAUDE.md` | Secondary Claude location | +| Gemini / Google | `{repo}/GEMINI.md` | Gemini model convention | + +### 1.2 VSCode-Style Instruction Files + +Glob-matched instruction files with metadata (applyTo patterns, description). + +| Scope | File Pattern | Code Reference | +|-------|-------------|----------------| +| Repo | `{repo}/.github/instructions/**/*.instructions.md` | `readVSCodeInstructions()` | +| User | `~/.copilot/instructions/**/*.instructions.md` | `readUserCopilotInstructions()` | + +### 1.3 User-Level Instructions + +| Scope | File Pattern | Code Reference | +|-------|-------------|----------------| +| User global | `~/.copilot/copilot-instructions.md` | `hasHomeCopilotInstructions()` | + +### 1.4 CWD-Specific Instructions + +When the working directory differs from the repo root, the same instruction patterns are re-checked relative to `{cwd}`: + +- `{cwd}/.github/copilot-instructions.md` +- `{cwd}/CLAUDE.md`, `{cwd}/.claude/CLAUDE.md` +- `{cwd}/AGENTS.md` +- `{cwd}/GEMINI.md` + +### 1.5 Nested / Child Instructions + +Breadth-first traversal from `{cwd}` up to **2 levels deep** (`CHILD_INSTRUCTIONS_MAX_DEPTH = 2`), scanning all instruction patterns in subdirectories. + +**Ignored directories:** `node_modules`, `.git`, `vendor`, `dist`, `build`, `.next`, `.nuxt`, `out`, `coverage` (plus `.gitignore` patterns when available). + +Feature-gated via `enableChildInstructions` option. + +### 1.6 Additional Sources + +| Source | Mechanism | +|--------|-----------| +| Env var | `COPILOT_CUSTOM_INSTRUCTIONS_DIRS` — comma-separated list of additional directories to scan | +| Organization | `RuntimeContext.organizationCustomInstructions` — injected at runtime via API (not file-based) | + +### 1.7 Merge Order + +Instructions are concatenated in this order (all additive): + +1. User global (`~/.copilot/copilot-instructions.md`) +2. Repo-level instruction files (all patterns above) +3. VSCode-style instruction files (repo, then user) +4. CWD-specific overrides (when cwd ≠ repo root) +5. Child/nested instructions +6. Organization instructions (API-injected) + +Duplicate content is deduplicated by file content hash. + +--- + +## 2. Skills + +Reusable prompt-based capabilities exposed as `/skill-name` slash commands. + +### 2.1 Discovery Paths + +| Source | File Pattern | Code Reference | +|--------|-------------|----------------| +| Repo (Copilot) | `{repo}/.github/skills/*/SKILL.md` | `loader.ts` collectProjectDirs | +| Repo (Agents) | `{repo}/.agents/skills/*/SKILL.md` | `loader.ts` collectProjectDirs | +| Repo (Claude) | `{repo}/.claude/skills/*/SKILL.md` | `loader.ts` collectProjectDirs | +| User (Copilot) | `~/.copilot/skills/*/SKILL.md` | `loader.ts` personalDirs | +| User (Claude) | `~/.claude/skills/*/SKILL.md` | `loader.ts` personalDirs | +| Env var | Dirs listed in `COPILOT_SKILLS_DIRS` (comma-separated) | `loader.ts` | +| Plugins | `{pluginRoot}/skills/*/SKILL.md` | `skills.ts` | + +### 2.2 File Structure + +Each skill is a directory containing a `SKILL.md` file with YAML frontmatter: + +``` +.github/skills/ + my-skill/ + SKILL.md ← markdown with frontmatter +``` + +Or a flat `SKILL.md` directly in the skills directory (single-skill mode). + +### 2.3 Frontmatter Schema + +```yaml +--- +name: skill-name # Optional; derived from folder name if absent +description: "What this skill does" # Optional; derived from first 3 lines of body +allowed-tools: grep,view # Comma-separated tool whitelist (optional) +user-invocable: true # Whether user can invoke via slash command (default: true) +disable-model-invocation: false # Whether model can invoke autonomously (default: false) +--- + +Skill prompt content here... +``` + +--- + +## 3. Commands + +A variant of skills, loaded from `.claude/commands/` only. + +| Source | File Pattern | Code Reference | +|--------|-------------|----------------| +| Project | `{repo}/.claude/commands/*.md` | `loader.ts` getCommandDirectories | +| User | `~/.claude/commands/*.md` | `loader.ts` getCommandDirectories | + +**Note:** Commands use only the `.claude/` convention — not `.github/` or `.agents/`. + +Any `.md` file in the directory is treated as a command. Same frontmatter schema as skills. Treated internally as skills with `isCommand: true`. Skills take priority over commands on name conflicts. + +--- + +## 4. Custom Agents + +Sub-agent definitions available via the task tool or direct user selection. + +### 4.1 Discovery Paths + +| Source | File Pattern | Code Reference | +|--------|-------------|----------------| +| Repo (Copilot) | `{repo}/.github/agents/*.md`, `*.agent.md` | `useCustomAgents.ts` | +| Repo (Claude) | `{repo}/.claude/agents/*.md`, `*.agent.md` | `useCustomAgents.ts` | +| User (Copilot) | `~/.github/agents/*.md`, `*.agent.md` | `useCustomAgents.ts` | +| User (Claude) | `~/.claude/agents/*.md`, `*.agent.md` | `useCustomAgents.ts` | +| Plugins | `{pluginRoot}/agents/*.md`, `*.agent.md` | `agent-loader.ts` | +| Builtin | `src/agents/definitions/*.agent.yaml` | YAML agent loader | + +### 4.2 Priority Rules + +- `*.agent.md` takes precedence over `*.md` when both exist for the same base name. +- `.github/agents/` sources have higher priority than `.claude/agents/`. + +### 4.3 Frontmatter Schema + +```yaml +--- +name: agent-name +displayName: "Human-Readable Name" +description: "What this agent does" +tools: ["*"] # or ["tool1", "tool2"] — required +model: claude-sonnet-4-20250514 # Optional model override +disableModelInvocation: false # Cannot be auto-invoked as a tool +userInvocable: true # User can select it +mcp-servers: # Inline MCP server config (optional) + server-name: + command: "npx" + args: ["@some/mcp-server"] +--- + +Agent system prompt content here... +Supports {{cwd}} placeholder. +``` + +--- + +## 5. MCP Servers + +Model Context Protocol servers that expose additional tools and resources. + +### 5.1 Config Sources (merge order, last wins) + +| Priority | Source | File Pattern | Code Reference | +|----------|--------|-------------|----------------| +| 1 (lowest) | User | `~/.copilot/mcp-config.json` | `mcp-config.ts` | +| 2 | Workspace | `{cwd}/.mcp.json` | `mcpConfigMerger.ts` | +| 3 | VSCode | `{cwd}/.vscode/mcp.json` | `vsCodeWorkspaceMcpConfig.ts` | +| 4 | Plugins | `{pluginRoot}/.mcp.json`, `{pluginRoot}/.github/mcp.json` | `mcp-loader.ts` | +| 5 | Windows ODR | Registry `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Mcp` | `odrMcpRegistry.ts` | +| 6 (highest) | CLI flag | `--additional-mcp-config ` | `mcpConfigMerger.ts` | + +### 5.2 Config Schema + +```json +{ + "mcpServers": { + "server-name": { + "type": "local | http | sse", + "command": "path/to/server", + "args": ["--flag"], + "cwd": "/optional/working/dir", + "env": { + "KEY": "$ENV_VAR", + "URL": "https://${HOST}:${PORT}", + "WITH_DEFAULT": "${VAR:-fallback}" + }, + "url": "https://remote-server/endpoint", + "headers": { "Authorization": "Bearer ${TOKEN}" }, + "tools": ["*"], + "timeout": 30000, + "filterMapping": "hidden_characters | markdown | none", + "displayName": "My Server", + "oauthClientId": "client-id", + "oauthPublicClient": false + } + } +} +``` + +**Environment variable expansion:** `$VAR`, `${VAR}`, `${VAR:-default}` are all supported in `env`, `args`, `url`, and `headers` fields. + +--- + +## 6. Hooks + +Scripts that execute at specific agent lifecycle events, with the ability to approve/deny/modify behavior. + +### 6.1 Config Sources + +| Source | File Pattern | Code Reference | +|--------|-------------|----------------| +| Config dirs | `{configDir}/**/*.json` | `hookConfigLoader.ts` | +| Plugins | `{pluginRoot}/hooks.json` | `hooks.ts` | +| Plugins (alt) | `{pluginRoot}/hooks/hooks.json` | `hooks.ts` | +| Plugin manifest | Inline in `plugin.json` → `hooks` field (object) | `hooks.ts` | + +### 6.2 Hook Events + +| Event | Trigger | Can Modify? | +|-------|---------|-------------| +| `sessionStart` | Session begins | No (informational) | +| `sessionEnd` | Session ends | No (informational) | +| `userPromptSubmitted` | User sends a message | Yes (can modify prompt) | +| `preToolUse` | Before tool execution | Yes (allow / deny / modify args) | +| `postToolUse` | After tool execution | Yes (can modify result) | +| `errorOccurred` | Error happens | Yes (retry / skip / abort) | +| `agentStop` | Main agent finishes | Yes (can force continuation) | +| `subagentStop` | Sub-agent completes | Yes (can force continuation) | + +### 6.3 Config Schema + +```json +{ + "version": 1, + "hooks": { + "preToolUse": [ + { + "type": "command", + "command": "bash", + "args": ["-c", "echo checking"], + "cwd": "/optional/cwd", + "env": { "KEY": "value" }, + "timeout": 30000 + } + ] + } +} +``` + +--- + +## 7. Plugins + +Bundles that install combinations of skills, agents, hooks, and MCP servers. + +### 7.1 Plugin Manifest Locations + +Within a plugin repository, the manifest is searched at: + +| File Pattern | Code Reference | +|-------------|----------------| +| `plugin.json` | `marketplace-loader.ts` PLUGIN_JSON_PATHS | +| `.github/plugin/plugin.json` | `marketplace-loader.ts` PLUGIN_JSON_PATHS | +| `.claude-plugin/plugin.json` | `marketplace-loader.ts` PLUGIN_JSON_PATHS | + + +Each field (`skills`, `agents`, `hooks`) can be a string path, array of paths, or (for hooks) an inline object. + +--- + +## Appendix A: XDG Base Directory Compliance + +All `~/.copilot/` paths respect XDG overrides: + +| Type | Default | XDG Override | +|------|---------|-------------| +| Config files | `~/.copilot/` | `$XDG_CONFIG_HOME/.copilot/` | +| State/cache | `~/.copilot/` | `$XDG_STATE_HOME/.copilot/` | + +The base directory name is always `.copilot` (`APP_DIRECTORY` in `path-helpers.ts`). + +--- + +## Appendix B: Complete Discovery Summary + +``` +Message received + │ + ├─ Feature flags resolved + │ ├─ Tier defaults + │ ├─ config.json → feature_flags.enabled + │ └─ Env vars (COPILOT_CLI_ENABLED_FEATURE_FLAGS, individual) + │ + ├─ System prompt assembled + │ ├─ Base agent prompt + │ ├─ User instructions ~/.copilot/copilot-instructions.md + │ ├─ Repo instructions .github/copilot-instructions.md, AGENTS.md, CLAUDE.md, GEMINI.md + │ ├─ VSCode instructions .github/instructions/**/*.instructions.md + │ ├─ CWD instructions (when cwd ≠ repo root) + │ ├─ Child instructions (depth=2 traversal) + │ └─ Org instructions (API-injected) + │ + ├─ Tools assembled + │ ├─ Built-in tools + │ ├─ MCP servers ~/.copilot/mcp-config.json + .mcp.json + .vscode/mcp.json + plugins + │ └─ Content exclusion (org API restrictions applied) + │ + ├─ Skills listed .github/skills/ + .agents/skills/ + .claude/skills/ + personal + plugins + ├─ Commands listed .claude/commands/ + personal + ├─ Custom agents listed .github/agents/ + .claude/agents/ + personal + plugins + │ + ├─ userPromptSubmitted hooks fire + │ + ├─ Model selected config.json → model, agent override, or default + │ + ├─ For each tool call: + │ ├─ preToolUse hooks (allow / deny / modify) + │ ├─ Permission check + │ ├─ Firewall policy + │ ├─ Tool executes + │ └─ postToolUse hooks (modify result) + │ + └─ Session telemetry emitted +``` diff --git a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts index 33d40453b83e0..ff064db678084 100644 --- a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts +++ b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts @@ -7,6 +7,7 @@ import './media/aiCustomizationManagement.css'; import * as DOM from '../../../../../base/browser/dom.js'; import { CancellationToken } from '../../../../../base/common/cancellation.js'; import { DisposableStore, IReference, toDisposable } from '../../../../../base/common/lifecycle.js'; +import { Delayer } from '../../../../../base/common/async.js'; import { Event } from '../../../../../base/common/event.js'; import { autorun } from '../../../../../base/common/observable.js'; import { Orientation, Sizing, SplitView } from '../../../../../base/browser/ui/splitview/splitview.js'; @@ -53,13 +54,13 @@ import { showConfigureHooksQuickPick } from '../promptSyntax/hookActions.js'; import { resolveWorkspaceTargetDirectory, resolveUserTargetDirectory } from './customizationCreatorService.js'; import { ICommandService } from '../../../../../platform/commands/common/commands.js'; import { IAICustomizationWorkspaceService } from '../../common/aiCustomizationWorkspaceService.js'; -import { IEditorService } from '../../../../services/editor/common/editorService.js'; import { CodeEditorWidget } from '../../../../../editor/browser/widget/codeEditor/codeEditorWidget.js'; import { IResolvedTextEditorModel, ITextModelService } from '../../../../../editor/common/services/resolverService.js'; import { IConfigurationService } from '../../../../../platform/configuration/common/configuration.js'; import { ILayoutService } from '../../../../../platform/layout/browser/layoutService.js'; import { getSimpleEditorOptions } from '../../../codeEditor/browser/simpleEditorOptions.js'; import { IWorkingCopyService } from '../../../../services/workingCopy/common/workingCopyService.js'; +import { ITextFileService } from '../../../../services/textfile/common/textfiles.js'; import { McpServerEditorInput } from '../../../mcp/browser/mcpServerEditorInput.js'; import { McpServerEditor } from '../../../mcp/browser/mcpServerEditor.js'; import { IWorkbenchMcpServer } from '../../../mcp/common/mcpTypes.js'; @@ -140,7 +141,7 @@ export class AICustomizationManagementEditor extends EditorPane { private modelsContentContainer: HTMLElement | undefined; private modelsFooterElement: HTMLElement | undefined; - // Embedded editor state (sessions only — preferManualCreation) + // Embedded editor state private editorContentContainer: HTMLElement | undefined; private embeddedEditor: CodeEditorWidget | undefined; private editorItemNameElement!: HTMLElement; @@ -176,31 +177,29 @@ export class AICustomizationManagementEditor extends EditorPane { @IOpenerService private readonly openerService: IOpenerService, @ICommandService private readonly commandService: ICommandService, @IAICustomizationWorkspaceService private readonly workspaceService: IAICustomizationWorkspaceService, - @IEditorService private readonly editorService: IEditorService, @IPromptsService private readonly promptsService: IPromptsService, @ITextModelService private readonly textModelService: ITextModelService, @IConfigurationService private readonly configurationService: IConfigurationService, @ILayoutService private readonly layoutService: ILayoutService, @IWorkingCopyService private readonly workingCopyService: IWorkingCopyService, + @ITextFileService private readonly textFileService: ITextFileService, ) { super(AICustomizationManagementEditor.ID, group, telemetryService, themeService, storageService); this.inEditorContextKey = CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_EDITOR.bindTo(contextKeyService); this.sectionContextKey = CONTEXT_AI_CUSTOMIZATION_MANAGEMENT_SECTION.bindTo(contextKeyService); - // Track workspace changes for embedded editor (sessions only) - if (this.workspaceService.preferManualCreation) { - this._register(autorun(reader => { - this.workspaceService.activeProjectRoot.read(reader); - if (this.viewMode === 'editor') { - this.currentEditingProjectRoot = this.workspaceService.getActiveProjectRoot(); - } - })); - this._register(toDisposable(() => { - this.currentModelRef?.dispose(); - this.currentModelRef = undefined; - })); - } + // Track workspace changes for embedded editor + this._register(autorun(reader => { + this.workspaceService.activeProjectRoot.read(reader); + if (this.viewMode === 'editor') { + this.currentEditingProjectRoot = this.workspaceService.getActiveProjectRoot(); + } + })); + this._register(toDisposable(() => { + this.currentModelRef?.dispose(); + this.currentModelRef = undefined; + })); // Build sections from the workspace service configuration const sectionInfo: Record = { @@ -359,13 +358,9 @@ export class AICustomizationManagementEditor extends EditorPane { // Handle item selection this.editorDisposables.add(this.listWidget.onDidSelectItem(item => { - if (this.workspaceService.preferManualCreation) { - const isWorkspaceFile = item.storage === PromptsStorage.local; - const isReadOnly = item.storage === PromptsStorage.extension || item.storage === PromptsStorage.plugin; - this.showEmbeddedEditor(item.uri, item.name, isWorkspaceFile, isReadOnly); - } else { - this.editorService.openEditor({ resource: item.uri }); - } + const isWorkspaceFile = item.storage === PromptsStorage.local; + const isReadOnly = item.storage === PromptsStorage.extension || item.storage === PromptsStorage.plugin; + this.showEmbeddedEditor(item.uri, item.name, isWorkspaceFile, isReadOnly); })); // Handle create actions - AI-guided creation @@ -412,11 +407,9 @@ export class AICustomizationManagementEditor extends EditorPane { })); } - // Embedded editor container (sessions only) - if (this.workspaceService.preferManualCreation) { - this.editorContentContainer = DOM.append(contentInner, $('.editor-content-container')); - this.createEmbeddedEditor(); - } + // Embedded editor container + this.editorContentContainer = DOM.append(contentInner, $('.editor-content-container')); + this.createEmbeddedEditor(); // Set initial visibility based on selected section this.updateContentVisibility(); @@ -496,27 +489,22 @@ export class AICustomizationManagementEditor extends EditorPane { * Creates a new customization using the AI-guided flow. */ private async createNewItemWithAI(type: PromptsType): Promise { - this.close(); + if (this.input) { + this.group.closeEditor(this.input); + } await this.workspaceService.generateCustomization(type); } /** - * Creates a new prompt file and opens it. - * In sessions (preferManualCreation), uses the embedded editor with commit-on-close. - * In core, opens in a regular editor tab. + * Creates a new prompt file and opens it in the embedded editor. */ private async createNewItemManual(type: PromptsType, target: 'workspace' | 'user'): Promise { - const useEmbeddedEditor = this.workspaceService.preferManualCreation; if (type === PromptsType.hook) { const isWorkspace = target === 'workspace'; await this.instantiationService.invokeFunction(showConfigureHooksQuickPick, { openEditor: async (resource) => { - if (useEmbeddedEditor) { - await this.showEmbeddedEditor(resource, basename(resource), isWorkspace); - } else { - await this.editorService.openEditor({ resource }); - } + await this.showEmbeddedEditor(resource, basename(resource), isWorkspace); return; }, }); @@ -531,14 +519,9 @@ export class AICustomizationManagementEditor extends EditorPane { targetFolder: targetDir, targetStorage: target === 'user' ? PromptsStorage.user : PromptsStorage.local, openFile: async (uri) => { - if (useEmbeddedEditor) { - const isWorkspace = target === 'workspace'; - await this.showEmbeddedEditor(uri, basename(uri), isWorkspace); - return this.embeddedEditor; - } else { - await this.editorService.openEditor({ resource: uri }); - return undefined; - } + const isWorkspace = target === 'workspace'; + await this.showEmbeddedEditor(uri, basename(uri), isWorkspace); + return this.embeddedEditor; }, }; @@ -626,13 +609,7 @@ export class AICustomizationManagementEditor extends EditorPane { void this.listWidget.refresh(); } - private close(): void { - if (!this.workspaceService.preferManualCreation && this.input) { - this.group.closeEditor(this.input); - } - } - - //#region Embedded Editor (sessions only) + //#region Embedded Editor private createEmbeddedEditor(): void { if (!this.editorContentContainer) { @@ -701,10 +678,21 @@ export class AICustomizationManagementEditor extends EditorPane { this.embeddedEditor!.focus(); this.editorModelChangeDisposables.clear(); + const saveDelayer = this.editorModelChangeDisposables.add(new Delayer(500)); this.editorModelChangeDisposables.add(ref.object.textEditorModel.onDidChangeContent(() => { this.editorSaveIndicator.className = 'editor-save-indicator visible'; this.editorSaveIndicator.classList.add(...ThemeIcon.asClassNameArray(Codicon.loading), 'codicon-modifier-spin'); this.editorSaveIndicator.title = localize('saving', "Saving..."); + saveDelayer.trigger(async () => { + try { + await this.textFileService.save(uri); + } catch (error) { + console.error('Failed to save AI customization file:', error); + this.editorSaveIndicator.className = 'editor-save-indicator visible error'; + this.editorSaveIndicator.classList.add(...ThemeIcon.asClassNameArray(Codicon.error)); + this.editorSaveIndicator.title = localize('saveFailed', "Save Failed"); + } + }); })); this.editorModelChangeDisposables.add(this.workingCopyService.onDidSave(e => { if (isEqual(e.workingCopy.resource, uri)) { From 6d3dca87709a6add7044e2ea07ac1b01e76b9e70 Mon Sep 17 00:00:00 2001 From: Josh Spicer <23246594+joshspicer@users.noreply.github.com> Date: Wed, 25 Feb 2026 15:34:54 -0800 Subject: [PATCH 30/48] fix over counting prompts (#297818) ref https://github.com/microsoft/vscode/issues/297343 --- .../chat/browser/aiCustomization/aiCustomizationListWidget.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts index 5be1a768214db..e64986e1f56c4 100644 --- a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts @@ -769,8 +769,12 @@ export class AICustomizationListWidget extends Disposable { } } else if (promptType === PromptsType.prompt) { // Use getPromptSlashCommands which has parsed name/description from frontmatter + // Filter out skills since they have their own section const commands = await this.promptsService.getPromptSlashCommands(CancellationToken.None); for (const command of commands) { + if (command.promptPath.type === PromptsType.skill) { + continue; + } const filename = basename(command.promptPath.uri); items.push({ id: command.promptPath.uri.toString(), From ea4326c4fdd55c59d3ea552dbd325837813ae1d0 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 15:35:14 -0800 Subject: [PATCH 31/48] Refactor delegation logging in chat actions to use logService for better consistency and performance --- .../browser/actions/chatContinueInAction.ts | 12 ------------ .../browser/actions/chatExecuteActions.ts | 6 ------ .../contrib/chat/browser/widget/chatWidget.ts | 19 ++++++++----------- .../delegationSessionPickerActionItem.ts | 1 - 4 files changed, 8 insertions(+), 30 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index 8a9fae9b64a69..9cb599082e7ff 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -280,7 +280,6 @@ export class CreateRemoteAgentJobAction { private async extractRepoNwoFromSession(agentSessionsService: IAgentSessionsService, chatSessionsService: IChatSessionsService, fileService: IFileService, sessionResource: URI, chatModel: ChatModel): Promise { // 1. Try chat model's repoData (populated when local git repo exists) const repoData = chatModel.repoData; - console.log(`[Delegation] extractRepoNwo: repoData=${JSON.stringify(repoData ? { remoteUrl: repoData.remoteUrl, workspaceType: repoData.workspaceType } : null)}`); if (repoData?.remoteUrl) { const nwo = extractNwoFromRemoteUrl(repoData.remoteUrl); if (nwo) { @@ -290,7 +289,6 @@ export class CreateRemoteAgentJobAction { // 2. Try agent session metadata (populated by session providers) const agentSession = agentSessionsService.getSession(sessionResource); - console.log(`[Delegation] extractRepoNwo: agentSession=${!!agentSession}, metadata=${JSON.stringify(agentSession?.metadata)}`); if (agentSession?.metadata) { const metadata = agentSession.metadata; @@ -384,26 +382,21 @@ export class CreateRemoteAgentJobAction { remoteJobCreatingKey.set(true); const widget = _widget ?? widgetService.lastFocusedWidget; - console.log(`[Delegation] CreateRemoteAgentJobAction: widget=${!!widget}, viewModel=${!!widget?.viewModel}, continuationTarget=${continuationTarget.type}`); if (!widget || !widget.viewModel) { - console.log(`[Delegation] CreateRemoteAgentJobAction: no widget/viewModel, opening untitled editor`); return this.openUntitledEditor(commandService, continuationTarget); } // todo@connor4312: remove 'as' cast const chatModel = widget.viewModel.model as ChatModel; if (!chatModel) { - console.log(`[Delegation] CreateRemoteAgentJobAction: no chatModel, returning`); return; } const sessionResource = widget.viewModel.sessionResource; const chatRequests = chatModel.getRequests(); let userPrompt = widget.getInput(); - console.log(`[Delegation] CreateRemoteAgentJobAction: sessionResource=${sessionResource.toString()}, requestCount=${chatRequests.length}, userPrompt="${userPrompt?.substring(0, 50)}"`); if (!userPrompt) { if (!chatRequests.length) { - console.log(`[Delegation] CreateRemoteAgentJobAction: no prompt and no requests, opening untitled editor`); return this.openUntitledEditor(commandService, continuationTarget); } userPrompt = 'implement this.'; @@ -466,7 +459,6 @@ export class CreateRemoteAgentJobAction { initialSessionOptions.push({ optionId: 'repositories', value: repoNwo }); } - console.log(`[Delegation] CreateRemoteAgentJobAction: cross-type delegation (${sourceProvider} -> ${continuationTargetType}), isSidebar=${isSidebar}, repoNwo=${repoNwo}`); await commandService.executeCommand(actionId, { prompt: delegationPrompt, attachedContext: attachedContext.asArray(), @@ -479,8 +471,6 @@ export class CreateRemoteAgentJobAction { const instantiationService = accessor.get(IInstantiationService); const requestParser = instantiationService.createInstance(ChatRequestParser); - console.log(`[Delegation] CreateRemoteAgentJobAction: sending request with agentIdSilent=${continuationTargetType}, defaultAgent=${defaultAgent?.id}`); - // Add the request to the model first const parsedRequest = requestParser.parseChatRequest(sessionResource, userPrompt, ChatAgentLocation.Chat); const addedRequest = chatModel.addRequest( @@ -499,8 +489,6 @@ export class CreateRemoteAgentJobAction { ...widget.getModeRequestOptions() }); - console.log(`[Delegation] CreateRemoteAgentJobAction: sendResult kind=${sendResult?.kind}, agent=${ChatSendResult.isSent(sendResult) ? sendResult.data.agent?.id : 'n/a'}`); - if (ChatSendResult.isSent(sendResult)) { await widget.handleDelegationExitIfNeeded(defaultAgent, sendResult.data.agent); } diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts b/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts index d8afa34bb2519..a9e08c350c5db 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts @@ -59,9 +59,7 @@ abstract class SubmitAction extends Action2 { // Check if there's a pending delegation target const pendingDelegationTarget = widget?.input.pendingDelegationTarget; - console.log(`[Delegation] SubmitAction: pendingDelegationTarget=${pendingDelegationTarget}, isLocal=${pendingDelegationTarget === AgentSessionProviders.Local}`); if (pendingDelegationTarget && pendingDelegationTarget !== AgentSessionProviders.Local) { - console.log(`[Delegation] SubmitAction: delegating to ${pendingDelegationTarget}`); return await this.handleDelegation(accessor, widget, pendingDelegationTarget); } @@ -166,19 +164,15 @@ abstract class SubmitAction extends Action2 { // Find the contribution for the delegation target const contributions = chatSessionsService.getAllChatSessionContributions(); - console.log(`[Delegation] handleDelegation: target=${delegationTarget}, contributions=${contributions.map(c => `${c.type}(canDelegate=${c.canDelegate})`).join(', ')}`); const targetContribution = contributions.find(contrib => { const providerType = getAgentSessionProvider(contrib.type); return providerType === delegationTarget; }); if (!targetContribution) { - console.error(`[Delegation] handleDelegation: No contribution found for delegation target: ${delegationTarget}`); throw new Error(`No contribution found for delegation target: ${delegationTarget}`); } - console.log(`[Delegation] handleDelegation: found contribution type=${targetContribution.type}, canDelegate=${targetContribution.canDelegate}`); - if (targetContribution.canDelegate === false) { throw new Error(`The contribution for delegation target: ${delegationTarget} does not support delegation.`); } diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts index e216a4d5da1ef..5e51650b36f79 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts @@ -1398,11 +1398,10 @@ export class ChatWidget extends Disposable implements IChatWidget { async handleDelegationExitIfNeeded(sourceAgent: Pick | undefined, targetAgent: IChatAgentData | undefined): Promise { if (!this._shouldExitAfterDelegation(sourceAgent, targetAgent)) { - console.log(`[Delegation] handleDelegationExitIfNeeded: skipping exit, sourceAgent=${sourceAgent?.id}, targetAgent=${targetAgent?.id}`); return; } - console.log(`[Delegation] Will exit after delegation: sourceAgent=${sourceAgent?.id}, targetAgent=${targetAgent?.id}`); + this.logService.debug(`[Delegation] Will exit after delegation: sourceAgent=${sourceAgent?.id}, targetAgent=${targetAgent?.id}`); try { await this._handleDelegationExit(); } catch (e) { @@ -1412,41 +1411,39 @@ export class ChatWidget extends Disposable implements IChatWidget { private _shouldExitAfterDelegation(sourceAgent: Pick | undefined, targetAgent: IChatAgentData | undefined): boolean { if (!targetAgent) { - console.log('[Delegation] _shouldExitAfterDelegation: false (no targetAgent)'); + this.logService.debug('[Delegation] _shouldExitAfterDelegation: false (no targetAgent)'); return false; } if (!this.configurationService.getValue(ChatConfiguration.ExitAfterDelegation)) { - console.log('[Delegation] _shouldExitAfterDelegation: false (ExitAfterDelegation config disabled)'); + this.logService.debug('[Delegation] _shouldExitAfterDelegation: false (ExitAfterDelegation config disabled)'); return false; } // Never exit if the source and target are the same (that means that you're providing a follow up, etc.) // NOTE: sourceAgent would be the chatWidget's 'lockedAgent' if (sourceAgent && sourceAgent.id === targetAgent.id) { - console.log('[Delegation] _shouldExitAfterDelegation: false (source and target agents are the same)'); + this.logService.debug('[Delegation] _shouldExitAfterDelegation: false (source and target agents are the same)'); return false; } - console.log(`[Delegation] _shouldExitAfterDelegation: viewContext=${JSON.stringify(this.viewContext)}, isViewViewContext=${isIChatViewViewContext(this.viewContext)}`); if (!isIChatViewViewContext(this.viewContext)) { - console.log('[Delegation] _shouldExitAfterDelegation: false (not in chat view context)'); + this.logService.debug('[Delegation] _shouldExitAfterDelegation: false (not in chat view context)'); return false; } const contribution = this.chatSessionsService.getChatSessionContribution(targetAgent.id); - console.log(`[Delegation] _shouldExitAfterDelegation: contribution=${contribution?.type}, canDelegate=${contribution?.canDelegate}`); if (!contribution) { - console.log(`[Delegation] _shouldExitAfterDelegation: false (no contribution found for targetAgent.id=${targetAgent.id})`); + this.logService.debug(`[Delegation] _shouldExitAfterDelegation: false (no contribution found for targetAgent.id=${targetAgent.id})`); return false; } if (contribution.canDelegate !== true) { - console.log(`[Delegation] _shouldExitAfterDelegation: false (contribution.canDelegate=${contribution.canDelegate}, expected true)`); + this.logService.debug(`[Delegation] _shouldExitAfterDelegation: false (contribution.canDelegate=${contribution.canDelegate}, expected true)`); return false; } - console.log('[Delegation] _shouldExitAfterDelegation: true'); + this.logService.debug('[Delegation] _shouldExitAfterDelegation: true'); return true; } diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts index 698f5312f1c89..4b07b79c983b8 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts @@ -49,7 +49,6 @@ export class DelegationSessionPickerActionItem extends SessionTypePickerActionIt } protected override _run(sessionTypeItem: ISessionTypeItem): void { - console.log(`[Delegation] DelegationPicker._run: setting pending target to ${sessionTypeItem.type}, hasSetter=${!!this.delegate.setPendingDelegationTarget}`); if (this.delegate.setPendingDelegationTarget) { this.delegate.setPendingDelegationTarget(sessionTypeItem.type); } From c919b697ef03b0b9a86394982a3dd550892d76ee Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 15:51:49 -0800 Subject: [PATCH 32/48] Enhance archiveLocalParentSession method to conditionally allow archiving of sessions based on context, improving session management in the chat widget --- src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts index 5e51650b36f79..6fe3c4d67aa88 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts @@ -20,6 +20,7 @@ import { Iterable } from '../../../../../base/common/iterator.js'; import { Disposable, DisposableStore, IDisposable, MutableDisposable, thenIfNotDisposed } from '../../../../../base/common/lifecycle.js'; import { ResourceSet } from '../../../../../base/common/map.js'; import { Schemas } from '../../../../../base/common/network.js'; +import { IsSessionsWindowContext } from '../../../../common/contextkeys.js'; import { filter } from '../../../../../base/common/objects.js'; import { autorun, derived, observableFromEvent, observableValue } from '../../../../../base/common/observable.js'; import { basename, extUri, isEqual } from '../../../../../base/common/resources.js'; @@ -1511,6 +1512,12 @@ export class ChatWidget extends Disposable implements IChatWidget { } private async archiveLocalParentSession(sessionResource: URI): Promise { + // In the regular workbench, only archive local chat sessions. + // In the sessions window, allow archiving any session type after delegation. + if (sessionResource.scheme !== Schemas.vscodeLocalChatSession && !IsSessionsWindowContext.getValue(this.contextKeyService)) { + return; + } + this.logService.debug(`[Delegation] archiveLocalParentSession: archiving session ${sessionResource.toString()}`); // Implicitly keep parent session's changes as they've now been delegated to the new agent. From b7dca0e4623104a86ab9032fd29e713815a0ffb4 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 16:00:58 -0800 Subject: [PATCH 33/48] Enhance CreateRemoteAgentJobAction to use isAbsolute for path validation and truncate conversation transcripts to avoid exceeding token limits in chat sessions --- .../chat/browser/actions/chatContinueInAction.ts | 12 +++++++++--- .../chatSessions/chatSessions.contribution.ts | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index 9cb599082e7ff..fb1450fb448a6 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -7,6 +7,7 @@ import { Codicon } from '../../../../../base/common/codicons.js'; import { h } from '../../../../../base/browser/dom.js'; import { Disposable, IDisposable, markAsSingleton } from '../../../../../base/common/lifecycle.js'; import { Schemas } from '../../../../../base/common/network.js'; +import { isAbsolute } from '../../../../../base/common/path.js'; import { basename } from '../../../../../base/common/resources.js'; import { ThemeIcon } from '../../../../../base/common/themables.js'; import { URI } from '../../../../../base/common/uri.js'; @@ -352,7 +353,7 @@ export class CreateRemoteAgentJobAction { } } catch { /* ignore */ } // Local filesystem path — resolve git remote - if (optionValue.startsWith('/') || optionValue.match(/^[A-Za-z]:\\/)) { + if (isAbsolute(optionValue)) { const nwoFromGit = await resolveGitRemoteNwo(optionValue, fileService); if (nwoFromGit) { return nwoFromGit; @@ -441,12 +442,17 @@ export class CreateRemoteAgentJobAction { ? `workbench.action.chat.openNewSessionSidebar.${continuationTargetType}` : `${NEW_CHAT_SESSION_ACTION_ID}.${continuationTargetType}`; - // Build conversation transcript from the source session to preserve context - const transcript = chatRequests.map(req => { + // Build conversation transcript from the source session to preserve context. + // Truncate to avoid exceeding token limits of the target model. + const maxTranscriptLength = 20_000; + let transcript = chatRequests.map(req => { const userMsg = `User: ${req.message.text}`; const respMsg = req.response?.response ? `Assistant: ${req.response.response.getMarkdown()}` : ''; return respMsg ? `${userMsg}\n${respMsg}` : userMsg; }).join('\n\n'); + if (transcript.length > maxTranscriptLength) { + transcript = transcript.substring(transcript.length - maxTranscriptLength); + } const delegationPrompt = transcript ? `The following is the conversation history from a previous ${getAgentSessionProviderName(sourceProvider)} session. Continue working on it.\n\n${transcript}\n\nUser: ${userPrompt}` diff --git a/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts b/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts index f4861719941ab..f9e51f209a6fe 100644 --- a/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts +++ b/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts @@ -1302,9 +1302,9 @@ async function openChatSession(accessor: ServicesAccessor, openOptions: NewChatS // so that the contributed session provider can read them. if (chatSendOptions.initialSessionOptions) { const model = chatService.getSession(resource); - if (model) { + if (model?.contributedChatSession) { model.setContributedChatSession({ - ...model.contributedChatSession!, + ...model.contributedChatSession, initialSessionOptions: chatSendOptions.initialSessionOptions, }); } From bca174001110413af4aa934e57a3c17b3ad9ba4d Mon Sep 17 00:00:00 2001 From: David Dossett <25163139+daviddossett@users.noreply.github.com> Date: Wed, 25 Feb 2026 16:01:37 -0800 Subject: [PATCH 34/48] Align chat context and code block pill spacing (#297812) * Adjust chat response spacing margins Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: avoid stacked used-context margins Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../widget/chatContentParts/media/chatCodeBlockPill.css | 3 +-- src/vs/workbench/contrib/chat/browser/widget/media/chat.css | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css index c546f8192a2be..dce9e94836a39 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +++ b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css @@ -4,14 +4,13 @@ *--------------------------------------------------------------------------------------------*/ .interactive-item-container.interactive-response .value .chat-markdown-part.rendered-markdown .code:has(.chat-codeblock-pill-container) { - margin-bottom: 8px; + margin-bottom: 16px; } .chat-markdown-part.rendered-markdown .code .chat-codeblock-pill-container { display: flex; align-items: center; gap: 5px; - margin: 0 0 6px 0px; font-size: var(--vscode-chat-font-size-body-s); color: var(--vscode-descriptionForeground); diff --git a/src/vs/workbench/contrib/chat/browser/widget/media/chat.css b/src/vs/workbench/contrib/chat/browser/widget/media/chat.css index 35e910c2c37a7..329bb1d89f509 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +++ b/src/vs/workbench/contrib/chat/browser/widget/media/chat.css @@ -282,7 +282,11 @@ } .interactive-item-container > .value .chat-used-context { - margin-bottom: 10px; + margin-bottom: 16px; +} + +.interactive-item-container > .value .chat-used-context .chat-used-context-list { + margin-bottom: 0; } .interactive-item-container .value .rendered-markdown:not(:has(.chat-extensions-content-part)) { From 50577b51dac279c21734a5361adbcf11b04b257b Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 16:05:46 -0800 Subject: [PATCH 35/48] Enhance DelegationSessionPickerActionItem to restrict delegation to local sessions when not in sessions window, improving session management --- .../widget/input/delegationSessionPickerActionItem.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts index 4b07b79c983b8..86a97f0267d1b 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts @@ -69,6 +69,11 @@ export class DelegationSessionPickerActionItem extends SessionTypePickerActionIt const allContributions = this.chatSessionsService.getAllChatSessionContributions(); const contribution = allContributions.find(contribution => getAgentSessionProvider(contribution.type) === type); + // In core VS Code, only allow delegation from local sessions + if (!this._isSessionsWindow && this.delegate.getActiveSessionProvider() !== AgentSessionProviders.Local) { + return false; + } + if (contribution && !contribution.canDelegate && this.delegate.getActiveSessionProvider() !== type /* Allow switching back to active type */) { return false; } From 0726cc86b0d0caff0e0ed010d9c30c3e9e5de82b Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Thu, 26 Feb 2026 11:21:15 +1100 Subject: [PATCH 36/48] Fix session initialization for untitled resources in ChatSessionsService (#297822) --- .../chat/browser/chatSessions/chatSessions.contribution.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts b/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts index 538cf28732f06..8d48e6293619d 100644 --- a/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts +++ b/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts @@ -1038,8 +1038,8 @@ export class ChatSessionsService extends Disposable implements IChatSessionsServ } let session: IChatSession; - if (sessionResource.path.startsWith('/untitled')) { - const newSessionOptions = this.getNewSessionOptionsForSessionType(resolvedType); + const newSessionOptions = this.getNewSessionOptionsForSessionType(resolvedType); + if (sessionResource.path.startsWith('/untitled') && newSessionOptions) { session = { sessionResource: sessionResource, onWillDispose: Event.None, From a19ae5a9fc5225027b428276bf864a5f85a87790 Mon Sep 17 00:00:00 2001 From: Connor Peet Date: Wed, 25 Feb 2026 16:53:24 -0800 Subject: [PATCH 37/48] mcp: add error handling to mcpStdioStateHandler test (#297832) Adds proper error handling to the output promise in the mcpStdioStateHandler test by: - Adding reject parameter to the Promise constructor - Forwarding child process errors as promise rejections This ensures that child process errors are properly handled and prevents potential unhandled rejection warnings. Fixes https://github.com/microsoft/vscode/issues/297237 (Commit message generated by Copilot) --- .../contrib/mcp/test/node/mcpStdioStateHandler.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/mcp/test/node/mcpStdioStateHandler.test.ts b/src/vs/workbench/contrib/mcp/test/node/mcpStdioStateHandler.test.ts index e759a24cec497..7a5e0d28c0529 100644 --- a/src/vs/workbench/contrib/mcp/test/node/mcpStdioStateHandler.test.ts +++ b/src/vs/workbench/contrib/mcp/test/node/mcpStdioStateHandler.test.ts @@ -26,7 +26,7 @@ suite('McpStdioStateHandler', () => { processId: new Promise((resolve) => { child.on('spawn', () => resolve(child.pid!)); }), - output: new Promise((resolve) => { + output: new Promise((resolve, reject) => { let output = ''; child.stderr.setEncoding('utf-8').on('data', (data) => { output += data.toString(); @@ -34,6 +34,7 @@ suite('McpStdioStateHandler', () => { child.stdout.setEncoding('utf-8').on('data', (data) => { output += data.toString(); }); + child.on('error', reject); child.on('close', () => resolve(output)); }), }; From a06812a59f7c3e5691bc3d8d1bd13ee996a87485 Mon Sep 17 00:00:00 2001 From: Justin Chen <54879025+justschen@users.noreply.github.com> Date: Wed, 25 Feb 2026 16:53:44 -0800 Subject: [PATCH 38/48] split /yolo into enable and disable slash commands (#297830) --- .../contrib/chat/browser/chatSlashCommands.ts | 92 ++++++++++--------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/chatSlashCommands.ts b/src/vs/workbench/contrib/chat/browser/chatSlashCommands.ts index f6d6f20dc9e4c..0ccf0f81f3ab1 100644 --- a/src/vs/workbench/contrib/chat/browser/chatSlashCommands.ts +++ b/src/vs/workbench/contrib/chat/browser/chatSlashCommands.ts @@ -6,7 +6,6 @@ import { timeout } from '../../../../base/common/async.js'; import { MarkdownString, isMarkdownString } from '../../../../base/common/htmlContent.js'; import { Disposable } from '../../../../base/common/lifecycle.js'; -import { URI } from '../../../../base/common/uri.js'; import * as nls from '../../../../nls.js'; import { ICommandService } from '../../../../platform/commands/common/commands.js'; import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js'; @@ -22,7 +21,6 @@ import { ACTION_ID_NEW_CHAT } from './actions/chatActions.js'; import { ChatSubmitAction, OpenModePickerAction, OpenModelPickerAction } from './actions/chatExecuteActions.js'; import { ConfigureToolsAction } from './actions/chatToolActions.js'; import { IAgentSessionsService } from './agentSessions/agentSessionsService.js'; -import { IChatWidgetService } from './chat.js'; import { CONFIGURE_INSTRUCTIONS_ACTION_ID } from './promptSyntax/attachInstructionsAction.js'; import { showConfigureHooksQuickPick } from './promptSyntax/hookActions.js'; import { CONFIGURE_PROMPTS_ACTION_ID } from './promptSyntax/runPromptAction.js'; @@ -38,7 +36,6 @@ export class ChatSlashCommandsContribution extends Disposable { @IChatSlashCommandService slashCommandService: IChatSlashCommandService, @ICommandService commandService: ICommandService, @IChatAgentService chatAgentService: IChatAgentService, - @IChatWidgetService chatWidgetService: IChatWidgetService, @IInstantiationService instantiationService: IInstantiationService, @IAgentSessionsService agentSessionsService: IAgentSessionsService, @IChatService chatService: IChatService, @@ -161,15 +158,19 @@ export class ChatSlashCommandsContribution extends Disposable { chatService.setChatSessionTitle(sessionResource, title); } })); - const enableAutoApprove = async (): Promise => { + const handleEnableAutoApprove = async () => { const inspection = configurationService.inspect(ChatConfiguration.GlobalAutoApprove); if (inspection.policyValue !== undefined) { if (inspection.policyValue === true) { - // Global auto-approve is already enabled by policy; nothing more to do. - return true; + notificationService.info(nls.localize('autoApprove.alreadyEnabled', "Global auto-approve is already enabled.")); + return; } - notificationService.warn(nls.localize('autoApprove.policyManaged', "Global auto-approve is managed by your organization policy. Contact your administrator to change this setting.")); - return false; + notificationService.warn(nls.localize('autoApprove.policyBlocked', "Global auto-approve is managed by your organization policy. Contact your administrator to change this setting.")); + return; + } + if (configurationService.getValue(ChatConfiguration.GlobalAutoApprove)) { + notificationService.info(nls.localize('autoApprove.alreadyEnabled', "Global auto-approve is already enabled.")); + return; } const alreadyOptedIn = storageService.getBoolean('chat.tools.global.autoApprove.optIn', StorageScope.APPLICATION, false); if (!alreadyOptedIn) { @@ -185,61 +186,62 @@ export class ChatSlashCommandsContribution extends Disposable { } }); if (result.result !== true) { - return false; + return; } storageService.store('chat.tools.global.autoApprove.optIn', true, StorageScope.APPLICATION, StorageTarget.USER); } await configurationService.updateValue(ChatConfiguration.GlobalAutoApprove, true); - return true; + notificationService.info(nls.localize('autoApprove.enabled', "Global auto-approve enabled — all tool calls will be approved automatically")); }; - const handleAutoApprove = async (prompt: string, _progress: unknown, _history: unknown, _location: unknown, sessionResource: URI) => { - const trimmed = prompt.trim(); - if (trimmed) { - // /autoApprove — prompt to enable, then submit the request - if (await enableAutoApprove()) { - const widget = chatWidgetService.getWidgetBySessionResource(sessionResource); - if (widget) { - widget.acceptInput(trimmed); - } - } else { - // Restore the prompt so the user doesn't lose their input - const widget = chatWidgetService.getWidgetBySessionResource(sessionResource); - if (widget) { - widget.setInput(trimmed); - } - } - } else { - // /autoApprove — toggle - const isEnabled = configurationService.getValue(ChatConfiguration.GlobalAutoApprove); - if (isEnabled) { - const inspection = configurationService.inspect(ChatConfiguration.GlobalAutoApprove); - if (inspection.policyValue !== undefined) { - notificationService.warn(nls.localize('autoApprove.policyManaged', "Global auto-approve is managed by your organization policy. Contact your administrator to change this setting.")); - return; - } - await configurationService.updateValue(ChatConfiguration.GlobalAutoApprove, false); - notificationService.info(nls.localize('autoApprove.disabled', "Global auto-approve disabled — tools will require approval")); - } else { - await enableAutoApprove(); + const handleDisableAutoApprove = async () => { + const inspection = configurationService.inspect(ChatConfiguration.GlobalAutoApprove); + if (inspection.policyValue !== undefined) { + if (inspection.policyValue === false) { + notificationService.info(nls.localize('autoApprove.alreadyDisabled', "Global auto-approve is already disabled.")); + return; } + notificationService.warn(nls.localize('autoApprove.policyBlocked', "Global auto-approve is managed by your organization policy. Contact your administrator to change this setting.")); + return; } + if (!configurationService.getValue(ChatConfiguration.GlobalAutoApprove)) { + notificationService.info(nls.localize('autoApprove.alreadyDisabled', "Global auto-approve is already disabled.")); + return; + } + await configurationService.updateValue(ChatConfiguration.GlobalAutoApprove, false); + notificationService.info(nls.localize('autoApprove.disabled', "Global auto-approve disabled — tools will require approval")); }; this._store.add(slashCommandService.registerSlashCommand({ command: 'autoApprove', - detail: nls.localize('autoApprove', "Toggle global auto-approval of all tool calls (alias: /yolo)"), + detail: nls.localize('autoApprove', "Enable global auto-approval of all tool calls"), sortText: 'z1_autoApprove', - executeImmediately: false, + executeImmediately: true, + silent: true, + locations: [ChatAgentLocation.Chat] + }, handleEnableAutoApprove)); + this._store.add(slashCommandService.registerSlashCommand({ + command: 'disableAutoApprove', + detail: nls.localize('disableAutoApprove', "Disable global auto-approval of all tool calls"), + sortText: 'z1_disableAutoApprove', + executeImmediately: true, silent: true, locations: [ChatAgentLocation.Chat] - }, handleAutoApprove)); + }, handleDisableAutoApprove)); this._store.add(slashCommandService.registerSlashCommand({ command: 'yolo', - detail: nls.localize('yolo', "Toggle global auto-approval of all tool calls (alias: /autoApprove)"), + detail: nls.localize('yolo', "Enable global auto-approval of all tool calls"), sortText: 'z1_yolo', - executeImmediately: false, + executeImmediately: true, + silent: true, + locations: [ChatAgentLocation.Chat] + }, handleEnableAutoApprove)); + this._store.add(slashCommandService.registerSlashCommand({ + command: 'disableYolo', + detail: nls.localize('disableYolo', "Disable global auto-approval of all tool calls"), + sortText: 'z1_disableYolo', + executeImmediately: true, silent: true, locations: [ChatAgentLocation.Chat] - }, handleAutoApprove)); + }, handleDisableAutoApprove)); this._store.add(slashCommandService.registerSlashCommand({ command: 'help', detail: '', From 2f4a761451d626c32aba1b9021432c971d692f22 Mon Sep 17 00:00:00 2001 From: Justin Chen <54879025+justschen@users.noreply.github.com> Date: Wed, 25 Feb 2026 16:58:53 -0800 Subject: [PATCH 39/48] checkmarks styling fixes (#297802) --- .../widget/chatContentParts/media/chatCodeBlockPill.css | 4 +++- .../chatContentParts/media/chatHookContentPart.css | 7 +++++-- .../chatContentParts/media/chatThinkingContent.css | 9 +++------ .../workbench/contrib/chat/browser/widget/media/chat.css | 1 + 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css index dce9e94836a39..d459decaef8a6 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +++ b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css @@ -28,7 +28,7 @@ color: var(--vscode-icon-foreground) !important; &::before { - font-size: var(--vscode-chat-font-size-body-s); + font-size: 12px; } } @@ -38,6 +38,8 @@ .show-checkmarks & .codicon.codicon-check { display: inline-flex; + padding-left: 2px; + margin-left: 0.2em; } .status-label { diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatHookContentPart.css b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatHookContentPart.css index 179a2b06dc892..24d64e65bb7a6 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatHookContentPart.css +++ b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatHookContentPart.css @@ -37,6 +37,9 @@ padding-top: 6px; } -.chat-used-context.chat-hook-outcome-warning .chat-used-context-label .monaco-button { - gap: 4px; +.chat-used-context.chat-hook-outcome-warning, +.chat-used-context.chat-hook-outcome-blocked { + .chat-used-context-label .monaco-button { + gap: 4px; + } } diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css index 1097c935dcb64..1702eaf25b327 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +++ b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css @@ -132,18 +132,15 @@ margin: 0 0 2px 6px; } - .codicon:not(.chat-thinking-icon) { - display: none; + /* todo: ideally not !important, but the competing css has 14 specificity */ + .codicon:not(.chat-thinking-icon){ + display: none !important; } .chat-collapsible-hover-chevron.codicon { display: inline-flex; } - .chat-used-context.show-checkmarks .chat-used-context-label .monaco-icon-button > .codicon:first-child:not(.chat-collapsible-hover-chevron) { - display: inline-block; - } - .show-checkmarks .chat-confirmation-widget-title > .codicon:first-child:not(.chat-collapsible-hover-chevron) { display: inline-block; } diff --git a/src/vs/workbench/contrib/chat/browser/widget/media/chat.css b/src/vs/workbench/contrib/chat/browser/widget/media/chat.css index 329bb1d89f509..16d1bd39b4df0 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +++ b/src/vs/workbench/contrib/chat/browser/widget/media/chat.css @@ -2317,6 +2317,7 @@ have to be updated for changes to the rules above, or to support more deeply nes .show-checkmarks .progress-container > .codicon.codicon-check, .progress-container.show-checkmarks > .codicon.codicon-check { display: inline-flex; + margin-left: 4px; } .interactive-item-container .chat-command-button { From fd768994f463a5706b92509aaabdee05a2d66834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20Ruales?= <1588988+jruales@users.noreply.github.com> Date: Wed, 25 Feb 2026 17:26:38 -0800 Subject: [PATCH 40/48] Browser: Trim() selected text before checking if it has newlines in showFind method (#297836) --- .../contrib/browserView/electron-browser/browserEditor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/browserView/electron-browser/browserEditor.ts b/src/vs/workbench/contrib/browserView/electron-browser/browserEditor.ts index 89b50a46a6d00..0cd292267d5f8 100644 --- a/src/vs/workbench/contrib/browserView/electron-browser/browserEditor.ts +++ b/src/vs/workbench/contrib/browserView/electron-browser/browserEditor.ts @@ -717,7 +717,7 @@ export class BrowserEditor extends EditorPane { */ async showFind(): Promise { // Get selected text from the browser view to pre-populate the search box. - const selectedText = await this._model?.getSelectedText(); + const selectedText = (await this._model?.getSelectedText())?.trim(); // Only use the selected text if it doesn't contain newlines (single line selection) const textToReveal = selectedText && !/[\r\n]/.test(selectedText) ? selectedText : undefined; From 1c107c4a7fc573e03500ff4d8bae7453b7f59dd3 Mon Sep 17 00:00:00 2001 From: Vijay Upadya <41652029+vijayupadya@users.noreply.github.com> Date: Wed, 25 Feb 2026 18:14:31 -0800 Subject: [PATCH 41/48] Rename filter item prompt discovery (#297848) Rename filter item --- .../contrib/chat/browser/chatDebug/chatDebugFilters.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.ts b/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.ts index 2a82fb2fd227c..8f25da718a1c1 100644 --- a/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.ts +++ b/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.ts @@ -119,7 +119,7 @@ export function registerFilterMenuItems( registerToggle(CHAT_DEBUG_CMD_TOGGLE_TOOL_CALL, localize('chatDebug.filter.toolCall', "Tool Calls"), CHAT_DEBUG_KIND_TOOL_CALL, '1_kind', () => state.filterKindToolCall, v => { state.filterKindToolCall = v; }, kindToolCallKey); registerToggle(CHAT_DEBUG_CMD_TOGGLE_MODEL_TURN, localize('chatDebug.filter.modelTurn', "Model Turns"), CHAT_DEBUG_KIND_MODEL_TURN, '1_kind', () => state.filterKindModelTurn, v => { state.filterKindModelTurn = v; }, kindModelTurnKey); - registerToggle(CHAT_DEBUG_CMD_TOGGLE_PROMPT_DISCOVERY, localize('chatDebug.filter.promptDiscovery', "Prompt Discovery"), CHAT_DEBUG_KIND_PROMPT_DISCOVERY, '1_kind', () => state.filterKindPromptDiscovery, v => { state.filterKindPromptDiscovery = v; }, kindPromptDiscoveryKey); + registerToggle(CHAT_DEBUG_CMD_TOGGLE_PROMPT_DISCOVERY, localize('chatDebug.filter.promptDiscovery', "Chat Customization"), CHAT_DEBUG_KIND_PROMPT_DISCOVERY, '1_kind', () => state.filterKindPromptDiscovery, v => { state.filterKindPromptDiscovery = v; }, kindPromptDiscoveryKey); registerToggle(CHAT_DEBUG_CMD_TOGGLE_SUBAGENT, localize('chatDebug.filter.subagent', "Subagent Invocations"), CHAT_DEBUG_KIND_SUBAGENT, '1_kind', () => state.filterKindSubagent, v => { state.filterKindSubagent = v; }, kindSubagentKey); return store; From f9d6c407d89643aeabf84d134c6f7ab1d874e91a Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 25 Feb 2026 18:22:36 -0800 Subject: [PATCH 42/48] Debug panel should only be available for local sessions (#297817) --- .../chat/browser/promptsDebugContribution.ts | 3 +- .../contrib/chat/browser/widget/chatWidget.ts | 4 +- .../chat/common/chatDebugServiceImpl.ts | 8 ++++ .../common/chatService/chatServiceImpl.ts | 2 +- .../computeAutomaticInstructions.ts | 8 ++-- .../promptSyntax/service/promptsService.ts | 26 ++++++------- .../service/promptsServiceImpl.ts | 36 ++++++++--------- .../tools/builtinTools/runSubagentTool.ts | 6 +-- .../browser/promptsDebugContribution.test.ts | 11 +++--- .../test/common/chatDebugServiceImpl.test.ts | 39 ++++++++++++++++++- .../service/mockPromptsService.ts | 12 +++--- 11 files changed, 98 insertions(+), 57 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.ts b/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.ts index 9620797fe5efe..964f68d2ac022 100644 --- a/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.ts +++ b/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.ts @@ -7,7 +7,6 @@ import { Disposable } from '../../../../base/common/lifecycle.js'; import { generateUuid } from '../../../../base/common/uuid.js'; import { IWorkbenchContribution } from '../../../common/contributions.js'; import { IChatDebugResolvedEventContent, IChatDebugService } from '../common/chatDebugService.js'; -import { LocalChatSessionUri } from '../common/model/chatUri.js'; import { IPromptDiscoveryInfo, IPromptsService } from '../common/promptSyntax/service/promptsService.js'; /** @@ -53,7 +52,7 @@ export class PromptsDebugContribution extends Disposable implements IWorkbenchCo } chatDebugService.log( - LocalChatSessionUri.forSession(entry.sessionId), + entry.sessionResource, entry.name, entry.details, undefined, diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts index 16e96f0e435ad..214533564961b 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts @@ -2826,8 +2826,8 @@ export class ChatWidget extends Disposable implements IChatWidget { this.logService.debug(`ChatWidget#_autoAttachInstructions: prompt files are always enabled`); const enabledTools = this.input.currentModeKind === ChatModeKind.Agent ? this.input.selectedToolsModel.userSelectedTools.get() : undefined; const enabledSubAgents = this.input.currentModeKind === ChatModeKind.Agent ? this.input.currentModeObs.get().agents?.get() : undefined; - const sessionId = this._viewModel?.model.sessionId; - const computer = this.instantiationService.createInstance(ComputeAutomaticInstructions, this.input.currentModeKind, enabledTools, enabledSubAgents, sessionId); + const sessionResource = this._viewModel?.model.sessionResource; + const computer = this.instantiationService.createInstance(ComputeAutomaticInstructions, this.input.currentModeKind, enabledTools, enabledSubAgents, sessionResource); await computer.collect(attachedContext, CancellationToken.None); } diff --git a/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.ts b/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.ts index f9787ed7978c7..cce684e6d5b81 100644 --- a/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.ts +++ b/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.ts @@ -10,6 +10,7 @@ import { Disposable, IDisposable, toDisposable } from '../../../../base/common/l import { ResourceMap } from '../../../../base/common/map.js'; import { URI } from '../../../../base/common/uri.js'; import { ChatDebugLogLevel, IChatDebugEvent, IChatDebugLogProvider, IChatDebugResolvedEventContent, IChatDebugService } from './chatDebugService.js'; +import { LocalChatSessionUri } from './model/chatUri.js'; export class ChatDebugServiceImpl extends Disposable implements IChatDebugService { declare readonly _serviceBrand: undefined; @@ -33,6 +34,9 @@ export class ChatDebugServiceImpl extends Disposable implements IChatDebugServic activeSessionResource: URI | undefined; log(sessionResource: URI, name: string, details?: string, level: ChatDebugLogLevel = ChatDebugLogLevel.Info, options?: { id?: string; category?: string; parentEventId?: string }): void { + if (!LocalChatSessionUri.isLocalSession(sessionResource)) { + return; + } this.addEvent({ kind: 'generic', id: options?.id, @@ -118,6 +122,10 @@ export class ChatDebugServiceImpl extends Disposable implements IChatDebugServic } async invokeProviders(sessionResource: URI): Promise { + if (!LocalChatSessionUri.isLocalSession(sessionResource)) { + return; + } + // Cancel only the previous invocation for THIS session, not others. // Each session has its own pipeline so events from multiple sessions // can be streamed concurrently. diff --git a/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.ts b/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.ts index d92c02ee69576..ab5981ff799d7 100644 --- a/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.ts +++ b/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.ts @@ -954,7 +954,7 @@ export class ChatService extends Disposable implements IChatService { let collectedHooks: IChatRequestHooks | undefined; let hasDisabledClaudeHooks = false; try { - const hooksInfo = await this.promptsService.getHooks(token, model.sessionId); + const hooksInfo = await this.promptsService.getHooks(token, model.sessionResource); if (hooksInfo) { collectedHooks = hooksInfo.hooks; hasDisabledClaudeHooks = hooksInfo.hasDisabledClaudeHooks; diff --git a/src/vs/workbench/contrib/chat/common/promptSyntax/computeAutomaticInstructions.ts b/src/vs/workbench/contrib/chat/common/promptSyntax/computeAutomaticInstructions.ts index 62b01c294e54c..16b5459a50c81 100644 --- a/src/vs/workbench/contrib/chat/common/promptSyntax/computeAutomaticInstructions.ts +++ b/src/vs/workbench/contrib/chat/common/promptSyntax/computeAutomaticInstructions.ts @@ -63,7 +63,7 @@ export class ComputeAutomaticInstructions { private readonly _modeKind: ChatModeKind, private readonly _enabledTools: UserSelectedTools | undefined, private readonly _enabledSubagents: (readonly string[]) | undefined, - private readonly _sessionId: string | undefined, + private readonly _sessionResource: URI | undefined, @IPromptsService private readonly _promptsService: IPromptsService, @ILogService public readonly _logService: ILogService, @ILabelService private readonly _labelService: ILabelService, @@ -93,7 +93,7 @@ export class ComputeAutomaticInstructions { public async collect(variables: ChatRequestVariableSet, token: CancellationToken): Promise { - const instructionFiles = await this._promptsService.getInstructionFiles(token, this._sessionId); + const instructionFiles = await this._promptsService.getInstructionFiles(token, this._sessionResource); this._logService.trace(`[InstructionsContextComputer] ${instructionFiles.length} instruction files available.`); @@ -354,7 +354,7 @@ export class ComputeAutomaticInstructions { entries.push('', '', ''); // add trailing newline } - const agentSkills = await this._promptsService.findAgentSkills(token, this._sessionId); + const agentSkills = await this._promptsService.findAgentSkills(token, this._sessionResource); // Filter out skills with disableModelInvocation=true (they can only be triggered manually via /name) const modelInvocableSkills = agentSkills?.filter(skill => !skill.disableModelInvocation); if (modelInvocableSkills && modelInvocableSkills.length > 0) { @@ -400,7 +400,7 @@ export class ComputeAutomaticInstructions { return (agent: ICustomAgent) => subagents.includes(agent.name); } })(); - const agents = await this._promptsService.getCustomAgents(token, this._sessionId); + const agents = await this._promptsService.getCustomAgents(token, this._sessionResource); if (agents.length > 0) { entries.push(''); entries.push('Here is a list of agents that can be used when running a subagent.'); diff --git a/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.ts b/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.ts index a2ca1942cf04f..73f48099a1396 100644 --- a/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.ts +++ b/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.ts @@ -22,7 +22,7 @@ import { IResolvedPromptSourceFolder } from '../config/promptFileLocations.js'; * A debug bridge (e.g. contribution) can listen and forward these to IChatDebugService. */ export interface IPromptDiscoveryLogEntry { - readonly sessionId: string; + readonly sessionResource: URI; readonly name: string; readonly details?: string; readonly category?: string; @@ -410,9 +410,9 @@ export interface IPromptsService extends IDisposable { /** * Returns a prompt command if the command name is valid. - * @param sessionId Optional session ID to scope debug logging to a specific session. + * @param sessionResource Optional session resource to scope debug logging to a specific session. */ - getPromptSlashCommands(token: CancellationToken, sessionId?: string): Promise; + getPromptSlashCommands(token: CancellationToken, sessionResource?: URI): Promise; /** * Returns the prompt command name for the given URI. @@ -426,9 +426,9 @@ export interface IPromptsService extends IDisposable { /** * Finds all available custom agents - * @param sessionId Optional session ID to scope debug logging to a specific session. + * @param sessionResource Optional session resource to scope debug logging to a specific session. */ - getCustomAgents(token: CancellationToken, sessionId?: string): Promise; + getCustomAgents(token: CancellationToken, sessionResource?: URI): Promise; /** * Parses the provided URI @@ -486,30 +486,30 @@ export interface IPromptsService extends IDisposable { /** * Gets list of agent skills files. - * @param sessionId Optional session ID to scope debug logging to a specific session. + * @param sessionResource Optional session resource to scope debug logging to a specific session. */ - findAgentSkills(token: CancellationToken, sessionId?: string): Promise; + findAgentSkills(token: CancellationToken, sessionResource?: URI): Promise; /** * Gets detailed discovery information for a prompt type. * This includes all files found and their load/skip status with reasons. * Used for diagnostics and config-info displays. - * @param sessionId Optional session ID to scope debug logging to a specific session. + * @param sessionResource Optional session resource to scope debug logging to a specific session. */ - getPromptDiscoveryInfo(type: PromptsType, token: CancellationToken, sessionId?: string): Promise; + getPromptDiscoveryInfo(type: PromptsType, token: CancellationToken, sessionResource?: URI): Promise; /** * Gets all hooks collected from hooks.json files. * The result is cached and invalidated when hook files change. - * @param sessionId Optional session ID to scope debug logging to a specific session. + * @param sessionResource Optional session resource to scope debug logging to a specific session. */ - getHooks(token: CancellationToken, sessionId?: string): Promise; + getHooks(token: CancellationToken, sessionResource?: URI): Promise; /** * Gets all instruction files, logging discovery info to the debug log. - * @param sessionId Optional session ID to scope debug logging to a specific session. + * @param sessionResource Optional session resource to scope debug logging to a specific session. */ - getInstructionFiles(token: CancellationToken, sessionId?: string): Promise; + getInstructionFiles(token: CancellationToken, sessionResource?: URI): Promise; /** * Fired when a discovery-related log entry is produced. diff --git a/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts b/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts index 927def920cebd..15e82a428608e 100644 --- a/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts +++ b/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts @@ -574,7 +574,7 @@ export class PromptsService extends Disposable implements IPromptsService { return this.cachedSlashCommands.onDidChange; } - public async getPromptSlashCommands(token: CancellationToken, sessionId?: string): Promise { + public async getPromptSlashCommands(token: CancellationToken, sessionResource?: URI): Promise { return await this.cachedSlashCommands.get(token); } @@ -648,17 +648,17 @@ export class PromptsService extends Disposable implements IPromptsService { return this.cachedCustomAgents.onDidChange; } - public async getCustomAgents(token: CancellationToken, sessionId?: string): Promise { + public async getCustomAgents(token: CancellationToken, sessionResource?: URI): Promise { const sw = StopWatch.create(); const result = await this.cachedCustomAgents.get(token); - if (sessionId) { + if (sessionResource) { const elapsed = sw.elapsed(); const discoveryInfo = await this.getAgentDiscoveryInfo(token); const details = result.length === 1 ? localize("promptsService.resolvedAgent", "Resolved {0} agent in {1}ms", result.length, elapsed.toFixed(1)) : localize("promptsService.resolvedAgents", "Resolved {0} agents in {1}ms", result.length, elapsed.toFixed(1)); this._onDidLogDiscovery.fire({ - sessionId, + sessionResource, name: localize("promptsService.loadAgents", "Load Agents"), details, discoveryInfo, @@ -1042,7 +1042,7 @@ export class PromptsService extends Disposable implements IPromptsService { return this.cachedSkills.onDidChange; } - public async findAgentSkills(token: CancellationToken, sessionId?: string): Promise { + public async findAgentSkills(token: CancellationToken, sessionResource?: URI): Promise { const useAgentSkills = this.configurationService.getValue(PromptsConfig.USE_AGENT_SKILLS); if (!useAgentSkills) { return undefined; @@ -1050,14 +1050,14 @@ export class PromptsService extends Disposable implements IPromptsService { const sw = StopWatch.create(); const result = await this.cachedSkills.get(token); - if (sessionId) { + if (sessionResource) { const elapsed = sw.elapsed(); const discoveryInfo = await this.getSkillDiscoveryInfo(token); const details = result.length === 1 ? localize("promptsService.resolvedSkill", "Resolved {0} skill in {1}ms", result.length, elapsed.toFixed(1)) : localize("promptsService.resolvedSkills", "Resolved {0} skills in {1}ms", result.length, elapsed.toFixed(1)); this._onDidLogDiscovery.fire({ - sessionId, + sessionResource, name: localize("promptsService.loadSkills", "Load Skills"), details, discoveryInfo, @@ -1170,10 +1170,10 @@ export class PromptsService extends Disposable implements IPromptsService { return result; } - public async getHooks(token: CancellationToken, sessionId?: string): Promise { + public async getHooks(token: CancellationToken, sessionResource?: URI): Promise { const sw = StopWatch.create(); const result = await this.cachedHooks.get(token); - if (sessionId) { + if (sessionResource) { const elapsed = sw.elapsed(); const hookCount = result ? Object.values(result.hooks).reduce((sum, arr) => sum + arr.length, 0) : 0; const discoveryInfo = await this.getHookDiscoveryInfo(token); @@ -1181,7 +1181,7 @@ export class PromptsService extends Disposable implements IPromptsService { ? localize("promptsService.resolvedHook", "Resolved {0} hook in {1}ms", hookCount, elapsed.toFixed(1)) : localize("promptsService.resolvedHooks", "Resolved {0} hooks in {1}ms", hookCount, elapsed.toFixed(1)); this._onDidLogDiscovery.fire({ - sessionId, + sessionResource, name: localize("promptsService.loadHooks", "Load Hooks"), details, discoveryInfo, @@ -1191,17 +1191,17 @@ export class PromptsService extends Disposable implements IPromptsService { return result; } - public async getInstructionFiles(token: CancellationToken, sessionId?: string): Promise { + public async getInstructionFiles(token: CancellationToken, sessionResource?: URI): Promise { const sw = StopWatch.create(); const result = await this.listPromptFiles(PromptsType.instructions, token); - if (sessionId) { + if (sessionResource) { const elapsed = sw.elapsed(); const discoveryInfo = await this.getInstructionsDiscoveryInfo(token); const details = result.length === 1 ? localize("promptsService.resolvedInstruction", "Resolved {0} instruction in {1}ms", result.length, elapsed.toFixed(1)) : localize("promptsService.resolvedInstructions", "Resolved {0} instructions in {1}ms", result.length, elapsed.toFixed(1)); this._onDidLogDiscovery.fire({ - sessionId, + sessionResource, name: localize("promptsService.loadInstructions", "Load Instructions"), details, discoveryInfo, @@ -1304,10 +1304,10 @@ export class PromptsService extends Disposable implements IPromptsService { return { hooks: result, hasDisabledClaudeHooks }; } - public async getPromptDiscoveryInfo(type: PromptsType, token: CancellationToken, sessionId?: string): Promise { - if (sessionId) { + public async getPromptDiscoveryInfo(type: PromptsType, token: CancellationToken, sessionResource?: URI): Promise { + if (sessionResource) { this._onDidLogDiscovery.fire({ - sessionId, + sessionResource, name: localize("promptsService.discoveryStart", "Discovery {0} (Start)", type), category: 'discovery', }); @@ -1338,7 +1338,7 @@ export class PromptsService extends Disposable implements IPromptsService { result = { ...result, sourceFolders }; } - if (sessionId) { + if (sessionResource) { const details = localize( "promptsService.discoveryResult", "{0} loaded, {1} skipped", @@ -1346,7 +1346,7 @@ export class PromptsService extends Disposable implements IPromptsService { skippedCount, ); this._onDidLogDiscovery.fire({ - sessionId, + sessionResource, name: localize("promptsService.discoveryEnd", "Discovery {0} (End)", type), details, discoveryInfo: result, diff --git a/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts b/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts index fe31a470b1d6e..bf441cf3d5e49 100644 --- a/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts +++ b/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts @@ -20,7 +20,6 @@ import { IChatProgress, IChatService } from '../../chatService/chatService.js'; import { ChatAgentLocation, ChatConfiguration, ChatModeKind } from '../../constants.js'; import { ILanguageModelsService } from '../../languageModels.js'; import { ChatModel, IChatRequestModeInstructions } from '../../model/chatModel.js'; -import { chatSessionResourceToId } from '../../model/chatUri.js'; import { IChatAgentRequest, IChatAgentService } from '../../participants/chatAgents.js'; import { ComputeAutomaticInstructions } from '../../promptSyntax/computeAutomaticInstructions.js'; import { IChatRequestHooks } from '../../promptSyntax/hookSchema.js'; @@ -245,14 +244,13 @@ export class RunSubagentTool extends Disposable implements IToolImpl { } const variableSet = new ChatRequestVariableSet(); - const sessionId = chatSessionResourceToId(invocation.context.sessionResource); - const computer = this.instantiationService.createInstance(ComputeAutomaticInstructions, ChatModeKind.Agent, modeTools, undefined, sessionId); // agents can not call subagents + const computer = this.instantiationService.createInstance(ComputeAutomaticInstructions, ChatModeKind.Agent, modeTools, undefined, invocation.context.sessionResource); // agents can not call subagents await computer.collect(variableSet, token); // Collect hooks from hook .json files let collectedHooks: IChatRequestHooks | undefined; try { - const info = await this.promptsService.getHooks(token, chatSessionResourceToId(invocation.context.sessionResource)); + const info = await this.promptsService.getHooks(token, invocation.context.sessionResource); collectedHooks = info?.hooks; } catch (error) { this.logService.warn('[ChatService] Failed to collect hooks:', error); diff --git a/src/vs/workbench/contrib/chat/test/browser/promptsDebugContribution.test.ts b/src/vs/workbench/contrib/chat/test/browser/promptsDebugContribution.test.ts index 2233f9cd99294..f5045a72ed8d1 100644 --- a/src/vs/workbench/contrib/chat/test/browser/promptsDebugContribution.test.ts +++ b/src/vs/workbench/contrib/chat/test/browser/promptsDebugContribution.test.ts @@ -10,6 +10,7 @@ import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/tes import { TestInstantiationService } from '../../../../../platform/instantiation/test/common/instantiationServiceMock.js'; import { ChatDebugLogLevel, IChatDebugEvent, IChatDebugGenericEvent, IChatDebugService } from '../../common/chatDebugService.js'; import { ChatDebugServiceImpl } from '../../common/chatDebugServiceImpl.js'; +import { LocalChatSessionUri } from '../../common/model/chatUri.js'; import { PromptsDebugContribution } from '../../browser/promptsDebugContribution.js'; import { IPromptDiscoveryLogEntry, IPromptDiscoveryInfo, IPromptsService, PromptsStorage } from '../../common/promptSyntax/service/promptsService.js'; import { PromptsType } from '../../common/promptSyntax/promptTypes.js'; @@ -38,7 +39,7 @@ suite('PromptsDebugContribution', () => { disposables.add(chatDebugService.onDidAddEvent(e => firedEvents.push(e))); promptsOnDidLogDiscovery.fire({ - sessionId: 'session-1', + sessionResource: LocalChatSessionUri.forSession('session-1'), name: 'Load Instructions', details: 'Resolved 3 instructions in 12.5ms', category: 'discovery', @@ -76,7 +77,7 @@ suite('PromptsDebugContribution', () => { }; promptsOnDidLogDiscovery.fire({ - sessionId: 'session-1', + sessionResource: LocalChatSessionUri.forSession('session-1'), name: 'Discovery End', details: '1 loaded, 0 skipped', category: 'discovery', @@ -114,7 +115,7 @@ suite('PromptsDebugContribution', () => { disposables.add(chatDebugService.onDidAddEvent(e => firedEvents.push(e))); promptsOnDidLogDiscovery.fire({ - sessionId: 'session-1', + sessionResource: LocalChatSessionUri.forSession('session-1'), name: 'Discovery Start', category: 'discovery', }); @@ -149,7 +150,7 @@ suite('PromptsDebugContribution', () => { }; promptsOnDidLogDiscovery.fire({ - sessionId: 'session-1', + sessionResource: LocalChatSessionUri.forSession('session-1'), name: 'Discovery End', discoveryInfo, }); @@ -172,7 +173,7 @@ suite('PromptsDebugContribution', () => { disposables.add(chatDebugService.onDidAddEvent(e => firedEvents.push(e))); promptsOnDidLogDiscovery.fire({ - sessionId: 'session-1', + sessionResource: LocalChatSessionUri.forSession('session-1'), name: 'Test', }); diff --git a/src/vs/workbench/contrib/chat/test/common/chatDebugServiceImpl.test.ts b/src/vs/workbench/contrib/chat/test/common/chatDebugServiceImpl.test.ts index a0df375b4c3d8..5a247eaea99d8 100644 --- a/src/vs/workbench/contrib/chat/test/common/chatDebugServiceImpl.test.ts +++ b/src/vs/workbench/contrib/chat/test/common/chatDebugServiceImpl.test.ts @@ -9,6 +9,7 @@ import { URI } from '../../../../../base/common/uri.js'; import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js'; import { ChatDebugLogLevel, IChatDebugEvent, IChatDebugGenericEvent, IChatDebugLogProvider, IChatDebugModelTurnEvent, IChatDebugResolvedEventContent, IChatDebugToolCallEvent } from '../../common/chatDebugService.js'; import { ChatDebugServiceImpl } from '../../common/chatDebugServiceImpl.js'; +import { LocalChatSessionUri } from '../../common/model/chatUri.js'; suite('ChatDebugServiceImpl', () => { const disposables = ensureNoDisposablesAreLeakedInTestSuite(); @@ -17,9 +18,10 @@ suite('ChatDebugServiceImpl', () => { const session1 = URI.parse('vscode-chat-session://local/session-1'); const session2 = URI.parse('vscode-chat-session://local/session-2'); - const sessionA = URI.parse('vscode-chat-session://local/a'); - const sessionB = URI.parse('vscode-chat-session://local/b'); + const sessionA = LocalChatSessionUri.forSession('a'); + const sessionB = LocalChatSessionUri.forSession('b'); const sessionGeneric = URI.parse('vscode-chat-session://local/session'); + const nonLocalSession = URI.parse('vscode-chat-session://remote-provider/session-1'); setup(() => { service = disposables.add(new ChatDebugServiceImpl()); @@ -145,6 +147,16 @@ suite('ChatDebugServiceImpl', () => { assert.strictEqual(event.category, 'testing'); assert.strictEqual(event.parentEventId, 'parent-1'); }); + + test('should not log events for non-local sessions', () => { + const firedEvents: IChatDebugEvent[] = []; + disposables.add(service.onDidAddEvent(e => firedEvents.push(e))); + + service.log(nonLocalSession, 'should-be-skipped', 'details'); + + assert.strictEqual(firedEvents.length, 0); + assert.strictEqual(service.getEvents(nonLocalSession).length, 0); + }); }); suite('getSessionResources', () => { @@ -319,6 +331,29 @@ suite('ChatDebugServiceImpl', () => { assert.strictEqual(tokenA.isCancellationRequested, false, 'session-a token should not be cancelled'); }); + test('should not invoke providers for non-local sessions', async () => { + let providerCalled = false; + + const provider: IChatDebugLogProvider = { + provideChatDebugLog: async () => { + providerCalled = true; + return [{ + kind: 'generic', + sessionResource: nonLocalSession, + created: new Date(), + name: 'should-not-appear', + level: ChatDebugLogLevel.Info, + }]; + }, + }; + + disposables.add(service.registerProvider(provider)); + await service.invokeProviders(nonLocalSession); + + assert.strictEqual(providerCalled, false); + assert.strictEqual(service.getEvents(nonLocalSession).length, 0); + }); + test('newly registered provider should be invoked for active sessions', async () => { // Start an invocation before the provider is registered const firstProvider: IChatDebugLogProvider = { diff --git a/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/mockPromptsService.ts b/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/mockPromptsService.ts index d222b92eb6817..e01bc0089f014 100644 --- a/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/mockPromptsService.ts +++ b/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/mockPromptsService.ts @@ -31,7 +31,7 @@ export class MockPromptsService implements IPromptsService { this._onDidChangeCustomChatModes.fire(); } - async getCustomAgents(token: CancellationToken, sessionId?: string): Promise { + async getCustomAgents(token: CancellationToken, sessionResource?: URI): Promise { return this._customModes; } @@ -50,7 +50,7 @@ export class MockPromptsService implements IPromptsService { resolvePromptSlashCommand(command: string, _token: CancellationToken): Promise { throw new Error('Not implemented'); } get onDidChangeSlashCommands(): Event { throw new Error('Not implemented'); } // eslint-disable-next-line @typescript-eslint/no-explicit-any - getPromptSlashCommands(_token: CancellationToken, _sessionId?: string): Promise { throw new Error('Not implemented'); } + getPromptSlashCommands(_token: CancellationToken, _sessionResource?: URI): Promise { throw new Error('Not implemented'); } getPromptSlashCommandName(uri: URI, _token: CancellationToken): Promise { throw new Error('Not implemented'); } // eslint-disable-next-line @typescript-eslint/no-explicit-any parse(_uri: URI, _type: any, _token: CancellationToken): Promise { throw new Error('Not implemented'); } @@ -65,11 +65,11 @@ export class MockPromptsService implements IPromptsService { getDisabledPromptFiles(type: PromptsType): ResourceSet { throw new Error('Method not implemented.'); } setDisabledPromptFiles(type: PromptsType, uris: ResourceSet): void { throw new Error('Method not implemented.'); } registerPromptFileProvider(extension: IExtensionDescription, type: PromptsType, provider: { providePromptFiles: (context: IPromptFileContext, token: CancellationToken) => Promise }): IDisposable { throw new Error('Method not implemented.'); } - findAgentSkills(token: CancellationToken, sessionId?: string): Promise { throw new Error('Method not implemented.'); } + findAgentSkills(token: CancellationToken, sessionResource?: URI): Promise { throw new Error('Method not implemented.'); } // eslint-disable-next-line @typescript-eslint/no-explicit-any - getPromptDiscoveryInfo(_type: any, _token: CancellationToken, _sessionId?: string): Promise { throw new Error('Method not implemented.'); } + getPromptDiscoveryInfo(_type: any, _token: CancellationToken, _sessionResource?: URI): Promise { throw new Error('Method not implemented.'); } // eslint-disable-next-line @typescript-eslint/no-explicit-any - getHooks(_token: CancellationToken): Promise { throw new Error('Method not implemented.'); } - getInstructionFiles(_token: CancellationToken, _sessionId?: string): Promise { throw new Error('Method not implemented.'); } + getHooks(_token: CancellationToken, _sessionResource?: URI): Promise { throw new Error('Method not implemented.'); } + getInstructionFiles(_token: CancellationToken, _sessionResource?: URI): Promise { throw new Error('Method not implemented.'); } dispose(): void { } } From 45f0b9b3ad2b7d06be8431cb2b800938222ad944 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 18:31:30 -0800 Subject: [PATCH 43/48] Enhance DelegationSessionPickerActionItem to restrict delegation based on session window context, improving session management --- .../widget/input/delegationSessionPickerActionItem.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts index 86a97f0267d1b..f7d921a424561 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.ts @@ -69,12 +69,17 @@ export class DelegationSessionPickerActionItem extends SessionTypePickerActionIt const allContributions = this.chatSessionsService.getAllChatSessionContributions(); const contribution = allContributions.find(contribution => getAgentSessionProvider(contribution.type) === type); - // In core VS Code, only allow delegation from local sessions - if (!this._isSessionsWindow && this.delegate.getActiveSessionProvider() !== AgentSessionProviders.Local) { + // In core VS Code, only allow delegation from local sessions. + // In the sessions window, only allow delegation from background sessions (not cloud). + const activeProvider = this.delegate.getActiveSessionProvider(); + if (!this._isSessionsWindow && activeProvider !== AgentSessionProviders.Local) { + return false; + } + if (this._isSessionsWindow && activeProvider !== AgentSessionProviders.Background) { return false; } - if (contribution && !contribution.canDelegate && this.delegate.getActiveSessionProvider() !== type /* Allow switching back to active type */) { + if (contribution && !contribution.canDelegate && activeProvider !== type /* Allow switching back to active type */) { return false; } From fbf6e8f549897a45c4e42f2978de7dbe1971d2d8 Mon Sep 17 00:00:00 2001 From: David Dossett <25163139+daviddossett@users.noreply.github.com> Date: Wed, 25 Feb 2026 18:33:29 -0800 Subject: [PATCH 44/48] Reduce agent session title row gap (#297837) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../chat/browser/agentSessions/media/agentsessionsviewer.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css b/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css index 8edec5cccc335..84a06b2877e8e 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css @@ -139,7 +139,7 @@ .agent-session-title-row { line-height: 17px; - padding-bottom: 6px; + padding-bottom: 4px; } .agent-session-details-row { From fdc18805a0558b70df1f4c815bc62b992baf40b6 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 26 Feb 2026 02:34:56 +0000 Subject: [PATCH 45/48] Add source to cancel noop telemetry (#297850) --- .../browser/actions/chatExecuteActions.ts | 4 ++-- .../chat/browser/actions/chatQueueActions.ts | 2 +- .../contrib/chat/browser/widget/chatWidget.ts | 4 ++-- .../chat/common/chatService/chatService.ts | 6 +++--- .../common/chatService/chatServiceImpl.ts | 20 +++++++++---------- .../localAgentSessionsController.test.ts | 2 +- .../common/chatService/mockChatService.ts | 2 +- .../browser/inlineChatController.ts | 2 +- .../browser/inlineChatSessionServiceImpl.ts | 2 +- .../chat/browser/terminalChatWidget.ts | 2 +- 10 files changed, 22 insertions(+), 24 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts b/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts index 7e505aa90765c..9701a79f06436 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts @@ -807,7 +807,7 @@ class SendToNewChatAction extends Action2 { // Cancel any in-progress request before clearing if (widget.viewModel) { - chatService.cancelCurrentRequestForSession(widget.viewModel.sessionResource); + chatService.cancelCurrentRequestForSession(widget.viewModel.sessionResource, 'newSessionAction'); } if (widget.viewModel?.model) { @@ -886,7 +886,7 @@ export class CancelAction extends Action2 { const chatService = accessor.get(IChatService); if (widget.viewModel) { - chatService.cancelCurrentRequestForSession(widget.viewModel.sessionResource); + chatService.cancelCurrentRequestForSession(widget.viewModel.sessionResource, 'cancelAction'); } else { telemetryService.publicLog2(ChatStopCancellationNoopEventName, { source: 'cancelAction', diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.ts b/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.ts index a8d166e68f7d2..2db5e67e5d3c3 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.ts @@ -213,7 +213,7 @@ export class ChatSendPendingImmediatelyAction extends Action2 { ]; chatService.setPendingRequests(context.sessionResource, reordered); - chatService.cancelCurrentRequestForSession(context.sessionResource); + chatService.cancelCurrentRequestForSession(context.sessionResource, 'queueRunNext'); chatService.processPendingRequests(context.sessionResource); } } diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts index 214533564961b..3bfcd7797ae06 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts @@ -2393,7 +2393,7 @@ export class ChatWidget extends Disposable implements IChatWidget { this.chatService.removePendingRequest(this.viewModel.sessionResource, editingRequestId); options.queue ??= editingPendingRequest; } else { - this.chatService.cancelCurrentRequestForSession(this.viewModel.sessionResource); + this.chatService.cancelCurrentRequestForSession(this.viewModel.sessionResource, 'acceptInput-editing'); options.queue = undefined; } @@ -2413,7 +2413,7 @@ export class ChatWidget extends Disposable implements IChatWidget { options.queue ??= ChatRequestQueueKind.Queued; } if (model.requestNeedsInput.get() && !model.getPendingRequests().length) { - this.chatService.cancelCurrentRequestForSession(this.viewModel.sessionResource); + this.chatService.cancelCurrentRequestForSession(this.viewModel.sessionResource, 'acceptInput-needsInput'); options.queue ??= ChatRequestQueueKind.Queued; } if (requestInProgress) { diff --git a/src/vs/workbench/contrib/chat/common/chatService/chatService.ts b/src/vs/workbench/contrib/chat/common/chatService/chatService.ts index bdfb80a30cd18..c2edad1d45c52 100644 --- a/src/vs/workbench/contrib/chat/common/chatService/chatService.ts +++ b/src/vs/workbench/contrib/chat/common/chatService/chatService.ts @@ -1409,7 +1409,7 @@ export interface IChatService { resendRequest(request: IChatRequestModel, options?: IChatSendRequestOptions): Promise; adoptRequest(sessionResource: URI, request: IChatRequestModel): Promise; removeRequest(sessionResource: URI, requestId: string): Promise; - cancelCurrentRequestForSession(sessionResource: URI, isInlineChat?: boolean): void; + cancelCurrentRequestForSession(sessionResource: URI, source?: string): void; /** * Sets yieldRequested on the active request for the given session. */ @@ -1485,7 +1485,7 @@ export interface IChatSessionStartOptions { export const ChatStopCancellationNoopEventName = 'chat.stopCancellationNoop'; export type ChatStopCancellationNoopEvent = { - source: 'cancelAction' | 'chatService'; + source: string; reason: 'noWidget' | 'noViewModel' | 'noPendingRequest' | 'requestAlreadyCanceled' | 'requestIdUnavailable'; requestInProgress: 'true' | 'false' | 'unknown'; pendingRequests: number; @@ -1504,7 +1504,7 @@ export const ChatPendingRequestChangeEventName = 'chat.pendingRequestChange'; export type ChatPendingRequestChangeEvent = { action: 'add' | 'remove' | 'notCancelable'; - source: 'sendRequest' | 'sendRequestComplete' | 'removeRequest' | 'cancelRequest' | 'adoptRequest' | 'remoteSession'; + source: string; }; export type ChatPendingRequestChangeClassification = { diff --git a/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.ts b/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.ts index ab5981ff799d7..57a993bb914d0 100644 --- a/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.ts +++ b/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.ts @@ -1434,28 +1434,26 @@ export class ChatService extends Disposable implements IChatService { request.response?.complete(); } - cancelCurrentRequestForSession(sessionResource: URI, isInlineChat?: boolean): void { + cancelCurrentRequestForSession(sessionResource: URI, source?: string): void { this.trace('cancelCurrentRequestForSession', `session: ${sessionResource}`); const pendingRequest = this._pendingRequests.get(sessionResource); if (!pendingRequest) { const model = this._sessionModels.get(sessionResource); const requestInProgress = model?.requestInProgress.get(); const pendingRequestsCount = model?.getPendingRequests().length ?? 0; - if (!isInlineChat) { - this.telemetryService.publicLog2(ChatStopCancellationNoopEventName, { - source: 'chatService', - reason: 'noPendingRequest', - requestInProgress: requestInProgress === undefined ? 'unknown' : requestInProgress ? 'true' : 'false', - pendingRequests: pendingRequestsCount, - }); - this.info('cancelCurrentRequestForSession', `No pending request was found for session ${sessionResource}. requestInProgress=${requestInProgress ?? 'unknown'}, pendingRequests=${pendingRequestsCount}`); - } + this.telemetryService.publicLog2(ChatStopCancellationNoopEventName, { + source: source ?? 'chatService', + reason: 'noPendingRequest', + requestInProgress: requestInProgress === undefined ? 'unknown' : requestInProgress ? 'true' : 'false', + pendingRequests: pendingRequestsCount, + }); + this.info('cancelCurrentRequestForSession', `No pending request was found for session ${sessionResource}. requestInProgress=${requestInProgress ?? 'unknown'}, pendingRequests=${pendingRequestsCount}`); return; } pendingRequest.cancel(); this._pendingRequests.deleteAndDispose(sessionResource); - this.telemetryService.publicLog2(ChatPendingRequestChangeEventName, { action: 'remove', source: 'cancelRequest' }); + this.telemetryService.publicLog2(ChatPendingRequestChangeEventName, { action: 'remove', source: source ?? 'cancelRequest' }); } setYieldRequested(sessionResource: URI): void { diff --git a/src/vs/workbench/contrib/chat/test/browser/agentSessions/localAgentSessionsController.test.ts b/src/vs/workbench/contrib/chat/test/browser/agentSessions/localAgentSessionsController.test.ts index 8113041814474..b15974182e42f 100644 --- a/src/vs/workbench/contrib/chat/test/browser/agentSessions/localAgentSessionsController.test.ts +++ b/src/vs/workbench/contrib/chat/test/browser/agentSessions/localAgentSessionsController.test.ts @@ -150,7 +150,7 @@ class MockChatService implements IChatService { throw new Error('Method not implemented.'); } - cancelCurrentRequestForSession(_sessionResource: URI): void { } + cancelCurrentRequestForSession(_sessionResource: URI, _source?: string): void { } setYieldRequested(_sessionResource: URI): void { } diff --git a/src/vs/workbench/contrib/chat/test/common/chatService/mockChatService.ts b/src/vs/workbench/contrib/chat/test/common/chatService/mockChatService.ts index df44c9f3fd461..54579be64cb42 100644 --- a/src/vs/workbench/contrib/chat/test/common/chatService/mockChatService.ts +++ b/src/vs/workbench/contrib/chat/test/common/chatService/mockChatService.ts @@ -89,7 +89,7 @@ export class MockChatService implements IChatService { removeRequest(sessionResource: URI, requestId: string): Promise { throw new Error('Method not implemented.'); } - cancelCurrentRequestForSession(sessionResource: URI): void { + cancelCurrentRequestForSession(sessionResource: URI, source?: string): void { throw new Error('Method not implemented.'); } setYieldRequested(sessionResource: URI): void { diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts index c13f86866fa9f..ad180ba141c7b 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts @@ -604,7 +604,7 @@ export class InlineChatController implements IEditorContribution { if (!session) { return; } - this._chatService.cancelCurrentRequestForSession(session.chatModel.sessionResource); + this._chatService.cancelCurrentRequestForSession(session.chatModel.sessionResource, 'inlineChatReject'); await session.editingSession.reject(); session.dispose(); } diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.ts index 97d99bf403bda..4a008a59b0f9d 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.ts @@ -86,7 +86,7 @@ export class InlineChatSessionServiceImpl implements IInlineChatSessionService { const store = new DisposableStore(); store.add(toDisposable(() => { - this._chatService.cancelCurrentRequestForSession(chatModel.sessionResource, true); + this._chatService.cancelCurrentRequestForSession(chatModel.sessionResource, 'inlineChatSession'); chatModel.editingSession?.reject(); this._sessions.delete(uri); this._onDidChangeSessions.fire(this); diff --git a/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.ts b/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.ts index 606acf234a1b4..2be6c5d9e96c5 100644 --- a/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.ts +++ b/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.ts @@ -412,7 +412,7 @@ export class TerminalChatWidget extends Disposable { if (!model?.sessionResource) { return; } - this._chatService.cancelCurrentRequestForSession(model?.sessionResource, true); + this._chatService.cancelCurrentRequestForSession(model?.sessionResource, 'terminalChat'); } async viewInChat(): Promise { From 5b26799b7465e90df78e7b7852f1efd784bab250 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Wed, 25 Feb 2026 19:31:53 -0800 Subject: [PATCH 46/48] Sessions window: small fix --- .../chat/browser/actions/chatContinueInAction.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts index fb1450fb448a6..40827f04060d7 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.ts @@ -26,7 +26,7 @@ import { IKeybindingService } from '../../../../../platform/keybinding/common/ke import { ITelemetryService } from '../../../../../platform/telemetry/common/telemetry.js'; import { IOpenerService } from '../../../../../platform/opener/common/opener.js'; import { IWorkbenchContribution } from '../../../../common/contributions.js'; -import { ResourceContextKey } from '../../../../common/contextkeys.js'; +import { IsSessionsWindowContext, ResourceContextKey } from '../../../../common/contextkeys.js'; import { IEditorService } from '../../../../services/editor/common/editorService.js'; import { IFileService } from '../../../../../platform/files/common/files.js'; import { IChatAgentService } from '../../common/participants/chatAgents.js'; @@ -432,11 +432,12 @@ export class CreateRemoteAgentJobAction { const continuationTargetType = continuationTarget.type; - // When source and target session types differ, open a new session of - // the target type with the prompt and context instead of sending to - // the current (incompatible) session resource. + // When source and target session types differ in the sessions window, + // open a new session of the target type with the prompt and context + // instead of sending to the current (incompatible) session resource. + const isSessionsWindow = IsSessionsWindowContext.getValue(contextKeyService); const sourceProvider = getAgentSessionProvider(sessionResource); - if (sourceProvider && sourceProvider !== continuationTargetType) { + if (isSessionsWindow && sourceProvider && sourceProvider !== continuationTargetType) { const isSidebar = isIChatViewViewContext(widget.viewContext); const actionId = isSidebar ? `workbench.action.chat.openNewSessionSidebar.${continuationTargetType}` From 8a342660e1eff31609604596dbf48bbff613e529 Mon Sep 17 00:00:00 2001 From: Josh Spicer <23246594+joshspicer@users.noreply.github.com> Date: Wed, 25 Feb 2026 19:33:41 -0800 Subject: [PATCH 47/48] chat customizations: align with cli (#297853) * ai customizations: CLI compatibility - filter profile files, show agent instructions - Remove Prompts from sessions managementSections - Show AGENTS.md, CLAUDE.md, copilot-instructions.md in Instructions section - Add excludedUserFileRoots to hide VS Code profile files in sessions - Filter excluded roots in badge counts and total counts Refs #297343 * ai customizations: user storage path override for CLI compatibility - Add chat.customizationsMenu.userStoragePath setting (experimental) - When set, user-level file creation targets the override path (e.g. ~/.copilot/instructions/ instead of VS Code profile) - Sessions config sets override to ~/.copilot - Agents and hooks skip the override (no CLI convention for those) - Add tests for resolveUserTargetDirectory Refs #297343 * ai customizations: hide MCP Servers from sessions view MCP configuration in the CLI is being unified separately. Re-enable once CLI MCP config is aligned with VS Code. Refs #297343 * tidy * ai customizations: restore Prompts section in sessions view * fix prompts --- .../aiCustomizationWorkspaceService.ts | 8 +- .../contrib/chat/browser/slashCommands.ts | 7 - .../browser/configuration.contribution.ts | 2 + .../sessions/browser/customizationCounts.ts | 35 +++-- .../customizationsToolbar.contribution.ts | 25 ++-- .../aiCustomizationListWidget.ts | 37 ++++- .../aiCustomizationManagementEditor.ts | 4 +- .../aiCustomizationWorkspaceService.ts | 2 + .../customizationCreatorService.ts | 38 ++++- .../contrib/chat/browser/chat.contribution.ts | 6 + .../common/aiCustomizationWorkspaceService.ts | 6 + .../contrib/chat/common/constants.ts | 1 + .../customizationCreatorService.test.ts | 140 ++++++++++++++++++ 13 files changed, 272 insertions(+), 39 deletions(-) create mode 100644 src/vs/workbench/contrib/chat/test/browser/aiCustomization/customizationCreatorService.test.ts diff --git a/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.ts b/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.ts index 02b43d147dbbb..bfb415f522f33 100644 --- a/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.ts +++ b/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.ts @@ -9,6 +9,7 @@ import { IAICustomizationWorkspaceService, AICustomizationManagementSection } fr import { PromptsStorage } from '../../../../workbench/contrib/chat/common/promptSyntax/service/promptsService.js'; import { ISessionsManagementService } from '../../sessions/browser/sessionsManagementService.js'; import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js'; +import { IUserDataProfilesService } from '../../../../platform/userDataProfile/common/userDataProfile.js'; import { CustomizationCreatorService } from '../../../../workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js'; import { PromptsType } from '../../../../workbench/contrib/chat/common/promptSyntax/promptTypes.js'; @@ -22,10 +23,14 @@ export class SessionsAICustomizationWorkspaceService implements IAICustomization readonly activeProjectRoot: IObservable; + readonly excludedUserFileRoots: readonly URI[]; + constructor( @ISessionsManagementService private readonly sessionsService: ISessionsManagementService, @IInstantiationService private readonly instantiationService: IInstantiationService, + @IUserDataProfilesService userDataProfilesService: IUserDataProfilesService, ) { + this.excludedUserFileRoots = [userDataProfilesService.defaultProfile.promptsHome]; this.activeProjectRoot = derived(reader => { const session = this.sessionsService.activeSession.read(reader); return session?.worktree ?? session?.repository; @@ -43,7 +48,8 @@ export class SessionsAICustomizationWorkspaceService implements IAICustomization AICustomizationManagementSection.Instructions, AICustomizationManagementSection.Prompts, AICustomizationManagementSection.Hooks, - AICustomizationManagementSection.McpServers, + // TODO: Re-enable MCP Servers once CLI MCP configuration is unified with VS Code + // AICustomizationManagementSection.McpServers, ]; readonly visibleStorageSources: readonly PromptsStorage[] = [ diff --git a/src/vs/sessions/contrib/chat/browser/slashCommands.ts b/src/vs/sessions/contrib/chat/browser/slashCommands.ts index 573f184fb026e..a2b6d2dc343dc 100644 --- a/src/vs/sessions/contrib/chat/browser/slashCommands.ts +++ b/src/vs/sessions/contrib/chat/browser/slashCommands.ts @@ -134,13 +134,6 @@ export class SlashCommandHandler extends Disposable { executeImmediately: true, execute: openSection(AICustomizationManagementSection.Hooks), }); - this._slashCommands.push({ - command: 'mcp', - detail: localize('slashCommand.mcp', "View and manage MCP servers"), - sortText: 'z3_mcp', - executeImmediately: true, - execute: openSection(AICustomizationManagementSection.McpServers), - }); } private _registerDecorations(): void { diff --git a/src/vs/sessions/contrib/configuration/browser/configuration.contribution.ts b/src/vs/sessions/contrib/configuration/browser/configuration.contribution.ts index 4ed1b598aa25e..bbd83462075ee 100644 --- a/src/vs/sessions/contrib/configuration/browser/configuration.contribution.ts +++ b/src/vs/sessions/contrib/configuration/browser/configuration.contribution.ts @@ -30,6 +30,8 @@ Registry.as(Extensions.Configuration).registerDefaultCon 'github.copilot.chat.languageContext.typescript.enabled': true, 'github.copilot.chat.cli.mcp.enabled': true, + 'chat.customizationsMenu.userStoragePath': '~/.copilot', + 'inlineChat.affordance': 'editor', 'inlineChat.renderMode': 'hover', diff --git a/src/vs/sessions/contrib/sessions/browser/customizationCounts.ts b/src/vs/sessions/contrib/sessions/browser/customizationCounts.ts index 5b528d0d4cc1f..ce46e82314f23 100644 --- a/src/vs/sessions/contrib/sessions/browser/customizationCounts.ts +++ b/src/vs/sessions/contrib/sessions/browser/customizationCounts.ts @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import { CancellationToken } from '../../../../base/common/cancellation.js'; +import { URI } from '../../../../base/common/uri.js'; +import { isEqualOrParent } from '../../../../base/common/resources.js'; import { PromptsType } from '../../../../workbench/contrib/chat/common/promptSyntax/promptTypes.js'; import { IPromptsService, PromptsStorage } from '../../../../workbench/contrib/chat/common/promptSyntax/service/promptsService.js'; import { IMcpService } from '../../../../workbench/contrib/mcp/common/mcpTypes.js'; @@ -33,38 +35,53 @@ export function getSourceCountsTotal(counts: ISourceCounts, workspaceService: IA return total; } -export async function getPromptSourceCounts(promptsService: IPromptsService, promptType: PromptsType): Promise { +/** + * Returns true if the URI should be excluded based on excluded user file roots. + */ +function isExcludedUserFile(uri: URI, excludedRoots: readonly URI[]): boolean { + return excludedRoots.some(root => isEqualOrParent(uri, root)); +} + +export async function getPromptSourceCounts(promptsService: IPromptsService, promptType: PromptsType, excludedUserFileRoots: readonly URI[] = []): Promise { const [workspaceItems, userItems, extensionItems] = await Promise.all([ promptsService.listPromptFilesForStorage(promptType, PromptsStorage.local, CancellationToken.None), promptsService.listPromptFilesForStorage(promptType, PromptsStorage.user, CancellationToken.None), promptsService.listPromptFilesForStorage(promptType, PromptsStorage.extension, CancellationToken.None), ]); + const filteredUserItems = excludedUserFileRoots.length > 0 + ? userItems.filter(item => !isExcludedUserFile(item.uri, excludedUserFileRoots)) + : userItems; return { workspace: workspaceItems.length, - user: userItems.length, + user: filteredUserItems.length, extension: extensionItems.length, }; } -export async function getSkillSourceCounts(promptsService: IPromptsService): Promise { +export async function getSkillSourceCounts(promptsService: IPromptsService, excludedUserFileRoots: readonly URI[] = []): Promise { const skills = await promptsService.findAgentSkills(CancellationToken.None); if (!skills || skills.length === 0) { return { workspace: 0, user: 0, extension: 0 }; } + const userSkills = skills.filter(s => s.storage === PromptsStorage.user); + const filteredUserSkills = excludedUserFileRoots.length > 0 + ? userSkills.filter(s => !isExcludedUserFile(s.uri, excludedUserFileRoots)) + : userSkills; return { workspace: skills.filter(s => s.storage === PromptsStorage.local).length, - user: skills.filter(s => s.storage === PromptsStorage.user).length, + user: filteredUserSkills.length, extension: skills.filter(s => s.storage === PromptsStorage.extension).length, }; } export async function getCustomizationTotalCount(promptsService: IPromptsService, mcpService: IMcpService, workspaceService: IAICustomizationWorkspaceService): Promise { + const excluded = workspaceService.excludedUserFileRoots; const [agentCounts, skillCounts, instructionCounts, promptCounts, hookCounts] = await Promise.all([ - getPromptSourceCounts(promptsService, PromptsType.agent), - getSkillSourceCounts(promptsService), - getPromptSourceCounts(promptsService, PromptsType.instructions), - getPromptSourceCounts(promptsService, PromptsType.prompt), - getPromptSourceCounts(promptsService, PromptsType.hook), + getPromptSourceCounts(promptsService, PromptsType.agent, excluded), + getSkillSourceCounts(promptsService, excluded), + getPromptSourceCounts(promptsService, PromptsType.instructions, excluded), + getPromptSourceCounts(promptsService, PromptsType.prompt, excluded), + getPromptSourceCounts(promptsService, PromptsType.hook, excluded), ]); return getSourceCountsTotal(agentCounts, workspaceService) diff --git a/src/vs/sessions/contrib/sessions/browser/customizationsToolbar.contribution.ts b/src/vs/sessions/contrib/sessions/browser/customizationsToolbar.contribution.ts index 041463a5977bc..23398d75287f9 100644 --- a/src/vs/sessions/contrib/sessions/browser/customizationsToolbar.contribution.ts +++ b/src/vs/sessions/contrib/sessions/browser/customizationsToolbar.contribution.ts @@ -5,7 +5,6 @@ import '../../../browser/media/sidebarActionButton.css'; import './media/customizationsToolbar.css'; -import { Codicon } from '../../../../base/common/codicons.js'; import { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js'; import { ThemeIcon } from '../../../../base/common/themables.js'; import { localize, localize2 } from '../../../../nls.js'; @@ -34,12 +33,14 @@ import { getPromptSourceCounts, getSkillSourceCounts, getSourceCountsTotal, ISou import { IEditorService } from '../../../../workbench/services/editor/common/editorService.js'; import { IAICustomizationWorkspaceService } from '../../../../workbench/contrib/chat/common/aiCustomizationWorkspaceService.js'; +import { URI } from '../../../../base/common/uri.js'; + interface ICustomizationItemConfig { readonly id: string; readonly label: string; readonly icon: ThemeIcon; readonly section: AICustomizationManagementSection; - readonly getSourceCounts?: (promptsService: IPromptsService) => Promise; + readonly getSourceCounts?: (promptsService: IPromptsService, excludedUserFileRoots: readonly URI[]) => Promise; readonly getCount?: (languageModelsService: ILanguageModelsService, mcpService: IMcpService) => Promise; } @@ -49,43 +50,37 @@ const CUSTOMIZATION_ITEMS: ICustomizationItemConfig[] = [ label: localize('agents', "Agents"), icon: agentIcon, section: AICustomizationManagementSection.Agents, - getSourceCounts: (ps) => getPromptSourceCounts(ps, PromptsType.agent), + getSourceCounts: (ps, ex) => getPromptSourceCounts(ps, PromptsType.agent, ex), }, { id: 'sessions.customization.skills', label: localize('skills', "Skills"), icon: skillIcon, section: AICustomizationManagementSection.Skills, - getSourceCounts: (ps) => getSkillSourceCounts(ps), + getSourceCounts: (ps, ex) => getSkillSourceCounts(ps, ex), }, { id: 'sessions.customization.instructions', label: localize('instructions', "Instructions"), icon: instructionsIcon, section: AICustomizationManagementSection.Instructions, - getSourceCounts: (ps) => getPromptSourceCounts(ps, PromptsType.instructions), + getSourceCounts: (ps, ex) => getPromptSourceCounts(ps, PromptsType.instructions, ex), }, { id: 'sessions.customization.prompts', label: localize('prompts', "Prompts"), icon: promptIcon, section: AICustomizationManagementSection.Prompts, - getSourceCounts: (ps) => getPromptSourceCounts(ps, PromptsType.prompt), + getSourceCounts: (ps, ex) => getPromptSourceCounts(ps, PromptsType.prompt, ex), }, { id: 'sessions.customization.hooks', label: localize('hooks', "Hooks"), icon: hookIcon, section: AICustomizationManagementSection.Hooks, - getSourceCounts: (ps) => getPromptSourceCounts(ps, PromptsType.hook), - }, - { - id: 'sessions.customization.mcpServers', - label: localize('mcpServers', "MCP Servers"), - icon: Codicon.server, - section: AICustomizationManagementSection.McpServers, - getCount: (_lm, mcp) => Promise.resolve(mcp.servers.get().length), + getSourceCounts: (ps, ex) => getPromptSourceCounts(ps, PromptsType.hook, ex), }, + // TODO: Re-enable MCP Servers once CLI MCP configuration is unified with VS Code ]; /** @@ -167,7 +162,7 @@ class CustomizationLinkViewItem extends ActionViewItem { } if (this._config.getSourceCounts) { - const counts = await this._config.getSourceCounts(this._promptsService); + const counts = await this._config.getSourceCounts(this._promptsService, this._workspaceService.excludedUserFileRoots); this._renderSourceCounts(this._countContainer, counts); } else if (this._config.getCount) { const count = await this._config.getCount(this._languageModelsService, this._mcpService); diff --git a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts index e64986e1f56c4..5f52802bda9cb 100644 --- a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts @@ -9,7 +9,7 @@ import { Disposable, DisposableStore } from '../../../../../base/common/lifecycl import { Emitter, Event } from '../../../../../base/common/event.js'; import { CancellationToken } from '../../../../../base/common/cancellation.js'; import { autorun } from '../../../../../base/common/observable.js'; -import { basename, dirname } from '../../../../../base/common/resources.js'; +import { basename, dirname, isEqualOrParent } from '../../../../../base/common/resources.js'; import { ThemeIcon } from '../../../../../base/common/themables.js'; import { URI } from '../../../../../base/common/uri.js'; import { Codicon } from '../../../../../base/common/codicons.js'; @@ -820,8 +820,29 @@ export class AICustomizationListWidget extends Disposable { }); } } else { - // For instructions, fetch once and group by storage - const allItems = await this.promptsService.listPromptFiles(promptType, CancellationToken.None); + // For instructions, fetch prompt files and group by storage + const promptFiles = await this.promptsService.listPromptFiles(promptType, CancellationToken.None); + const allItems: IPromptPath[] = [...promptFiles]; + + // Also include agent instruction files (AGENTS.md, CLAUDE.md, copilot-instructions.md) + if (promptType === PromptsType.instructions) { + const agentInstructions = await this.promptsService.listAgentInstructions(CancellationToken.None, undefined); + const workspaceFolderUris = this.workspaceContextService.getWorkspace().folders.map(f => f.uri); + const activeRoot = this.workspaceService.getActiveProjectRoot(); + if (activeRoot) { + workspaceFolderUris.push(activeRoot); + } + for (const file of agentInstructions) { + const isWorkspaceFile = workspaceFolderUris.some(root => isEqualOrParent(file.uri, root)); + allItems.push({ + uri: file.uri, + storage: isWorkspaceFile ? PromptsStorage.local : PromptsStorage.user, + type: PromptsType.instructions, + name: basename(file.uri), + }); + } + } + const workspaceItems = allItems.filter(item => item.storage === PromptsStorage.local); const userItems = allItems.filter(item => item.storage === PromptsStorage.user); const extensionItems = allItems.filter(item => item.storage === PromptsStorage.extension); @@ -848,6 +869,16 @@ export class AICustomizationListWidget extends Disposable { items.push(...pluginItems.map(mapToListItem)); } + // Filter out files under excluded user roots + const excludedRoots = this.workspaceService.excludedUserFileRoots; + if (excludedRoots.length > 0) { + for (let i = items.length - 1; i >= 0; i--) { + if (items[i].storage === PromptsStorage.user && excludedRoots.some(root => isEqualOrParent(items[i].uri, root))) { + items.splice(i, 1); + } + } + } + // Sort items by name items.sort((a, b) => a.name.localeCompare(b.name)); diff --git a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts index ff064db678084..8095e29d8a6c2 100644 --- a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts +++ b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts @@ -61,6 +61,7 @@ import { ILayoutService } from '../../../../../platform/layout/browser/layoutSer import { getSimpleEditorOptions } from '../../../codeEditor/browser/simpleEditorOptions.js'; import { IWorkingCopyService } from '../../../../services/workingCopy/common/workingCopyService.js'; import { ITextFileService } from '../../../../services/textfile/common/textfiles.js'; +import { IPathService } from '../../../../services/path/common/pathService.js'; import { McpServerEditorInput } from '../../../mcp/browser/mcpServerEditorInput.js'; import { McpServerEditor } from '../../../mcp/browser/mcpServerEditor.js'; import { IWorkbenchMcpServer } from '../../../mcp/common/mcpTypes.js'; @@ -183,6 +184,7 @@ export class AICustomizationManagementEditor extends EditorPane { @ILayoutService private readonly layoutService: ILayoutService, @IWorkingCopyService private readonly workingCopyService: IWorkingCopyService, @ITextFileService private readonly textFileService: ITextFileService, + @IPathService private readonly pathService: IPathService, ) { super(AICustomizationManagementEditor.ID, group, telemetryService, themeService, storageService); @@ -513,7 +515,7 @@ export class AICustomizationManagementEditor extends EditorPane { const targetDir = target === 'workspace' ? resolveWorkspaceTargetDirectory(this.workspaceService, type) - : await resolveUserTargetDirectory(this.promptsService, type); + : await resolveUserTargetDirectory(this.promptsService, type, this.configurationService, this.pathService); const options: INewPromptOptions = { targetFolder: targetDir, diff --git a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.ts b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.ts index 8c2cdc5228452..4f4828681261b 100644 --- a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.ts +++ b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.ts @@ -62,6 +62,8 @@ class AICustomizationWorkspaceService implements IAICustomizationWorkspaceServic readonly preferManualCreation = false; + readonly excludedUserFileRoots: readonly URI[] = []; + async commitFiles(_projectRoot: URI, _fileUris: URI[]): Promise { // No-op in core VS Code. } diff --git a/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.ts b/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.ts index e8188abf63b04..00d0721d35bcf 100644 --- a/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.ts +++ b/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.ts @@ -6,13 +6,15 @@ import { IAICustomizationWorkspaceService } from '../../common/aiCustomizationWorkspaceService.js'; import { IChatWidgetService } from '../chat.js'; import { IChatService } from '../../common/chatService/chatService.js'; -import { ChatModeKind } from '../../common/constants.js'; +import { ChatConfiguration, ChatModeKind } from '../../common/constants.js'; import { PromptsType } from '../../common/promptSyntax/promptTypes.js'; import { getPromptFileDefaultLocations } from '../../common/promptSyntax/config/promptFileLocations.js'; import { IPromptsService, PromptsStorage } from '../../common/promptSyntax/service/promptsService.js'; import { URI } from '../../../../../base/common/uri.js'; import { ICommandService } from '../../../../../platform/commands/common/commands.js'; import { IQuickInputService } from '../../../../../platform/quickinput/common/quickInput.js'; +import { IConfigurationService } from '../../../../../platform/configuration/common/configuration.js'; +import { IPathService } from '../../../../services/path/common/pathService.js'; import { localize } from '../../../../../nls.js'; /** @@ -32,6 +34,8 @@ export class CustomizationCreatorService { @IAICustomizationWorkspaceService private readonly workspaceService: IAICustomizationWorkspaceService, @IPromptsService private readonly promptsService: IPromptsService, @IQuickInputService private readonly quickInputService: IQuickInputService, + @IConfigurationService private readonly configurationService: IConfigurationService, + @IPathService private readonly pathService: IPathService, ) { } async createWithAI(type: PromptsType): Promise { @@ -99,7 +103,7 @@ export class CustomizationCreatorService { * Resolves the user-level directory for a new customization file. */ async resolveUserDirectory(type: PromptsType): Promise { - return resolveUserTargetDirectory(this.promptsService, type); + return resolveUserTargetDirectory(this.promptsService, type, this.configurationService, this.pathService); } } @@ -121,13 +125,41 @@ export function resolveWorkspaceTargetDirectory(workspaceService: IAICustomizati /** * Resolves the user-level directory for a new customization file. + * If chat.customizations.userStoragePath is set, uses that as the base + * with a type-appropriate subfolder. Otherwise falls back to the default + * source folders from IPromptsService. */ -export async function resolveUserTargetDirectory(promptsService: IPromptsService, type: PromptsType): Promise { +export async function resolveUserTargetDirectory( + promptsService: IPromptsService, + type: PromptsType, + configurationService?: IConfigurationService, + pathService?: IPathService, +): Promise { + const overridePath = configurationService?.getValue(ChatConfiguration.ChatCustomizationUserStoragePath); + const subfolder = getUserStorageSubfolder(type); + if (overridePath && pathService && subfolder) { + const userHome = await pathService.userHome(); + const resolved = overridePath.startsWith('~/') + ? URI.joinPath(userHome, overridePath.slice(2)) + : URI.file(overridePath); + return URI.joinPath(resolved, subfolder); + } const folders = await promptsService.getSourceFolders(type); const userFolder = folders.find(f => f.storage === PromptsStorage.user); return userFolder?.uri; } +/** + * Returns the subdirectory name for user-level storage of a given prompt type. + */ +function getUserStorageSubfolder(type: PromptsType): string | undefined { + switch (type) { + case PromptsType.instructions: return 'instructions'; + case PromptsType.skill: return 'skills'; + default: return undefined; + } +} + //#region Agent Instructions /** diff --git a/src/vs/workbench/contrib/chat/browser/chat.contribution.ts b/src/vs/workbench/contrib/chat/browser/chat.contribution.ts index 37f7907162471..d8b6675e6cf0c 100644 --- a/src/vs/workbench/contrib/chat/browser/chat.contribution.ts +++ b/src/vs/workbench/contrib/chat/browser/chat.contribution.ts @@ -1245,6 +1245,12 @@ configurationRegistry.registerConfiguration({ tags: ['preview'], description: nls.localize('chat.aiCustomizationMenu.enabled', "Controls whether the Chat Customizations editor is available in the Command Palette. When disabled, the Chat Customizations editor and related commands are hidden."), default: true, + }, + [ChatConfiguration.ChatCustomizationUserStoragePath]: { + type: 'string', + tags: ['experimental'], + description: nls.localize('chat.customizationsMenu.userStoragePath', "Experimental: This setting is temporary and should not be relied on. Override the base directory for user-level customization files. When set, new user customizations are created here instead of the VS Code profile folder."), + default: '', } } }); diff --git a/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.ts b/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.ts index 642afcefb4f5c..c404cb281ab1d 100644 --- a/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.ts +++ b/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.ts @@ -52,6 +52,12 @@ export interface IAICustomizationWorkspaceService { */ readonly visibleStorageSources: readonly PromptsStorage[]; + /** + * URI roots to exclude from user-level file listings. + * Files under these roots are hidden from the customization list. + */ + readonly excludedUserFileRoots: readonly URI[]; + /** * Whether the primary creation action should create a file directly */ diff --git a/src/vs/workbench/contrib/chat/common/constants.ts b/src/vs/workbench/contrib/chat/common/constants.ts index d7ce75b61bd31..aa9dcb530a70e 100644 --- a/src/vs/workbench/contrib/chat/common/constants.ts +++ b/src/vs/workbench/contrib/chat/common/constants.ts @@ -56,6 +56,7 @@ export enum ChatConfiguration { ExplainChangesEnabled = 'chat.editing.explainChanges.enabled', GrowthNotificationEnabled = 'chat.growthNotification.enabled', ChatCustomizationMenuEnabled = 'chat.customizationsMenu.enabled', + ChatCustomizationUserStoragePath = 'chat.customizationsMenu.userStoragePath', } /** diff --git a/src/vs/workbench/contrib/chat/test/browser/aiCustomization/customizationCreatorService.test.ts b/src/vs/workbench/contrib/chat/test/browser/aiCustomization/customizationCreatorService.test.ts new file mode 100644 index 0000000000000..5e27539c76710 --- /dev/null +++ b/src/vs/workbench/contrib/chat/test/browser/aiCustomization/customizationCreatorService.test.ts @@ -0,0 +1,140 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import assert from 'assert'; +import { URI } from '../../../../../../base/common/uri.js'; +import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../../base/test/common/utils.js'; +import { PromptsType } from '../../../common/promptSyntax/promptTypes.js'; +import { IPromptsService, PromptsStorage } from '../../../common/promptSyntax/service/promptsService.js'; +import { resolveUserTargetDirectory } from '../../../browser/aiCustomization/customizationCreatorService.js'; +import { ChatConfiguration } from '../../../common/constants.js'; +import { IConfigurationService } from '../../../../../../platform/configuration/common/configuration.js'; +import { IPathService } from '../../../../../services/path/common/pathService.js'; + +suite('customizationCreatorService', () => { + ensureNoDisposablesAreLeakedInTestSuite(); + + const userHome = URI.file('/home/user'); + + function createMockPathService(): Pick { + return { + userHome: ((options?: { preferLocal: boolean }) => { + if (options?.preferLocal) { + return userHome; + } + return Promise.resolve(userHome); + }) as IPathService['userHome'], + }; + } + + function createMockConfigService(overridePath: string): Pick { + return { + getValue: (key: string) => { + if (key === ChatConfiguration.ChatCustomizationUserStoragePath) { + return overridePath; + } + return undefined; + }, + } as Pick; + } + + function createMockPromptsService(userFolderUri?: URI): Pick { + return { + getSourceFolders: () => Promise.resolve( + userFolderUri + ? [{ uri: userFolderUri, storage: PromptsStorage.user, type: PromptsType.instructions }] + : [] + ), + } as Pick; + } + + suite('resolveUserTargetDirectory', () => { + + test('with override path and tilde for instructions', async () => { + const result = await resolveUserTargetDirectory( + createMockPromptsService() as IPromptsService, + PromptsType.instructions, + createMockConfigService('~/.copilot') as IConfigurationService, + createMockPathService() as IPathService, + ); + assert.strictEqual(result?.path, '/home/user/.copilot/instructions'); + }); + + test('with override path and tilde for skills', async () => { + const result = await resolveUserTargetDirectory( + createMockPromptsService() as IPromptsService, + PromptsType.skill, + createMockConfigService('~/.copilot') as IConfigurationService, + createMockPathService() as IPathService, + ); + assert.strictEqual(result?.path, '/home/user/.copilot/skills'); + }); + + test('override path is ignored for prompts (no CLI discovery path)', async () => { + const fallbackUri = URI.file('/home/user/.vscode/prompts'); + const result = await resolveUserTargetDirectory( + createMockPromptsService(fallbackUri) as IPromptsService, + PromptsType.prompt, + createMockConfigService('~/.copilot') as IConfigurationService, + createMockPathService() as IPathService, + ); + // Should fall through to getSourceFolders, not use the override + assert.strictEqual(result?.path, '/home/user/.vscode/prompts'); + }); + + test('override path is ignored for agents (no CLI convention)', async () => { + const fallbackUri = URI.file('/home/user/.vscode/prompts'); + const result = await resolveUserTargetDirectory( + createMockPromptsService(fallbackUri) as IPromptsService, + PromptsType.agent, + createMockConfigService('~/.copilot') as IConfigurationService, + createMockPathService() as IPathService, + ); + // Should fall through to getSourceFolders, not use the override + assert.strictEqual(result?.path, '/home/user/.vscode/prompts'); + }); + + test('override path is ignored for hooks (no CLI convention)', async () => { + const result = await resolveUserTargetDirectory( + createMockPromptsService() as IPromptsService, + PromptsType.hook, + createMockConfigService('~/.copilot') as IConfigurationService, + createMockPathService() as IPathService, + ); + // No user folder for hooks, should return undefined + assert.strictEqual(result, undefined); + }); + + test('falls back to getSourceFolders when no override is set', async () => { + const fallbackUri = URI.file('/home/user/.vscode/prompts'); + const result = await resolveUserTargetDirectory( + createMockPromptsService(fallbackUri) as IPromptsService, + PromptsType.instructions, + createMockConfigService('') as IConfigurationService, + createMockPathService() as IPathService, + ); + assert.strictEqual(result?.path, '/home/user/.vscode/prompts'); + }); + + test('falls back to getSourceFolders when no config service provided', async () => { + const fallbackUri = URI.file('/home/user/.vscode/prompts'); + const result = await resolveUserTargetDirectory( + createMockPromptsService(fallbackUri) as IPromptsService, + PromptsType.instructions, + ); + assert.strictEqual(result?.path, '/home/user/.vscode/prompts'); + }); + + test('with absolute override path (no tilde)', async () => { + const result = await resolveUserTargetDirectory( + createMockPromptsService() as IPromptsService, + PromptsType.instructions, + createMockConfigService('/custom/path') as IConfigurationService, + createMockPathService() as IPathService, + ); + assert.strictEqual(result?.path, '/custom/path/instructions'); + }); + }); +}); From f2db69751398115a01e6e25eeb0e35e3894f3ab2 Mon Sep 17 00:00:00 2001 From: Vijay Upadya <41652029+vijayupadya@users.noreply.github.com> Date: Wed, 25 Feb 2026 20:04:37 -0800 Subject: [PATCH 48/48] Show request name for model turn events (#297861) show request name --- src/vs/workbench/api/browser/mainThreadChatDebug.ts | 1 + src/vs/workbench/api/common/extHost.protocol.ts | 1 + src/vs/workbench/api/common/extHostChatDebug.ts | 1 + .../contrib/chat/browser/chatDebug/chatDebugEventList.ts | 7 ++++--- .../contrib/chat/browser/chatDebug/chatDebugFlowGraph.ts | 3 +++ src/vs/workbench/contrib/chat/common/chatDebugService.ts | 1 + 6 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/api/browser/mainThreadChatDebug.ts b/src/vs/workbench/api/browser/mainThreadChatDebug.ts index d36be25864758..82594dcb038d3 100644 --- a/src/vs/workbench/api/browser/mainThreadChatDebug.ts +++ b/src/vs/workbench/api/browser/mainThreadChatDebug.ts @@ -83,6 +83,7 @@ export class MainThreadChatDebug extends Disposable implements MainThreadChatDeb ...base, kind: 'modelTurn', model: dto.model, + requestName: dto.requestName, inputTokens: dto.inputTokens, outputTokens: dto.outputTokens, totalTokens: dto.totalTokens, diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index 3fc7572a3a99c..8abfea0b8d317 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -1415,6 +1415,7 @@ export interface IChatDebugToolCallEventDto extends IChatDebugEventCommonDto { export interface IChatDebugModelTurnEventDto extends IChatDebugEventCommonDto { readonly kind: 'modelTurn'; readonly model?: string; + readonly requestName?: string; readonly inputTokens?: number; readonly outputTokens?: number; readonly totalTokens?: number; diff --git a/src/vs/workbench/api/common/extHostChatDebug.ts b/src/vs/workbench/api/common/extHostChatDebug.ts index fd4994cdaf034..04125f3e551aa 100644 --- a/src/vs/workbench/api/common/extHostChatDebug.ts +++ b/src/vs/workbench/api/common/extHostChatDebug.ts @@ -145,6 +145,7 @@ export class ExtHostChatDebug extends Disposable implements ExtHostChatDebugShap ...base, kind: 'modelTurn', model: e.model, + requestName: e.requestName, inputTokens: e.inputTokens, outputTokens: e.outputTokens, totalTokens: e.totalTokens, diff --git a/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.ts b/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.ts index a88d4a370032d..9797275555bd2 100644 --- a/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.ts +++ b/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.ts @@ -45,9 +45,10 @@ function renderEventToTemplate(element: IChatDebugEvent, templateData: IChatDebu break; case 'modelTurn': templateData.name.textContent = safeStr(element.model) || localize('chatDebug.modelTurn', "Model Turn"); - templateData.details.textContent = element.totalTokens !== undefined - ? localize('chatDebug.tokens', "{0} tokens", element.totalTokens) - : ''; + templateData.details.textContent = [ + safeStr(element.requestName), + element.totalTokens !== undefined ? localize('chatDebug.tokens', "{0} tokens", element.totalTokens) : '', + ].filter(Boolean).join(' \u00b7 '); break; case 'generic': templateData.name.textContent = safeStr(element.name, localize('chatDebug.unknownEvent', "(unknown)")); diff --git a/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.ts b/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.ts index 6cfe024552c64..528e3a5d2915d 100644 --- a/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.ts +++ b/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.ts @@ -549,6 +549,9 @@ function getEventSublabel(event: IChatDebugEvent, effectiveKind?: IChatDebugEven switch (kind) { case 'modelTurn': { const parts: string[] = []; + if (event.kind === 'modelTurn' && event.requestName) { + parts.push(event.requestName); + } if (event.kind === 'modelTurn' && event.totalTokens) { parts.push(localize('tokenCount', "{0} tokens", event.totalTokens)); } diff --git a/src/vs/workbench/contrib/chat/common/chatDebugService.ts b/src/vs/workbench/contrib/chat/common/chatDebugService.ts index a4028bf9823b0..a50c09b18a111 100644 --- a/src/vs/workbench/contrib/chat/common/chatDebugService.ts +++ b/src/vs/workbench/contrib/chat/common/chatDebugService.ts @@ -48,6 +48,7 @@ export interface IChatDebugToolCallEvent extends IChatDebugEventCommon { export interface IChatDebugModelTurnEvent extends IChatDebugEventCommon { readonly kind: 'modelTurn'; readonly model?: string; + readonly requestName?: string; readonly inputTokens?: number; readonly outputTokens?: number; readonly totalTokens?: number;

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%0DHTowI*eS>5{vgj#ao zHm`@i={)UYZavuM_I(R$gGb^!>m14V#|R4vU)EQHBlh|REd_VtLrZ_8(Qlyi?7#C# zPXloH_p*2RJ&76dUmlTpQb)ykDXAN&UpX$QuVN(iMXpA)t9REZfbSnK*gSS3Bzse5@?Hdv^5m4*lyAQo91iNeiE1`kI-Svzae$t|Uz+M$4|q zDr-Pnk`Z&~6pagkoaVe5_7*b0-&!^Pyq45A5;tX$J9rL#C=jEDYpcy2a!eMOQH~@4;0r=Ws-dmKBWdok z0cDogMfg4AnF~3fz<46m-f5}WP$;Vz@vZtdasMBl3Jpy7ixzy1jU$167@;9NNDc`^ zo9a)jidTK!^^8Q(#c>E0I0)bMgu@hzhJg_933Ov3x~U?&;3lNL8cZ2QsR7*=8P8l< zz5~;nBVD!xyRlO!zU`D)EhnkiFnCXgeHe2t<}G`l+|Y-`g9eEtqt;5 z{^Nx3X4#Ci4$PC+)`9u*!*;luPE7z*KKN7-fRxY+#nMq&TAtnek@oiNn&(TMrm7!f z1xNGQuQf+b`Fyd{Kww0+;2`^QtO_Ivb3t}7PE)E{X^Qs=4ByXlvAr67zS6h7Dcc9R zZ}~+_jw`lKmdH}{9kH_j@o~|rDPi-la1ah@!Ei1Zya_(tCqj<(f(SUhpIy!0D@7sD zYo%4VEjrU(xsz$}2FFPOq|Qqko5*pS?+0wua-Wgh=04_-h+-hj>E=2kEW#@&qs~v& zeoFlL{_Pcz(@N+=_AR^ue3_oahsssKadL>;!k7^2tF2#4m)O=POm6B0K*y}q2>(c` zNxB+U{8!hH;b`JMh$;EOr)%*{%??AFWSd zkQy=Xu2+az1Ty$BTY}%>@$Jnnn}R3e{kixVH%QrrCc1LfGww40j4|hZ-ZGGb-YAQj zZ$-?dS%}#ln2|t3rYEm;kVeo!8bLuq!4`!n4r1EpEI1xgs=CErnhoZ_#Er;KL7_jc z2ASUA3A>lB_AjP^P?Lb6{ku7wk#fK&OF&~Oqt0kcErP|CgPp&j3Wc2`rNS_8nK-G0 zJUL_(a#uu<5417!7!kD{GTq%e3_Oi8#MaPI~_J2%Df+BE%+l zY~l%j$;tSd4OHt))tRNVY?WJ{kP}{WU_oG;b&WocyDl%d4p~W^B@WC##>rfU)d~6x z>pD*KjJbx4AQ577Cm}Y)?1Y#Omipl?UBdk2ZqToQFEg(m&VG5OecD(hx?B}$H?M<_ zY=<609A~P-F|uVDpTxj8SxT@g6?Nx7^?R92`BOYM+}_1ygwGR2{H>n-Znqpz0p{=y zzP0rAx?=<76FrD}wo!X^t|AMecmp=&Tt>isbzmE(WZUd#f5kdNg}}k(*MLq=8sR3v z3l#rskd2H?mX}$y=F3~?W6m70YIKerPt7sA3Hy=kv{Osr!B)*i56r56LSSl-pP4xC zaB{l$aoCGzB9-q9;e0zGE*~L-?`I z^A~33FU-ncsPq3enctt8-?6Vr_TR7b-A~SzQR{jc|ze_TI zRc8LGto&6vzhYNRhE-jYnZG70e~r%nXCWXe|6uZ`&D7xJNC)ejcPDd>%*;75nRBGh zIVzcRTxQO3$(-YK&fdwK6Eky8Oy-=ZbGnl`r)1`wlFT_p=iG*5sz(&a%o#}L4CtIs zC3DWo%sDHWbC%8-O5|(^v$V*ZLR6KK$gd)O1@{VK*CmUHER*l> zMIQo$cru#mm?y<-iFm3ibzVbh`i_`OOr*`cPJt$ z$s+Qii$sz|UhhyuQj$gFMHjg`S>){wMI0mzaP2m5++Ui4rQ$?aoyDJcXR;?9C&0 zP%g2jygAX@I9h{A$a(!Xb0vP!q3|P*aG5;#`64WfYG^QYxX_q4TnZrL#!pW0kG`Qp z*k@EGDyn%|7{+cj1fGd^L~X(^M!x0=?&H&Iu>%}KWypA9F`bm}ZlI>@uN^iX*ddY) z8BcDQ6=rQfko83Z6K1S-1aj{TMT26R9Jxr>*umEsOKSYVNu&-J<-!b-Mv%R*&i7d4WB)nNv2ki6q=gdpyl$Dtjr>98PuY8hBD00S4t>J1EqgV5gSqbFfTSykvW7|=kp-QTu z)7AA;(6l(Jq+eZ)+NuW?NDl_WQk1?%4k+YOt`3<#gP4|yz;Rp&M@Ec{;JEl{cT0`G zyPHWOswMMs4@2ct=-?7&We(5w3OXy*b|tec3UxmFjr90K_QcD!OPFG5f7v+E{4~hZ zV0oI(lfERQ&sW4E81Kd?5?rD^Rr@RJN7iJY&3toTre|Awu5pj)Ve)7D!L1^blP8Yb zE}313vU^CO4yM_3knQ0Bq8r^Uo1#Hx;e0dTD7z_TTjTSsUy5X3*jim6^+s!c>56=c zZJ-gUV~)i>@F9LJjM1m~3mfjv%ToD%&LV{D4G^7ysJm^l^)bRtBwK^zzPXjBZ++T} z=P=Q$y}5;vuP;O2{egA2*NHz56u(v9JxFc0l)n2Gzjb|)qwju7_4hdXZf<~Uee6_6 z-%U*Hl)k&-KB8e~>%041r8YG~BKyr-{6_d}Y7oms33&Lu#abN;Gw@`R{hfOJDpcY# zJcCHCm^g4s=>W9-q!C^!>!gEz`^JQR`-F7;_Me~E`t1|YZ@=p3w_~FEem4Gr)HlQk zE2%oE-<~N2KF)yYWO|XdY9hDtp44w^m5>E8K}M z{xfjIew#y7S>YZ&v%G+K*v`a6A)k2eFSIMi8QC3tQ1&dh z$`JO@0~v3=j908&y792=MIlv|9GU`Ra1`OD7Y~F01jmaMMx@}Oo|b_XZd;toM~4>L_wpNl zD?=}SgO>;r z5gh8T+({h7pIGAC7{PF;oTYWJ*AAQ{%W*T{xdh4;e?_V2vkY&7$dlt|w?BlKwBe|=^a;~rZIbCxrIEyq-}b680Vj&@&x#BrDR9{q7ueQf)v7g0`NnCDubI%vG>6fWGR=04t6!dCqf3q z$#XfvNHz4JLRb-Osmg4fKhiI*vpkf{r{rLJnJUR!=ny4eqw5F_KJy4}p?KULT6M&8 zxQcM8M*kh5rXvl9I${1(xr&otK0|>D5HAaH>=~%x`c-5KB22@f6O4IcrDPuIv(AXj zCZEWmJ|4QxI?Q^KnA-LanTd(hJ5Rhu$1}nXK`KDBRSf2 zXXeVzCBG{nvKv>+M5&oQ3xLTn;!pUO{;cJXJaelk=w2bWIwQ&xJ+wf z0%vn3AJ0qcFXzz&6<54^AGZBdaK9Db9m0n2fyO43TEw@JNFTu#Vo-H-@{Yvw~_&RyT(`fO<;ovqoXuI zhAW?}znae-y<|9PalVZKF3okMfn=CCAEv<$V zKa3~5I{P(TJeUT zwwpV9?d#QAa%6_j2$e7`xxZ~<RDe1nI8&Qf-E_xqd%xzJY|OCFw-0Qe`u4P*Jnb<({)`HG zNR_%0%X7Yb-JI@?FEs1?FY!@F$%Dr(S#v&W1TO&w2A@x4&-1?9r!Z0@zSvL$e`1&FMN z1wO(T*8z3-uP5}vMp6VbpB13#ai!44dR9^X{eknW7ZjHFNRduW|5|-Rp?^vFqx9zr zKVL}T`?FH2W393fQ7Zh5BaD|DfE+ZQ#KA+&{ZybZ4N1Le2h}`N? z{QQ^I>HPfp2EM`1qw;G+Mv*6-pO51m#RPvLSlB}^jx_QlOYeHpEM?zdekL6Kb6Gtd zI6B9jVJYj#!`#G|Y)P5;yYcg==I74{KOazSMPH^qho6rUejbqow5wDNxrikA`7qvN zvlKrc0zbb^_<78p#Qr}A!%ccB^kWi|8?e*>Wpj)p!uS{V4Kk#GUizY z87K{}Cxg6%#YsKVL6*1xB}&Q*vx<-x<`YAt&i;K>a_24>>&!}Ia#CJ6iB^PYRf)Wy zNSHfTb_{tT&xC%WV>QAdhNref*DT&wWWo zW<4)V`w9#t;=K;_en66jDwep)_12+-(ofUtz=ND!=R8+bl0`3@G)NH1%4 zeiHw)`2E+vSNK2sc=S8yr-CADc9MQ)m4DGGe?0mfEYsza^gFBkET{ZGq2JF5A@cY) z#jN6aL^7Y^_ip+WvDH`kD%YE^VZOh)s9Emj3^L!1&N{{6<7AITW$}uHLt4P^T#d!bva=q)SdQs)A&W3Sb|%{ob60#4*Qfn3MCkH6)gP`)1u zK<{*kzu4yia(kkQuW*dni_`5TOHTUg$7N$05# zqea>`5n$dcl2S(h9Qu&vZ$f+)9S^^^EzD;mqS&9oKVRCv1i{esq5zWAN70Py#3p+$ z8Bu4HafncX)r8l=Zov((@`+Abc5OeGyN%eSypo!p!Wqu39;?=Iv2N}nMl?qe`E~7^ z;uHQb)>Dh=e{SFeyOGT_a+j}+6z#5*$fy-PQBj8!5?&q0fA8%&5BIw%t?8V*8@X23ONH6@prjNQa>Q6HgL?n!!c-1F!hW zlBeNz?+=1^O4=EayGs8>hx%?Z;zd!Krmn`H5 z_?5}ZV!0H*V`EgA6CBrS2Iqkkez%6fpypslZz5@5MqVoXuITvswxN*ank#rc?TdCjj>BmiHP{*~LSvc3xWkzajvm=iyFx4#cu)~{Fhu|hMw zuHg4VeMDz6)d{_n(wSVhYT3&pxy@}*s=jIz;N4l9Fz;E9|66q(E3~KD8dYEoDYOO@ zSwX*bX@iRk^`C>QRqQj(_aQrCekFc!B}htP{mZJWMbbqbM8O&&&dy7vZ+J~EM2wTj zD;1>mY5OISCAkw~jmqb>SjvpSf#hiWzqYx-WN{N&RUWf97BcH?(Vri@?)veGAdvr` z^zX62ar$>sM*qr=)j#C`xzsvO;02?hSVBkhT00AQA+eCI7vMkC+*>!oeqy?& zF`dme*5xX_Ebq;zN-aTIUktH`p%zk`SVk6vnh!R=pR4(;Y_zP~y`g4rXyrlFH=lD) zB;NT28FYEORV-vKSd>oU#*DCwowf%svNWR5U0N@1N??Yj0JKLCBN;Citt?ZQ#~Jnq z=c-}r^)GRDi5JX&V?pA4xg;B-3v_rerD~&hv_}iykk93>G=2g!dJam+|Dmc4RNXhU z>R|9o?D4jgtTX0Z#CF{XFOmxKq7@s6rz{HtleYLN3kl=2#fZGiH=*QVexp_INX^lq z2hGEiuwM#@H&zE8O~B(u$YF{=YmH13;LHnE!U1lghE}(lq2WTTM%i71$_BL{1P8!m zL@@v(5~c|Ofb6?YlU7Hxm%n1JX?$Ns(=Szj@6rvo`TB-h51MvxpK0SIVn@kZW6nuZ zq+$a%s|6QMDrq+6h~HK7B=WPN|tglKk{4T(Z7Cqw{N4OdR3*DCy8M$vcqfv zJpa=9nILiE{aE~~EQ^0FYW@Es|N7b4vOonTEN?9Mp<9DMsFRL%o@eeA^AY)He~gF) zzC#X@fN=nHto5BI>w7*x{nyv`8zrwAbHq9jugy|{EDFNWBPOugS5HQMg0JDHHlf-*E&jf>v6ZN z$9?3a>A*t07Tb93xEB9Fs;osibc?LTi;*8$e{GZ0`pZkMzpMEeGs!GH((CVX$$xut z{oNt~W;?5(gvVWecPhb;7?>=-RV=@;#}TqqQcdhlS$=QC|AThF+w#M-QLT`VzyIH~ z=)R#MUFCf|0iXY5GEU^*nfyDCf3hR;3Y{5k?|okwYZj6TdxJ?Di^n0p%Pl)DvND`P zbMJ`u8J_l^P_#__o0@Mo+$|LpXpZUNr>dU<`4kq6p6a)Mi+2U+nMUUC5Py8i1&Z)w z2ntY_Z;5yQ5PKS0fQb~Tkliy*fu4Qmc;^fL<@SD<)n4aRdwP9Vn>gNjgMbb*!9ua3 z)bSo}Dc2ro-j+jyfPW;T%Ihkq4!rm$F-DcFD@v*fOcuNEA=&%}xdV%w{$@p^Ija#( za-*2s6GuVr8_2w-_IoU1CV`!(`GyInGpNv5JivA7H?(NXd7RfvkIG|Y5|5#y9%JrY z9<15!=%^E-LysW5tQL9fz)oCO>=JKrek1Z0WW2E*G`|}GSuVfBBE|U18KJpB1<*DR z+hLAjgcz*lW93l_`=_MW%Rh$6^bU6) zf)x4cI5{!S)N-G1)90|FVsqsfd(+?btaJO{Y&)>sXaJu@BrQd4P<9D+eny0iPCME2 zmM=OV)>ih4x~{E29eb8fe~|tVH$40xU8u^vZHRT=YErD(1l{E1D7DG?PO%8}9Hh9j zMOdS1&pWh?Yov2%A>LoXKF~XK6c+?@NMWHASUx|T8B8$yikYQ5b_>IBdKR3fD=E~K zoJA3=xLmFVSz(d404tq8TZYY(^<%M9A=YNP4h;PlMlU&J3Elm*E6`>+u1Qrlx5jtr z`j_hZ&!+15qX6Qv?*NFd))BgOf91|sTdXj4;w7Ob}Lo7fg%z!ig!u>>&O*-7Ad|}UXL9%YB52W=_N}4S_#={o(WTU}zkj|bSdq-+uJ1Jaf%P`bIRCFBM2#M+qHu;j3)i0&M z2>VkuORBgq@mzx$!6U3qv{jQ;1A(tlwu033E__4??C?x z{$+an&`VkL|HLHymxY185 zncr7`|MBuW?KdUcmztMz_upwhTfX}a@M&Y03!?rD{Bg#MneZ9o%ZAU!Wd9CQdm4Pw zrcOO-{wDgqVm5s9uZFO|UVQ$*Sce5@2C%~povRtZFriLEJZ3BQ9p;9Tcc=ArzibZB z1g>>}>=>ZHfss}|>_LbxUQwWL;(+{0oS5=VIVCC1YJmq`K=@@P9``x{zwA(ozD;PmN8{|zVZl)p@YYI)XuYVw;40zxY;aO z7p?G$Uy0&6`^g?)#TUpW6|C&augufT>pjy>{DW*C;gJ!wp`GF{E&0k&R+vGbIzv#T zL+%JE5l7GdZaY$}XJ2gganDm~orc71+z*+le8+s#==W;0qN`G|y<4(jxDcMYtL;+S zr)7a-W!&s+&hSj@;&Z67oo{xn!n84LV4dKI|>=QrHx{{0Me zHo4}T@eR6U&70+~RK|@5n%!?U9B#X9Y58WVdtjw|Q~W8GA{~%ba+0_MyvrL}U8u-3 zi`rwpNt8BU^Cw=!l3b*}_zo`pEElFYxv;)Xpmj%2wQb-O_!yC?ouF+`C2`P!ALA`! z=mk+<4jLn15IDtH+|}G>ERKa=nOP#@-=O&P^7a)%5MB_G(7CN3gpM~?`KPhp@MA0< zGFm&T>hzYr0QLcjMBaW(cD#XDAb&5^xxFHI|oa2 zw%$t1+}IpnIhAQK3P=8 z`Ldql{msvuA(nGNuDnTH>iEnZlXE8L)Y%`SG0{sQk2+Eq$9?nIB-1yxzxfqXzl4^& zWfFJiE-v4Xyz2|T516$_LNniAaxm1Ci+QuLWNovZGYOe9w7uQ^a{R$mb;#R85)+;{Bb9lgS~=?HO!!zo%a&6^Zw;s)^>S=M)d?4bLB8Bejy3YBz>hj zV?^X!NO|;b{>T?<&F%7PS|Q|-_9!-u?XJd;^7M3*t2BRQsNHnLG^@_6@7Nz z4sdxVxi;iMsi#E&lxMlDJ~*JUYB91AL-5f`9LB66Lqw4EM9(E8fiU4B_Bwv2oTEe> zC5LAIF-m&LcNEI0CZ+g~IN83O`)tvEp6K-;k$JIEv%OUi-_VfW)NL`h z=2vM4EGWp8pP&ZFMn>;sJkEl^(ZU8cz_OpUXMA5V(jQT6XZ{V7s%zyBJ0o=tK**)& z@H}>^wfRQPRw(*FPy0X_x|XC>B^&bublLUGnX-MFuD_=_)2lWEF6xuYJVwn1)16hB zDiKnZ0TxZ4@HD1WR~x7ecfvxiO`i(yHBV9?m&KEeTLxhMkvGZMcJRQq_$iM4OLS2C zRlN?f6>AM#KPl24JU4s27`Jq4TvH9^hFVnFMjjC~J~^;$pYdYrf$dRGb!b+E3k1(c zYa+x{IY{G<88h>kVq5VCm~ziD>3wvd`@nn9=TMUo+STT62_5}BaGKSnq}jT)!{H=U zBtryO_)`MS7$pZ8GBFqUX`Z>=b2lzALbm}7KG&Nu zR`OI2vFyx^*40woRBqwhA7DTkQZhjWRHury+lNmh4{R3@7!7AoIWpN7W9+rDgkV_# zr4=7t)Y?bN5HUFHZ=f^8JPFGW@&D``#c}46&D=@_D@WUAMg>#SDo}AssbfBcsnkO~ z3wRV4(MH3Ypq6qIZOq%iqwq0yyl~SK9aqr=D7ByB?j{(3uHOj%o?NPy8h;&WiW%VE z*JbJ6S-P*54y5&x;^{~Mv?qtrW633LQ&k?ouOZ1BzjV?<#V^N<9$}x=O|d}pC?hYU znWDaCp!lFUuJ~)SsyMVp0+jpk_9z%sMqi*_R(@}5aPO}{g0cL|w{N{n9qA!tO+_mt zwh!}%2$Wld+bPc-Dc*h9-oiai8S`0^WtH6ItgW+u+f{V})?7in_zM5%F?P38#MlE` zD@dHec0;%z&_CXYjiZM`t;U*?zHx_%-gD1H$Ln0L)GwPx7{<< zvWi2e8^4Fkk2IcWXzD{qy?yAN1pO+e%T@M*PZHRZ?+#RI38MjepOS=&lUfhUR8CUI!O{9T>`V;>p`2n1)uFRypP3DhF;BzldL; zn6D!|jTupAuCn)fHL~EG5#4DdPlj<8e^gF^&DFBWK#B9R&S+KmQ3lB!O7WJW=MwPw zlc0&sCB1yVDnDifWdn8g0$ny#>e2l z3gR8{6FPM8hfW8%kFAuNjbdKKd>1nde)B-=Gt9lFe z&rC~a@!Rger_Sl<8FWEbIggj!^t5xLQuJf?)Qz$a3t&msNslnpKv?>xyYoH@wcHwlRcQyC-jB;XQbX4%vj zi%0QKAbipQWcFG9ir~iBLu4=(2h)H!$yhuj9elXk;FkiPG57am z`8EK)Yp$c8(x#4$8~;AA#9Xq=zVr#McIkc@5!tnXS9uCx0xU)2H=2hx*?OzwA_9lr zj9r6*2$SaRjCr#2q5VYdTgeiCOz@F{6)a!zg-}RoksI zTrU*5UzJlk&*)M1pLJQKD2D}%#nBh^CR_fGJw&47Iy)x2<$v}?1-ebyQcuc`U$9{L1_gt%oSjCvkPzhdrLszdP*J@nTJMQ>RrF$w?~1^f&}_~| zzLZ-Jj_0ls)Sfb(G!ID`yof6LD283q1(K8jy^vFYs%fQkrN!0WWfK!r3LNWPfzy)w zr6|c?q%aJ#FGM5DzIzS+2F^|P#}P9!dJ}&uh0+UYV&t*d5#1Leo<+3J$1hg=B57Q8 z&4>uzs;dBriC{8sbo8h)nLys;p0No&n+N5L?J>byOo#wQF>_ODj`f&Ry=JY?tjmkB z(N^pLg4;Vf%@g->|D(lM8#pU;mxAwQ<{CYqla&Zv{niuX>E ztL5+p>?QG8C7hs6rd));R0BZX{af1u>d{mzM{bY`^owp_-CQF9pApf zmjFLE<(Tc*^D^ac*4J=cVQeq#!z>f^K0)iUck`|*6L0SXdeq5VlF47#ZzYP1)8CdPz9~tfzCwEUcp?oh zHI8bWtP3QWb*bZ#V6vw>6-?$ntgD=uOxR&hNtDrOHlEj%>O?*LzxS8))3egAW8yC< zMuPdz{3ZEP5!y;1;*JMQj_z>6WdDg8{+s+I75qQtm(zaIowW|?RO+QS;{`qS2*z_4ujc$UtN*t8al&%wJF$0U6luh1VmnE4Q7W%0LF z8Id1QbGrM3b9rY+AiMy~Qi)^vZ=Cvp+%1}AySXQ8976H_?}1FZb% z-RX&5>kICw++fV@Pd}qo5-+B3se5lUe`&O4X(ApEXH)-iSZ}-m-%v!~sVERGr52(G z;-m0Q`&5kmIdQ@&JukhR`(^M6fWS({bLxwvwG8yQV=pjX_@l&k#=kApHY3LKao4~G zv_6081yZj`^R6U*!=8_SguFz3Lyhn_sV?Q8P_lmvVDgdn3e2th76N?%b@&1DNj!|O zTz6(ZBDV?<2YB}_Bu}-@BW~zap59KLA>`q+&Xvk{MIv9Wlke=zd{Sq6y{9MgZvh9S z?XQ4LTD^(<*}sW?i6?Q@ultd$WPUwu#X?@feo zJ$~?9;P*TT0@u>W!V&oad-l~UA91;j!?hRtq~7-5@03xeTf)ZExaM}7Z#vBcmdY`PEufR>_O5J zuSR4(Z){wO?EN`d_HoSwv00Q<#UP@`+(Bp?5yR05T!A~`iILeBK7v@@dWtY3vk zfvqZeRylsWQg(=HNf_Zay@K#Qr5>QXXB?8)Dn?kilr&yX%QrI9eOMEUtzQc6H5g%Z zMq-XHm$`^Soi|*LE3e42h8OeOSE3=0mf+Mw^LgzqpSc7z zTg3`PUg3Df*&LZ$)B)g&48We=NpFxu7IERhgEyzVW78lpzm#-94P`! zdqlpO!Iz^$!e)ev@a@q7O=e`A3@|c*zh9C$s%oyUrQtDk_BZE{pBe=rwhiCXTS0&K!H84df4ff*7M3$VvV9h@B$9i6v#dz4Sck7@W z!1mt=ub`R`_W#^y>?oznC(P!dw0?#KpnUiq zCIIFk&i0ZWj>xf#^`JoCaox1y37*YS+pPy5;~{h;$DIAT_Q(jo0R&>r&xS5T*!%>> zj3G&lrhh=O>a{`yOFOl)K_jr*bHEKJGQzYe1Qtztn z5y04|42BWReT+vZRUYl9MhkmzmRaL!NmB|MbHFYp#~igWI(s4gF~_f`s{@*%bu5mi zI(zGn)RhEd@%a0#;KGI@IYz{!C~Jkk4biANbUAfQ`*e@}0^%Rr=*E{M4d^$_>ZZTj zo6ZKp8G)z9ueWAzw|u|i?!hj+^t4*DT0K_d1nLxNd+yIEzN|>@j@KQ$RDO*CYmveE z+}56>$gOd&bi?SDMFM}~)|fkr3Q%>GfxGR&*EPICv)4l%wkM*>?YR`WpORXxGoZJx`U$~UuK9$0zdtWBN^D>ijG8XRgd z-2}7L)i%&pvLDPp`%vw&{TI@SQ5)OZyV5ExAT`3N%}w^vkwS6qN86dnE>m!Xd4k)_$6eh}fwda@>(;-IgD^!zUxA zt=4`%K+19!`bQ^Ex5jT5v9CKovsYZ9I;y)wcY`O=$!n6GwFE0t;dP{>Kk~?-tq|jzNAXH{k>|&9{7LiwS=JC=pS7-C^ zyzK1}4Cao#8I147PZO_-@%@xnHWf@k^Z{7`(IHK&lIL#E<|r+SEx0t>fGY~j%~4I} zkcS0$w#vVHWAOmtGE4*<^|M@8>|~H&*&gY|muM#+KyMEiLsJ3Vp-y5{o2{pg!X?Lapn6~$+Vgz*v z<0CD_aTVkA;_l-)s^>8J#A-5jPcY@QBS@pdKpyg9J z1)+D+57m;G%_Yp=RE|w7Pr006MC6K--0`1XXifFS-juiggr_b{7MSd*e}Xtskasjp2i4&Ml;&EPEv*+V#3@CFQ`T$o8337oV-x`2~j<0k?^SmMAM;)vn zy-e^$eJJLwLOKnI`^Y5=W%K8Bo?HcWX#-HVE-oi`ANCRzsV?hl7>eeIHz!;<{F8ea zRSH#@!_cAj!1vnPukZx(N1Gco_fNCzTg77XnH$Zu;wPf|b+!UT3d)03L7`5jV_cc3 zN2~9uYwuBkjiR!JkW-=#P8dSioe5?n^p{TjTWf$1Q5J59i~L~zrBYR(*QMh4!H5io zP)kVfK-FZ|a1~ja7Gg)35Rq-q=j-UnLI#T^xhJo~?Wx;yU9Bfb|Kz_|R}v??CcEn~ zo^jQ8{~=kVo+1iZqkUj{b^G)@`^GJ5SU|Ogx$xCZmN*PjDWNHufFh%WKXs%PN;$cx z!=19;*jo0+nL&FGAE{JTG#nVH9GI7|BP=yHHrqYj8_gZfyL)ar=-#pEa0zha#l6-% z)Ew)%>9G6Irb8ubC%eXsxSB@W#an4Um2s?7oqjDT?F!#)uX(AAuD!=neDu-V0`U(N z@S|i2jzYGxep+qyt5Fej=XI8S1`&U_nG_p?pkQ6+IYz8aEoR6Ft*feayw}KDBeD>) zoLG!1tm#>$>IAZh2%Xhh9lM;|X_9TEnRn1x7)DYZyP7m>pjZy5D4jPl#hJpA?^g}W zek>(|r)Phd)Y>Rt*a1MvBueLgLaSR>6vaC-Is4}md)~S#5%tCGWoCUuHVzOSt?IL>x9qDBN&k8G49Sfz73#AV5NGUVYa7;Y&6E8Z>q~?iH%#ohK>&y+& zSzT~gxL4b+g${L|c7{+)_Ef#hHZ;Bxe>2VBBu?GMV;bRx$z+YFw))rXUkROlkD-}c z+(+@%kh3YSYY#jFZ1a$Kw}aJHaI3;l+gV-Of<=x9rEZ%n|C*9^{{9>+`vh_$84rfI zWgYXheWi^he?$%$p4qAtHFwkmYs@?3khe-wqqPzp?#gN-?3XPRjjE8>A&EoLEOrF% zBRWY&f?rS4%HmQi}G9u(?uN6prE9*%lhS z)8kg{ES@7fAYpi4pbCioy@9txz!oF&YgTRgVthmh0o&nUHA*2OXZ?``UR52uiiH!n zSYXXrKn9sgftvVW%3g-wVSO?@y*{g|qbj(hOp^7h`P3HgqSk8bmx0;NI@NJ>yQkvl z_A3aym58JJ)4bqoI0}Kf<(mESF~GI1Os&%nYjh;HprOGkTG(j&lP*Hh#UV-&Tvet);Tpw4N3PLTiIO%YRYN-4Xn_&eg|IW^4RJWv@_q)ChBgr+3c^ zLx$%Ce<%@RGF==8PtjotjwoIwIDN?6DLbPV>`Am6e=a-3UMdRUB&yH;dW?r`vlU&HkWbYc2}OO(IDikbJ>wQQ#z~P$uvYs)tQ2)LwW^Pxc1O-KA|hll~+jeC!^x1APiq|=q!B&h0isG~7QF8B-g%ccM+`Y;bDWq<8J9|AXu zv`S|t9D_z^)UKvyVp?CTx;)|3j*&?-mb(#_knfN%BeI@{*h>C@-NDQ3KYDObf(?yo zO)Vm*M@H?knCzp#SuK(%B?TvA5|!EhA>oK(rGOa-%GLLRzKt!937V*w;zhCzHOCP~ z+_w#xW->u7k}^$Xk*Hr-tIJVc{Lb7&WR%$7_Nz92LmR@r)7zPNkakX|9r++C-~^KnU&|M1CULZvq965- zq#UXbr5XE8Di&ej653HA;eMnV>ymZK#Pl+C4utpRUkoc}B=rtm77T{f7m+9g!u zXbaSNP-u_bRx3{IDtE8ZGsw1;iA9Mr`DA;mP80rA3V!58!wq@tChA6DWYgZGKyQ+K zkne=plrp?eH^)zz|`w* zQkY||nz1-^_=f2va#=H$bK@(jj#&4b_D(GM!dSA|SaSc#y1+4 zXf3^ISX(xKq$jsF_9`!y`yVpZW{ak$<|=ay+t1HD4IdcucXC&0Ov7ts4M(~fi@A@| z1ObiS-X8kKm|x?|G23QrdO^yDnvX_nd>(UC$q{w;WJG+3)m_*6hPkErQ;&HlQQJ=v zwH;8kwS*2E=I;45RXNeS+h=T{q7_o1szs`#*Cj_s*WpH@Xdd%&5m%`W-(buWavVFC zKiT8_hX7lb4tP8ztz%f-Sg5v6l}j#pmU9hi6*{r-I*z}$H?EeMP3SrV3AH{d&(RMe zB`M9Ik1JZSKSy_bMxsbH?3iQ^*olWiVjMf-?xk< zkDQ^WYf9BoEar)Vr{}l$pU!W-M^7(@*v#*=Q}o=rYvTn9Rx?(_KTH8hWmdh820S?m zPDvO&ev5{YEHMGl4QmBJKrJ0Qjz2PN$t6^*$6hf*-5yF)>FN7&YK8PrD%P-HiPBH{ zMH*AHTmHUzzrTSu%VjLdzE5E+*=`=-D1Ljx`$n_vnZMQC)X+SpVMAF1*t?j+=U4DT zz%>P9{@{wE(dq3oHgJ>PjOjV|R4J@0IWQ)HGWPnL6H_lOs*#zv^^vKUPG%0yng7N; zdqf}NwyyA)Z$w}8e<*$J&YR_G4XZc*kI|5Z{Wc$Di;XU$cF#}HOV08S=DCh#FQ32U zNB$#eWCbPQTb}3;30GaiffsK+F4PGE3SA>pUPDj(Y);Xt;R&Z!%e}olQafCgu(}Xu4VOriSBBm{7#(+tmLoJ+*Fvf^Tk5?ug2Ksudy7&^)XP~3R8me=*sw^(%SpLZOyiBvZ`mkf z2k4`zS>_}D2C9hOui#@IsGr$0vd~v;4KLfaog+XKOwwAt0klDQK_xt2=v4fB#62=~4FJ zD0jmuf9wr%J7-k%z1DuRP7SY?;SF|%S7$UVB^Se!p_MT-aTHtXv`Ei=^@4uDLygb5 z=){^*bBGW{&h64SWCma&dsrDN1w;qtvR}DDjjU9Utn3&gdqPUzuPU+Qf9Wu??H}rq zi4}kvndC=V?OI-1G04@pT2_x*SPY?_fz?=o`1kuI8+al=GKxjcDA)@Th8 zqgIn#LY8H|(7G*SLS0tjOJ6SU z=Q0oEKBAUk`v;*WkJ%jW6}{4p%~{Rb=wPomeoER~PW%LI^M0V@HDeC(%;j25wVQDC zte=^IQ^nU>)dfWMs2ax(*84JZABcPDc!1_a{+BxeV$)OOKas!0E2X>^iFPpdRx&XM z3;a#`A?z0<8f9PG#TgC|mo+GZQ6oTd%rzDtv@{vX^}Lk#0^|AId`Eowbt3{p3!ZM% z$8%D~cuq=;2N~TXBU;2f<_>22z=#4TXN+d0cP%p2W+r0h|7P!9z@w_p#qXJ9fC&ul z0fGjM5;av)v66~MB2g1y0xE$h1ki$5YdO(c#bgG&1qSv6vfYm5SXymsTRq42vpt@F zvDyHsN-mfLq#8sqfR%7j_b?~{TL?kP_j}i#nM{J(dcO8~&iOwdI@x=#`{iBlde?hf zJ$*2rQ)5q?7CnrY7Q0J=PEfmY(V-XO9eOU_ApxAgtl-K1fdRqplqKgzmj%1!{bXvz z&}bnK1WZ9LT7Rs5Y<(bCq!0Y2%8xDOW8-bh@dlXxAigk8Q4bDc6{lHn8D;vv$w=6P z$Xb=Lqeb>;(iqVpQKS1ryfL!a=uCl1WrxPrIE`ZNWJTX6sEJ}FcQt;GDPdanP5hml zE%v3ilEg2!#^3HpVKx@}b4Y7ih@f>BUsYK z)5~*0H9B%C&p9g3aKf{tw$ao!EBot$9;}a6b$83j#m68}d5Ef{C{lS^KWBLoKIZm5 zOOr5rEecEF2w!T2Qkhzr3d!E3q*t?Kd$SjyEWR+ft;Bpu0f7-U{%X51yVHSDq`jBS z>>gfcZ#vbRXjf13WUm~vhGx(O)l`?De0m*24K^kbRlW$wQv|IFhs2x4({6Bb6a8P< z#5vt>11U5{^a|J!%93R-1qn5n+`32#qI7!pkeyUHi78Vkv1)T*M&tlTDZw$ebDT5F z(rL6czfEZd^w|!V>=6X(|5r7`A_kPRS-dDM^ixWbdzi%Xhx&Tjpelo(bH600ua(Wa zY!TCF6$#)UEqn0}-hcbLI!?OmuP6CRQe*qspHdyG|BaRW1iuaZ^K&<&Y;h)zIO_MOgwuZp;`XR^$qa^Jeh}a__SQ-{sQ#65W`u*wVb19v zser!7Wn3LQw3TJ{5gk7=KBm|sY|&razr+fn}Ww!JEpR$vuD$?vBtLJJ88$b zdj}f*jp;6RJ)VKfcv-1p#=DOk*}$YHoz0VH?_GTstPa`IVIisgoaNhVGyn8kZ02HN zo-TOUhKZhIE!oDCt-$&k?mPPc+0Z{LARDQGY`g%O(Z9LKC0n?@X&U=?Oxw{-r!1Z0 zl1y)Wew}K5J7s=LoZ);&-aFcqchn^7T}*A)av-o18c%L699!?`&C2koa3Nr<`a zqXXI`c~}MgqiuqIg`VU;#3m@_FX%p(Irb|%C>84>`#fBx)l3{?Y&UNljghF!c-@Ey z^BkY}a%rmcQdsAYXqnF3Ok;Y&tm zj&)&tc_;KQupb+5D(`c03dV@qVdlyVKCc}6!YchmkQxy0KPpeHsvg9g#JQ|$;ak+0 zS1u=7xQeX=m@fFX*{J;lcdHBg7hSO!!5JXTTeNRGzl=S>tx%S61_FremFj z2jlc=P%8Fn)wqwS7OdnjRQ`ac=OS-m-I2-#x$Lp87&lIYHuo0)9FwNitxOf`s#~R1 zDcG776y&zR@~ueYtDxXnr(ZM2W%nrOPZu34QejRfzIx`m=?Z2C;i=vF34Hk+lxAKT zld=9F$X9rs{MD+&!A6F>(%=zWz_HF&ANG_!Jzk}-fTRH#P@xA+e zTdZZnX<5wRi+Ph(l7Qe9SI5%GRa#$^W@Idlu#LYc%`vum8HL|`Nt!ofX{t!G{G`as zP&%M(cB@fj)U2wxNXry(K{6bXwoYYrYAeK(M6^V}R+J*N&~%!_ith!fy;u9!C^#nU z4eh5w(e0Gw8aL%Kty2jz7c4V9dwWZIl-bhb1RC|hBM4yP_$)M5^kyL%;Rp!*;_cad z%AUE7ZRZKLof7L$uR?Nm4<7>&DV>O{mRv`yU$^(JCB84vwme7D)$qlTx{R)wrPgltU0p7&qg6O64V)`Y6E&r$NM&D* z_Fuel`&?tR0e?}hsuwpW-B;7^0{?T-MKEpL!KK`Ywh&Wzv%jJ&zwly=Wmxf?qc2kz zV>F}6eBWu_Gy1Y1S>N8sM43}pwp>edmQC_Rg?8*$ha`w_NFDkSyMu05Sqq`o8ykVp zQI2D@zmlKu0ao&hkEJ~0<9SzNJY{BNK)J3&=?4RG4CsC}q)GSBZKELBZ%MYES7WEq z#hoS}@v27CzGv<{22)+-C&ZXx$vtywFkk0Fo>!IpkMVT8mNcH+6Zl-O8|MBQ7mdhx z8v7&SRZ?I?hIGguV;B0RN=UE4JZRr5w*rVTWO69|wPOn(~fo6OS85oekv=Ebo$_B}=N^fQ54U%0A7m?sR^XotqULG^S63SmI?e@sVai{Bs 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�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