From 79793cc5e58dbcd97470855577a72a986ef98c7f Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Fri, 16 Jan 2026 14:33:53 -0300 Subject: [PATCH] fix: rendering Signed-off-by: Carlos Alexandro Becker --- internal/agent/tools/delete.go | 2 -- .../tui/components/chat/messages/renderer.go | 28 +++++++++++++++++++ .../dialogs/permissions/permissions.go | 20 +++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/internal/agent/tools/delete.go b/internal/agent/tools/delete.go index 5a3229654bc17e3346d146fa810b95cedf7b5647..89145b8e5733f3532407d059d7fede6b4c4f5148 100644 --- a/internal/agent/tools/delete.go +++ b/internal/agent/tools/delete.go @@ -31,7 +31,6 @@ type DeleteParams struct { type DeletePermissionsParams struct { FilePath string `json:"file_path"` Recursive bool `json:"recursive,omitempty"` - IsDir bool `json:"is_dir,omitempty"` } // DeleteToolName is the name of the delete tool. @@ -79,7 +78,6 @@ func NewDeleteTool(lspClients *csync.Map[string, *lsp.Client], permissions permi Params: DeletePermissionsParams{ FilePath: filePath, Recursive: params.Recursive, - IsDir: isDir, }, }, ) diff --git a/internal/tui/components/chat/messages/renderer.go b/internal/tui/components/chat/messages/renderer.go index 5fbd8a653c0b0374029bf13b31721d8ad5150948..36923917eb90406554f6d522bcea8530da9380dd 100644 --- a/internal/tui/components/chat/messages/renderer.go +++ b/internal/tui/components/chat/messages/renderer.go @@ -187,6 +187,7 @@ func init() { registry.register(tools.DownloadToolName, func() renderer { return downloadRenderer{} }) registry.register(tools.ViewToolName, func() renderer { return viewRenderer{} }) registry.register(tools.EditToolName, func() renderer { return editRenderer{} }) + registry.register(tools.DeleteToolName, func() renderer { return deleteRenderer{} }) registry.register(tools.MultiEditToolName, func() renderer { return multiEditRenderer{} }) registry.register(tools.WriteToolName, func() renderer { return writeRenderer{} }) registry.register(tools.FetchToolName, func() renderer { return simpleFetchRenderer{} }) @@ -567,6 +568,33 @@ func (mer multiEditRenderer) Render(v *toolCallCmp) string { }) } +// ----------------------------------------------------------------------------- +// Delete renderer +// ----------------------------------------------------------------------------- + +// deleteRenderer handles file/directory deletion display +type deleteRenderer struct { + baseRenderer +} + +// Render displays the delete operation with file path and recursive flag +func (dr deleteRenderer) Render(v *toolCallCmp) string { + var params tools.DeleteParams + var args []string + if err := dr.unmarshalParams(v.call.Input, ¶ms); err == nil { + file := fsext.PrettyPath(params.FilePath) + pb := newParamBuilder().addMain(file) + if params.Recursive { + pb.addFlag("recursive", true) + } + args = pb.build() + } + + return dr.renderWithParams(v, "Delete", args, func() string { + return renderPlainContent(v, v.result.Content) + }) +} + // ----------------------------------------------------------------------------- // Write renderer // ----------------------------------------------------------------------------- diff --git a/internal/tui/components/dialogs/permissions/permissions.go b/internal/tui/components/dialogs/permissions/permissions.go index d743d36f5b4674cd09fe7761c005fc2b9979252b..93da83447e7e02da652dc6531861ee5888b6ea36 100644 --- a/internal/tui/components/dialogs/permissions/permissions.go +++ b/internal/tui/components/dialogs/permissions/permissions.go @@ -451,6 +451,8 @@ func (p *permissionDialogCmp) getOrGenerateContent() string { content = p.generateViewContent() case tools.LSToolName: content = p.generateLSContent() + case tools.DeleteToolName: + content = p.generateDeleteContent() default: content = p.generateDefaultContent() } @@ -659,6 +661,24 @@ func (p *permissionDialogCmp) generateLSContent() string { return "" } +func (p *permissionDialogCmp) generateDeleteContent() string { + params, ok := p.permission.Params.(tools.DeletePermissionsParams) + if !ok { + return "" + } + t := styles.CurrentTheme() + baseStyle := t.S().Base.Background(t.BgSubtle) + + content := fmt.Sprintf("Filepath: %s", fsext.PrettyPath(params.FilePath)) + if params.Recursive { + content += " (recursive)" + } + return baseStyle. + Padding(1, 2). + Width(p.contentViewPort.Width()). + Render(content) +} + func (p *permissionDialogCmp) generateDefaultContent() string { t := styles.CurrentTheme() baseStyle := t.S().Base.Background(t.BgSubtle)