#!/bin/sh
# Import clawdie-ai skill definitions into the colibri skills catalog.
#
# Reads .agent/skills/*/SKILL.md from a clawdie-ai checkout, extracts
# YAML frontmatter (name, description), derives category, and inserts
# into the colibri SQLite coordination database.
#
# Usage during ISO build:
#   scripts/import-clawdie-skills.sh /path/to/clawdie-ai /path/to/mount-point

set -eu

CLAWDIE_AI="${1:?usage: $0 <clawdie-ai-dir> <mount-point>}"
MOUNT_POINT="${2:?usage: $0 <clawdie-ai-dir> <mount-point>}"
DB="${MOUNT_POINT}/var/db/colibri/colibri.sqlite"

if [ ! -d "$CLAWDIE_AI/.agent/skills" ]; then
    echo "    clawdie-ai skills dir not found, skipping import"
    exit 0
fi

if ! command -v sqlite3 >/dev/null 2>&1; then
    echo "    sqlite3 not available, skipping skills import"
    exit 0
fi

# Ensure the skills table exists
sqlite3 "$DB" "CREATE TABLE IF NOT EXISTS skills (
    id TEXT PRIMARY KEY NOT NULL,
    name TEXT NOT NULL UNIQUE,
    description TEXT,
    category TEXT,
    created_at TEXT NOT NULL
);" 2>/dev/null || true

NOW=$(date -u +%Y-%m-%dT%H:%M:%SZ)
IMPORTED=0
SKIPPED=0

for skill_md in "$CLAWDIE_AI"/.agent/skills/*/SKILL.md; do
    [ -f "$skill_md" ] || continue
    
    # Extract YAML frontmatter between --- markers
    frontmatter=$(sed -n '/^---$/,/^---$/p' "$skill_md" | sed '1d;$d')
    
    # Extract name (first "name:" line after frontmatter)
    name=$(echo "$frontmatter" | grep -m1 '^name:' | sed 's/^name: *//' | tr -d '"')
    [ -n "$name" ] || continue
    
    # Extract description
    description=$(echo "$frontmatter" | sed -n '/^description:/,/^[a-z]/p' | sed '$d' | sed 's/^description: *//' | tr '\n' ' ' | sed 's/  */ /g' | sed 's/^ *//;s/ *$//')
    # Handle multi-line descriptions (| indicator)
    if echo "$description" | grep -q '^|$'; then
        description=$(echo "$frontmatter" | awk '/^description:/{found=1; next} /^[a-z]/{if(found) exit} found{print}' | tr '\n' ' ' | sed 's/  */ /g' | sed 's/^ *//;s/ *$//')
    fi
    [ -n "$description" ] || description="$name skill"
    
    # Derive category from skill name prefix
    case "$name" in
        git-*)         category="git" ;;
        db-*|postgres*) category="database" ;;
        zfs-*)         category="zfs" ;;
        add-*)         category="integration" ;;
        freebsd-*)     category="freebsd" ;;
        ansible-*)     category="automation" ;;
        *)             category="clawdie" ;;
    esac
    
    # Override category if compatibility field indicates FreeBSD
    if echo "$frontmatter" | grep -q 'compatibility:.*FreeBSD'; then
        category="freebsd"
    fi
    
    id=$(uuidgen 2>/dev/null || python3 -c "import uuid; print(uuid.uuid4())" 2>/dev/null || echo "skill-$(echo "$name" | md5)")
    
    sqlite3 "$DB" "INSERT OR IGNORE INTO skills (id, name, description, category, created_at)
        VALUES ('$id', '$(echo "$name" | sed "s/'/''/g")', '$(echo "$description" | sed "s/'/''/g")', '$category', '$NOW');" 2>/dev/null && IMPORTED=$((IMPORTED + 1)) || SKIPPED=$((SKIPPED + 1))
done

chroot "$MOUNT_POINT" chown colibri:colibri /var/db/colibri/colibri.sqlite 2>/dev/null || true
echo "    clawdie-ai skills: $IMPORTED imported, $SKIPPED skipped"
