#!/bin/bash
# chain-step.sh <assets-dir> <clip-name> <start-image> <prompt-file> [prev-last-png] [ref1] [ref2]
# Windows/Git-Bash variant: duration 10, 1080p/std, audio off, optional image references.
set -e -o pipefail
export PATH="$PATH:$(ls -d /c/Users/alexa/AppData/Local/Microsoft/WinGet/Packages/Gyan.FFmpeg*/ffmpeg-*/bin 2>/dev/null | head -1)"
DIR=$1; NAME=$2; START=$3; PROMPTFILE=$4; PREV=$5; REF1=$6; REF2=$7
PROMPT=$(cat "$PROMPTFILE")
mkdir -p "$DIR"

REFARGS=()
[[ -n "$REF1" ]] && REFARGS+=(--image-references "$REF1")
[[ -n "$REF2" ]] && REFARGS+=(--image-references "$REF2")

echo "[$NAME] creating job (1080p/std, 10s, audio off)..."
CREATE=$(higgsfield generate create seedance_2_0 \
  --prompt "$PROMPT" \
  --start-image "$START" \
  "${REFARGS[@]}" \
  --duration 10 --resolution 1080p --mode std --generate-audio false \
  --json 2>&1)
ID=$(echo "$CREATE" | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' | head -1)
if [[ -z "$ID" ]]; then
  echo "[$NAME] FAILED — no job id. Raw tail:"; echo "$CREATE" | tail -5; exit 1
fi
echo "[$NAME] job $ID — waiting..."

WAIT=$(higgsfield generate wait "$ID" --timeout 20m --interval 10s --json 2>&1)
URL=$(echo "$WAIT" | grep -oE 'https://[^"[:space:]]+\.mp4[^"[:space:]]*' | tail -1)
if [[ -z "$URL" ]]; then
  echo "[$NAME] FAILED — no mp4 url (server-side failures are unbilled; retry)."; echo "$WAIT" | tail -5; exit 1
fi

curl -fsSL -o "$DIR/$NAME.mp4" "$URL"
ffmpeg -y -v error -i "$DIR/$NAME.mp4" -vf "select=eq(n\,0)" -frames:v 1 -update 1 -q:v 1 "$DIR/$NAME-first.png"
ffmpeg -y -v error -sseof -0.05 -i "$DIR/$NAME.mp4" -update 1 -q:v 1 "$DIR/$NAME-last.png"
echo "[$NAME] downloaded: $(ffprobe -v error -select_streams v -show_entries stream=width,height,nb_frames -of csv=p=0 "$DIR/$NAME.mp4")"

if [[ -n "$PREV" ]]; then
  SSIM=$( (ffmpeg -i "$PREV" -i "$DIR/$NAME-first.png" -lavfi ssim -f null - 2>&1 || true) | grep -o 'All:[0-9.]*' | cut -d: -f2)
  ffmpeg -y -v error -i "$PREV" -i "$DIR/$NAME-first.png" -filter_complex "[0][1]hstack" "$DIR/$NAME-junction-compare.jpg" || true
  echo "[$NAME] JUNCTION SSIM vs $(basename "$PREV"): ${SSIM:-N/A}"
fi
echo "[$NAME] DONE"
