Agents + bash
diff --git a/tools/file.go b/tools/file.go
index 815c2eb..405d046 100644
--- a/tools/file.go
+++ b/tools/file.go
@@ -2,6 +2,7 @@
import (
"os"
+ "path/filepath"
)
type FileReadArgs struct {
@@ -24,7 +25,27 @@
type FileWriteResult struct {
}
+func sanitizePath(p string) (string, error) {
+ cwd, err := os.Getwd()
+ if err != nil {
+ return "", err
+ }
+ p = filepath.Join(cwd, p)
+ p, err = filepath.Rel(p, cwd)
+ if err != nil {
+ return "", err
+ }
+ return p, nil
+}
+
func FileWrite(args FileWriteArgs) (string, error) {
+ p, err := sanitizePath(args.Path)
+ if err != nil {
+ return "", err
+ }
+ if os.MkdirAll(filepath.Dir(p), 0666) != nil {
+ return "", nil
+ }
if err := os.WriteFile(args.Path, []byte(args.Contents), 0666); err != nil {
return "error", err
} else {