From 28d4c905e50043f241e0a2aac0dfddcc3ae01c63 Mon Sep 17 00:00:00 2001 From: Marc McIntosh Date: Thu, 13 Feb 2025 17:51:45 +0100 Subject: [PATCH 1/5] chore(new patches): remove code no longer used by chat --- src/sidebar.ts | 75 ++++++++------------------------------------------ 1 file changed, 11 insertions(+), 64 deletions(-) diff --git a/src/sidebar.ts b/src/sidebar.ts index f6fa184a..76edef52 100644 --- a/src/sidebar.ts +++ b/src/sidebar.ts @@ -23,18 +23,14 @@ import { ideNewFileAction, ideOpenSettingsAction, ideDiffPasteBackAction, - ideDiffPreviewAction, type ChatThread, - type DiffPreviewResponse, - resetDiffApi, ideAnimateFileStart, ideAnimateFileStop, - ideWriteResultsToFile, - type PatchResult, ideChatPageChange, ideEscapeKeyPressed, ideIsChatStreaming, - setCurrentProjectInfo + setCurrentProjectInfo, + ideCreateNewFile } from "refact-chat-js/dist/events"; import { basename, join } from "path"; import { diff_paste_back } from "./chatTab"; @@ -267,10 +263,7 @@ export class PanelWebview implements vscode.WebviewViewProvider { this._view?.webview.postMessage(message); } - sendClearDiffCacheMessage() { - const message = resetDiffApi(); - this._view?.webview.postMessage(message); - } + public new_statistic(view: vscode.WebviewView) @@ -545,9 +538,6 @@ export class PanelWebview implements vscode.WebviewViewProvider { return this.handleDiffPasteBack(e.payload); } - if (ideDiffPreviewAction.match(e)) { - return this.handleDiffPreview(e.payload); - } if(ideAnimateFileStart.match(e)) { return this.startFileAnimation(e.payload); @@ -557,10 +547,6 @@ export class PanelWebview implements vscode.WebviewViewProvider { return this.stopFileAnimation(e.payload); } - if(ideWriteResultsToFile.match(e)) { - return this.writeResultsToFile(e.payload); - } - if(ideChatPageChange.match(e)) { return this.handleCurrentChatPage(e.payload); } @@ -572,6 +558,10 @@ export class PanelWebview implements vscode.WebviewViewProvider { if(ideEscapeKeyPressed.match(e)) { return this.handleEscapePressed(e.payload); } + + if(ideCreateNewFile.match(e)) { + return this.createNewFileWithContent(e.payload.path, e.payload.content); + } // if(ideOpenChatInNewTab.match(e)) { // return this.handleOpenInTab(e.payload); @@ -605,6 +595,8 @@ export class PanelWebview implements vscode.WebviewViewProvider { // } + + // This isn't called async deleteFile(fileName: string) { const uri = this.filePathToUri(fileName); const edit = new vscode.WorkspaceEdit(); @@ -625,7 +617,6 @@ export class PanelWebview implements vscode.WebviewViewProvider { return vscode.workspace.applyEdit(edit).then(success => { if (success) { vscode.window.showTextDocument(document); - this.refetchDiffsOnSave(document); } else { vscode.window.showInformationMessage('Error: creating file ' + fileName); } @@ -633,6 +624,7 @@ export class PanelWebview implements vscode.WebviewViewProvider { }); } + // this isn't called async addDiffToFile(fileName: string, content: string) { const uri = this.filePathToUri(fileName); const document = await vscode.workspace.openTextDocument(uri); @@ -648,10 +640,9 @@ export class PanelWebview implements vscode.WebviewViewProvider { range, content ); - // TODO: can remove this when diff api is removed. - this.refetchDiffsOnSave(document); } + // this isn't called async editFileWithContent(fileName: string, content: string) { const uri = this.filePathToUri(fileName); const document = await vscode.workspace.openTextDocument(uri); @@ -673,17 +664,6 @@ export class PanelWebview implements vscode.WebviewViewProvider { } - async writeResultsToFile(results: PatchResult[]) { - for(const result of results) { - if(result.file_name_add) { - this.createNewFileWithContent(result.file_name_add, result.file_text); - } else if(result.file_name_edit) { - this.editFileWithContent(result.file_name_edit, result.file_text); - } else if (result.file_name_delete) { - this.deleteFile(result.file_name_delete); - } - } - } async handleCurrentChatPage(page: string) { this.context.globalState.update("chat_page", JSON.stringify(page)); @@ -795,39 +775,6 @@ export class PanelWebview implements vscode.WebviewViewProvider { } - private refetchDiffsOnSave(document: vscode.TextDocument) { - const disposables: vscode.Disposable[] = []; - const dispose = () => disposables.forEach(d => d.dispose()); - disposables.push(vscode.workspace.onDidSaveTextDocument((savedDocument) => { - if(savedDocument.uri.fsPath === document.uri.fsPath) { - this.sendClearDiffCacheMessage(); - dispose(); - } - })); - disposables.push(vscode.workspace.onDidCloseTextDocument((closedDocument) => { - if(closedDocument.uri.fsPath === document.uri.fsPath) { - dispose(); - } - })); - } - - private async handleDiffPreview(response: DiffPreviewResponse) { - - const openFiles = this.getOpenFiles(); - - for (const change of response.results) { - if (change.file_name_edit !== null && change.file_text !== null) { - this.addDiffToFile(change.file_name_edit, change.file_text); - } else if(change.file_name_add !== null && change.file_text!== null && openFiles.includes(change.file_name_add) === false) { - this.createNewFileWithContent(change.file_name_add, change.file_text); - } else if(change.file_name_add !== null && change.file_text!== null && openFiles.includes(change.file_name_add)) { - this.addDiffToFile(change.file_name_add, change.file_text); - } else if(change.file_name_delete) { - this.deleteFile(change.file_name_delete); - } - } - } - async handleOpenFile(file: {file_name:string, line?: number}) { const uri = this.filePathToUri(file.file_name); From 36de8925c2684dfe47a6d245db0a40a3c7e620b4 Mon Sep 17 00:00:00 2001 From: Marc McIntosh Date: Fri, 14 Feb 2025 20:50:07 +0100 Subject: [PATCH 2/5] feat: handle tool edit results from chat. --- src/sidebar.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/sidebar.ts b/src/sidebar.ts index 76edef52..5dceeea6 100644 --- a/src/sidebar.ts +++ b/src/sidebar.ts @@ -30,7 +30,9 @@ import { ideEscapeKeyPressed, ideIsChatStreaming, setCurrentProjectInfo, - ideCreateNewFile + ideCreateNewFile, + ideToolEdit, + ToolEditResult, } from "refact-chat-js/dist/events"; import { basename, join } from "path"; import { diff_paste_back } from "./chatTab"; @@ -558,7 +560,12 @@ export class PanelWebview implements vscode.WebviewViewProvider { if(ideEscapeKeyPressed.match(e)) { return this.handleEscapePressed(e.payload); } + + if(ideToolEdit.match(e)) { + return this.handleToolEdit(e.payload.path, e.payload.edit); + } + // TODO: can remove if(ideCreateNewFile.match(e)) { return this.createNewFileWithContent(e.payload.path, e.payload.content); } @@ -595,6 +602,14 @@ export class PanelWebview implements vscode.WebviewViewProvider { // } + async handleToolEdit(path: string, toolEdit: ToolEditResult) { + if(!toolEdit.file_before && toolEdit.file_after) { + return this.createNewFileWithContent(path, toolEdit.file_after); + } + + return this.addDiffToFile(path, toolEdit.file_after); + } + // This isn't called async deleteFile(fileName: string) { @@ -624,7 +639,6 @@ export class PanelWebview implements vscode.WebviewViewProvider { }); } - // this isn't called async addDiffToFile(fileName: string, content: string) { const uri = this.filePathToUri(fileName); const document = await vscode.workspace.openTextDocument(uri); From 869a526b752433e6fd4d060d73aabb955d2edf34 Mon Sep 17 00:00:00 2001 From: Marc McIntosh Date: Mon, 17 Feb 2025 12:52:35 +0100 Subject: [PATCH 3/5] refactor(patch actions): remove `ideCreateNewFile.match(e)`. --- src/sidebar.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/sidebar.ts b/src/sidebar.ts index 5dceeea6..ad8fed0a 100644 --- a/src/sidebar.ts +++ b/src/sidebar.ts @@ -30,7 +30,6 @@ import { ideEscapeKeyPressed, ideIsChatStreaming, setCurrentProjectInfo, - ideCreateNewFile, ideToolEdit, ToolEditResult, } from "refact-chat-js/dist/events"; @@ -564,12 +563,6 @@ export class PanelWebview implements vscode.WebviewViewProvider { if(ideToolEdit.match(e)) { return this.handleToolEdit(e.payload.path, e.payload.edit); } - - // TODO: can remove - if(ideCreateNewFile.match(e)) { - return this.createNewFileWithContent(e.payload.path, e.payload.content); - } - // if(ideOpenChatInNewTab.match(e)) { // return this.handleOpenInTab(e.payload); // } From 28552d15d74136df1c8ef837735b1cdcb02b7316 Mon Sep 17 00:00:00 2001 From: Marc McIntosh Date: Mon, 17 Feb 2025 17:02:54 +0100 Subject: [PATCH 4/5] fix(chat): thread type update. --- src/sidebar.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/sidebar.ts b/src/sidebar.ts index ad8fed0a..c2b8344b 100644 --- a/src/sidebar.ts +++ b/src/sidebar.ts @@ -66,6 +66,9 @@ export async function open_chat_tab( {role: "user", content: question}, ] : [], model: model, + new_chat_suggested: { + wasSuggested: false, + } }; global.side_panel.goto_chat(chat); // changes html From a2cd0bc5eb1bcc00d4767337add94022d12b7c45 Mon Sep 17 00:00:00 2001 From: Marc McIntosh Date: Tue, 18 Feb 2025 13:45:44 +0100 Subject: [PATCH 5/5] chore: bump chat to `v2.0.8-alpha.2` for new patch actions. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d0090de7..00aaad6a 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "fetch-h2": "^3.0.2", "json5": "^2.2.3", "marked": "^4.0.8", - "refact-chat-js": "~v2.0.6-alpha.1", + "refact-chat-js": "~v2.0.8-alpha.2", "uuid": "^9.0.1", "vscode-languageclient": "^7.0.0" },