Don't show a terminal error when opening remote agent-host sessions (#305744)

This commit is contained in:
Rob Lourens
2026-03-27 10:56:23 -07:00
committed by GitHub
parent 7401c12e7e
commit 81a487a2a0
2 changed files with 19 additions and 1 deletions

View File

@@ -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<boolean>('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;
}
/**

View File

@@ -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<void> {