Skip to content

Commit 2e2ca2d

Browse files
committed
fix cyclic dependency with ChatInputPart#INPUT_SCHEME fyi @roblourens
1 parent d123e61 commit 2e2ca2d

File tree

7 files changed

+28
-25
lines changed

7 files changed

+28
-25
lines changed

src/vs/base/common/network.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ export namespace Schemas {
8484
/** Scheme used for the chat input editor. */
8585
export const vscodeChatSesssion = 'vscode-chat-editor';
8686

87+
/** Scheme used for the chat input part */
88+
export const vscodeChatInput = 'chatSessionInput';
89+
8790
/**
8891
* Scheme used internally for webviews that aren't linked to a resource (i.e. not custom editors)
8992
*/

src/vs/workbench/api/browser/mainThreadChatAgents2.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { revive } from '../../../base/common/marshalling.js';
1212
import { escapeRegExpCharacters } from '../../../base/common/strings.js';
1313
import { ThemeIcon } from '../../../base/common/themables.js';
1414
import { URI, UriComponents } from '../../../base/common/uri.js';
15+
import { Schemas } from '../../../base/common/network.js';
1516
import { Position } from '../../../editor/common/core/position.js';
1617
import { Range } from '../../../editor/common/core/range.js';
1718
import { getWordAtText } from '../../../editor/common/core/wordHelper.js';
@@ -23,7 +24,6 @@ import { IInstantiationService } from '../../../platform/instantiation/common/in
2324
import { ILogService } from '../../../platform/log/common/log.js';
2425
import { IUriIdentityService } from '../../../platform/uriIdentity/common/uriIdentity.js';
2526
import { IChatWidgetService } from '../../contrib/chat/browser/chat.js';
26-
import { ChatInputPart } from '../../contrib/chat/browser/chatInputPart.js';
2727
import { AddDynamicVariableAction, IAddDynamicVariableContext } from '../../contrib/chat/browser/contrib/chatDynamicVariables.js';
2828
import { IChatAgentHistoryEntry, IChatAgentImplementation, IChatAgentRequest, IChatAgentService } from '../../contrib/chat/common/chatAgents.js';
2929
import { IChatEditingService, IChatRelatedFileProviderMetadata } from '../../contrib/chat/common/chatEditingService.js';
@@ -313,7 +313,7 @@ export class MainThreadChatAgents2 extends Disposable implements MainThreadChatA
313313
};
314314
this._agentIdsToCompletionProviders.set(id, this._chatAgentService.registerAgentCompletionProvider(id, provide));
315315

316-
this._agentCompletionProviders.set(handle, this._languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, {
316+
this._agentCompletionProviders.set(handle, this._languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
317317
_debugDisplayName: 'chatAgentCompletions:' + handle,
318318
triggerCharacters,
319319
provideCompletionItems: async (model: ITextModel, position: Position, _context: CompletionContext, token: CancellationToken) => {

src/vs/workbench/contrib/chat/browser/chatEdinputInputContentProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { Disposable } from '../../../../base/common/lifecycle.js';
7+
import { Schemas } from '../../../../base/common/network.js';
78
import { URI } from '../../../../base/common/uri.js';
89
import { ILanguageService } from '../../../../editor/common/languages/language.js';
910
import { ITextModel } from '../../../../editor/common/model.js';
1011
import { IModelService } from '../../../../editor/common/services/model.js';
1112
import { ITextModelContentProvider, ITextModelService } from '../../../../editor/common/services/resolverService.js';
12-
import { ChatInputPart } from './chatInputPart.js';
1313

1414

1515
export class ChatInputBoxContentProvider extends Disposable implements ITextModelContentProvider {
@@ -19,7 +19,7 @@ export class ChatInputBoxContentProvider extends Disposable implements ITextMode
1919
@ILanguageService private readonly languageService: ILanguageService
2020
) {
2121
super();
22-
this._register(textModelService.registerTextModelContentProvider(ChatInputPart.INPUT_SCHEME, this));
22+
this._register(textModelService.registerTextModelContentProvider(Schemas.vscodeChatInput, this));
2323
}
2424

2525
async provideTextContent(resource: URI): Promise<ITextModel | null> {

src/vs/workbench/contrib/chat/browser/chatInputPart.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import { isMacintosh } from '../../../../base/common/platform.js';
2727
import { isEqual } from '../../../../base/common/resources.js';
2828
import { assertType } from '../../../../base/common/types.js';
2929
import { URI } from '../../../../base/common/uri.js';
30+
import { Schemas } from '../../../../base/common/network.js';
3031
import { IEditorConstructionOptions } from '../../../../editor/browser/config/editorConfiguration.js';
3132
import { EditorExtensionsRegistry } from '../../../../editor/browser/editorExtensions.js';
3233
import { CodeEditorWidget } from '../../../../editor/browser/widget/codeEditor/codeEditorWidget.js';
@@ -137,7 +138,6 @@ export interface IWorkingSetEntry {
137138
const GlobalLastChatModeKey = 'chat.lastChatMode';
138139

139140
export class ChatInputPart extends Disposable implements IHistoryNavigationWidget {
140-
static readonly INPUT_SCHEME = 'chatSessionInput';
141141
private static _counter = 0;
142142

143143
private _onDidLoadInputState: Emitter<IChatInputState | undefined>;
@@ -427,7 +427,7 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge
427427
this._onDidChangeCurrentChatMode = this._register(new Emitter<void>());
428428
this.onDidChangeCurrentChatMode = this._onDidChangeCurrentChatMode.event;
429429
this._currentMode = ChatMode2.Ask;
430-
this.inputUri = URI.parse(`${ChatInputPart.INPUT_SCHEME}:input-${ChatInputPart._counter++}`);
430+
this.inputUri = URI.parse(`${Schemas.vscodeChatInput}:input-${ChatInputPart._counter++}`);
431431
this._chatEditsActionsDisposables = this._register(new DisposableStore());
432432
this._chatEditsDisposables = this._register(new DisposableStore());
433433
this._attemptedWorkingSetEntriesCount = 0;

src/vs/workbench/contrib/chat/browser/chatPasteProviders.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';
99
import { Disposable } from '../../../../base/common/lifecycle.js';
1010
import { revive } from '../../../../base/common/marshalling.js';
1111
import { Mimes } from '../../../../base/common/mime.js';
12+
import { Schemas } from '../../../../base/common/network.js';
1213
import { basename, joinPath } from '../../../../base/common/resources.js';
1314
import { URI, UriComponents } from '../../../../base/common/uri.js';
1415
import { IRange } from '../../../../editor/common/core/range.js';
@@ -25,7 +26,6 @@ import { IExtensionService, isProposedApiEnabled } from '../../../services/exten
2526
import { IChatRequestPasteVariableEntry, IChatRequestVariableEntry } from '../common/chatVariableEntries.js';
2627
import { IChatVariablesService, IDynamicVariable } from '../common/chatVariables.js';
2728
import { IChatWidgetService } from './chat.js';
28-
import { ChatInputPart } from './chatInputPart.js';
2929
import { ChatDynamicVariableModel } from './contrib/chatDynamicVariables.js';
3030
import { cleanupOldImages, createFileForMedia, resizeImage } from './imageUtils.js';
3131

@@ -180,7 +180,7 @@ export class CopyTextProvider implements DocumentPasteEditProvider {
180180
public readonly pasteMimeTypes = [];
181181

182182
async prepareDocumentPaste(model: ITextModel, ranges: readonly IRange[], dataTransfer: IReadonlyVSDataTransfer, token: CancellationToken): Promise<undefined | IReadonlyVSDataTransfer> {
183-
if (model.uri.scheme === ChatInputPart.INPUT_SCHEME) {
183+
if (model.uri.scheme === Schemas.vscodeChatInput) {
184184
return;
185185
}
186186

@@ -304,7 +304,7 @@ export class PasteTextProvider implements DocumentPasteEditProvider {
304304
) { }
305305

306306
async provideDocumentPasteEdits(model: ITextModel, ranges: readonly IRange[], dataTransfer: IReadonlyVSDataTransfer, _context: DocumentPasteContext, token: CancellationToken): Promise<DocumentPasteEditsSession | undefined> {
307-
if (model.uri.scheme !== ChatInputPart.INPUT_SCHEME) {
307+
if (model.uri.scheme !== Schemas.vscodeChatInput) {
308308
return;
309309
}
310310
const text = dataTransfer.get(Mimes.text);
@@ -442,9 +442,10 @@ export class ChatPasteProvidersFeature extends Disposable {
442442
@ILogService logService: ILogService,
443443
) {
444444
super();
445-
this._register(languageFeaturesService.documentPasteEditProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, pattern: '*', hasAccessToAllModels: true }, instaService.createInstance(CopyAttachmentsProvider)));
446-
this._register(languageFeaturesService.documentPasteEditProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, pattern: '*', hasAccessToAllModels: true }, new PasteImageProvider(chatWidgetService, extensionService, fileService, environmentService, logService)));
447-
this._register(languageFeaturesService.documentPasteEditProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, pattern: '*', hasAccessToAllModels: true }, new PasteTextProvider(chatWidgetService, modelService)));
445+
this._register(languageFeaturesService.documentPasteEditProvider.register({ scheme: Schemas.vscodeChatInput, pattern: '*', hasAccessToAllModels: true }, instaService.createInstance(CopyAttachmentsProvider)));
446+
this._register(languageFeaturesService.documentPasteEditProvider.register({ scheme: Schemas.vscodeChatInput, pattern: '*', hasAccessToAllModels: true }, new PasteImageProvider(chatWidgetService, extensionService, fileService, environmentService, logService)));
447+
this._register(languageFeaturesService.documentPasteEditProvider.register({ scheme: Schemas.vscodeChatInput, pattern: '*', hasAccessToAllModels: true }, new PasteTextProvider(chatWidgetService, modelService)));
448+
this._register(languageFeaturesService.documentPasteEditProvider.register('*', new CopyTextProvider()));
448449
this._register(languageFeaturesService.documentPasteEditProvider.register('*', new CopyTextProvider()));
449450
}
450451
}

src/vs/workbench/contrib/chat/browser/contrib/chatInputCompletions.ts

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ import { ToolSet } from '../../common/languageModelToolsService.js';
5656
import { IPromptsService } from '../../common/promptSyntax/service/promptsService.js';
5757
import { ChatSubmitAction } from '../actions/chatExecuteActions.js';
5858
import { IChatWidget, IChatWidgetService } from '../chat.js';
59-
import { ChatInputPart } from '../chatInputPart.js';
6059
import { ChatDynamicVariableModel } from './chatDynamicVariables.js';
6160

6261
class SlashCommandCompletions extends Disposable {
@@ -69,7 +68,7 @@ class SlashCommandCompletions extends Disposable {
6968
) {
7069
super();
7170

72-
this._register(this.languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, {
71+
this._register(this.languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
7372
_debugDisplayName: 'globalSlashCommands',
7473
triggerCharacters: ['/'],
7574
provideCompletionItems: async (model: ITextModel, position: Position, _context: CompletionContext, _token: CancellationToken) => {
@@ -116,7 +115,7 @@ class SlashCommandCompletions extends Disposable {
116115
};
117116
}
118117
}));
119-
this._register(this.languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, {
118+
this._register(this.languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
120119
_debugDisplayName: 'globalSlashCommandsAt',
121120
triggerCharacters: [chatAgentLeader],
122121
provideCompletionItems: async (model: ITextModel, position: Position, _context: CompletionContext, _token: CancellationToken) => {
@@ -157,7 +156,7 @@ class SlashCommandCompletions extends Disposable {
157156
};
158157
}
159158
}));
160-
this._register(this.languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, {
159+
this._register(this.languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
161160
_debugDisplayName: 'promptSlashCommands',
162161
triggerCharacters: ['/'],
163162
provideCompletionItems: async (model: ITextModel, position: Position, _context: CompletionContext, _token: CancellationToken) => {
@@ -205,7 +204,7 @@ class SlashCommandCompletions extends Disposable {
205204
}
206205
}));
207206

208-
this._register(this.languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, {
207+
this._register(this.languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
209208
_debugDisplayName: 'mcpPromptSlashCommands',
210209
triggerCharacters: ['/'],
211210
provideCompletionItems: async (model: ITextModel, position: Position, _context: CompletionContext, _token: CancellationToken) => {
@@ -307,9 +306,9 @@ class AgentCompletions extends Disposable {
307306
};
308307
}
309308
};
310-
this._register(this.languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, subCommandProvider));
309+
this._register(this.languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, subCommandProvider));
311310

312-
this._register(this.languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, {
311+
this._register(this.languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
313312
_debugDisplayName: 'chatAgentAndSubcommand',
314313
triggerCharacters: [chatAgentLeader],
315314
provideCompletionItems: async (model: ITextModel, position: Position, _context: CompletionContext, token: CancellationToken) => {
@@ -399,7 +398,7 @@ class AgentCompletions extends Disposable {
399398
}
400399
}));
401400

402-
this._register(this.languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, {
401+
this._register(this.languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
403402
_debugDisplayName: 'chatAgentAndSubcommand',
404403
triggerCharacters: [chatSubcommandLeader],
405404
provideCompletionItems: async (model: ITextModel, position: Position, _context: CompletionContext, token: CancellationToken) => {
@@ -457,7 +456,7 @@ class AgentCompletions extends Disposable {
457456
}
458457
}));
459458

460-
this._register(this.languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, {
459+
this._register(this.languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
461460
_debugDisplayName: 'installChatExtensions',
462461
triggerCharacters: [chatAgentLeader],
463462
provideCompletionItems: async (model: ITextModel, position: Position, _context: CompletionContext, token: CancellationToken) => {
@@ -842,7 +841,7 @@ class BuiltinDynamicCompletions extends Disposable {
842841
}
843842

844843
private registerVariableCompletions(debugName: string, provider: (details: IVariableCompletionsDetails, token: CancellationToken) => ProviderResult<CompletionList>, wordPattern: RegExp = BuiltinDynamicCompletions.VariableNameDef) {
845-
this._register(this.languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, {
844+
this._register(this.languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
846845
_debugDisplayName: `chatVarCompletions-${debugName}`,
847846
triggerCharacters: [chatVariableLeader],
848847
provideCompletionItems: async (model: ITextModel, position: Position, context: CompletionContext, token: CancellationToken) => {
@@ -1095,7 +1094,7 @@ class ToolCompletions extends Disposable {
10951094
) {
10961095
super();
10971096

1098-
this._register(this.languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, {
1097+
this._register(this.languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
10991098
_debugDisplayName: 'chatVariables',
11001099
triggerCharacters: [chatVariableLeader],
11011100
provideCompletionItems: async (model: ITextModel, position: Position, _context: CompletionContext, _token: CancellationToken) => {

src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import { CancellationToken } from '../../../../../../base/common/cancellation.js';
77
import { codiconsLibrary } from '../../../../../../base/common/codiconsLibrary.js';
88
import { Disposable } from '../../../../../../base/common/lifecycle.js';
9+
import { Schemas } from '../../../../../../base/common/network.js';
910
import { Position } from '../../../../../../editor/common/core/position.js';
1011
import { Range } from '../../../../../../editor/common/core/range.js';
1112
import { IWordAtPosition } from '../../../../../../editor/common/core/wordHelper.js';
@@ -20,7 +21,6 @@ import { IQuickInputService, IQuickPickItem, IQuickPickSeparator } from '../../.
2021
import { IWorkbenchContribution, registerWorkbenchContribution2, WorkbenchPhase } from '../../../../../common/contributions.js';
2122
import { IEditorService } from '../../../../../services/editor/common/editorService.js';
2223
import { IChatWidget, IChatWidgetService, showChatView } from '../../../../chat/browser/chat.js';
23-
import { ChatInputPart } from '../../../../chat/browser/chatInputPart.js';
2424
import { ChatDynamicVariableModel } from '../../../../chat/browser/contrib/chatDynamicVariables.js';
2525
import { computeCompletionRanges } from '../../../../chat/browser/contrib/chatInputCompletions.js';
2626
import { IChatAgentService } from '../../../../chat/common/chatAgents.js';
@@ -70,7 +70,7 @@ class NotebookChatContribution extends Disposable implements IWorkbenchContribut
7070
updateNotebookAgentStatus();
7171
this._register(chatAgentService.onDidChangeAgents(updateNotebookAgentStatus));
7272

73-
this._register(this.languageFeaturesService.completionProvider.register({ scheme: ChatInputPart.INPUT_SCHEME, hasAccessToAllModels: true }, {
73+
this._register(this.languageFeaturesService.completionProvider.register({ scheme: Schemas.vscodeChatInput, hasAccessToAllModels: true }, {
7474
_debugDisplayName: 'chatKernelDynamicCompletions',
7575
triggerCharacters: [chatVariableLeader],
7676
provideCompletionItems: async (model: ITextModel, position: Position, _context: CompletionContext, token: CancellationToken) => {

0 commit comments

Comments
 (0)