diff --git a/data/scripts/o b/data/scripts/o index d8f2f33..86be117 100755 --- a/data/scripts/o +++ b/data/scripts/o @@ -266,15 +266,28 @@ cmd_new() { printf 'name=%s\ncwd=%s\n' "$agent_name" "$agent_cwd" | ollie-9p write "${PREFIX}/agent/new" echo "created agent: $CTX_SESSION/$agent_name" else - # Create session at root + # Create session and agent: o new sname/aname [cwd] if [[ $# -lt 1 ]]; then - echo "usage: o new [cwd]" >&2 + echo "usage: o new / [cwd]" >&2 exit 1 fi - local session_name="$1" - local session_cwd="${2:-$PWD}" - printf 'name=%s\ncwd=%s\n' "$session_name" "$session_cwd" | ollie-9p write "session/new" - echo "created session: $session_name" + local spec="$1" + local cwd="${2:-$PWD}" + + if [[ "$spec" != */* ]]; then + echo "usage: o new / [cwd]" >&2 + echo "error: must specify session/agent (e.g., work/code)" >&2 + exit 1 + fi + + local session_name="${spec%%/*}" + local agent_name="${spec#*/}" + + # Create session + printf 'name=%s\ncwd=%s\n' "$session_name" "$cwd" | ollie-9p write "session/new" + # Create agent in that session + printf 'name=%s\ncwd=%s\n' "$agent_name" "$cwd" | ollie-9p write "session/$session_name/agent/new" + echo "created: $session_name/$agent_name" fi }