From 9ae05fea12ad05ea356a057f67afdde46d548843 Mon Sep 17 00:00:00 2001 From: Kujtim Hoxha Date: Mon, 14 Apr 2025 10:52:04 +0200 Subject: [PATCH] handle errros correctly in the bash tool --- internal/llm/tools/bash.go | 4 ++-- internal/permission/permission.go | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/llm/tools/bash.go b/internal/llm/tools/bash.go index d55cb241b9c0ade5a8b49518ee6b42f7115dfc7e..0cea20878731b24902796dba7efeace9f2d91312 100644 --- a/internal/llm/tools/bash.go +++ b/internal/llm/tools/bash.go @@ -273,14 +273,14 @@ func (b *bashTool) Run(ctx context.Context, call ToolCall) (ToolResponse, error) }, ) if !p { - return NewTextErrorResponse("permission denied"), nil + return ToolResponse{}, permission.ErrorPermissionDenied } } startTime := time.Now() shell := shell.GetPersistentShell(config.WorkingDirectory()) stdout, stderr, exitCode, interrupted, err := shell.Exec(ctx, params.Command, params.Timeout) if err != nil { - return NewTextErrorResponse(fmt.Sprintf("error executing command: %s", err)), nil + return ToolResponse{}, fmt.Errorf("error executing command: %w", err) } took := time.Since(startTime).Milliseconds() diff --git a/internal/permission/permission.go b/internal/permission/permission.go index ebf3fe0925b719afbe94f058ac6195611ed17341..8aa280906a397dd5766b4fcd52daf86b76506f8b 100644 --- a/internal/permission/permission.go +++ b/internal/permission/permission.go @@ -1,6 +1,7 @@ package permission import ( + "errors" "sync" "time" @@ -8,6 +9,8 @@ import ( "github.com/kujtimiihoxha/termai/internal/pubsub" ) +var ErrorPermissionDenied = errors.New("permission denied") + type CreatePermissionRequest struct { ToolName string `json:"tool_name"` Description string `json:"description"` @@ -15,6 +18,7 @@ type CreatePermissionRequest struct { Params any `json:"params"` Path string `json:"path"` } + type PermissionRequest struct { ID string `json:"id"` SessionID string `json:"session_id"`