diff --git a/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.ts b/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.ts index c1ced270dc7..645abc36af5 100644 --- a/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.ts +++ b/src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.ts @@ -25,6 +25,7 @@ import { SessionsWelcomeVisibleContext } from '../../../common/contextkeys.js'; import { IViewsService } from '../../../../workbench/services/views/common/viewsService.js'; import { TERMINAL_VIEW_ID } from '../../../../workbench/contrib/terminal/common/terminal.js'; import { IWorkbenchLayoutService, Parts } from '../../../../workbench/services/layout/browser/layoutService.js'; +import { AGENT_HOST_SCHEME } from '../../../../platform/agentHost/common/agentHostUri.js'; const SessionsTerminalViewVisibleContext = new RawContextKey('sessionsTerminalViewVisible', false); @@ -38,7 +39,11 @@ function getSessionCwd(session: ISession | undefined): URI | undefined { return undefined; } const repo = session.workspace.get()?.repositories[0]; - return repo?.workingDirectory ?? repo?.uri; + const cwd = repo?.workingDirectory ?? repo?.uri; + if (cwd?.scheme === AGENT_HOST_SCHEME) { + return undefined; + } + return cwd; } /** diff --git a/src/vs/sessions/contrib/terminal/test/browser/sessionsTerminalContribution.test.ts b/src/vs/sessions/contrib/terminal/test/browser/sessionsTerminalContribution.test.ts index afd5653f3a5..95fb72dbf38 100644 --- a/src/vs/sessions/contrib/terminal/test/browser/sessionsTerminalContribution.test.ts +++ b/src/vs/sessions/contrib/terminal/test/browser/sessionsTerminalContribution.test.ts @@ -14,6 +14,7 @@ import { TestInstantiationService } from '../../../../../platform/instantiation/ import { NullLogService, ILogService } from '../../../../../platform/log/common/log.js'; import { ITerminalInstance, ITerminalService } from '../../../../../workbench/contrib/terminal/browser/terminal.js'; import { ITerminalCapabilityStore, ICommandDetectionCapability, TerminalCapability } from '../../../../../platform/terminal/common/capabilities/capabilities.js'; +import { toAgentHostUri } from '../../../../../platform/agentHost/common/agentHostUri.js'; import { AgentSessionProviders } from '../../../../../workbench/contrib/chat/browser/agentSessions/agentSessions.js'; import { ISessionsChangeEvent, ISessionsManagementService } from '../../../sessions/browser/sessionsManagementService.js'; import { IChat, ISession } from '../../../sessions/common/sessionData.js'; @@ -665,6 +666,18 @@ suite('SessionsTerminalContribution', () => { // No setActiveInstance calls from visibility update since no commands were run assert.strictEqual(activeInstanceSet.length, activeCountBefore, 'should not call setActiveInstance when no command history exists'); }); + + // --- Remote agent host sessions --- + + test('falls back to home directory for a background session with a remote agent host repository', async () => { + const remoteRepoUri = toAgentHostUri(URI.file('/Users/user/repo'), 'my-server'); + const session = makeAgentSession({ repository: remoteRepoUri, providerType: AgentSessionProviders.Background }); + activeSessionObs.set(session, undefined); + await tick(); + + assert.strictEqual(createdTerminals.length, 1, 'should create a terminal at the home directory'); + assert.strictEqual(createdTerminals[0].cwd.fsPath, HOME_DIR.fsPath); + }); }); function tick(): Promise {