#!/usr/bin/env bash
# new.sh — Scaffolder interactivo para automatizaciones cron
# Crea crons/<name>/schedule.yaml y el archivo de prompt/mensaje vacío.
set -euo pipefail

REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"

echo "=== Nueva automatización cron ==="
echo ""

# Nombre
read -rp "Nombre de la automatización (ej: weekly-report): " NAME
NAME="${NAME// /-}"
NAME="${NAME,,}"  # lowercase
if [[ -z "$NAME" ]]; then
  echo "Error: el nombre no puede estar vacío." >&2
  exit 1
fi
if [[ -d "$REPO_ROOT/crons/$NAME" ]]; then
  echo "Error: ya existe crons/$NAME/" >&2
  exit 1
fi

# Descripción
read -rp "Descripción breve: " DESCRIPTION
if [[ -z "$DESCRIPTION" ]]; then
  echo "Error: la descripción no puede estar vacía." >&2
  exit 1
fi

# Tipo de acción
echo ""
echo "Tipo de acción:"
echo "  1) send_message — envía un mensaje estático o plantilla"
echo "  2) llm_prompt   — llama al LLM con un prompt y envía la respuesta"
read -rp "Selecciona [1/2]: " ACTION_TYPE_NUM
case "$ACTION_TYPE_NUM" in
  1) ACTION_KIND="send_message"; PROMPT_FILE="message.md" ;;
  2) ACTION_KIND="llm_prompt";   PROMPT_FILE="prompt.md"  ;;
  *)
    echo "Error: selección inválida. Usa 1 o 2." >&2
    exit 1
    ;;
esac

# Cron expression
DEFAULT_CRON="0 9 * * *"
read -rp "Cron expression [default: $DEFAULT_CRON]: " CRON_EXPR
CRON_EXPR="${CRON_EXPR:-$DEFAULT_CRON}"

# Crear estructura
CRON_DIR="$REPO_ROOT/crons/$NAME"
PROMPTS_DIR="$CRON_DIR/prompts"
mkdir -p "$PROMPTS_DIR"

# schedule.yaml
cat > "$CRON_DIR/schedule.yaml" <<EOF
# Automatización: $NAME
name: $NAME
description: "$DESCRIPTION"

# Cron por defecto
default_cron: "$CRON_EXPR"

# Acción
action:
  kind: $ACTION_KIND
  # Relativo a la raíz del proyecto
  template: crons/$NAME/prompts/$PROMPT_FILE

# Sala de salida por defecto (vacío = el agente debe configurar output_room)
default_output_room: ""
EOF

# Archivo de prompt/mensaje
touch "$PROMPTS_DIR/$PROMPT_FILE"

echo ""
echo "✓ Creado: crons/$NAME/schedule.yaml"
echo "✓ Creado: crons/$NAME/prompts/$PROMPT_FILE"
echo ""
echo "Edita crons/$NAME/prompts/$PROMPT_FILE con el contenido deseado."
echo ""
echo "Añade esto a agents/<id>/config.yaml:"
echo ""
echo "  schedules:"
echo "    - name: $NAME"
echo "      cron: \"$CRON_EXPR\""
echo "      output_room: \"!TUROOM:matrix-af2f3d.organic-machine.com\""
echo "      action:"
echo "        kind: $ACTION_KIND"
echo "        template: \"crons/$NAME/prompts/$PROMPT_FILE\""
echo ""
echo "O usa: ./dev-scripts/cron/apply.sh $NAME <agent-id>"
