mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-17 23:35:54 +01:00
fix duplicate fs registerr
This commit is contained in:
@@ -86,7 +86,7 @@ export class CopilotAgent extends Disposable implements IAgent {
|
||||
resource: 'https://api.github.com',
|
||||
resource_name: 'GitHub Copilot',
|
||||
authorization_servers: ['https://github.com/login/oauth'],
|
||||
scopes_supported: ['read:user', 'user:email'],
|
||||
scopes_supported: ['user:email'],
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
import { Disposable, DisposableMap, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';
|
||||
import { URI } from '../../../../base/common/uri.js';
|
||||
import * as nls from '../../../../nls.js';
|
||||
import { AgentHostFileSystemProvider } from '../../../../platform/agentHost/common/agentHostFileSystemProvider.js';
|
||||
import { AGENT_HOST_LABEL_FORMATTER, AGENT_HOST_SCHEME, agentHostAuthority, fromAgentHostUri } from '../../../../platform/agentHost/common/agentHostUri.js';
|
||||
import { AGENT_HOST_SCHEME, agentHostAuthority, fromAgentHostUri } from '../../../../platform/agentHost/common/agentHostUri.js';
|
||||
import { type AgentProvider, type IAgentConnection } from '../../../../platform/agentHost/common/agentService.js';
|
||||
import { IRemoteAgentHostConnectionInfo, IRemoteAgentHostService, RemoteAgentHostsEnabledSettingId, RemoteAgentHostsSettingId } from '../../../../platform/agentHost/common/remoteAgentHostService.js';
|
||||
import { isSessionAction } from '../../../../platform/agentHost/common/state/sessionActions.js';
|
||||
@@ -15,9 +14,7 @@ import { SessionClientState } from '../../../../platform/agentHost/common/state/
|
||||
import { ROOT_STATE_URI, type IAgentInfo, type IRootState } from '../../../../platform/agentHost/common/state/sessionState.js';
|
||||
import { Extensions as ConfigurationExtensions, IConfigurationRegistry } from '../../../../platform/configuration/common/configurationRegistry.js';
|
||||
import { IDefaultAccountService } from '../../../../platform/defaultAccount/common/defaultAccount.js';
|
||||
import { IFileService } from '../../../../platform/files/common/files.js';
|
||||
import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
|
||||
import { ILabelService } from '../../../../platform/label/common/label.js';
|
||||
import { ILogService } from '../../../../platform/log/common/log.js';
|
||||
import { Registry } from '../../../../platform/registry/common/platform.js';
|
||||
import { IWorkbenchContribution, registerWorkbenchContribution2, WorkbenchPhase } from '../../../../workbench/common/contributions.js';
|
||||
@@ -28,6 +25,7 @@ import { LoggingAgentConnection } from '../../../../workbench/contrib/chat/brows
|
||||
import { IChatSessionsService } from '../../../../workbench/contrib/chat/common/chatSessionsService.js';
|
||||
import { ILanguageModelsService } from '../../../../workbench/contrib/chat/common/languageModels.js';
|
||||
import { IAuthenticationService } from '../../../../workbench/services/authentication/common/authentication.js';
|
||||
import { IAgentHostFileSystemService } from '../../../../workbench/services/agentHost/common/agentHostFileSystemService.js';
|
||||
import { ISessionsManagementService } from '../../../contrib/sessions/browser/sessionsManagementService.js';
|
||||
import { ISessionsProvidersService } from '../../sessions/browser/sessionsProvidersService.js';
|
||||
import { RemoteAgentHostSessionsProvider } from './remoteAgentHostSessionsProvider.js';
|
||||
@@ -68,9 +66,6 @@ export class RemoteAgentHostContribution extends Disposable implements IWorkbenc
|
||||
/** Per-connection state: client state + per-agent registrations. */
|
||||
private readonly _connections = this._register(new DisposableMap<string, ConnectionState>());
|
||||
|
||||
/** Maps sanitized authority strings back to original addresses. */
|
||||
private readonly _fsProvider: AgentHostFileSystemProvider;
|
||||
|
||||
constructor(
|
||||
@IRemoteAgentHostService private readonly _remoteAgentHostService: IRemoteAgentHostService,
|
||||
@IChatSessionsService private readonly _chatSessionsService: IChatSessionsService,
|
||||
@@ -80,20 +75,11 @@ export class RemoteAgentHostContribution extends Disposable implements IWorkbenc
|
||||
@IAuthenticationService private readonly _authenticationService: IAuthenticationService,
|
||||
@IDefaultAccountService private readonly _defaultAccountService: IDefaultAccountService,
|
||||
@ISessionsManagementService private readonly _sessionsManagementService: ISessionsManagementService,
|
||||
@IFileService private readonly _fileService: IFileService,
|
||||
@ISessionsProvidersService private readonly _sessionsProvidersService: ISessionsProvidersService,
|
||||
@ILabelService private readonly _labelService: ILabelService,
|
||||
@IAgentHostFileSystemService private readonly _agentHostFileSystemService: IAgentHostFileSystemService,
|
||||
) {
|
||||
super();
|
||||
|
||||
// Register a single read-only filesystem provider for all remote agent
|
||||
// hosts. Individual connections are identified by the URI authority.
|
||||
this._fsProvider = this._register(new AgentHostFileSystemProvider());
|
||||
this._register(this._fileService.registerProvider(AGENT_HOST_SCHEME, this._fsProvider));
|
||||
|
||||
// Display agent-host URIs with the original file path
|
||||
this._register(this._labelService.registerFormatter(AGENT_HOST_LABEL_FORMATTER));
|
||||
|
||||
// Reconcile when connections change (added/removed/reconnected)
|
||||
this._register(this._remoteAgentHostService.onDidChangeConnections(() => {
|
||||
this._reconcileConnections();
|
||||
@@ -151,7 +137,7 @@ export class RemoteAgentHostContribution extends Disposable implements IWorkbenc
|
||||
|
||||
// Track authority -> connection mapping for FS provider routing
|
||||
const authority = agentHostAuthority(address);
|
||||
store.add(this._fsProvider.registerAuthority(authority, connection));
|
||||
store.add(this._agentHostFileSystemService.registerAuthority(authority, connection));
|
||||
|
||||
// Forward non-session actions to client state
|
||||
store.add(loggedConnection.onDidAction(envelope => {
|
||||
|
||||
@@ -6,17 +6,14 @@
|
||||
import { Disposable, DisposableMap, DisposableStore, toDisposable } from '../../../../../../base/common/lifecycle.js';
|
||||
import { URI } from '../../../../../../base/common/uri.js';
|
||||
import { IConfigurationService } from '../../../../../../platform/configuration/common/configuration.js';
|
||||
import { AgentHostFileSystemProvider } from '../../../../../../platform/agentHost/common/agentHostFileSystemProvider.js';
|
||||
import { IAgentHostService, AgentHostEnabledSettingId, type AgentProvider } from '../../../../../../platform/agentHost/common/agentService.js';
|
||||
import { AGENT_HOST_LABEL_FORMATTER, AGENT_HOST_SCHEME } from '../../../../../../platform/agentHost/common/agentHostUri.js';
|
||||
import { isSessionAction } from '../../../../../../platform/agentHost/common/state/sessionActions.js';
|
||||
import { SessionClientState } from '../../../../../../platform/agentHost/common/state/sessionClientState.js';
|
||||
import { ROOT_STATE_URI, type IAgentInfo, type IRootState } from '../../../../../../platform/agentHost/common/state/sessionState.js';
|
||||
import { IDefaultAccountService } from '../../../../../../platform/defaultAccount/common/defaultAccount.js';
|
||||
import { IFileService } from '../../../../../../platform/files/common/files.js';
|
||||
import { IInstantiationService } from '../../../../../../platform/instantiation/common/instantiation.js';
|
||||
import { ILabelService } from '../../../../../../platform/label/common/label.js';
|
||||
import { ILogService } from '../../../../../../platform/log/common/log.js';
|
||||
import { IAgentHostFileSystemService } from '../../../../../services/agentHost/common/agentHostFileSystemService.js';
|
||||
import { IWorkbenchContribution } from '../../../../../common/contributions.js';
|
||||
import { IAuthenticationService } from '../../../../../services/authentication/common/authentication.js';
|
||||
import { IChatSessionsService } from '../../../common/chatSessionsService.js';
|
||||
@@ -55,8 +52,7 @@ export class AgentHostContribution extends Disposable implements IWorkbenchContr
|
||||
@ILogService private readonly _logService: ILogService,
|
||||
@ILanguageModelsService private readonly _languageModelsService: ILanguageModelsService,
|
||||
@IInstantiationService private readonly _instantiationService: IInstantiationService,
|
||||
@IFileService private readonly _fileService: IFileService,
|
||||
@ILabelService private readonly _labelService: ILabelService,
|
||||
@IAgentHostFileSystemService private readonly _agentHostFileSystemService: IAgentHostFileSystemService,
|
||||
@IConfigurationService configurationService: IConfigurationService,
|
||||
) {
|
||||
super();
|
||||
@@ -72,14 +68,8 @@ export class AgentHostContribution extends Disposable implements IWorkbenchContr
|
||||
'agentHostIpc.local',
|
||||
'Agent Host (Local)'));
|
||||
|
||||
// Register a read-only filesystem provider for the local agent host
|
||||
// so that agent-host-scheme URIs with 'local' authority can be resolved.
|
||||
const fsProvider = this._register(new AgentHostFileSystemProvider());
|
||||
this._register(fsProvider.registerAuthority('local', this._agentHostService));
|
||||
this._register(this._fileService.registerProvider(AGENT_HOST_SCHEME, fsProvider));
|
||||
|
||||
// Display agent-host URIs with the original file path
|
||||
this._register(this._labelService.registerFormatter(AGENT_HOST_LABEL_FORMATTER));
|
||||
// Register the local agent host authority with the shared filesystem provider
|
||||
this._register(this._agentHostFileSystemService.registerAuthority('local', this._agentHostService));
|
||||
|
||||
// Shared client state for protocol reconciliation
|
||||
this._clientState = this._register(new SessionClientState(this._agentHostService.clientId, this._logService));
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Disposable, IDisposable } from '../../../../base/common/lifecycle.js';
|
||||
import { AgentHostFileSystemProvider, type IRemoteFilesystemConnection } from '../../../../platform/agentHost/common/agentHostFileSystemProvider.js';
|
||||
import { AGENT_HOST_LABEL_FORMATTER, AGENT_HOST_SCHEME } from '../../../../platform/agentHost/common/agentHostUri.js';
|
||||
import { IFileService } from '../../../../platform/files/common/files.js';
|
||||
import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';
|
||||
import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
|
||||
import { ILabelService } from '../../../../platform/label/common/label.js';
|
||||
|
||||
export const IAgentHostFileSystemService = createDecorator<IAgentHostFileSystemService>('agentHostFileSystemService');
|
||||
|
||||
export interface IAgentHostFileSystemService {
|
||||
readonly _serviceBrand: undefined;
|
||||
|
||||
/**
|
||||
* Register a mapping from a URI authority to a connection so that
|
||||
* `vscode-agent-host://[authority]/…` URIs resolve through this connection.
|
||||
*/
|
||||
registerAuthority(authority: string, connection: IRemoteFilesystemConnection): IDisposable;
|
||||
}
|
||||
|
||||
class AgentHostFileSystemService extends Disposable implements IAgentHostFileSystemService {
|
||||
declare readonly _serviceBrand: undefined;
|
||||
|
||||
private readonly _fsProvider: AgentHostFileSystemProvider;
|
||||
|
||||
constructor(
|
||||
@IFileService fileService: IFileService,
|
||||
@ILabelService labelService: ILabelService,
|
||||
) {
|
||||
super();
|
||||
|
||||
this._fsProvider = this._register(new AgentHostFileSystemProvider());
|
||||
this._register(fileService.registerProvider(AGENT_HOST_SCHEME, this._fsProvider));
|
||||
this._register(labelService.registerFormatter(AGENT_HOST_LABEL_FORMATTER));
|
||||
}
|
||||
|
||||
registerAuthority(authority: string, connection: IRemoteFilesystemConnection): IDisposable {
|
||||
return this._fsProvider.registerAuthority(authority, connection);
|
||||
}
|
||||
}
|
||||
|
||||
registerSingleton(IAgentHostFileSystemService, AgentHostFileSystemService, InstantiationType.Delayed);
|
||||
Reference in New Issue
Block a user