diff --git a/data/scripts/o b/data/scripts/o index aa1479b..79dcbbd 100755 --- a/data/scripts/o +++ b/data/scripts/o @@ -200,6 +200,27 @@ cmd_ls() { fi } +cmd_generate() { + # One-shot generation via /generate (no session/agent needed) + # Usage: o generate "prompt" + # echo "prompt" | o generate + # o generate -1 "prompt" (same as above) + local prompt="" + + # Handle -1 flag (ignored, for compatibility) + [[ "${1:-}" == "-1" ]] && shift + + if [[ $# -gt 0 ]]; then + prompt="$*" + else + prompt=$(cat) + fi + + [[ -z "$prompt" ]] && { echo "usage: o generate " >&2; exit 1; } + + printf '%s' "$prompt" | ollie-9p rdwr generate +} + cmd_readloop() { if [[ $# -lt 1 ]]; then echo "usage: o readloop " >&2 @@ -388,6 +409,8 @@ Commands: readloop Read in a loop (re-reads after return) ls [path] List namespace entries + generate One-shot generation (no session needed) + ctl Send control command to agent stop Interrupt running agent kill Kill active session @@ -408,6 +431,7 @@ Examples: o ls # list at current context level o ls session # list all sessions o read models # read root-level file + o generate "explain monads" # one-shot, no session export session=foo agent=bar # set context o read chat # read agent's chat o readloop statewait # blocks until agent state changes @@ -427,6 +451,7 @@ case "$subcmd" in write) cmd_write "$@" ;; readloop) cmd_readloop "$@" ;; ls) cmd_ls "$@" ;; + generate) cmd_generate "$@" ;; ctl) cmd_ctl "$@" ;; stop) cmd_stop "$@" ;; kill) cmd_kill "$@" ;;