From dafc509fa10a97fce856beb91459db4fd7d86d95 Mon Sep 17 00:00:00 2001 From: Andrew Pareles Date: Thu, 20 Mar 2025 05:55:15 -0700 Subject: [PATCH] always add tool_request --- .../contrib/void/browser/chatThreadService.ts | 10 +++++++--- .../contrib/void/browser/editCodeService.ts | 14 ++++++++++---- .../browser/react/src/sidebar-tsx/SidebarChat.tsx | 11 ++++++++--- .../src/void-command-bar-tsx/VoidCommandBar.tsx | 5 ++++- .../workbench/contrib/void/browser/toolsService.ts | 2 +- 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/vs/workbench/contrib/void/browser/chatThreadService.ts b/src/vs/workbench/contrib/void/browser/chatThreadService.ts index cb3ce39b..3f2aaad3 100644 --- a/src/vs/workbench/contrib/void/browser/chatThreadService.ts +++ b/src/vs/workbench/contrib/void/browser/chatThreadService.ts @@ -783,10 +783,14 @@ class ChatThreadService extends Disposable implements IChatThreadService { } // 2. if tool requires approval, break from the loop, awaiting approval - const requiresApproval = !this._settingsService.state.globalSettings.autoApprove - if (requiresApproval && toolNamesThatRequireApproval.has(toolName)) { + const requiresApproval = toolNamesThatRequireApproval.has(toolName) + if (requiresApproval) { + const autoApprove = this._settingsService.state.globalSettings.autoApprove + // add a tool_request because we use it for UI if a tool is loading (this should be improved in the future) this._addMessageToThread(threadId, { role: 'tool_request', name: toolName, paramsStr: toolParamsStr, params: toolParams, id: toolId }) - return { awaitingUserApproval: true } + if (!autoApprove) { + return { awaitingUserApproval: true } + } } } else { diff --git a/src/vs/workbench/contrib/void/browser/editCodeService.ts b/src/vs/workbench/contrib/void/browser/editCodeService.ts index 9b7580ab..54883d08 100644 --- a/src/vs/workbench/contrib/void/browser/editCodeService.ts +++ b/src/vs/workbench/contrib/void/browser/editCodeService.ts @@ -1244,12 +1244,18 @@ class EditCodeService extends Disposable implements IEditCodeService { // ctrlkzone should never have any conflicts } else { + console.log('KEEPING CONFLICTS!!!!!!!!') // keep conflict on whole file - to keep conflict, revert the change and use those contents as original, then un-revert the file - const currentFileStr = originalFileStr + console.log('originalFile', originalFileStr) + console.log('diffareas A', JSON.stringify(this.diffAreasOfURI, null, 2)) this.acceptOrRejectAllDiffAreas({ uri, removeCtrlKs: true, behavior: 'reject', _addToHistory: false }) + console.log('diffareas B', JSON.stringify(this.diffAreasOfURI, null, 2)) const oldFileStr = model.getValue(EndOfLinePreference.LF) // use this as original code - this._writeURIText(uri, currentFileStr, 'wholeFileRange', { shouldRealignDiffAreas: true }) // un-revert + console.log('oldFileStr', { oldFileStr }) + this._writeURIText(uri, originalFileStr, 'wholeFileRange', { shouldRealignDiffAreas: true }) // un-revert originalCode = oldFileStr + console.log('originalCode', { originalCode }) + console.log('NEW STR', { newStr: model.getValue(EndOfLinePreference.LF) }) } } @@ -1772,7 +1778,7 @@ class EditCodeService extends Disposable implements IEditCodeService { onFinalMessage: async (params) => { const { fullText } = params - console.log('DONE - editCode!', fullText) + console.log('DONE - editCode!', { fullText }) // 1. wait 500ms and fix lint errors - call lint error workflow // (update react state to say "Fixing errors") @@ -1788,7 +1794,7 @@ class EditCodeService extends Disposable implements IEditCodeService { addedTrackingZoneOfBlockNum.sort((a, b) => a.metadata.originalBounds[0] - b.metadata.originalBounds[0]) const { model } = this._voidModelService.getModel(uri) - console.log('CURRENT\n', model?.getValue()) + console.log('CURRENT!!!', { current: model?.getValue() }) console.log('ADDED', addedTrackingZoneOfBlockNum) console.log('BLOX', blocks) diff --git a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx index 10a9a6dc..dc776649 100644 --- a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx +++ b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx @@ -1113,7 +1113,7 @@ const ReasoningWrapper = ({ isDoneReasoning, isStreaming, children }: { isDoneRe const loadingTitleWrapper = (item: React.ReactNode) => { return {item} - + } const folderFileStr = (isFolder: boolean) => isFolder ? 'folder' : 'file' @@ -1652,6 +1652,11 @@ const toolNameToComponent: { [T in ToolName]: ToolComponent } = { /> } + else { + componentParams.children = + {value} + + } } } @@ -1769,7 +1774,7 @@ const ChatBubble = ({ chatMessage, isCommitted, messageIdx, isLast, chatIsRunnin /> } else if (role === 'tool_request') { - const ToolRequestWrapper = toolNameToComponent[chatMessage.name].requestWrapper as RequestWrapper + const ToolRequestWrapper = toolNameToComponent[chatMessage.name]?.requestWrapper as RequestWrapper const toolRequestType = ( chatIsRunning === 'awaiting_user' ? 'awaiting_user' : chatIsRunning === 'tool' ? 'running' @@ -1784,7 +1789,7 @@ const ChatBubble = ({ chatMessage, isCommitted, messageIdx, isLast, chatIsRunnin return null } else if (role === 'tool') { - const ToolResultWrapper = toolNameToComponent[chatMessage.name].resultWrapper as ResultWrapper + const ToolResultWrapper = toolNameToComponent[chatMessage.name]?.resultWrapper as ResultWrapper if (ToolResultWrapper) return return null diff --git a/src/vs/workbench/contrib/void/browser/react/src/void-command-bar-tsx/VoidCommandBar.tsx b/src/vs/workbench/contrib/void/browser/react/src/void-command-bar-tsx/VoidCommandBar.tsx index 6df78f20..718ea2ad 100644 --- a/src/vs/workbench/contrib/void/browser/react/src/void-command-bar-tsx/VoidCommandBar.tsx +++ b/src/vs/workbench/contrib/void/browser/react/src/void-command-bar-tsx/VoidCommandBar.tsx @@ -208,7 +208,10 @@ const VoidCommandBar = ({ uri, editor }: { uri: URI | null, editor: ICodeEditor File {currUriIdx + 1} of {sortedCommandBarURIs.length} } {currDiffIdx !== null && sortedDiffIds?.length &&
- Diff {currDiffIdx + 1} of {sortedDiffIds?.length ?? 0} + {(sortedDiffIds?.length ?? 0) === 0 ? + <>Diff {currDiffIdx + 1} of {sortedDiffIds?.length ?? 0} + : <>(No changes)} +
} diff --git a/src/vs/workbench/contrib/void/browser/toolsService.ts b/src/vs/workbench/contrib/void/browser/toolsService.ts index 629436a7..4d89a365 100644 --- a/src/vs/workbench/contrib/void/browser/toolsService.ts +++ b/src/vs/workbench/contrib/void/browser/toolsService.ts @@ -120,7 +120,7 @@ const validateStr = (argName: string, value: unknown) => { // We are NOT checking to make sure in workspace const validateURI = (uriStr: unknown) => { - if (typeof uriStr !== 'string') throw new Error('Error: provided uri must be a string.') + if (typeof uriStr !== 'string') throw new Error('Provided uri must be a string.') const uri = URI.file(uriStr) return uri