o: add trailing session/agent args to prompt, tail, stop, kill, ctl

This commit is contained in:
Ollie Agent 2026-08-04 19:45:17 +02:00
parent f1611fb50b
commit 0694f47376
1 changed files with 67 additions and 18 deletions

View File

@ -125,6 +125,17 @@ resolve_path() {
# ── Context requirements for specific commands ──────────────────
# Resolve session and agent from positional args or env vars.
# Usage: resolve_context "$@" → returns (s, a) by modifying caller's vars.
# Pass "$@" from the calling command; it shifts positional args.
resolve_context() {
local _s _a
_s="${1:-${session:-}}"
[[ -n "$1" ]] && shift
_a="${1:-${agent:-}}"
echo "$_s|$_a"
}
require_session() {
local s="${session:-}"
if [[ -z "$s" ]]; then
@ -240,16 +251,32 @@ cmd_ctl() {
echo " commands: stop, compact, kill, clear, model <m>, backend <b>, cwd <d>" >&2
exit 1
fi
local path
path=$(agent_path) || exit 1
echo "$*" | ollie-9p write "$path/ctl"
local ctx s a
ctx=$(resolve_context "$@") || exit 1
s="${ctx%%|*}"
a="${ctx##*|}"
shift; shift
if [[ -z "$s" || -z "$a" ]]; then
echo "error: session and agent are required" >&2
echo " usage: o ctl <command> [args...]" >&2
echo " or: export session=<name> agent=<name>" >&2
exit 1
fi
echo "$*" | ollie-9p write "session/$s/agent/$a/ctl"
}
cmd_prompt() {
local s a path
s=$(require_session) || exit 1
a=$(require_agent "$s") || exit 1
path="session/$s/agent/$a"
local ctx s a
ctx=$(resolve_context "$@") || exit 1
s="${ctx%%|*}"
a="${ctx##*|}"
if [[ -z "$s" || -z "$a" ]]; then
echo "error: session and agent are required" >&2
echo " usage: o prompt <session> <agent>" >&2
echo " or: export session=<name> agent=<name>" >&2
exit 1
fi
local path="session/$s/agent/$a"
echo "[$s/$a]"
echo "Type . on a blank line to send, Ctrl+D to exit."
@ -335,9 +362,17 @@ cmd_prompt() {
}
cmd_tail() {
local path
path=$(agent_path) || exit 1
exec ollie-9p read "$path/chat"
local ctx s a
ctx=$(resolve_context "$@") || exit 1
s="${ctx%%|*}"
a="${ctx##*|}"
if [[ -z "$s" || -z "$a" ]]; then
echo "error: session and agent are required" >&2
echo " usage: o tail <session> <agent>" >&2
echo " or: export session=<name> agent=<name>" >&2
exit 1
fi
exec ollie-9p read "session/$s/agent/$a/chat"
}
cmd_env() {
@ -356,14 +391,27 @@ cmd_env() {
}
cmd_stop() {
local path
path=$(agent_path) || exit 1
echo "stop" | ollie-9p write "$path/ctl"
local ctx s a
ctx=$(resolve_context "$@") || exit 1
s="${ctx%%|*}"
a="${ctx##*|}"
if [[ -z "$s" || -z "$a" ]]; then
echo "error: session and agent are required" >&2
echo " usage: o stop <session> <agent>" >&2
echo " or: export session=<name> agent=<name>" >&2
exit 1
fi
echo "stop" | ollie-9p write "session/$s/agent/$a/ctl"
}
cmd_kill() {
local s
s=$(require_session) || exit 1
local s="${1:-${session:-}}"
if [[ -z "$s" ]]; then
echo "error: no session set" >&2
echo " usage: o kill <session>" >&2
echo " or: export session=<name>" >&2
exit 1
fi
echo "kill" | ollie-9p write "session/$s/ctl"
}
@ -382,9 +430,10 @@ cmd_tui() {
fi
# Accept optional positional args: o tui [session] [agent]
s="${1:-${session:-}}"
if [[ -n "$1" ]]; then shift; fi
a="${1:-${agent:-}}"
local ctx
ctx=$(resolve_context "$@")
s="${ctx%%|*}"
a="${ctx##*|}"
if [[ -z "$s" ]]; then
echo "error: no session set" >&2