import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation"; import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle"; import { ResourceMap } from "@codingame/monaco-vscode-api/vscode/vs/base/common/map"; import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable"; import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri"; import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model"; import { DetailedLineRangeMapping, LineRangeMapping } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/diff/rangeMapping"; import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service"; import { IChatEditingExplanationModelManager } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.service"; /** * Simple diff info interface for explanation generation */ export interface IExplanationDiffInfo { readonly changes: readonly (LineRangeMapping | DetailedLineRangeMapping)[]; readonly identical: boolean; readonly originalModel: ITextModel; readonly modifiedModel: ITextModel; } /** * A single explanation for a change */ export interface IChangeExplanation { readonly uri: URI; readonly startLineNumber: number; readonly endLineNumber: number; readonly originalText: string; readonly modifiedText: string; readonly explanation: string; } /** * Progress state for explanation generation */ export type ExplanationProgress = "idle" | "loading" | "complete" | "error"; /** * Explanation state for a single URI */ export interface IExplanationState { readonly progress: ExplanationProgress; readonly explanations: readonly IChangeExplanation[]; readonly diffInfo: IExplanationDiffInfo; readonly chatSessionResource: URI | undefined; readonly errorMessage?: string; } /** * Handle returned when generating explanations */ export interface IExplanationGenerationHandle extends IDisposable { /** * The URIs being explained */ readonly uris: readonly URI[]; /** * Promise that resolves when generation is complete */ readonly completed: Promise; } export declare class ChatEditingExplanationModelManager extends Disposable implements IChatEditingExplanationModelManager { private readonly _languageModelsService; readonly _serviceBrand: undefined; private readonly _state; readonly state: IObservable>; constructor(_languageModelsService: ILanguageModelsService); private _updateUriState; private _updateUriStatePartial; private _removeUris; generateExplanations(diffInfos: readonly IExplanationDiffInfo[], chatSessionResource: URI | undefined, token: CancellationToken): IExplanationGenerationHandle; private _doGenerateExplanations; }