import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle"; 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 { IEditSessionEntryDiff } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService"; import { IChatResponseFileChangesService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.service"; /** * Supplies the per-response (per-request) file-change diffs rendered by the * "Changed N files" summary under a completed chat response. * * Most chat sessions derive these diffs from their {@link IChatEditingSession}. * Some session types (notably agent host sessions) own an authoritative, * server-computed view of a turn's changes and provide it here instead, so the * summary reflects the same source of truth as the rest of that session's * change UI. */ export interface IChatResponseFileChangesProvider { /** * Returns an observable of the file-change diffs produced by `requestId` * within `sessionResource`, or `undefined` when this provider cannot * supply changes for that request (in which case the caller falls back to * the chat editing session). */ getChangesForRequest(sessionResource: URI, requestId: string): IObservable | undefined; } export declare class ChatResponseFileChangesService extends Disposable implements IChatResponseFileChangesService { readonly _serviceBrand: undefined; private readonly _providers; registerProvider(chatSessionType: string, provider: IChatResponseFileChangesProvider): IDisposable; getChangesForRequest(sessionResource: URI, requestId: string): IObservable | undefined; }