#!/usr/bin/env bash
set -e

# Resolve symlinks so this works whether invoked directly or via brew/npm link
SCRIPT_SOURCE="${BASH_SOURCE[0]}"
while [ -L "$SCRIPT_SOURCE" ]; do
  SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_SOURCE")" && pwd)"
  SCRIPT_SOURCE="$(readlink "$SCRIPT_SOURCE")"
  [[ "$SCRIPT_SOURCE" != /* ]] && SCRIPT_SOURCE="$SCRIPT_DIR/$SCRIPT_SOURCE"
done
PACKAGE_DIR="$(cd "$(dirname "$SCRIPT_SOURCE")/.." && pwd)"

# Demo mode: use a separate data directory so real data is untouched
for arg in "$@"; do
  if [[ "$arg" == "--demo" ]]; then
    export FUNGIBLE_DATA_DIR="$HOME/.fungible-demo"
    break
  fi
done

# Resolve tsx/esm via Node's module resolution (handles any tsx version)
TSX_ESM=$(node --no-warnings -e \
  "const r=require('module').createRequire('$PACKAGE_DIR/package.json');process.stdout.write(r.resolve('tsx/esm'))")

SUBCOMMAND="${1:-}"
case "$SUBCOMMAND" in
  mcp)
    exec node --no-warnings --import "$TSX_ESM" "$PACKAGE_DIR/mcp/server.ts"
    ;;
  api)
    exec node --no-warnings --import "$TSX_ESM" "$PACKAGE_DIR/api/server.ts"
    ;;
  *)
    exec node --no-warnings --import "$TSX_ESM" "$PACKAGE_DIR/tui/index.tsx" "$@"
    ;;
esac
