#!/usr/bin/env bash
# description: Spawn N subagents with a shared prompt, wait for all to complete, return concatenated results (fork-join).
# Args: [-n N] [-agent A] [-backend B] [-model M] [-cwd DIR] [-keep] <prompt...>
# Output: concatenated results from all subagents, in submission order. With -n > 1, results are separated by === {id} === headers.
set -euo pipefail

OLLIE="${OLLIE:-$HOME/mnt/ollie}"

die() { printf 'subagent_spawn: %s\n' "$*" >&2; exit 1; }

n=1; args=()

while [ $# -gt 0 ]; do
    case $1 in
        -n)       n=$2;                          shift ;;
        -agent)   args+=(-agent   "$2");          shift ;;
        -backend) args+=(-backend "$2");          shift ;;
        -model)   args+=(-model   "$2");          shift ;;
        -cwd)     args+=(-cwd     "$2");          shift ;;
        -keep)    args+=(-keep) ;;
        --)       shift; break ;;
        -*)       die "unknown flag: $1" ;;
        *)        break ;;
    esac
    shift
done

[ $# -eq 0 ] && die "prompt required"

exec "$OLLIE/b/q" -parallel "$n" "${args[@]}" "$@"
