#!/bin/bash
set -euo pipefail

CONTAINER_ID="$1"
AGENT_ID="$2"
LOG_DIR="$3"

# Create container log files
STDOUT_LOG="$LOG_DIR/containers/${AGENT_ID}.stdout.log"
STDERR_LOG="$LOG_DIR/containers/${AGENT_ID}.stderr.log"
EXIT_LOG="$LOG_DIR/containers/${AGENT_ID}.exit.json"

# Capture logs in background (with timestamps)
docker logs -f --timestamps "$CONTAINER_ID" > "$STDOUT_LOG" 2> "$STDERR_LOG" &
LOG_PID=$!

# Wait for container to exit
EXIT_CODE=$(docker wait "$CONTAINER_ID" 2>/dev/null || echo "999")

# Stop log capture
kill $LOG_PID 2>/dev/null || true
sleep 1  # Allow final flush

# Capture container metadata
METADATA=$(docker inspect "$CONTAINER_ID" 2>/dev/null || echo '{}')

# Log exit event
cat > "$EXIT_LOG" <<EOF
{
  "timestamp": "$(date -Iseconds)",
  "container_id": "$CONTAINER_ID",
  "agent_id": "$AGENT_ID",
  "exit_code": $EXIT_CODE,
  "status": "$(echo "$METADATA" | jq -r '.[] | .State.Status // "unknown"')",
  "started_at": "$(echo "$METADATA" | jq -r '.[] | .State.StartedAt // "unknown"')",
  "finished_at": "$(echo "$METADATA" | jq -r '.[] | .State.FinishedAt // "unknown"')",
  "oom_killed": $(echo "$METADATA" | jq -r '.[] | .State.OOMKilled // false')
}
EOF

echo "$EXIT_CODE"
