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

script_path="$(readlink -f -- "${BASH_SOURCE[0]}")"
script_dir="$(cd -- "$(dirname -- "${script_path}")" && pwd)"
deploy_dir="$(cd -- "${script_dir}/.." && pwd)"

usage() {
  cat <<'EOF'
Usage:
  ./scripts/ai <tool> [project] [tool arguments...]

Tools:
  codex, claude, codebuddy, kimi, opencode, qwen, dsh
  cc-switch, multica (management commands; no project argument)

Examples:
  ./scripts/ai codex my-project
  ./scripts/ai claude my-project
  ./scripts/ai kimi my-project -p "explain this project"
  ./scripts/ai dsh my-project --profile headless "run the tests"
  ./scripts/ai cc-switch
  ./scripts/ai multica daemon status
EOF
}

if [[ $# -lt 1 ]]; then
  usage
  exit 2
fi

tool="$1"
shift

case "${tool}" in
  codex|claude|codebuddy|kimi|opencode|qwen|dsh|cc-switch|multica) ;;
  *)
    printf 'Unsupported tool: %s\n\n' "${tool}" >&2
    usage >&2
    exit 2
    ;;
esac

if [[ "${tool}" == "cc-switch" || "${tool}" == "multica" ]]; then
  exec docker compose --project-directory "${deploy_dir}" exec ai-tools "${tool}" "$@"
fi

project="."
if [[ $# -gt 0 && "$1" != -* ]]; then
  project="$1"
  shift
fi

if [[ "${project}" == /* || "${project}" == *".."* ]]; then
  printf 'Project must be a path below /workspace.\n' >&2
  exit 2
fi

exec docker compose --project-directory "${deploy_dir}" exec \
  --workdir "/workspace/${project}" ai-tools "${tool}" "$@"
