Add PICOCLAW_AGENT_WORKSPACE env var

- Pass workingDir to WithPicoclawEnvVars
- Add PICOCLAW_AGENT_WORKSPACE for child processes to know their workspace
This commit is contained in:
Keith Patrick 2026-03-09 01:28:24 +00:00
parent 347aade2fb
commit 64fc4a82d0
2 changed files with 7 additions and 2 deletions

View file

@ -149,7 +149,7 @@ func NewExecToolWithConfig(workingDir string, restrict bool, config *config.Conf
}
// Ensure PICOCLAW_* vars are set for child processes
envSet = shell.WithPicoclawEnvVars(envSet)
envSet = shell.WithPicoclawEnvVars(envSet, workingDir)
return &ExecTool{
workingDir: workingDir,

View file

@ -156,7 +156,7 @@ func isAllowedPrefix(name string) bool {
// WithPicoclawEnvVars ensures PICOCLAW_* vars are set in envSet.
// These are needed for child processes to locate config, workspace, etc.
func WithPicoclawEnvVars(envSet map[string]string) map[string]string {
func WithPicoclawEnvVars(envSet map[string]string, workspace string) map[string]string {
if envSet == nil {
envSet = make(map[string]string)
}
@ -174,6 +174,11 @@ func WithPicoclawEnvVars(envSet map[string]string) map[string]string {
envSet["PICOCLAW_CONFIG"] = filepath.Join(home, "config.json")
}
// Workspace - this is the agent's working directory
if workspace != "" {
envSet["PICOCLAW_AGENT_WORKSPACE"] = workspace
}
if exe, err := os.Executable(); err == nil {
envSet["PICOCLAW_EXE"] = exe
}