fix: rendering

Carlos Alexandro Becker created

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Change summary

internal/agent/tools/delete.go                             |  2 
internal/tui/components/chat/messages/renderer.go          | 28 ++++++++
internal/tui/components/dialogs/permissions/permissions.go | 20 +++++
3 files changed, 48 insertions(+), 2 deletions(-)

Detailed changes

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,
 					},
 				},
 			)

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, &params); 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
 // -----------------------------------------------------------------------------

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)