From 39ccfe8aa3d8250c706da399f4eeae9128a34ecb Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Mon, 24 Aug 2026 13:56:15 +0200 Subject: [PATCH] Add detach ctl command for agent Allows user to background the current foreground tool process by writing 'detach' to the agent ctl file. The agent can then continue working without waiting for the tool to complete. --- cmd/olliesrv/internal/fs/spec.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/cmd/olliesrv/internal/fs/spec.go b/cmd/olliesrv/internal/fs/spec.go index 3292176..19b728c 100644 --- a/cmd/olliesrv/internal/fs/spec.go +++ b/cmd/olliesrv/internal/fs/spec.go @@ -946,6 +946,16 @@ func buildAgentChildren(a *agent.Agent, s *session.Session) []virtfs.FsNodeDecl a.Interrupt(agent.ErrInterrupted) return []byte("ok\n"), nil }, + "detach": func(_ []string) ([]byte, error) { + ts := a.ToolServer() + if ts == nil { + return nil, fmt.Errorf("no tool server") + } + if !ts.Detach() { + return nil, fmt.Errorf("no foreground process to detach") + } + return []byte("ok\n"), nil + }, "compact": func(_ []string) ([]byte, error) { if err := a.Compact(s.Ctx); err != nil { return nil, err @@ -1185,7 +1195,7 @@ func buildAgentChildren(a *agent.Agent, s *session.Session) []virtfs.FsNodeDecl }, "stats": stats, "help": func(_ []string) ([]byte, error) { - return []byte("stop compact clear inject agent model models tools tool_load tool_unload cwd proc name backend systemprompt peeradd peerdel peers stats help\n"), nil + return []byte("stop detach compact clear inject agent model models tools tool_load tool_unload cwd proc name backend systemprompt peeradd peerdel peers stats help\n"), nil }, }, data) }),