diff --git a/src/vs/sessions/common/agentHostSessionsProvider.ts b/src/vs/sessions/common/agentHostSessionsProvider.ts index 58862cd264b..b1bdfe7fef4 100644 --- a/src/vs/sessions/common/agentHostSessionsProvider.ts +++ b/src/vs/sessions/common/agentHostSessionsProvider.ts @@ -68,8 +68,10 @@ export interface IAgentHostSessionsProvider extends ISessionsProvider { clearSessionConfig(sessionId: string): void; } -const LOCAL_AGENT_HOST_PROVIDER_ID = 'local-agent-host'; -const REMOTE_AGENT_HOST_PROVIDER_PREFIX = 'agenthost-'; +export const LOCAL_AGENT_HOST_PROVIDER_ID = 'local-agent-host'; +export const REMOTE_AGENT_HOST_PROVIDER_PREFIX = 'agenthost-'; +export const REMOTE_AGENT_HOST_PROVIDER_RE = /^agenthost-/; +export const ANY_AGENT_HOST_PROVIDER_RE = /^(local-agent-host|agenthost-)/; /** * Checks whether a provider is an agent host provider based on its diff --git a/src/vs/sessions/contrib/agentHost/browser/agentSessionSettings.contribution.ts b/src/vs/sessions/contrib/agentHost/browser/agentSessionSettings.contribution.ts index 657595bed09..dc712d1b4ff 100644 --- a/src/vs/sessions/contrib/agentHost/browser/agentSessionSettings.contribution.ts +++ b/src/vs/sessions/contrib/agentHost/browser/agentSessionSettings.contribution.ts @@ -16,6 +16,7 @@ import { ChatSessionProviderIdContext } from '../../../common/contextkeys.js'; import { ISession } from '../../../services/sessions/common/session.js'; import { SessionItemContextMenuId } from '../../sessions/browser/views/sessionsList.js'; import { agentSessionSettingsUri, AGENT_SESSION_SETTINGS_SCHEME, AgentSessionSettingsFileSystemProvider, AgentSessionSettingsSchemaRegistrar } from './agentSessionSettingsFileSystemProvider.js'; +import { ANY_AGENT_HOST_PROVIDER_RE } from '../../../common/agentHostSessionsProvider.js'; /** * Registers the {@link AgentSessionSettingsFileSystemProvider} with the @@ -57,7 +58,7 @@ registerAction2(class OpenSessionSettingsAction extends Action2 { id: SessionItemContextMenuId, group: '2_settings', order: 1, - when: ContextKeyExpr.regex(ChatSessionProviderIdContext.key, /^(local-agent-host|agenthost-)/), + when: ContextKeyExpr.regex(ChatSessionProviderIdContext.key, ANY_AGENT_HOST_PROVIDER_RE), }] }); } diff --git a/src/vs/sessions/contrib/agentHost/browser/localAgentHostSessionsProvider.ts b/src/vs/sessions/contrib/agentHost/browser/localAgentHostSessionsProvider.ts index 587aa5c248f..f492f082af1 100644 --- a/src/vs/sessions/contrib/agentHost/browser/localAgentHostSessionsProvider.ts +++ b/src/vs/sessions/contrib/agentHost/browser/localAgentHostSessionsProvider.ts @@ -22,8 +22,8 @@ import { BaseAgentHostSessionsProvider } from './baseAgentHostSessionsProvider.j import { buildAgentHostSessionWorkspace } from '../../../common/agentHostSessionWorkspace.js'; import { ISessionWorkspace, ISessionWorkspaceBrowseAction } from '../../../services/sessions/common/session.js'; import { toAgentHostUri } from '../../../../platform/agentHost/common/agentHostUri.js'; +import { LOCAL_AGENT_HOST_PROVIDER_ID } from '../../../common/agentHostSessionsProvider.js'; -const LOCAL_PROVIDER_ID = 'local-agent-host'; const LOCAL_RESOURCE_SCHEME_PREFIX = 'agent-host-'; /** @@ -36,7 +36,7 @@ const LOCAL_RESOURCE_SCHEME_PREFIX = 'agent-host-'; */ export class LocalAgentHostSessionsProvider extends BaseAgentHostSessionsProvider { - readonly id = LOCAL_PROVIDER_ID; + readonly id = LOCAL_AGENT_HOST_PROVIDER_ID; readonly label: string; readonly icon: ThemeIcon = Codicon.vm; readonly browseActions: readonly ISessionWorkspaceBrowseAction[]; diff --git a/src/vs/sessions/contrib/chat/browser/agentHost/agentHostModelPicker.ts b/src/vs/sessions/contrib/chat/browser/agentHost/agentHostModelPicker.ts index 38c6a51d478..76b080d849f 100644 --- a/src/vs/sessions/contrib/chat/browser/agentHost/agentHostModelPicker.ts +++ b/src/vs/sessions/contrib/chat/browser/agentHost/agentHostModelPicker.ts @@ -21,10 +21,11 @@ import { type ISession } from '../../../../services/sessions/common/session.js'; import { ISessionsManagementService } from '../../../../services/sessions/common/sessionsManagement.js'; import { ISessionsProvidersService } from '../../../../services/sessions/browser/sessionsProvidersService.js'; import { Menus } from '../../../../browser/menus.js'; +import { LOCAL_AGENT_HOST_PROVIDER_ID, REMOTE_AGENT_HOST_PROVIDER_RE } from '../../../../common/agentHostSessionsProvider.js'; const IsActiveSessionAgentHost = ContextKeyExpr.or( - ContextKeyExpr.equals(ActiveSessionProviderIdContext.key, 'local-agent-host'), - ContextKeyExpr.regex(ActiveSessionProviderIdContext.key, /^agenthost-/), + ContextKeyExpr.equals(ActiveSessionProviderIdContext.key, LOCAL_AGENT_HOST_PROVIDER_ID), + ContextKeyExpr.regex(ActiveSessionProviderIdContext.key, REMOTE_AGENT_HOST_PROVIDER_RE), ); // -- Agent Host Model Picker Action -- diff --git a/src/vs/sessions/contrib/chat/browser/agentHost/agentHostSessionConfigPicker.ts b/src/vs/sessions/contrib/chat/browser/agentHost/agentHostSessionConfigPicker.ts index 0d5ef522787..0d1e14b769c 100644 --- a/src/vs/sessions/contrib/chat/browser/agentHost/agentHostSessionConfigPicker.ts +++ b/src/vs/sessions/contrib/chat/browser/agentHost/agentHostSessionConfigPicker.ts @@ -34,13 +34,13 @@ import { ActiveSessionProviderIdContext } from '../../../../common/contextkeys.j import { ISessionsProvidersService } from '../../../../services/sessions/browser/sessionsProvidersService.js'; import { ISessionsManagementService } from '../../../../services/sessions/common/sessionsManagement.js'; import type { ISessionsProvider } from '../../../../services/sessions/common/sessionsProvider.js'; -import { type IAgentHostSessionsProvider, isAgentHostProvider } from '../../../../common/agentHostSessionsProvider.js'; +import { type IAgentHostSessionsProvider, isAgentHostProvider, LOCAL_AGENT_HOST_PROVIDER_ID, REMOTE_AGENT_HOST_PROVIDER_RE } from '../../../../common/agentHostSessionsProvider.js'; import { PermissionPicker } from '../../../copilotChatSessions/browser/permissionPicker.js'; import { AgentHostPermissionPickerActionItem } from './agentHostPermissionPickerActionItem.js'; import { AgentHostPermissionPickerDelegate, AUTO_APPROVE_PROPERTY, isWellKnownAutoApproveSchema } from './agentHostPermissionPickerDelegate.js'; -const IsActiveSessionRemoteAgentHost = ContextKeyExpr.regex(ActiveSessionProviderIdContext.key, /^agenthost-/); -const IsActiveSessionLocalAgentHost = ContextKeyExpr.equals(ActiveSessionProviderIdContext.key, 'local-agent-host'); +const IsActiveSessionRemoteAgentHost = ContextKeyExpr.regex(ActiveSessionProviderIdContext.key, REMOTE_AGENT_HOST_PROVIDER_RE); +const IsActiveSessionLocalAgentHost = ContextKeyExpr.equals(ActiveSessionProviderIdContext.key, LOCAL_AGENT_HOST_PROVIDER_ID); registerAction2(class extends Action2 { constructor() { diff --git a/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.ts b/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.ts index 640613a6630..b25fa07f82d 100644 --- a/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.ts +++ b/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.ts @@ -18,7 +18,7 @@ import { ITerminalInstance, ITerminalService } from '../../../../workbench/contr import { TerminalCapability } from '../../../../platform/terminal/common/capabilities/capabilities.js'; import { IPathService } from '../../../../workbench/services/path/common/pathService.js'; import { Menus } from '../../../browser/menus.js'; -import { isAgentHostProvider } from '../../../common/agentHostSessionsProvider.js'; +import { isAgentHostProvider, LOCAL_AGENT_HOST_PROVIDER_ID } from '../../../common/agentHostSessionsProvider.js'; import { SessionsWelcomeVisibleContext, IsPhoneLayoutContext } from '../../../common/contextkeys.js'; import { ISessionsManagementService } from '../../../services/sessions/common/sessionsManagement.js'; import { CopilotCLISessionType, ISession } from '../../../services/sessions/common/session.js'; @@ -86,13 +86,17 @@ export class SessionsTerminalContribution extends Disposable implements IWorkben super(); const profileOverride = derived(reader => { - const profiles = this._agentHostTerminalService.profiles.read(reader); const session = this._sessionsManagementService.activeSession.read(reader); + if (!session || session.providerId === LOCAL_AGENT_HOST_PROVIDER_ID) { + return; // no need to override local default profiles with the local AH + } + const address = this._getSessionAgentHostAddress(session); if (!address) { return; } + const profiles = this._agentHostTerminalService.profiles.read(reader); return profiles.find(p => p.address === address) ?? this._agentHostTerminalService.getProfileForConnection(address); });