Path: blob/main/src/vs/workbench/contrib/chat/common/ignoredFiles.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 { IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';7import { URI } from '../../../../base/common/uri.js';8import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';910export interface ILanguageModelIgnoredFileProvider {11isFileIgnored(uri: URI, token: CancellationToken): Promise<boolean>;12}1314export const ILanguageModelIgnoredFilesService = createDecorator<ILanguageModelIgnoredFilesService>('languageModelIgnoredFilesService');15export interface ILanguageModelIgnoredFilesService {16_serviceBrand: undefined;1718fileIsIgnored(uri: URI, token: CancellationToken): Promise<boolean>;19registerIgnoredFileProvider(provider: ILanguageModelIgnoredFileProvider): IDisposable;20}2122export class LanguageModelIgnoredFilesService implements ILanguageModelIgnoredFilesService {23_serviceBrand: undefined;2425private readonly _providers = new Set<ILanguageModelIgnoredFileProvider>();2627async fileIsIgnored(uri: URI, token: CancellationToken): Promise<boolean> {28// Just use the first provider29const provider = this._providers.values().next().value;30return provider ?31provider.isFileIgnored(uri, token) :32false;33}3435registerIgnoredFileProvider(provider: ILanguageModelIgnoredFileProvider): IDisposable {36this._providers.add(provider);37return toDisposable(() => {38this._providers.delete(provider);39});40}41}424344