export type AIContextProviderType = 'open_tab' | 'local_file_search' | 'issue' | 'merge_request' | 'snippet'; export type AIContextCategory = 'file' | 'snippet' | 'issue' | 'merge_request'; export type AIContextItemMetadata = { title: string; enabled: boolean; disabledReasons?: string[]; subType: AIContextProviderType; }; /** Items that can be added to the AI context * @param {string} id - The id of the context item * @param {string} content - The content of the context item to be used by the AI, only sent on retreival * @param {AIContextCategory} category - The category or source of the context item * @param {AIContextItemMetadata} metadata - Metadata about the context item, format depends on category */ export type AIContextItem = { id: string; category: AIContextCategory; content?: string; metadata: AIContextItemMetadata; }; export type AIContextSearchQuery = { category: AIContextCategory; query: string; workspaceFolders: import('vscode-languageserver-protocol').WorkspaceFolder[]; }; export interface AIContextProvider { type: AIContextProviderType; addSelectedContextItem: (contextItem: T) => void; removeSelectedContextItem: (id: string) => void; clearSelectedContextItems: () => void; replaceSelectedContextItem: (oldItem: T, newItem: T) => void; getSelectedContextItems: () => T[]; searchContextItems: (query: AIContextSearchQuery) => Promise; retrieveSelectedContextItemsWithContent: () => Promise; } export declare const AIContextEndpoints: { readonly QUERY: "$/gitlab/ai-context/query"; readonly ADD: "$/gitlab/ai-context/add"; readonly REMOVE: "$/gitlab/ai-context/remove"; readonly CURRENT_ITEMS: "$/gitlab/ai-context/current-items"; readonly RETRIEVE: "$/gitlab/ai-context/retrieve"; readonly GET_PROVIDER_CATEGORIES: "$/gitlab/ai-context/get-provider-categories"; readonly CLEAR: "$/gitlab/ai-context/clear"; }; export type AIContextEndpointTypes = { [AIContextEndpoints.QUERY]: { request: AIContextSearchQuery; response: AIContextItem[]; }; [AIContextEndpoints.ADD]: { request: AIContextItem; response: boolean; }; [AIContextEndpoints.REMOVE]: { request: AIContextItem; response: boolean; }; [AIContextEndpoints.CURRENT_ITEMS]: { request: undefined; response: AIContextItem[]; }; [AIContextEndpoints.RETRIEVE]: { request: undefined; response: AIContextItem[]; }; [AIContextEndpoints.GET_PROVIDER_CATEGORIES]: { request: undefined; response: AIContextCategory[]; }; [AIContextEndpoints.CLEAR]: { request: undefined; response: boolean; }; };