b: use /generate endpoint for foreground mode, sessions only for -bg
This commit is contained in:
parent
6cda0a1f96
commit
8fe10813ee
76
scripts/s/b
76
scripts/s/b
|
|
@ -78,6 +78,21 @@ fi
|
|||
cwd=${cwd:-$(pwd)}
|
||||
base=${name:-$(date +%s%N)-$$}
|
||||
|
||||
# JSON-escape a string for embedding in a JSON value.
|
||||
jsonesc() {
|
||||
printf '%s' "$1" | sed 's/\\/\\\\/g; s/"/\\"/g; s/\t/\\t/g' | tr '\n' '\1' | sed 's/\x01/\\n/g'
|
||||
}
|
||||
|
||||
# Foreground generation via /generate (net/dns pattern).
|
||||
fn_generate() {
|
||||
local json='{"prompt":"'$(jsonesc "$prompt")'"'
|
||||
[ -n "$backend" ] && json="$json,\"backend\":\"$backend\""
|
||||
[ -n "$model" ] && json="$json,\"model\":\"$model\""
|
||||
json="$json}"
|
||||
|
||||
printf '%s' "$json" | 9p rdwr ollie/generate || die "generate failed (is olliesrv running?)"
|
||||
}
|
||||
|
||||
fn_run_one() {
|
||||
local id=$1
|
||||
local B="$MOUNT/s/$id"
|
||||
|
|
@ -132,30 +147,45 @@ model=${model}"
|
|||
|
||||
rc=0
|
||||
|
||||
if [ "$parallel" -gt 1 ]; then
|
||||
abort=$(mktemp)
|
||||
trap 'rm -f "$abort"' EXIT
|
||||
pids=()
|
||||
for i in $(seq 1 "$parallel"); do
|
||||
id="${base}-${i}"
|
||||
(
|
||||
[ -s "$abort" ] && exit 1
|
||||
fn_run_one "$id" || {
|
||||
if [ "$failfast" -eq 1 ]; then
|
||||
echo 1 > "$abort"
|
||||
for j in $(seq 1 "$parallel"); do
|
||||
jid="${base}-${j}"
|
||||
[ "$jid" != "$id" ] && rm -r "$MOUNT/s/$jid" 2>/dev/null || true
|
||||
done
|
||||
fi
|
||||
exit 1
|
||||
}
|
||||
) &
|
||||
pids+=($!)
|
||||
done
|
||||
for pid in "${pids[@]}"; do wait "$pid" || rc=1; done
|
||||
if [ "$bg" -eq 1 ]; then
|
||||
# Background mode: must use sessions (persistent state to poll later).
|
||||
if [ "$parallel" -gt 1 ]; then
|
||||
abort=$(mktemp)
|
||||
trap 'rm -f "$abort"' EXIT
|
||||
pids=()
|
||||
for i in $(seq 1 "$parallel"); do
|
||||
id="${base}-${i}"
|
||||
(
|
||||
[ -s "$abort" ] && exit 1
|
||||
fn_run_one "$id" || {
|
||||
if [ "$failfast" -eq 1 ]; then
|
||||
echo 1 > "$abort"
|
||||
for j in $(seq 1 "$parallel"); do
|
||||
jid="${base}-${j}"
|
||||
[ "$jid" != "$id" ] && rm -r "$MOUNT/s/$jid" 2>/dev/null || true
|
||||
done
|
||||
fi
|
||||
exit 1
|
||||
}
|
||||
) &
|
||||
pids+=($!)
|
||||
done
|
||||
for pid in "${pids[@]}"; do wait "$pid" || rc=1; done
|
||||
else
|
||||
fn_run_one "$base" || rc=1
|
||||
fi
|
||||
else
|
||||
fn_run_one "$base" || rc=1
|
||||
# Foreground mode: use /generate (stateless, no session).
|
||||
if [ "$parallel" -gt 1 ]; then
|
||||
pids=()
|
||||
for i in $(seq 1 "$parallel"); do
|
||||
fn_generate &
|
||||
pids+=($!)
|
||||
done
|
||||
for pid in "${pids[@]}"; do wait "$pid" || rc=1; done
|
||||
else
|
||||
fn_generate || rc=1
|
||||
fi
|
||||
fi
|
||||
|
||||
exit $rc
|
||||
|
|
|
|||
Loading…
Reference in New Issue