Path: blob/main/src/vs/workbench/contrib/chat/common/chatVariables.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { CancellationToken } from '../../../../base/common/cancellation.js';6import { ThemeIcon } from '../../../../base/common/themables.js';7import { URI } from '../../../../base/common/uri.js';8import { IRange } from '../../../../editor/common/core/range.js';9import { Location } from '../../../../editor/common/languages.js';10import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';11import { IChatModel } from './chatModel.js';12import { IChatContentReference, IChatProgressMessage } from './chatService.js';13import { IDiagnosticVariableEntryFilterData } from './chatVariableEntries.js';14import { IToolAndToolSetEnablementMap } from './languageModelToolsService.js';1516export interface IChatVariableData {17id: string;18name: string;19icon?: ThemeIcon;20fullName?: string;21description: string;22modelDescription?: string;23canTakeArgument?: boolean;24}2526export interface IChatRequestProblemsVariable {27id: 'vscode.problems';28filter: IDiagnosticVariableEntryFilterData;29}3031export const isIChatRequestProblemsVariable = (obj: unknown): obj is IChatRequestProblemsVariable =>32typeof obj === 'object' && obj !== null && 'id' in obj && (obj as IChatRequestProblemsVariable).id === 'vscode.problems';3334export type IChatRequestVariableValue = string | URI | Location | Uint8Array | IChatRequestProblemsVariable | unknown;3536export type IChatVariableResolverProgress =37| IChatContentReference38| IChatProgressMessage;3940export interface IChatVariableResolver {41(messageText: string, arg: string | undefined, model: IChatModel, progress: (part: IChatVariableResolverProgress) => void, token: CancellationToken): Promise<IChatRequestVariableValue | undefined>;42}4344export const IChatVariablesService = createDecorator<IChatVariablesService>('IChatVariablesService');4546export interface IChatVariablesService {47_serviceBrand: undefined;48getDynamicVariables(sessionId: string): ReadonlyArray<IDynamicVariable>;49getSelectedToolAndToolSets(sessionId: string): IToolAndToolSetEnablementMap;50}5152export interface IDynamicVariable {53range: IRange;54id: string;55fullName?: string;56icon?: ThemeIcon;57modelDescription?: string;58isFile?: boolean;59isDirectory?: boolean;60data: IChatRequestVariableValue;61}626364