#!/bin/bash
# trigger-ccvps.sh — Rivet calls this to trigger CC VPS for coding tasks
#
# Usage (run as root):
#   trigger-ccvps.sh "fix the login bug"              — inline task
#   trigger-ccvps.sh --file /path/to/spec.md          — task from file
#   trigger-ccvps.sh --inbox                           — process RIVET-TO-CCVPS.md
#
# Output: logs to rivet/logs/ccvps/task_YYYYMMDD_HHMMSS.log
# Rivet can check the log for results.
#
# IMPORTANT: This script runs claude as ccuser (not root).
# All code changes happen under ccuser's permissions.

set -e

CLAUDE="/home/ccuser/.local/bin/claude"
WORK_DIR="/home/ccuser/the-50-dollar-app"
GROWTH_DIR="/home/ccuser/rateright-growth"
LOG_DIR="$GROWTH_DIR/rivet/logs/ccvps"
INBOX="$GROWTH_DIR/rivet/RIVET-TO-CCVPS.md"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
LOG="$LOG_DIR/task_${TIMESTAMP}.log"
TASK_FILE=$(mktemp /tmp/ccvps_task_XXXXX.md)

# Ensure log dir exists
mkdir -p "$LOG_DIR"

# Parse arguments
if [ "$1" = "--inbox" ]; then
    cat "$INBOX" > "$TASK_FILE"
elif [ "$1" = "--file" ] && [ -n "$2" ]; then
    cat "$2" > "$TASK_FILE"
elif [ -n "$1" ]; then
    printf '%s' "$*" > "$TASK_FILE"
else
    echo "Usage: trigger-ccvps.sh 'task' | --file path | --inbox"
    echo ""
    echo "Examples:"
    echo "  trigger-ccvps.sh 'fix the login redirect bug'"
    echo "  trigger-ccvps.sh --file rivet/specs/feature-xyz.md"
    echo "  trigger-ccvps.sh --inbox"
    rm -f "$TASK_FILE"
    exit 1
fi

# Make task file readable by ccuser
chown ccuser:ccuser "$TASK_FILE"

echo "========================================" >> "$LOG"
echo "[$(date)] CC VPS triggered by Rivet" >> "$LOG"
echo "========================================" >> "$LOG"
echo "" >> "$LOG"
echo "Task:" >> "$LOG"
cat "$TASK_FILE" >> "$LOG"
echo "" >> "$LOG"
echo "----------------------------------------" >> "$LOG"
echo "" >> "$LOG"

# Run claude as ccuser in print mode
# --allowedTools: full coding toolkit
# --model: use opus for quality (change to sonnet for speed/cost)
# Reads task from stdin via cat
su - ccuser -s /bin/bash -c "
    cd $WORK_DIR && \
    cat $TASK_FILE | $CLAUDE -p \
        --allowedTools 'Bash Edit Write Read Glob Grep' \
        --model sonnet \
        --append-system-prompt 'You are CC VPS. Read /home/ccuser/rateright-growth/CLAUDE.md and /home/ccuser/rateright-growth/.cc-local/MEMORY.md for context. After completing code changes: build, restart the app, commit, and push automatically. Keep your response concise — focus on what you changed and why.'
" >> "$LOG" 2>&1

EXIT_CODE=$?

echo "" >> "$LOG"
echo "----------------------------------------" >> "$LOG"
echo "[$(date)] Task finished (exit code: $EXIT_CODE)" >> "$LOG"

# Clean up
rm -f "$TASK_FILE"

# Fix any root-owned files that might have been created
chown -R ccuser:ccuser /home/ccuser/the-50-dollar-app/.next/ 2>/dev/null || true
chown -R ccuser:ccuser /home/ccuser/the-50-dollar-app/.git/ 2>/dev/null || true

echo "Done. Log: $LOG"
echo "Exit code: $EXIT_CODE"
