1087
1088
private queuePendingRequest(model: ChatModel, sessionResource: URI, request: string, options: IChatSendRequestOptions): ChatSendResultQueued {
1090
>
const parsedRequest = this.parseChatRequest(sessionResource, request, location, options);
1091
>
const requestModel = new ChatRequestModel({
1092
>
session: model,
1093
>
message: parsedRequest,
1094
>
variableData: { variables: options.attachedContext ?? [] },
1095
>
timestamp: Date.now(),
1096
>
modeInfo: options.modeInfo,
1097
>
locationData: options.locationData,
1098
>
attachedContext: options.attachedContext,
1099
>
modelId: options.userSelectedModelId,
1100
>
userSelectedTools: options.userSelectedTools?.get(),
1101
>
isSystemInitiated: options.isSystemInitiated,
1102
>
systemInitiatedLabel: options.systemInitiatedLabel,
1103
>
terminalExecutionId: options.terminalExecutionId,
1104
>
});
1105
>
1106
>
const deferred = new DeferredPromise<ChatSendResult>();
1107
>
this._queuedRequestDeferreds.set(requestModel.id, deferred);
1108
>
1109
>
model.addPendingRequest(requestModel, options.queue ?? ChatRequestQueueKind.Queued, { ...options, queue: undefined });
1110
>
1111
>
if (options.queue === ChatRequestQueueKind.Steering) {
1112
this.setYieldRequested(sessionResource);
1113
}
1115
>
this.trace('sendRequest', `Queued message for session ${sessionResource}`);
1116
>
return { kind: 'queued', deferred: deferred.p };
1117
>
}
1118
1119
async sendRequest(sessionResource: URI, request: string, options?: IChatSendRequestOptions): Promise<ChatSendResult> {