#!/usr/bin/env bash
# Codex 단발 질의(읽기 전용). 결과 본문을 stdout 에 낸다.
# usage: codex-ask.sh <cwd> <prompt-file> [effort]
#        codex-ask.sh --resume <cwd> <job-id>
# exit 0 완료 · 2 실패/취소 · 3 아직 진행 중(--resume 으로 이어서) · 1 시작 실패
set -euo pipefail
C="$HOME/.claude/plugins/cache/openai-codex/codex/1.0.6/scripts/codex-companion.mjs"
if [ "${1:-}" = --resume ]; then
  CWD="$2"; ID="$3"
else
  CWD="$1"; PF="$2"; EFF="${3:-high}"
  cd "$CWD"
  out=$(node "$C" task --background --effort "$EFF" "$(cat "$PF")" 2>&1) || true
  ID=$(printf '%s' "$out" | grep -o 'task-[a-z0-9]*-[a-z0-9]*' | head -1 || true)
  [ -n "$ID" ] || { echo "CODEX_START_FAILED: $out"; exit 1; }
fi
cd "$CWD"
echo "CODEX_JOB=$ID"
for _ in $(seq 1 108); do
  st=$(node "$C" status "$ID" --json 2>/dev/null | grep -o '"status": *"[a-z]*"' | head -1 | sed 's/.*"\([a-z]*\)"$/\1/' || true)
  case "$st" in
    completed) node "$C" result "$ID"; exit 0 ;;
    failed|cancelled) echo "CODEX_STATUS=$st"; node "$C" result "$ID" || true; exit 2 ;;
  esac
  sleep 5
done
echo "CODEX_PENDING=$ID — 이어서: bash $0 --resume $CWD $ID"
exit 3
