From 3eed18432f360fb21404bd23a61f9ed22a5f7559 Mon Sep 17 00:00:00 2001 From: Kujtim Hoxha Date: Thu, 31 Jul 2025 18:11:55 +0200 Subject: [PATCH] fix: permissions path --- internal/llm/tools/edit.go | 20 +++++++++++++++++--- internal/llm/tools/multiedit.go | 14 +++++++++++--- internal/llm/tools/write.go | 7 ++++++- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/internal/llm/tools/edit.go b/internal/llm/tools/edit.go index 6011ea3846bb9bfd6de7d6a4dbc2ad2518b9c12b..36af176af8d8e531e30707dffad33b66ebb8d33b 100644 --- a/internal/llm/tools/edit.go +++ b/internal/llm/tools/edit.go @@ -215,10 +215,14 @@ func (e *editTool) createNewFile(ctx context.Context, filePath, content string, content, strings.TrimPrefix(filePath, e.workingDir), ) + permissionPath := filePath + if strings.HasPrefix(filePath, e.workingDir) { + permissionPath = e.workingDir + } p := e.permissions.Request( permission.CreatePermissionRequest{ SessionID: sessionID, - Path: filePath, + Path: permissionPath, ToolCallID: call.ID, ToolName: EditToolName, Action: "write", @@ -336,10 +340,15 @@ func (e *editTool) deleteContent(ctx context.Context, filePath, oldString string strings.TrimPrefix(filePath, e.workingDir), ) + permissionPath := filePath + if strings.HasPrefix(filePath, e.workingDir) { + permissionPath = e.workingDir + } + p := e.permissions.Request( permission.CreatePermissionRequest{ SessionID: sessionID, - Path: filePath, + Path: permissionPath, ToolCallID: call.ID, ToolName: EditToolName, Action: "write", @@ -466,10 +475,15 @@ func (e *editTool) replaceContent(ctx context.Context, filePath, oldString, newS newContent, strings.TrimPrefix(filePath, e.workingDir), ) + + permissionPath := filePath + if strings.HasPrefix(filePath, e.workingDir) { + permissionPath = e.workingDir + } p := e.permissions.Request( permission.CreatePermissionRequest{ SessionID: sessionID, - Path: filePath, + Path: permissionPath, ToolCallID: call.ID, ToolName: EditToolName, Action: "write", diff --git a/internal/llm/tools/multiedit.go b/internal/llm/tools/multiedit.go index 61559138aff61749532bd638fe7b7235c191ccb1..86a734611de35eb9beda7b78b6af338a985c7be9 100644 --- a/internal/llm/tools/multiedit.go +++ b/internal/llm/tools/multiedit.go @@ -250,9 +250,14 @@ func (m *multiEditTool) processMultiEditWithCreation(ctx context.Context, params // Check permissions _, additions, removals := diff.GenerateDiff("", currentContent, strings.TrimPrefix(params.FilePath, m.workingDir)) + permissionPath := params.FilePath + if strings.HasPrefix(params.FilePath, m.workingDir) { + permissionPath = m.workingDir + } + p := m.permissions.Request(permission.CreatePermissionRequest{ SessionID: sessionID, - Path: params.FilePath, + Path: permissionPath, ToolCallID: call.ID, ToolName: MultiEditToolName, Action: "write", @@ -359,10 +364,13 @@ func (m *multiEditTool) processMultiEditExistingFile(ctx context.Context, params // Generate diff and check permissions _, additions, removals := diff.GenerateDiff(oldContent, currentContent, strings.TrimPrefix(params.FilePath, m.workingDir)) - + permissionPath := params.FilePath + if strings.HasPrefix(params.FilePath, m.workingDir) { + permissionPath = m.workingDir + } p := m.permissions.Request(permission.CreatePermissionRequest{ SessionID: sessionID, - Path: params.FilePath, + Path: permissionPath, ToolCallID: call.ID, ToolName: MultiEditToolName, Action: "write", diff --git a/internal/llm/tools/write.go b/internal/llm/tools/write.go index 256c936313af19f1477b7f09a4eed007412bd4bc..da8722d5646a058b9241fbe487b0ecc6c95d82ae 100644 --- a/internal/llm/tools/write.go +++ b/internal/llm/tools/write.go @@ -172,10 +172,15 @@ func (w *writeTool) Run(ctx context.Context, call ToolCall) (ToolResponse, error strings.TrimPrefix(filePath, w.workingDir), ) + permissionPath := filePath + if strings.HasPrefix(filePath, w.workingDir) { + permissionPath = w.workingDir + } + p := w.permissions.Request( permission.CreatePermissionRequest{ SessionID: sessionID, - Path: filePath, + Path: permissionPath, ToolCallID: call.ID, ToolName: WriteToolName, Action: "write",