#!/bin/sh

# Configuration Paths
DB="/mnt/ext_ssd/jarvisTools/tools_db.json"
TOOL_DIR="/mnt/ext_ssd/jarvisTools"

# Ensure Environment
[ -x "/mnt/ext_ssd/jq" ] && JQ="/mnt/ext_ssd/jq" || JQ="jq"
[ ! -d "$TOOL_DIR" ] && mkdir -p "$TOOL_DIR"
[ ! -f "$DB" ] && echo "[]" > "$DB"

# Main Menu
echo "--- JARVIS TOOL MANAGER ---"
echo "1. List Tools"
echo "2. Create New Tool"
echo "3. Use a Tool"
echo "4. Edit a Tool"
echo "5. Delete a Tool"
printf "Select an option [1-5]: "
read choice

case $choice in
  1)
    $JQ -r '.[] | "ID: \(.id) | Name: \(.name) | File: \(.file)"' "$DB"
    ;;
  2)
    printf "Enter Name: "; read NAME
    printf "Enter Filename: "; read FILE
    printf "Enter Command: "; read CMD
    printf "Enter Content: "; read CONTENT
    
    NEXT_ID=$($JQ 'if length == 0 then 1 else (map(.id) | max) + 1 end' "$DB")
    echo "$CONTENT" > "$TOOL_DIR/$FILE"
    chmod +x "$TOOL_DIR/$FILE"
    
    TOOL_JSON=$($JQ -n --arg id "$NEXT_ID" --arg name "$NAME" --arg file "$FILE" --arg cmd "$CMD" \
      '{id: ($id|tonumber), name: $name, file: $file, command: $cmd}')
    cat "$DB" | $JQ ". += [$TOOL_JSON]" > "${DB}.tmp" && mv "${DB}.tmp" "$DB"
    echo "Tool #$NEXT_ID created."
    ;;
  3)
    printf "Enter Tool ID to run: "; read TID
    TARGET_CMD=$($JQ -r ".[] | select(.id == $TID) | .command" "$DB")
    cd "$TOOL_DIR" && eval "$TARGET_CMD"
    ;;
  4)
    printf "Enter Tool ID to edit: "; read TID
    printf "Enter new Content: "; read CONTENT
    FILE=$($JQ -r ".[] | select(.id == $TID) | .file" "$DB")
    echo "$CONTENT" > "$TOOL_DIR/$FILE"
    echo "Tool #$TID updated."
    ;;
  5)
    printf "Enter Tool ID to delete: "; read TID
    FILE=$($JQ -r ".[] | select(.id == $TID) | .file" "$DB")
    rm "$TOOL_DIR/$FILE"
    cat "$DB" | $JQ "del(.[] | select(.id == $TID))" > "${DB}.tmp" && mv "${DB}.tmp" "$DB"
    echo "Tool #$TID deleted."
    ;;
  *)
    echo "Invalid choice."
    ;;
esac

