Merge pull request #193018 from microsoft/joh/architectural-earwig

inline - some more API tweaks
This commit is contained in:
Johannes Rieken
2023-09-13 17:15:30 +02:00
committed by GitHub
4 changed files with 4 additions and 27 deletions

View File

@@ -1299,7 +1299,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
registerInteractiveEditorSessionProvider(provider: vscode.InteractiveEditorSessionProvider, metadata?: vscode.InteractiveEditorSessionProviderMetadata) {
checkProposedApiEnabled(extension, 'interactive');
return extHostInteractiveEditor.registerProvider(extension, provider, metadata = { label: provider.label ?? extension.displayName ?? extension.name });
return extHostInteractiveEditor.registerProvider(extension, provider, metadata = { label: metadata?.label ?? extension.displayName ?? extension.name });
},
registerInteractiveSessionProvider(id: string, provider: vscode.InteractiveSessionProvider) {
checkProposedApiEnabled(extension, 'interactive');

View File

@@ -143,7 +143,6 @@ export class ExtHostInteractiveEditor implements ExtHostInlineChatShape {
}
const apiRequest: vscode.InteractiveEditorRequest = {
session: sessionData.session,
prompt: request.prompt,
selection: typeConvert.Selection.to(request.selection),
wholeRange: typeConvert.Range.to(request.wholeRange),
@@ -171,9 +170,7 @@ export class ExtHostInteractiveEditor implements ExtHostInlineChatShape {
}
};
const task = typeof entry.provider.provideInteractiveEditorResponse2 === 'function'
? entry.provider.provideInteractiveEditorResponse2(apiRequest, progress, token)
: entry.provider.provideInteractiveEditorResponse(apiRequest.session, apiRequest, progress, token);
const task = entry.provider.provideInteractiveEditorResponse(sessionData.session, apiRequest, progress, token);
Promise.resolve(task).finally(() => done = true);
@@ -230,12 +227,7 @@ export class ExtHostInteractiveEditor implements ExtHostInlineChatShape {
}
$releaseSession(handle: number, sessionId: number) {
const sessionData = this._inputSessions.get(sessionId);
const entry = this._inputProvider.get(handle);
if (sessionData && entry) {
entry.provider.releaseInteractiveEditorSession?.(sessionData.session);
}
this._inputSessions.delete(sessionId);
// TODO@jrieken remove this
}
private static _isMessageResponse(thing: any): thing is vscode.InteractiveEditorMessageResponse {

View File

@@ -34,7 +34,6 @@ export interface IInlineChatSession {
message?: string;
slashCommands?: IInlineChatSlashCommand[];
wholeRange?: IRange;
dispose?(): void;
}
export interface IInlineChatRequest {

View File

@@ -27,9 +27,7 @@ declare module 'vscode' {
// todo@API make classes
export interface InteractiveEditorRequest {
session: InteractiveEditorSession;
prompt: string;
selection: Selection;
wholeRange: Range;
attempt: number;
@@ -67,23 +65,11 @@ declare module 'vscode' {
}
export interface InteractiveEditorSessionProvider<S extends InteractiveEditorSession = InteractiveEditorSession, R extends InteractiveEditorResponse | InteractiveEditorMessageResponse = InteractiveEditorResponse | InteractiveEditorMessageResponse> {
/**
* @deprecated
*/
label: string;
// Create a session. The lifetime of this session is the duration of the editing session with the input mode widget.
prepareInteractiveEditorSession(context: TextDocumentContext, token: CancellationToken): ProviderResult<S>;
provideInteractiveEditorResponse(session: S, request: Omit<InteractiveEditorRequest, 'session'>, progress: Progress<{ message: string; edits: TextEdit[] }>, token: CancellationToken): ProviderResult<R>;
/**
* @deprecated
*/
provideInteractiveEditorResponse2?(request: InteractiveEditorRequest, progress: Progress<{ message: string; edits: TextEdit[] }>, token: CancellationToken): ProviderResult<R>;
// eslint-disable-next-line local/vscode-dts-provider-naming
releaseInteractiveEditorSession?(session: S): any;
provideInteractiveEditorResponse(session: S, request: InteractiveEditorRequest, progress: Progress<{ message: string; edits: TextEdit[] }>, token: CancellationToken): ProviderResult<R>;
// eslint-disable-next-line local/vscode-dts-provider-naming
handleInteractiveEditorResponseFeedback?(session: S, response: R, kind: InteractiveEditorResponseFeedbackKind): void;