#!/usr/bin/env bash
set -euo pipefail

SCRIPT_PATH="${BASH_SOURCE[0]}"
while [[ -L "$SCRIPT_PATH" ]]; do
  SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
  LINK_TARGET="$(readlink "$SCRIPT_PATH")"
  if [[ "$LINK_TARGET" == /* ]]; then
    SCRIPT_PATH="$LINK_TARGET"
  else
    SCRIPT_PATH="$SCRIPT_DIR/$LINK_TARGET"
  fi
done
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"

# 1. Try local esbuild bundle (build:plugin output)
if [[ -f "$ROOT_DIR/dist/bridge.js" ]]; then
  exec node "$ROOT_DIR/dist/bridge.js" "$@"
fi

# 2. Try root release bundle (build:release output)
if [[ -f "$ROOT_DIR/../../dist/release/channel-acp.js" ]]; then
  exec node "$ROOT_DIR/../../dist/release/channel-acp.js" "$@"
fi

# 3. Dev fallback: tsx
if [[ -x "$ROOT_DIR/node_modules/.bin/tsx" ]]; then
  exec "$ROOT_DIR/node_modules/.bin/tsx" "$ROOT_DIR/src/main.ts" "$@"
fi

if command -v pnpm >/dev/null 2>&1; then
  exec pnpm --dir "$ROOT_DIR" exec tsx "$ROOT_DIR/src/main.ts" "$@"
fi

if command -v npx >/dev/null 2>&1; then
  exec npx tsx "$ROOT_DIR/src/main.ts" "$@"
fi

echo "tsx not found. Install dependencies first." >&2
exit 1
