diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-03-03 21:22:30 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-03-03 21:22:30 +0000 |
| commit | 3962597950421e422b6e1ce57764550f5600ded6 (patch) | |
| tree | ef376c4c192293869fe408cb27abe6bba9e1fa32 /internal/api/server.go | |
| parent | e8d1b80bd504088a7535e6045ab77f1ddd3b3d43 (diff) | |
Fix working_dir failures: validate path early, remove hardcoded /root
executor/claude.go: stat working_dir before cmd.Start() so a missing
or inaccessible directory surfaces as a clear error
("working_dir \"/bad/path\": no such file or directory") rather than
an opaque chdir failure wrapped in "starting claude".
api/elaborate.go: replace the hardcoded /root/workspace/claudomator
path with buildElaboratePrompt(workDir) which injects the server's
actual working directory (from os.Getwd() at startup). Empty workDir
tells the model to leave working_dir blank.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/api/server.go')
| -rw-r--r-- | internal/api/server.go | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/internal/api/server.go b/internal/api/server.go index 315b64b..8415b28 100644 --- a/internal/api/server.go +++ b/internal/api/server.go @@ -6,6 +6,7 @@ import ( "fmt" "log/slog" "net/http" + "os" "time" "github.com/thepeterstone/claudomator/internal/executor" @@ -25,9 +26,11 @@ type Server struct { mux *http.ServeMux claudeBinPath string // path to claude binary; defaults to "claude" elaborateCmdPath string // overrides claudeBinPath; used in tests + workDir string // working directory injected into elaborate system prompt } func NewServer(store *storage.DB, pool *executor.Pool, logger *slog.Logger, claudeBinPath string) *Server { + wd, _ := os.Getwd() s := &Server{ store: store, logStore: store, @@ -36,6 +39,7 @@ func NewServer(store *storage.DB, pool *executor.Pool, logger *slog.Logger, clau logger: logger, mux: http.NewServeMux(), claudeBinPath: claudeBinPath, + workDir: wd, } s.routes() return s |
