fix(ls): fix path expand on ls tool

This commit is contained in:
Andrey Nering
2025-07-29 11:24:54 -03:00
parent 4eaa13a7fb
commit 0c1b71c9f0
2 changed files with 33 additions and 6 deletions

29
internal/fsext/expand.go Normal file
View File

@@ -0,0 +1,29 @@
package fsext
import (
"os"
"strings"
"mvdan.cc/sh/v3/expand"
"mvdan.cc/sh/v3/syntax"
)
// Expand is a wrapper around [expand.Literal]. It will escape the input
// string, expand any shell symbols (such as '~') and resolve any environment
// variables.
func Expand(s string) (string, error) {
if s == "" {
return "", nil
}
p := syntax.NewParser()
word, err := p.Document(strings.NewReader(s))
if err != nil {
return "", err
}
cfg := &expand.Config{
Env: expand.FuncEnviron(os.Getenv),
ReadDir2: os.ReadDir,
GlobStar: true,
}
return expand.Literal(cfg, word)
}

View File

@@ -121,12 +121,10 @@ func (l *lsTool) Run(ctx context.Context, call ToolCall) (ToolResponse, error) {
searchPath = l.workingDir
}
if searchPath == "~" {
homeDir, err := os.UserHomeDir()
if err != nil {
return ToolResponse{}, fmt.Errorf("error resolving home directory: %w", err)
}
searchPath = homeDir
var err error
searchPath, err = fsext.Expand(searchPath)
if err != nil {
return ToolResponse{}, fmt.Errorf("error expanding path: %w", err)
}
if !filepath.IsAbs(searchPath) {