#!/usr/bin/env bash
set -euo pipefail

JOB_DIR="${1:?job dir required}"

# shellcheck disable=SC1091
source "$JOB_DIR/meta.env"

mkdir -p "$JOB_DIR"
printf 'running\n' > "$JOB_DIR/status"
date -u +"%Y-%m-%dT%H:%M:%SZ" > "$JOB_DIR/started_at"
TOOL_USAGE_LOG="${TOOL_USAGE_LOG:-$(cd "$(dirname "$0")" && pwd)/tool-usage-log}"

cd "$CWD"
PROMPT="$(cat "$JOB_DIR/prompt.txt")"
PI_PROVIDER="${PI_PROVIDER:-openai-codex}"
PI_MODEL="${PI_MODEL:-gpt-5.4-mini}"
PI_THINKING="${PI_THINKING:-low}"

set +e
pi --provider "$PI_PROVIDER" --model "$PI_MODEL" --thinking "$PI_THINKING" --no-extensions -p "$PROMPT" 2>&1 | tee -a "$JOB_DIR/output.log"
PI_EXIT=${PIPESTATUS[0]}
set -e

printf '%s\n' "$PI_EXIT" > "$JOB_DIR/exit_code"
date -u +"%Y-%m-%dT%H:%M:%SZ" > "$JOB_DIR/finished_at"

if [[ "$PI_EXIT" -eq 0 ]]; then
  printf 'succeeded\n' > "$JOB_DIR/status"
else
  printf 'failed\n' > "$JOB_DIR/status"
fi

FINISHED_AT_MS="$(python - <<'PY'
import time
print(int(time.time()*1000))
PY
)"
START_MS="${STARTED_AT_MS:-$FINISHED_AT_MS}"
DURATION_MS="$((FINISHED_AT_MS - START_MS))"
ERROR_SUMMARY=""
if [[ "$PI_EXIT" -ne 0 ]]; then
  ERROR_SUMMARY="pi exited with code $PI_EXIT"
fi
"$TOOL_USAGE_LOG" "$(cat "$JOB_DIR/status")" job pi-job-runner "$DURATION_MS" "$PI_EXIT" "$ERROR_SUMMARY" "$CWD" '' "$JOB_ID" || true

exit "$PI_EXIT"
