#!/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//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"