Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up old unused chat API #194857

Merged
merged 1 commit into from
Oct 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 1 addition & 12 deletions src/vs/workbench/api/browser/mainThreadChat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { ExtHostChatShape, ExtHostContext, IChatRequestDto, IChatResponseProgres
import { IChatWidgetService } from 'vs/workbench/contrib/chat/browser/chat';
import { IChatContributionService } from 'vs/workbench/contrib/chat/common/chatContributionService';
import { isCompleteInteractiveProgressTreeData } from 'vs/workbench/contrib/chat/common/chatModel';
import { IChat, IChatDynamicRequest, IChatProgress, IChatRequest, IChatResponse, IChatResponseProgressFileTreeData, IChatService } from 'vs/workbench/contrib/chat/common/chatService';
import { IChat, IChatDynamicRequest, IChatProgress, IChatResponse, IChatResponseProgressFileTreeData, IChatService } from 'vs/workbench/contrib/chat/common/chatService';
import { IExtHostContext, extHostNamedCustomer } from 'vs/workbench/services/extensions/common/extHostCustomers';

@extHostNamedCustomer(MainContext.MainThreadChat)
Expand Down Expand Up @@ -89,13 +89,6 @@ export class MainThreadChat extends Disposable implements MainThreadChatShape {
}
};
},
resolveRequest: async (session, context, token) => {
const dto = await this._proxy.$resolveRequest(handle, session.id, context, token);
return <IChatRequest>{
session,
...dto
};
},
provideReply: async (request, progress, token) => {
const id = `${handle}_${request.session.id}`;
this._activeRequestProgressCallbacks.set(id, progress);
Expand Down Expand Up @@ -178,10 +171,6 @@ export class MainThreadChat extends Disposable implements MainThreadChatShape {
this._stateEmitters.get(sessionId)?.fire(state);
}

$addRequest(context: any): void {
this._chatService.addRequest(context);
}

async $sendRequestToProvider(providerId: string, message: IChatDynamicRequest): Promise<void> {
const widget = await this._chatWidgetService.revealViewForProvider(providerId);
if (widget && widget.viewModel) {
Expand Down
4 changes: 0 additions & 4 deletions src/vs/workbench/api/common/extHost.api.impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1305,10 +1305,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
checkProposedApiEnabled(extension, 'interactive');
return extHostChat.registerChatProvider(extension, id, provider);
},
addInteractiveRequest(context: vscode.InteractiveSessionRequestArgs) {
checkProposedApiEnabled(extension, 'interactive');
return extHostChat.addChatRequest(context);
},
sendInteractiveRequestToProvider(providerId: string, message: vscode.InteractiveSessionDynamicRequest) {
checkProposedApiEnabled(extension, 'interactive');
return extHostChat.sendInteractiveRequestToProvider(providerId, message);
Expand Down
2 changes: 0 additions & 2 deletions src/vs/workbench/api/common/extHost.protocol.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1229,7 +1229,6 @@ export type IChatResponseProgressDto =
export interface MainThreadChatShape extends IDisposable {
$registerChatProvider(handle: number, id: string): Promise<void>;
$acceptChatState(sessionId: number, state: any): Promise<void>;
$addRequest(context: any): void;
$sendRequestToProvider(providerId: string, message: IChatDynamicRequest): void;
$unregisterChatProvider(handle: number): Promise<void>;
$acceptResponseProgress(handle: number, sessionId: number, progress: IChatResponseProgressDto, responsePartHandle?: number): Promise<number | void>;
Expand All @@ -1238,7 +1237,6 @@ export interface MainThreadChatShape extends IDisposable {

export interface ExtHostChatShape {
$prepareChat(handle: number, initialState: any, token: CancellationToken): Promise<IChatDto | undefined>;
$resolveRequest(handle: number, sessionId: number, context: any, token: CancellationToken): Promise<Omit<IChatRequestDto, 'id'> | undefined>;
$provideWelcomeMessage(handle: number, token: CancellationToken): Promise<(string | IChatReplyFollowup[])[] | undefined>;
$provideFollowups(handle: number, sessionId: number, token: CancellationToken): Promise<IChatFollowup[] | undefined>;
$provideReply(handle: number, sessionId: number, request: IChatRequestDto, token: CancellationToken): Promise<IChatResponseDto | undefined>;
Expand Down
28 changes: 0 additions & 28 deletions src/vs/workbench/api/common/extHostChat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,6 @@ export class ExtHostChat implements ExtHostChatShape {
this._proxy.$transferChatSession(sessionId, newWorkspace);
}

addChatRequest(context: vscode.InteractiveSessionRequestArgs): void {
this._proxy.$addRequest(context);
}

sendInteractiveRequestToProvider(providerId: string, message: vscode.InteractiveSessionDynamicRequest): void {
this._proxy.$sendRequestToProvider(providerId, message);
}
Expand Down Expand Up @@ -102,30 +98,6 @@ export class ExtHostChat implements ExtHostChatShape {
};
}

async $resolveRequest(handle: number, sessionId: number, context: any, token: CancellationToken): Promise<Omit<IChatRequestDto, 'id'> | undefined> {
const entry = this._chatProvider.get(handle);
if (!entry) {
return undefined;
}

const realSession = this._chatSessions.get(sessionId);
if (!realSession) {
return undefined;
}

if (!entry.provider.resolveRequest) {
return undefined;
}
const request = await entry.provider.resolveRequest(realSession, context, token);
if (request) {
return {
message: typeof request.message === 'string' ? request.message : typeConvert.ChatReplyFollowup.from(request.message),
};
}

return undefined;
}

async $provideWelcomeMessage(handle: number, token: CancellationToken): Promise<(string | IChatReplyFollowup[])[] | undefined> {
const entry = this._chatProvider.get(handle);
if (!entry) {
Expand Down
2 changes: 0 additions & 2 deletions src/vs/workbench/contrib/chat/common/chatService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ export interface IChatProvider {
readonly displayName: string;
readonly iconUrl?: string;
prepareSession(initialState: IPersistedChatState | undefined, token: CancellationToken): ProviderResult<IChat | undefined>;
resolveRequest?(session: IChat, context: any, token: CancellationToken): ProviderResult<IChatRequest>;
provideWelcomeMessage?(token: CancellationToken): ProviderResult<(string | IChatReplyFollowup[])[] | undefined>;
provideFollowups?(session: IChat, token: CancellationToken): ProviderResult<IChatFollowup[] | undefined>;
provideReply(request: IChatRequest, progress: (progress: IChatProgress) => void, token: CancellationToken): ProviderResult<IChatResponse>;
Expand Down Expand Up @@ -262,7 +261,6 @@ export interface IChatService {
cancelCurrentRequestForSession(sessionId: string): void;
getSlashCommands(sessionId: string, token: CancellationToken): Promise<ISlashCommand[]>;
clearSession(sessionId: string): void;
addRequest(context: any): void;
addCompleteRequest(sessionId: string, message: IParsedChatRequest | string, response: IChatCompleteResponse): void;
sendRequestToProvider(sessionId: string, message: IChatDynamicRequest): void;
getHistory(): IChatDetail[];
Expand Down
29 changes: 0 additions & 29 deletions src/vs/workbench/contrib/chat/common/chatServiceImpl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -657,35 +657,6 @@ export class ChatService extends Disposable implements IChatService {
}
}

async addRequest(context: any): Promise<void> {
// This and resolveRequest are not currently used by any scenario, but leave for future use

// TODO How to decide which session this goes to?
const model = Iterable.first(this._sessionModels.values());
if (!model) {
// If no session, create one- how and is the service the right place to decide this?
this.trace('addRequest', 'No session available');
return;
}

const provider = this._providers.get(model.providerId);
if (!provider || !provider.resolveRequest) {
this.trace('addRequest', 'No provider available');
return undefined;
}

this.trace('addRequest', `Calling resolveRequest for session ${model.sessionId}`);
const request = await provider.resolveRequest(model.session!, context, CancellationToken.None);
if (!request) {
this.trace('addRequest', `Provider returned no request for session ${model.sessionId}`);
return;
}

// Maybe this API should queue a request after the current one?
this.trace('addRequest', `Sending resolved request for session ${model.sessionId}`);
this.sendRequest(model.sessionId, request.message);
}

async sendRequestToProvider(sessionId: string, message: IChatDynamicRequest): Promise<void> {
this.trace('sendRequestToProvider', `sessionId: ${sessionId}`);
await this.sendRequest(sessionId, message.message);
Expand Down
2 changes: 0 additions & 2 deletions src/vscode-dts/vscode.proposed.interactive.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,6 @@ declare module 'vscode' {
provideSlashCommands?(session: S, token: CancellationToken): ProviderResult<InteractiveSessionSlashCommand[]>;

prepareSession(initialState: InteractiveSessionState | undefined, token: CancellationToken): ProviderResult<S>;
resolveRequest(session: S, context: InteractiveSessionRequestArgs | string, token: CancellationToken): ProviderResult<InteractiveRequest>;
provideResponseWithProgress(request: InteractiveRequest, progress: Progress<InteractiveProgress>, token: CancellationToken): ProviderResult<InteractiveResponseForProgress>;

// eslint-disable-next-line local/vscode-dts-provider-naming
Expand All @@ -216,7 +215,6 @@ declare module 'vscode' {
export const _version: 1 | number;

export function registerInteractiveSessionProvider(id: string, provider: InteractiveSessionProvider): Disposable;
export function addInteractiveRequest(context: InteractiveSessionRequestArgs): void;

export function sendInteractiveRequestToProvider(providerId: string, message: InteractiveSessionDynamicRequest): void;

Expand Down
Loading