#!/bin/bash
QUESTION="$*"
MODEL="openai/gpt-3.5-turbo"
API_KEY="${OPENROUTER_API_KEY}"

LOGDIR="$HOME/.snake_logs"
mkdir -p "$LOGDIR"

HISTORY_FILE="$LOGDIR/snake_history.json"
TMP_REQUEST="$LOGDIR/snake_request.json"
TMP_RESPONSE="$LOGDIR/snake_response.json"
LOG_FILE="$LOGDIR/token_log.json"

[ ! -f "$HISTORY_FILE" ] && echo "[]" > "$HISTORY_FILE"
[ ! -f "$LOG_FILE" ] && echo "[]" > "$LOG_FILE"

echo "🐍 SnakePy sagt: $QUESTION"

if [ -z "$API_KEY" ]; then
  echo "❗ No API key set. Use: export OPENROUTER_API_KEY=..."
  exit 1
fi

jq -n \
  --arg model "$MODEL" \
  --arg system_prompt "You are SnakePy – a friendly Python snake who explains simple programming terms to children. Respond directly, clearly and kindly with a short example. No follow-up questions or evasions." \
  --arg user "$QUESTION" \
  '{"model": $model, "temperature": 0.3, "messages": [{"role": "system", "content": $system_prompt}, {"role": "user", "content": $user}]}' > "$TMP_REQUEST"

curl -s https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d @"$TMP_REQUEST" > "$TMP_RESPONSE"

RESPONSE_TEXT=$(jq -r '.choices[0].message.content // empty' "$TMP_RESPONSE")

if [[ -z "$RESPONSE_TEXT" ]]; then
  echo "🚫 No response from SnakePy."
  exit 1
else
  echo -e "$RESPONSE_TEXT"
  jq -n --arg role "assistant" --arg content "$RESPONSE_TEXT" \
    '{"role": $role, "content": $content}' > "$LOGDIR/new_entry.json"
  jq -s '.[0] + [.[1]]' "$HISTORY_FILE" "$LOGDIR/new_entry.json" > "$LOGDIR/new_history.json" && \
    cp "$LOGDIR/new_history.json" "$HISTORY_FILE" && rm "$LOGDIR/new_history.json"
fi

if jq -e '.usage' "$TMP_RESPONSE" > /dev/null; then
  TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")
  jq -n \
    --arg zeit "$TIMESTAMP" \
    --arg rolle "snakepy" \
    --arg usage "$(jq -c '.usage' "$TMP_RESPONSE")" \
    '{zeit: $zeit, rolle: $rolle, usage: $usage}' >> "$LOG_FILE"
fi
