Skip to content

Commit b366c24

Browse files
committed
fix/workaround issue microsoft#194373
fyi @roblourens
1 parent 73dd22e commit b366c24

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

src/vs/workbench/contrib/chat/common/chatModel.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -521,21 +521,26 @@ export class ChatModel extends Disposable implements IChatModel {
521521
this._welcomeMessage = new ChatWelcomeMessageModel(this, content);
522522
}
523523

524-
return requests.map((raw: ISerializableChatRequestData) => {
525-
const parsedRequest = typeof raw.message === 'string' ? this.getParsedRequestFromString(raw.message) :
526-
reviveParsedChatRequest(raw.message);
527-
const request = new ChatRequestModel(this, parsedRequest, raw.providerRequestId);
528-
if (raw.response || raw.responseErrorDetails) {
529-
const agent = raw.agent && this.chatAgentService.getAgents().find(a => a.id === raw.agent!.id); // TODO do something reasonable if this agent has disappeared since the last session
530-
request.response = new ChatResponseModel(raw.response ?? [new MarkdownString(raw.response)], this, agent, true, raw.isCanceled, raw.vote, raw.providerRequestId, raw.responseErrorDetails, raw.followups);
531-
}
532-
return request;
533-
});
524+
try {
525+
return requests.map((raw: ISerializableChatRequestData) => {
526+
const parsedRequest = typeof raw.message === 'string' ? this.getParsedRequestFromString(raw.message) :
527+
reviveParsedChatRequest(raw.message);
528+
const request = new ChatRequestModel(this, parsedRequest, raw.providerRequestId);
529+
if (raw.response || raw.responseErrorDetails) {
530+
const agent = raw.agent && this.chatAgentService.getAgents().find(a => a.id === raw.agent!.id); // TODO do something reasonable if this agent has disappeared since the last session
531+
request.response = new ChatResponseModel(raw.response ?? [new MarkdownString(raw.response)], this, agent, true, raw.isCanceled, raw.vote, raw.providerRequestId, raw.responseErrorDetails, raw.followups);
532+
}
533+
return request;
534+
});
535+
} catch (error) {
536+
this.logService.error('Failed to parse chat data', error);
537+
return [];
538+
}
534539
}
535540

536541
private getParsedRequestFromString(message: string): IParsedChatRequest {
537542
// TODO These offsets won't be used, but chat replies need to go through the parser as well
538-
const parts = [new ChatRequestTextPart(new OffsetRange(1, message.length), { startColumn: 1, startLineNumber: 1, endColumn: 1, endLineNumber: 1 }, message)];
543+
const parts = [new ChatRequestTextPart(new OffsetRange(0, message.length), { startColumn: 1, startLineNumber: 1, endColumn: 1, endLineNumber: 1 }, message)];
539544
return {
540545
text: message,
541546
parts

0 commit comments

Comments
 (0)