From b366c24d15f03f466722d1bf63fc57c437503795 Mon Sep 17 00:00:00 2001 From: Johannes Date: Thu, 28 Sep 2023 11:07:06 +0200 Subject: [PATCH 1/2] fix/workaround issue https://github.com/microsoft/vscode/issues/194373 fyi @roblourens --- .../contrib/chat/common/chatModel.ts | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/contrib/chat/common/chatModel.ts b/src/vs/workbench/contrib/chat/common/chatModel.ts index a8106a89760..2656e980d05 100644 --- a/src/vs/workbench/contrib/chat/common/chatModel.ts +++ b/src/vs/workbench/contrib/chat/common/chatModel.ts @@ -521,21 +521,26 @@ export class ChatModel extends Disposable implements IChatModel { this._welcomeMessage = new ChatWelcomeMessageModel(this, content); } - return requests.map((raw: ISerializableChatRequestData) => { - const parsedRequest = typeof raw.message === 'string' ? this.getParsedRequestFromString(raw.message) : - reviveParsedChatRequest(raw.message); - const request = new ChatRequestModel(this, parsedRequest, raw.providerRequestId); - if (raw.response || raw.responseErrorDetails) { - 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 - request.response = new ChatResponseModel(raw.response ?? [new MarkdownString(raw.response)], this, agent, true, raw.isCanceled, raw.vote, raw.providerRequestId, raw.responseErrorDetails, raw.followups); - } - return request; - }); + try { + return requests.map((raw: ISerializableChatRequestData) => { + const parsedRequest = typeof raw.message === 'string' ? this.getParsedRequestFromString(raw.message) : + reviveParsedChatRequest(raw.message); + const request = new ChatRequestModel(this, parsedRequest, raw.providerRequestId); + if (raw.response || raw.responseErrorDetails) { + 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 + request.response = new ChatResponseModel(raw.response ?? [new MarkdownString(raw.response)], this, agent, true, raw.isCanceled, raw.vote, raw.providerRequestId, raw.responseErrorDetails, raw.followups); + } + return request; + }); + } catch (error) { + this.logService.error('Failed to parse chat data', error); + return []; + } } private getParsedRequestFromString(message: string): IParsedChatRequest { // TODO These offsets won't be used, but chat replies need to go through the parser as well - const parts = [new ChatRequestTextPart(new OffsetRange(1, message.length), { startColumn: 1, startLineNumber: 1, endColumn: 1, endLineNumber: 1 }, message)]; + const parts = [new ChatRequestTextPart(new OffsetRange(0, message.length), { startColumn: 1, startLineNumber: 1, endColumn: 1, endLineNumber: 1 }, message)]; return { text: message, parts From 9dd53f138a12ad45cc91cfa7209e86951c4b319c Mon Sep 17 00:00:00 2001 From: Johannes Date: Thu, 28 Sep 2023 11:08:51 +0200 Subject: [PATCH 2/2] disable settings migration, workaround for https://github.com/microsoft/vscode/issues/194375 --- .../editor/browser/config/migrateOptions.ts | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/vs/editor/browser/config/migrateOptions.ts b/src/vs/editor/browser/config/migrateOptions.ts index e86102d5b77..3f6c4777ebc 100644 --- a/src/vs/editor/browser/config/migrateOptions.ts +++ b/src/vs/editor/browser/config/migrateOptions.ts @@ -193,17 +193,17 @@ registerEditorSettingMigration('experimental.stickyScroll.maxLineCount', (value, } }); -// Code Actions on Save -registerEditorSettingMigration('codeActionsOnSave', (value, read, write) => { - if (value && typeof value === 'object') { - const newValue = {} as any; - for (const entry of Object.entries(value)) { - if (typeof entry[1] === 'boolean') { - newValue[entry[0]] = entry[1] ? 'explicit' : 'never'; - } else { - newValue[entry[0]] = entry[1]; - } - } - write(`codeActionsOnSave`, newValue); - } -}); +// // Code Actions on Save +// registerEditorSettingMigration('codeActionsOnSave', (value, read, write) => { +// if (value && typeof value === 'object') { +// const newValue = {} as any; +// for (const entry of Object.entries(value)) { +// if (typeof entry[1] === 'boolean') { +// newValue[entry[0]] = entry[1] ? 'explicit' : 'never'; +// } else { +// newValue[entry[0]] = entry[1]; +// } +// } +// write(`codeActionsOnSave`, newValue); +// } +// });