diff --git a/src/handler/addContext.ts b/src/handler/addContext.ts index 71a0d5d..b74e900 100644 --- a/src/handler/addContext.ts +++ b/src/handler/addContext.ts @@ -1,12 +1,10 @@ import * as vscode from 'vscode'; import ChatContextManager from '../context/contextManager'; -import {messageHandler} from './messageHandler'; -async function addConext(message: any, panel: vscode.WebviewPanel): Promise { +export async function addConext(message: any, panel: vscode.WebviewPanel): Promise { const contextStr = await ChatContextManager.getInstance().processText(message.selected); panel.webview.postMessage({ command: 'appendContext', context: contextStr }); return; } -messageHandler.registerHandler('addContext', addConext); diff --git a/src/handler/codeApply.ts b/src/handler/codeApply.ts index 8ea4833..f960724 100644 --- a/src/handler/codeApply.ts +++ b/src/handler/codeApply.ts @@ -1,14 +1,15 @@ import * as vscode from 'vscode'; -import { messageHandler } from './messageHandler'; export async function applyCode(text: string) { - if (vscode.window.visibleTextEditors.length > 1) { + const validVisibleTextEditors = vscode.window.visibleTextEditors.filter(editor => editor.viewColumn !== undefined); + + if (validVisibleTextEditors.length > 1) { vscode.window.showErrorMessage(`There are more then one visible text editors. Please close all but one and try again.`); return; } - const editor = vscode.window.visibleTextEditors[0]; + const editor = validVisibleTextEditors[0]; if (!editor) { return; } @@ -23,10 +24,9 @@ export async function applyCode(text: string) { } -async function codeApply(message: any, panel: vscode.WebviewPanel): Promise { +export async function codeApply(message: any, panel: vscode.WebviewPanel): Promise { await applyCode(message.content); return; } -messageHandler.registerHandler('code_apply', codeApply); diff --git a/src/handler/codeFileApply.ts b/src/handler/codeFileApply.ts index b7e1a96..2c13188 100644 --- a/src/handler/codeFileApply.ts +++ b/src/handler/codeFileApply.ts @@ -1,15 +1,15 @@ import * as vscode from 'vscode'; -import { messageHandler } from './messageHandler'; - export async function applyCodeFile(text: string) { - if (vscode.window.visibleTextEditors.length > 1) { - vscode.window.showErrorMessage(`There are more then one visible text editors. Please close all but one and try again.`); + const validVisibleTextEditors = vscode.window.visibleTextEditors.filter(editor => editor.viewColumn !== undefined); + + if (validVisibleTextEditors.length > 1) { + vscode.window.showErrorMessage(`2There are more then one visible text editors. Please close all but one and try again.`); return; } - const editor = vscode.window.visibleTextEditors[0]; + const editor = validVisibleTextEditors[0]; if (!editor) { return; } @@ -25,9 +25,9 @@ export async function applyCodeFile(text: string) { }); } -async function codeFileApply(message: any, panel: vscode.WebviewPanel): Promise { +export async function codeFileApply(message: any, panel: vscode.WebviewPanel): Promise { await applyCodeFile(message.content); return; } -messageHandler.registerHandler('code_file_apply', codeFileApply); + diff --git a/src/handler/convertCommand.ts b/src/handler/convertCommand.ts index bb60f7c..8db3103 100644 --- a/src/handler/convertCommand.ts +++ b/src/handler/convertCommand.ts @@ -1,12 +1,11 @@ import * as vscode from 'vscode'; import CommandManager from '../command/commandManager'; -import {messageHandler} from './messageHandler'; -async function convertCommand(message: any, panel: vscode.WebviewPanel): Promise { +export async function convertCommand(message: any, panel: vscode.WebviewPanel): Promise { const newText = await CommandManager.getInstance().processText(message.text); panel.webview.postMessage({ command: 'convertCommand', result: newText }); return; } -messageHandler.registerHandler('convertCommand', convertCommand); + diff --git a/src/handler/doCommit.ts b/src/handler/doCommit.ts index 064c6b5..003939d 100644 --- a/src/handler/doCommit.ts +++ b/src/handler/doCommit.ts @@ -1,9 +1,8 @@ import * as vscode from 'vscode'; import DtmWrapper from '../toolwrapper/dtm'; -import {messageHandler} from './messageHandler'; -async function doCommit(message: any, panel: vscode.WebviewPanel): Promise { +export async function doCommit(message: any, panel: vscode.WebviewPanel): Promise { const dtmWrapper = new DtmWrapper(); const commitResult = await dtmWrapper.commit(message.content); @@ -15,5 +14,4 @@ async function doCommit(message: any, panel: vscode.WebviewPanel): Promise return; } -messageHandler.registerHandler('doCommit', doCommit); diff --git a/src/handler/historyMessages.ts b/src/handler/historyMessages.ts index fec7dab..f07426e 100644 --- a/src/handler/historyMessages.ts +++ b/src/handler/historyMessages.ts @@ -1,9 +1,8 @@ import * as vscode from 'vscode'; import DevChat, { LogOptions } from '../toolwrapper/devchat'; -import {messageHandler} from './messageHandler'; -async function historyMessages(message: any, panel: vscode.WebviewPanel): Promise { +export async function historyMessages(message: any, panel: vscode.WebviewPanel): Promise { const devChat = new DevChat(); const logOptions: LogOptions = message.options || {}; @@ -12,5 +11,4 @@ async function historyMessages(message: any, panel: vscode.WebviewPanel): Promis return; } -messageHandler.registerHandler('historyMessages', historyMessages); diff --git a/src/handler/loadHandlers.ts b/src/handler/loadHandlers.ts index 779b1b4..7b4aba3 100644 --- a/src/handler/loadHandlers.ts +++ b/src/handler/loadHandlers.ts @@ -1,10 +1,24 @@ -import './addContext'; -import './codeApply'; -import './codeFileApply'; -import './convertCommand'; -import './doCommit'; -import './historyMessages'; -import './regCommandList'; -import './regContextList'; -import './sendMessage'; -import './showDiff'; \ No newline at end of file +import { messageHandler } from './messageHandler'; +import { codeApply } from './codeApply'; +import { codeFileApply } from './codeFileApply'; +import { convertCommand } from './convertCommand'; +import { doCommit } from './doCommit'; +import { historyMessages } from './historyMessages'; +import { regCommandList } from './regCommandList'; +import { regContextList } from './regContextList'; +import { sendMessage } from './sendMessage'; +import { blockApply } from './showDiff'; +import { showDiff } from './showDiff'; +import { addConext } from './addContext'; + +messageHandler.registerHandler('addContext', addConext); +messageHandler.registerHandler('code_apply', codeApply); +messageHandler.registerHandler('code_file_apply', codeFileApply); +messageHandler.registerHandler('convertCommand', convertCommand); +messageHandler.registerHandler('doCommit', doCommit); +messageHandler.registerHandler('historyMessages', historyMessages); +messageHandler.registerHandler('regCommandList', regCommandList); +messageHandler.registerHandler('regContextList', regContextList); +messageHandler.registerHandler('sendMessage', sendMessage); +messageHandler.registerHandler('block_apply', blockApply); +messageHandler.registerHandler('show_diff', showDiff); \ No newline at end of file diff --git a/src/handler/regCommandList.ts b/src/handler/regCommandList.ts index 822c233..f24be53 100644 --- a/src/handler/regCommandList.ts +++ b/src/handler/regCommandList.ts @@ -1,13 +1,12 @@ import * as vscode from 'vscode'; import CommandManager from '../command/commandManager'; -import {messageHandler} from './messageHandler'; -async function regCommandList(message: any, panel: vscode.WebviewPanel): Promise { +export async function regCommandList(message: any, panel: vscode.WebviewPanel): Promise { const commandList = CommandManager.getInstance().getCommandList(); panel.webview.postMessage({ command: 'regCommandList', result: commandList }); return; } -messageHandler.registerHandler('regCommandList', regCommandList); + diff --git a/src/handler/regContextList.ts b/src/handler/regContextList.ts index eb43735..de1865f 100644 --- a/src/handler/regContextList.ts +++ b/src/handler/regContextList.ts @@ -1,12 +1,11 @@ import * as vscode from 'vscode'; import ChatContextManager from '../context/contextManager'; -import {messageHandler} from './messageHandler'; -async function regContextList(message: any, panel: vscode.WebviewPanel): Promise { +export async function regContextList(message: any, panel: vscode.WebviewPanel): Promise { const contextList = ChatContextManager.getInstance().getContextList(); panel.webview.postMessage({ command: 'regContextList', result: contextList }); return; } -messageHandler.registerHandler('regContextList', regContextList); + diff --git a/src/handler/sendMessage.ts b/src/handler/sendMessage.ts index 0c2c278..48b48a3 100644 --- a/src/handler/sendMessage.ts +++ b/src/handler/sendMessage.ts @@ -4,7 +4,6 @@ import * as fs from 'fs'; import * as path from 'path'; import DevChat from '../toolwrapper/devchat'; import CommandManager from '../command/commandManager'; -import {messageHandler} from './messageHandler'; // Add this function to messageHandler.ts @@ -69,7 +68,7 @@ function getInstructionFiles(): string[] { let lastPromptHash: string | undefined; -async function sendMessage(message: any, panel: vscode.WebviewPanel): Promise { +export async function sendMessage(message: any, panel: vscode.WebviewPanel): Promise { const devChat = new DevChat(); const newText2 = await CommandManager.getInstance().processText(message.text); @@ -104,5 +103,5 @@ async function sendMessage(message: any, panel: vscode.WebviewPanel): Promise 1) { + const validVisibleTextEditors = vscode.window.visibleTextEditors.filter(editor => editor.viewColumn !== undefined); + + if (validVisibleTextEditors.length > 1) { vscode.window.showErrorMessage(`There are more then one visible text editors. Please close all but one and try again.`); return; } - const editor = vscode.window.visibleTextEditors[0]; + const editor = validVisibleTextEditors[0]; if (!editor) { return; } @@ -46,15 +47,14 @@ export async function diffView(code: string) { } -async function showDiff(message: any, panel: vscode.WebviewPanel): Promise { +export async function showDiff(message: any, panel: vscode.WebviewPanel): Promise { diffView(message.content); return; } -async function blockApply(message: any, panel: vscode.WebviewPanel): Promise { +export async function blockApply(message: any, panel: vscode.WebviewPanel): Promise { diffView(message.content); return; } -messageHandler.registerHandler('block_apply', blockApply); -messageHandler.registerHandler('show_diff', showDiff); + diff --git a/src/panel/chatPanel.ts b/src/panel/chatPanel.ts index 2632e7c..008719d 100644 --- a/src/panel/chatPanel.ts +++ b/src/panel/chatPanel.ts @@ -26,14 +26,10 @@ export default class ChatPanel { // Create a new webview panel private static createWebviewPanel(extensionUri: vscode.Uri): vscode.WebviewPanel { - const column = vscode.window.activeTextEditor - ? vscode.window.activeTextEditor.viewColumn - : undefined; - return vscode.window.createWebviewPanel( 'chatPanel', 'Chat', - column || vscode.ViewColumn.One, + vscode.ViewColumn.Beside, { enableScripts: true, localResourceRoots: [vscode.Uri.joinPath(extensionUri, 'dist')], diff --git a/src/toolwrapper/devchat.ts b/src/toolwrapper/devchat.ts index 55f4ac0..541aa8c 100644 --- a/src/toolwrapper/devchat.ts +++ b/src/toolwrapper/devchat.ts @@ -108,10 +108,10 @@ class DevChat { const devchatConfig = { model: openaiModel, provider: llmModel, + "tokens-per-prompt": tokensPerPrompt, OpenAI: { temperature: openaiTemperature, stream: openaiStream, - "tokens-per-prompt": tokensPerPrompt } } // write to config file