Skip to content

Commit efce3c6

Browse files
committed
cycle
1 parent fd5d399 commit efce3c6

File tree

3 files changed

+31
-18
lines changed

3 files changed

+31
-18
lines changed

src/vs/workbench/contrib/mcp/browser/mcpCommands.ts

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import { h } from '../../../../base/browser/dom.js';
77
import { assertNever } from '../../../../base/common/assert.js';
8-
import { raceTimeout } from '../../../../base/common/async.js';
98
import { Codicon } from '../../../../base/common/codicons.js';
109
import { groupBy } from '../../../../base/common/collections.js';
1110
import { Event } from '../../../../base/common/event.js';
@@ -34,9 +33,9 @@ import { ActiveEditorContext, ResourceContextKey } from '../../../common/context
3433
import { IWorkbenchContribution } from '../../../common/contributions.js';
3534
import { IEditorService } from '../../../services/editor/common/editorService.js';
3635
import { IViewsService } from '../../../services/views/common/viewsService.js';
37-
import { ChatViewId, IChatWidget, IChatWidgetService } from '../../chat/browser/chat.js';
36+
import { IChatWidgetService } from '../../chat/browser/chat.js';
3837
import { ChatContextKeys } from '../../chat/common/chatContextKeys.js';
39-
import { ChatAgentLocation, ChatMode } from '../../chat/common/constants.js';
38+
import { ChatMode } from '../../chat/common/constants.js';
4039
import { ILanguageModelsService } from '../../chat/common/languageModels.js';
4140
import { extensionsFilterSubMenu, IExtensionsWorkbenchService } from '../../extensions/common/extensions.js';
4241
import { TEXT_FILE_EDITOR_ID } from '../../files/common/files.js';
@@ -47,6 +46,7 @@ import { IMcpSamplingService, IMcpServer, IMcpServerStartOpts, IMcpService, IMcp
4746
import { McpAddConfigurationCommand } from './mcpCommandsAddConfiguration.js';
4847
import { McpResourceQuickAccess, McpResourceQuickPick } from './mcpResourceQuickAccess.js';
4948
import { McpUrlHandler } from './mcpUrlHandler.js';
49+
import { openPanelChatAndGetWidget } from './openPanelChatAndGetWidget.js';
5050

5151
// acroynms do not get localized
5252
const category: ILocalizedString = {
@@ -745,18 +745,4 @@ export class McpStartPromptingServerCommand extends Action2 {
745745
}
746746
}
747747

748-
export async function openPanelChatAndGetWidget(viewsService: IViewsService, chatService: IChatWidgetService): Promise<IChatWidget | undefined> {
749-
await viewsService.openView(ChatViewId, true);
750-
const widgets = chatService.getWidgetsByLocations(ChatAgentLocation.Panel);
751-
if (widgets.length) {
752-
return widgets[0];
753-
}
754-
755-
const eventPromise = Event.toPromise(Event.filter(chatService.onDidAddWidget, e => e.location === ChatAgentLocation.Panel));
756748

757-
return await raceTimeout(
758-
eventPromise,
759-
10_000, // should be enough time for chat to initialize...
760-
() => eventPromise.cancel(),
761-
);
762-
}

src/vs/workbench/contrib/mcp/browser/mcpResourceQuickAccess.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { resolveImageEditorAttachContext } from '../../chat/browser/chatAttachme
2626
import { IChatRequestVariableEntry } from '../../chat/common/chatVariableEntries.js';
2727
import { IMcpResource, IMcpResourceTemplate, IMcpServer, IMcpService, isMcpResourceTemplate, McpCapability, McpConnectionState, McpResourceURI } from '../common/mcpTypes.js';
2828
import { IUriTemplateVariable } from '../common/uriTemplate.js';
29-
import { openPanelChatAndGetWidget } from './mcpCommands.js';
29+
import { openPanelChatAndGetWidget } from './openPanelChatAndGetWidget.js';
3030

3131
export class McpResourcePickHelper {
3232
public static sep(server: IMcpServer): IQuickPickSeparator {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import { raceTimeout } from '../../../../base/common/async.js';
7+
import { Event } from '../../../../base/common/event.js';
8+
import { IViewsService } from '../../../services/views/common/viewsService.js';
9+
import { IChatWidgetService, IChatWidget, ChatViewId } from '../../chat/browser/chat.js';
10+
import { ChatAgentLocation } from '../../chat/common/constants.js';
11+
12+
13+
export async function openPanelChatAndGetWidget(viewsService: IViewsService, chatService: IChatWidgetService): Promise<IChatWidget | undefined> {
14+
await viewsService.openView(ChatViewId, true);
15+
const widgets = chatService.getWidgetsByLocations(ChatAgentLocation.Panel);
16+
if (widgets.length) {
17+
return widgets[0];
18+
}
19+
20+
const eventPromise = Event.toPromise(Event.filter(chatService.onDidAddWidget, e => e.location === ChatAgentLocation.Panel));
21+
22+
return await raceTimeout(
23+
eventPromise,
24+
10000, // should be enough time for chat to initialize...
25+
() => eventPromise.cancel()
26+
);
27+
}

0 commit comments

Comments
 (0)