#!/usr/bin/env bash
# Supervisor entry point for the Mosaic lease broker daemon (issue #869, C3).
#
# Resolves the broker socket path with the SAME precedence as
# `defaultLeaseBrokerSocket` in `packages/mosaic/src/commands/launch.ts`, so a
# gated runtime launched through that client always finds the socket this
# supervisor creates:
#   1. an explicit MOSAIC_LEASE_BROKER_SOCKET
#   2. "$XDG_RUNTIME_DIR/mosaic-lease/broker.sock"
#   3. "/run/user/<uid>/mosaic-lease/broker.sock"
#
# The state file is colocated next to the socket (same directory,
# "state.json"), mirroring how the broker already colocates its per-session
# generation files beside the socket.
#
# This script never installs, enables, or starts the systemd unit that calls
# it; it is only ever invoked BY that unit (or by a human/test harness that
# passes its own HOME/XDG_RUNTIME_DIR).
set -euo pipefail

SCRIPT_DIR=$(cd -- "$(dirname -- "$0")" && pwd)

if [ -n "${MOSAIC_LEASE_BROKER_SOCKET:-}" ]; then
  SOCKET="$MOSAIC_LEASE_BROKER_SOCKET"
else
  RUNTIME_DIR="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"
  SOCKET="$RUNTIME_DIR/mosaic-lease/broker.sock"
fi
STATE="$(dirname -- "$SOCKET")/state.json"

exec python3 "$SCRIPT_DIR/daemon.py" --socket "$SOCKET" --state "$STATE"
