#!/bin/sh
# Harness MCP Server launcher — Go binary preferred, Node.js fallback
set -e

SELF_DIR="$(cd "$(dirname "$0")" && pwd)"
PLUGIN_ROOT="$(cd "$SELF_DIR/.." && pwd)"

# Detect OS and architecture (Git Bash / MSYS / Cygwin map to "windows")
UNAME_S="$(uname -s)"
case "$UNAME_S" in
  Darwin)                            OS="darwin" ;;
  Linux)                             OS="linux" ;;
  MINGW*|MSYS*|CYGWIN*|Windows_NT)   OS="windows" ;;
  *)                                 OS="$(printf '%s' "$UNAME_S" | tr '[:upper:]' '[:lower:]')" ;;
esac

ARCH="$(uname -m)"
case "$ARCH" in
  x86_64|amd64)   ARCH="amd64" ;;
  aarch64|arm64)  ARCH="arm64" ;;
esac

EXT=""
if [ "$OS" = "windows" ]; then
  EXT=".exe"
fi

GO_BIN="$SELF_DIR/harness-mcp-${OS}-${ARCH}${EXT}"

if [ -x "$GO_BIN" ]; then
  exec "$GO_BIN" "$@"
else
  # Fallback to Node.js TypeScript version
  exec node "$PLUGIN_ROOT/mcp-server/dist/index.js" "$@"
fi
