fs: move cwd to ctl command, remove cwd file

/cwd returns current directory, /cwd X changes it (with stat check).
One fewer file in the agent namespace.
This commit is contained in:
Ollie Agent 2026-08-09 02:48:50 +02:00
parent 2561e01574
commit 94088ccc94
3 changed files with 7 additions and 26 deletions

View File

@ -33,7 +33,7 @@ ROOT_ENTRIES="session bypass agents backends models help ctl eventwait complete
SESSION_FILES="env paused connected ctl name id bypass"
# Agent-level files (exist under session/{name}/agent/{name}/)
AGENT_FILES="prompt fifo chat chat.raw statewait log plan cfg ctl cwd stats systemprompt tools name id proc"
AGENT_FILES="prompt fifo chat chat.raw statewait log plan cfg ctl stats systemprompt tools name id proc"
is_root_path() {
local path="$1"

View File

@ -731,30 +731,17 @@ func requestAgentCtl(ctx HandlerCtx, data []byte) ([]byte, error) {
if len(args) == 0 {
return []byte(ctx.Agent.Cwd() + "\n"), nil
}
ctx.Agent.SetCWD(paths.ExpandHome(strings.Join(args, " ")))
return []byte(strings.Join(args, " ") + "\n"), nil
dir := paths.ExpandHome(strings.Join(args, " "))
if _, err := os.Stat(dir); err != nil {
return nil, fmt.Errorf("cwd: %w", err)
}
ctx.Agent.SetCWD(dir)
return []byte(dir + "\n"), nil
default:
return nil, fmt.Errorf("unknown ctl command: %s", cmd)
}
}
func readAgentCwd(ctx HandlerCtx) ([]byte, error) {
return []byte(ctx.Agent.Cwd() + "\n"), nil
}
func writeAgentCwd(ctx HandlerCtx, data []byte) error {
input := strings.TrimSpace(string(data))
if input == "" {
return nil
}
input = paths.ExpandHome(input)
if _, err := os.Stat(input); err != nil {
return fmt.Errorf("cwd: %w", err)
}
ctx.Agent.SetCWD(input)
return nil
}
func readAgentStats(ctx HandlerCtx) ([]byte, error) {
s := "usage=" + ctx.Agent.UsageStr() + "\n" +
"cost=" + ctx.Agent.CostStr() + "\n" +

View File

@ -269,12 +269,6 @@ FileNode("generate", 0666,
Request(requestAgentCtl),
),
FileNode("cwd", 0666,
Doc("Agent working directory. Read: current path. Write: change directory."),
Read(readAgentCwd),
Write(writeAgentCwd),
),
FileNode("stats", 0444,
Doc("Agent statistics. Key=value lines: usage=, cost=, ctxsz=."),
Read(readAgentStats),